i1 = new Image(); i1.src="img/menu/home.gif";
i2 = new Image(); i2.src="img/menu/home_a.gif";
i3 = new Image(); i3.src="img/menu/mail.gif";
i4 = new Image(); i4.src="img/menu/mail_a.gif";
i5 = new Image(); i5.src="img/menu/map.gif";
i6 = new Image(); i6.src="img/menu/map_a.gif";

function imgOver(nm) {
	if(nm!=active) document.images[nm].src="img/menu/"+nm+"_a.gif";
}
function imgOut(nm) {
	if(nm!=active) document.images[nm].src="img/menu/"+nm+".gif";
}
function imgClick() {
	if(active!='') document.images[active].src="img/menu/"+active+"_a.gif";
}
//  Установка глобальных переменных
cm=null;                    // сюда будем запоминать 
                            // видимый слой. Начальное 
                            // значение - null.
hide_delay=500;       		// Время задержки (в м.с.) авто-закр. меню. 
tstat=0;                 	// Признак активности таймера авто-закр.

// Определяем браузер пользователя

isNS4 = (document.layers) ? true : false;
isIE4 = (document.all && !document.getElementById) ? true : false;
isIE5 = (document.all && document.getElementById) ? true : false;
isNS6 = (!document.all && document.getElementById) ? true : false;


// Функция отображающая и скрывающая слои

// Вход:
// objElement - идентификатор(id) слоя;
// bolVisible - булева переменная:
// true  - отобразить слой;
// false - скрыть слой.

// Выход:
// 1


// P.S: В зависимости от типа браузера
// сценарий для манипуляции с видимостью слоёв
// несколько различается.

function switchDiv(objElement,bolVisible){
	if(isNS4||isIE4){
    	if(!bolVisible) objElement.visibility ="hidden";
		else objElement.visibility ="visible";
	} else if (isIE5 || isNS6) {
		if(!bolVisible) objElement.style.display = "none";
		else objElement.style.display = "";
	}
	return 1;
}


// Функция возвращающая значение указанного ей 
// свойства объекта (не обязательно слоя).
// Вход:
// el    - идентификатор элемента;
// sProp - свойство (left,top...)
// Выход:
// Значение какого-нибудь свойства объекта.
function getPos(el,sProp) {
	var iPos = 0;
	while (el!=null) {
		iPos+=el["offset" + sProp]
		el = el.offsetParent
	}
	return iPos

}



// Функция выдаёт объект с указанным
// ей названием.

// Вход:
// myid - название объекта

// Выход: объект.

function getelementbyid(myid) {
   if (isNS4){
        objElement = document.layers[myid];
     }else if (isIE4) {
        objElement = document.all[myid];
     }else if (isIE5 || isNS6) {
             objElement = document.getElementById(myid);
     }
return(objElement);
}



// Функция отображающая|скрывающая
// ,а предварительно ещё и передвигающая
// должным образом слои.


// Вход:
// el - яйчейка таблицы на которой 
// находится указатель;
// m  - наименование слоя, который надо
// отобразить под этой яйчейкой.

function show(el,m) {
// Если имеется видимый слой,
// сделать его невидимым.
	if (cm!=null) {
		switchDiv(cm,false);
	}
// Если указано название слоя для отображения,
// то:
// 1) Получаем его объект;
// 2) X слоя = X яйчейки;
// 3) Y слоя = Y яйчейки + высота яйчейки;
// 4) Делаем слой видимым;
// 5) Сохраняем копию слоя в cm.  


 if (m!=null) {
 m=getelementbyid(m);
 m.style.left = getPos(el,"Left")+"px";
 m.style.top =  getPos(el,"Top")+el.offsetHeight+"px";
 switchDiv(m,true);
 cm=m;
 }

}
// Функция "закрывающая" меню.
// Функция ничего не принимает на вход
// и возвращает 1.
function hidemenu() {
// Устанавливаем задержку равную 
// hide_delay м.с. с помощью таймера; 
	timer1=setTimeout("show(null,null)",hide_delay);
	// Устанавливаем tstat=1 - признак, того, что таймер запущен.
	tstat=1;
	return 1;
}

// Функция, останавливающая таймер запущенный
// прошлой функцией. Таким образом,
// меню не пропадает.
// Функция ничего не принимает на вход
// и возвращает 1.
function cancelhide() {
	if (tstat==1) {
		clearTimeout(timer1);
		tstat=0;
	}
	return 1;
}
function check_email(email) {
    var template = /^[A-Za-z0-9](([_\.\-]?[a-zA-Z0-9]+)*)@([A-Za-z0-9]+)(([\.\-]?[a-zA-Z0-9]+)*)\.([A-Za-z])+$/;
   	email = drop_spaces(email); //функцию drop_spaces() см. выше
    if (template.test(email)) {
   	    return true;
    }
   	return false; 
}
function drop_spaces(str) {
   	var newstr = trim(str); //функцию trim() см. выше
   	return newstr.replace(/(\s)+/g, ""); 
}
function trim(str) {
    var newstr = str.replace(/^\s*(.+?)\s*$/, "$1");
   	if (newstr == " ") {
       	return "";
    }
   	return newstr;
}
