/* 
   (do not remove this)
   (not this either)
*/

function Localization() {

  // check for search form - we have to do it in another way there, this are historical bugs :-(
  if (document.getElementById('search')) {
    // if we change the country, we have to reload county, region and city field
    var element = document.getElementById('search-getCountry');
    if (element) {
      refresh3 = function() {
        var e = document.getElementById('search-getCountry');
        
        var index = 'getCountry';
        var value = e.options[e.selectedIndex].value
        
        l = new Loader();
        l.loadValuesFor('search-getCounty', index, value, 'getCounty');
        l.loadValuesFor('search-getRegion', index, value, 'getRegion');
        l.loadValuesFor('search-getCity',   index, value, 'getCity');
      };
      registerEventListener(element, "change", refresh3);
      //registerEventListener(element, "blur", refresh3);
    }

    // if we change the county, we have to reload region and city field
    var element = document.getElementById('search-getCounty');
    if (element) {
      refresh2 = function() {
        var e = document.getElementById('search-getCounty');
        
        var index = 'getCounty';
        var value = e.options[e.selectedIndex].value
        
        l = new Loader();
        l.loadValuesFor('search-getRegion', index, value, 'getRegion');
        l.loadValuesFor('search-getCity',   index, value, 'getCity');
      };
      registerEventListener(element, "change", refresh2);
      //registerEventListener(element, "blur", refresh2);
    }
    
    // if we change the region, we have to reload city field
    var element = document.getElementById('search-getRegion');
    if (element) {
      refresh1 = function() {
        var e = document.getElementById('search-getRegion');
        
        var index = 'getRegion';
        var value = e.options[e.selectedIndex].value
        
        l = new Loader();
        l.loadValuesFor('search-getCity',   index, value, 'getCity');
      };
      registerEventListener(element, "change", refresh1);
      //registerEventListener(element, "blur", refresh1);
    }
    
    // exit
    return 
  }

  // if we change the country, we have to reload county, region and city field
  var element = document.getElementById('fieldname-country');
  if (element) {
    refresh3 = function() {
      var e = document.getElementById('fieldname-country');
      
      var index = 'getCountry';
      var value = e.options[e.selectedIndex].value
      
      l = new Loader();
      l.loadValuesFor('fieldname-county', index, value, 'getCounty');
      l.loadValuesFor('fieldname-region', index, value, 'getRegion');
      l.loadValuesFor('fieldname-city',   index, value, 'getCity');
    };
    registerEventListener(element, "change", refresh3);
    //registerEventListener(element, "blur", refresh3);
  }

  // if we change the county, we have to reload region and city field
  var element = document.getElementById('fieldname-county');
  if (element) {
    refresh2 = function() {
      var e = document.getElementById('fieldname-county');
      
      var index = 'getCounty';
      var value = e.options[e.selectedIndex].value
      
      l = new Loader();
      l.loadValuesFor('fieldname-region', index, value, 'getRegion');
      l.loadValuesFor('fieldname-city',   index, value, 'getCity');
    };
    registerEventListener(element, "change", refresh2);
    //registerEventListener(element, "blur", refresh2);
  }
  
  // if we change the region, we have to reload city field
  var element = document.getElementById('fieldname-region');
  if (element) {
    refresh1 = function() {
      var e = document.getElementById('fieldname-region');
      
      var index = 'getRegion';
      var value = e.options[e.selectedIndex].value
      
      l = new Loader();
      l.loadValuesFor('fieldname-city',   index, value, 'getCity');
    };
    registerEventListener(element, "change", refresh1);
    //registerEventListener(element, "blur", refresh1);
  }
}

Loader = function() {
  var that = this;
  this.xmlhttp = null;
}
Loader.prototype.loadValuesFor = function(id, index, value, metadata) {

  var node = document.getElementById(id)
  if (!node) return false
  
  // visually marking to know that data is loaded
  node.disabled = true;
  addClassName(node, 'loading');
  
  var parameters = "index=" + index + "&value=" + value + "&metadata=" + metadata;
  
  if (this.xmlhttp == null) {
    this.xmlhttp = new XMLHttpRequest();
    //this.xmlhttp.open('POST', "http://tourenspuren.at/getLocalizationValues", true);
    this.xmlhttp.open('POST', "http://tourenspuren.at/getLocalization.xml", true);
    that = this;
    this.xmlhttp.onreadystatechange = function() {
      if (that.xmlhttp.readyState == 4) {
        var response = that.xmlhttp.responseXML;
        var node = document.getElementById(id)
        that.xmlhttp = null;
        
        if (response) {
          var items = response.getElementsByTagName('value')
          
          // Remove old child nodes:
          o = document.createElement('option');
          o.setAttribute('value', '')
          o.appendChild(document.createTextNode(node.options[0].firstChild.data));
          node.innerHTML = ''
          node.appendChild(o)
          
          // Append new child nodes:
          for (i = 0; i < items.length; i++) {
            o = document.createElement('option');
            o.setAttribute('value', items[i].firstChild.data)
            o.appendChild(document.createTextNode(items[i].firstChild.data));
            node.appendChild(o);
          }
        }
        // visually demarking to know that data is loaded
        node.disabled = false;
        removeClassName(node, 'loading');
      }
    }
    
    this.xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    this.xmlhttp.setRequestHeader("Content-length", parameters.length);
    this.xmlhttp.setRequestHeader("Connection", "close"); 
    this.xmlhttp.send(parameters);
  } else {
    that = this;
    setTimeout(function() { that.loadValuesFor(id, index, value, metadata); }, 100);
  }
}

registerPloneFunction(Localization)
/**/
