//  Установка глобальных переменных


cm=null;                    // сюда будем запоминать 
                                // видимый слой. Начальное 
                               // значение - null.
hide_delay=0;       // Время задержки (в м.с.) авто-закр.
                              // меню. 
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 (getelementbyid(m)==null && el!=null) {
		return(false);
	}

 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")+el.offsetWidth+"px";
 m.style.top =  getPos(el,"Top")+"px";
 
 switchDiv(m,true);
 cm=m;
 }

}



// Функция "закрывающая" меню.

// Функция ничего не принимает на вход
// и возвращает 1.

function hidemenu() {

// Устанавливаем задержку равную 
// hide_delay м.с. с помощью таймера; 

timer1=setTimeout("show(null,null)",hide_delay);

// Устанавливаем tstat=1 - признак, того, что таймер запущен.
tstat=1;

return 1;
}


function hideActive(layer_id) {
	
	timer2=setTimeout("document.getElementById(layer_id).className=''",hide_delay);

	// Устанавливаем tstat=1 - признак, того, что таймер запущен.
	tstat2=1;

	return 1;
}

function cancelhideActive() {
	if (tstat2==1) {
		clearTimeout(timer2);
		tstat2=0;
	}
	return 1;
}



// Функция, останавливающая таймер запущенный
// прошлой функцией. Таким образом,
// меню не пропадает.

// Функция ничего не принимает на вход
// и возвращает 1.

function cancelhide() {
 if (tstat==1) {
 clearTimeout(timer1);
 tstat=0;
 }
return 1;
}


	function MakeArray(a, spliter)
    {
      return a.split(spliter);
    }

    function delete_options (selobj, size)
    {
      while (selobj . options . length > size)
        selobj . options [selobj . options . length - 1] = null;
    }

function LoadTypes(type_el, country_el)
{
	/*
	if ($F('type')!=0) {
		return(false);
	}
	*/
	var url = '/ajax.php';
	var pars = 'country=' + $F(country_el) + '&action=types';
	
	$(type_el).disabled=true;
	
      var myAjax = new Ajax.Request(
                    url, 
                    {
                        method: 'get', 
                        parameters: pars, 
                        onComplete: function (originalRequest)
                                    {
                                        var data = originalRequest.responseText;
        
                                        var myarray = MakeArray(data, "|");

                                        var cl = myarray.length;
                                        cl--;
        
                                        var b = new Array();

                                        var List = $(type_el);
										delete_options(List, 1);

                                        for (i=0; i < cl; i++)
                                        {
                                            b = myarray[i];

                                            if (document.createElement)
                                            {
                                                var newOption = document.createElement("OPTION");
                                                newOption.value = b;
                                                newOption.text = b;

                                                (List.options.add) ? List.options.add(newOption) : List.add(newOption, null);
                                            }
                                        }
										
										$(type_el).disabled=false;
                                    }
                    });
}
function LoadCountries(type_el, country_el)
{
	if ($F(country_el)!=0) {
		return(false);
	}
	var url = '/ajax.php';
	var pars = 'type=' + $F(type_el) + '&action=countries';
	
	$(country_el).disabled=true;
	
      var myAjax = new Ajax.Request(
                    url, 
                    {
                        method: 'get', 
                        parameters: pars, 
                        onComplete: function (originalRequest)
                                    {
                                        var data = originalRequest.responseText;
        
                                        var myarray = MakeArray(data, "|");

                                        var cl = myarray.length;
                                        cl--;
        
                                        var b = new Array();

                                        var List = $(country_el);
										delete_options(List, 1);

                                        for (i=0; i < cl; i++)
                                        {
                                            b = myarray[i];

                                            if (document.createElement)
                                            {
                                                var newOption = document.createElement("OPTION");
                                                newOption.value = b;
                                                newOption.text = b;

                                                (List.options.add) ? List.options.add(newOption) : List.add(newOption, null);
                                            }
                                        }
										
										$(country_el).disabled=false;
                                    }
                    });
}