var addressBook = {
    myConn:    false,    // XMLHttpRequest
    body:      false,    // элемент body
    country:   false,    // элемент селект
    city:   false,    // элемент селект
    metroBlock:    false,    // «цель» - элемент
    loader:    false,    // сообщение о загрузке

    init:      function( countryId, cityId, metroBlockId ){

        // проверка методов и элементов
        if( !document.getElementById ||
          !document.getElementsByTagName ||
          !document.getElementById( cityId ) 
        ) return; // !document.getElementById( metroBlockId )
            
        //создаем и проверяем объект XHConn,
        //если возникли проблемы тихонько выходим
        addressBook.myConn = new XHConn();
        
        if( !addressBook.myConn ) return;
        
        addressBook.body = document.getElementsByTagName( 'body' )[0];
        
        addressBook.country = document.getElementById( countryId );
        addressBook.city = document.getElementById( cityId );
        addressBook.metroBlock  = document.getElementById( metroBlockId );
        
        // добавляем обработчик события onchange элемента select
        if (addressBook.metroBlock) {
          addressBook.addEvent( addressBook.city, 'change',
            function(){
              if( this.value != '' ){
                // если город выбран, запрашиваем список
                addressBook.getAddress( document.getElementById('country').value, this.value );
              }
              else {
                // иначе очищаем поле
                addressBook.metroBlock.innerHTML = '';
              }
            }
         );
       }
       
       // добавляем обработчик события onchange элемента select
        addressBook.addEvent( addressBook.country, 'change',
            function(){
                if( this.value != '' ){
                    // если город выбран, запрашиваем список
                    addressBook.getCities( this.value );
                } else {
                    // иначе очищаем поле
                    addressBook.city.innerHTML = '';
                }
            } );
    },

    getAddress:  function( country, id ){
        // функция которая будет запущена
        // после завершения вызова Ajax
        var fnWhenDone = function(oXML) {
            // вставляем полученную информацию в элемент
            addressBook.metroBlock.innerHTML = oXML.responseText;
        };

        var sections = document.getElementById('sections') ? document.getElementById('sections').value : 3;
        var existed = document.getElementById('existed') ? document.getElementById('existed').value : 1;
        
        var metro1 = document.getElementById('metro1') ? document.getElementById('metro1').value : 0;
        var metro2 = document.getElementById('metro2') ? document.getElementById('metro2').value : 0;
        var metro3 = document.getElementById('metro3') ? document.getElementById('metro3').value : 0;
        
        addressBook.myConn.connect("/netcat/modules/default/metro.php",
		    "POST", "country=" + country + "&id=" + id + "&metro1=" + metro1 + "&metro2=" + metro2 + "&metro3=" + metro3 + "&sections=" + sections + "&existed=" + existed, fnWhenDone);
    },
    
    getCities:  function( id ){
      // функция которая будет запущена
      // после завершения вызова Ajax
      var fnWhenDone = function(oXML) {
        // вставляем полученную информацию в элемент
        addressBook.city.innerHTML = oXML.responseText;
        if (addressBook.metroBlock) {
          addressBook.getAddress( id, document.getElementById('city').value );
        }
      };
      
      var existed = document.getElementById('existed') ? document.getElementById('existed').value : 1;
      
      addressBook.myConn.connect("/netcat/modules/default/cities.php",
      "POST", "id=" + id + "&existed=" + existed, fnWhenDone);
    },
    
    addEvent: function( obj, type, fn ){ 
	    // функция добавляет обработчик события
        if (obj.addEventListener)
            obj.addEventListener( type, fn, false );
        else
            if (obj.attachEvent) {
                obj["e"+type+fn] = fn;
                obj[type+fn] = function() {
                    obj["e"+type+fn]( window.event );
                };
                obj.attachEvent( "on"+type, obj[type+fn] );
            }
    }
};

// вызываем метод init() при загрузки страницы
// и передаем необходимые параметры
addressBook.addEvent( window, 'load',
    function() {
        addressBook.init('country', 'city', 'metrodiv');
    }
);

