/* GLOBAL variables */

departement_layer_id = "dpt_bis";
pays_layer_id = "pays_bis";
commune_layer_id = "coms_bis";

AjaxLocate = {
    init : function() {
    
        var url = AjaxLocate.url;
        var args = "locate[init]=1";
	    
	    Logger.note(url + '?' + args);
	  
	    var myAjax = new Ajax.Request(
	        url,
			{
			  method: 'get',
			  parameters: args,
	          onComplete: function(response) {
	             Logger.trace('Response received!');
	             
	             responseTag = response.responseText.substring(0, 5);
                 
                 if (responseTag != '<?xml') {
                     Logger.error('Received response is malformed!');
                 } else {
                     AjaxLocate.handleInitResponse(response);
                 }
	          }
			}
	    );
    },
    
    handleRequest : function(el) {
    	var url = AjaxLocate.url;
        var args = "";
	    
	    args += "&" + el.name + "=" + el.value;
	    
	    switch (el.name) {
	        case "locate[departement]":
	            $('locate[pays]').options[0].selected = "selected";
//	            $('pays_button').style.display = "none";
//	            $('departement_button').style.display = "inline";
	            $('commune_button').style.display = "none";
	            AjaxHandler.updateDomElement('communes_note', 'innerHTML',
	              "Communes associ&egrave;es au d&eacute;partement " + el.options[el.selectedIndex].text);
	            break;
	        case "locate[pays]":
                $('locate[departement]').options[0].selected = "selected";
//	            $('pays_button').style.display = "inline";
//	            $('departement_button').style.display = "none";
	            $('commune_button').style.display = "none";
	            AjaxHandler.updateDomElement('communes_note', 'innerHTML',
	              "Communes associ&egrave;es au " + el.options[el.selectedIndex].text);
	            break;
	    }
	    $('locate[commune]').disabled = "disabled";
	    this.emptySelectElement($('locate[commune]'));
	    
	    Logger.note(url + '?' + args);
	    var myAjax = new Ajax.Request(
	        url,
			{
			  method: 'get',
			  parameters: args,
	          onComplete: function(response) {
	             Logger.trace('Response received!');
	             AjaxLocate.handleInitResponse(response);
	          }	          
			}
	    );
    },
    
    emptySelectElement : function(select) {
        var l = select.length;
        for (var i = 1; i < l; i++) {
            select.removeChild(select.options[1]);
        }
    },
    
    fillSelectElement : function(select, xml) {
        var l = xml.length;
        for (var i = 0; i < l; i++) {
            var id = xml.item(i).getAttribute("key");
            var label = xml.item(i).getAttribute("value");
            select.options[i + 1] = new Option(label, id, false, false);
        }
        select.disabled = '';
    },
    
    handleInitResponse : function(response) {
        var departements = response.responseXML.getElementsByTagName('response')[0].getElementsByTagName('departements')[0].getElementsByTagName('item');
        var select = $('locate[departement]');
        this.fillSelectElement(select, departements);
        
        var pays = response.responseXML.getElementsByTagName('response')[0].getElementsByTagName('pays')[0].getElementsByTagName('item');
        var select = $('locate[pays]');
        this.fillSelectElement(select, pays);
        
        var communes = response.responseXML.getElementsByTagName('response')[0].getElementsByTagName('communes')[0].getElementsByTagName('item');
        var select = $('locate[commune]');
        this.fillSelectElement(select, communes);
        
    },
    
    handleRecenter : function(el) {
        switch (el.name) {
            case "locate[departement]":
                $('id_recenter_layer').value = departement_layer_id;
	            break;
	        case "locate[pays]":
	            $('id_recenter_layer').value = pays_layer_id;
	            break;
	        case "locate[commune]":
	            $('id_recenter_layer').value = commune_layer_id;
	            $('commune_button').style.display = "inline";
	            break;
        }
        $('id_recenter_ids').value = el.options[el.selectedIndex].value;
        
        Logger.note ('id_recenter_ids : ' + $('id_recenter_ids').value);
        Logger.note ('id_recenter_layer : ' + $('id_recenter_layer').value);
        
        CartoWeb.trigger('Location.Recenter');
    }
};
