var url = "tyreSelector.ajax"

var MAKE = "make";
var RANGE = "range";
var MODEL = "model";
var ENGINE = "engine";
var DATE = "date";

var SAISON = "season";
var SW = "sw";
var AR = "ar";
var SEAT = "seat";

var VALIDE_VEHICULE = "validerVehicule";
var VALIDE_DIMENSION = "validerDim";

/*
 * Sur chargement du formulaire on evalue les combo qui doivent disabled
 */

function desactiveSelect()
{
	
	params = [RANGE, MODEL, ENGINE, DATE, AR, SEAT] 	
 	 for (var i = 0; i < params.length; i++)
    {   
    	var tt = $(params[i]);
    	if (tt.options.length < 1) {        	
	        tt.disabled = true;
	    	tt.style.backgroundColor='#EDEEF2';
    	}
    	if (tt.options.length == 1 && tt.options[0].value == '') 
    	{
	        tt.disabled = true;
	    	tt.style.backgroundColor='#EDEEF2';
    	}
    }
}

function onLoad()
{    
    evaluateCombos([RANGE, MODEL, ENGINE,DATE, SW, AR, SEAT]);
    evaluateValider();
}

function evaluateValider()
{
    function selectionDone(param) {
        var target = $(param);
        var result = false;
    	if (target != null && target.options.selectedIndex != 0) {
    		result = true;
    	}
        return result
    }
    ;
    if (selectionDone(RANGE)
            && selectionDone(MAKE)
            && selectionDone(MODEL)
            && selectionDone(ENGINE)
            && selectionDone(DATE)) {             
        $(VALIDE_VEHICULE).disabled = false;
        }
    else {
    	$(VALIDE_VEHICULE).disabled = true;
    }
    
    if (selectionDone(SW)
            && selectionDone(AR)
            && selectionDone(SEAT)) {                     
        $(VALIDE_DIMENSION).disabled = false;
        }
    else {
    	if ($(VALIDE_DIMENSION) != null) {
    		$(VALIDE_DIMENSION).disabled = true;
    	}
    }
}


function evaluateCombos(params)
{
	
	
    for (var i = 0; i < params.length; i++)
    {
        evaluateCombo(params[i]);
    }
}

function evaluateCombo(comboId)
{
  
    var target = $(comboId);
    if (target != null && target.options.length > 1) {
        target.disabled = false;
        target.style.backgroundColor='#C5C9D6';
    }
}


// TS par recherche de véhicule

//Evenement sur changement de la make
function makeChanged()
{
    deSelect([RANGE, MODEL, ENGINE, DATE])    
    loadGammes($F(MAKE));
}

function loadGammes(make)
{
	var pars = "method=getGammes&make="+make;
	var myAjax = new Ajax.Request(
	        url, 
	{ 
		method: 'get',
	    parameters: pars,
	    onComplete: loadFromXml
	});		
}




function rangeChanged()
{
    
    deSelect([MODEL, ENGINE, DATE])
    getModeles($F(MAKE), $F(RANGE));
}

function getModeles(make, range)
{
    
    var pars = "method=getModeles&make=" + make + "&range=" + range;
    var myAjax = new Ajax.Request(
            url,
    {
        method: 'get',
        parameters: pars,
        onComplete: loadFromXml
    });
}

function modelChanged()
{
    
    deSelect([ENGINE, DATE])
    getMoteurs($F(MAKE), $F(RANGE), $F(MODEL));
}

function getMoteurs(make, range, model)
{
	
    var pars = "method=getMotorisations&make=" + make + "&range=" + range + "&model=" + model;
    var myAjax = new Ajax.Request(
            url,
    {
        method: 'get',
        parameters: pars,
        onComplete: loadFromXml
    });
}

function engineChanged()
{
    deSelect([DATE])
    getAnnees($F(MAKE), $F(RANGE), $F(MODEL), $F(ENGINE));
}

function getAnnees(make, range, model, engine)
{
	
    var pars = "method=getAnnnees&make=" + make + "&range=" + range + "&model=" + model + "&engine=" + engine;
    var myAjax = new Ajax.Request(
            url,
    {
        method: 'get',
        parameters: pars,
        onComplete: loadFromXml
    });
}


// TS par dimension pneu

//sw,ar,seat, li, si

//Changement de sw
function dimSaisonChanged()
{
	var cbEte = GetId('vehicule_ete2');
	var cbHiver = GetId('vehicule_hiver2');
	var s = "";
	if (cbEte.checked) s = "S";
	if (cbHiver.checked) s = "W";
    deSelect([AR, SEAT])
    getSws(s);
}

function getSws(season)
{
    
    var pars = "method=getSws&season=" + season;
    var myAjax = new Ajax.Request(
            url,
    {
        method: 'get',
        parameters: pars,
        onComplete: loadFromXml
    });
}

function swChanged()
{
    deSelect([AR, SEAT])
    getArs("S", $F(SW));
}

function getArs(season, sw)
{
    var pars = "method=getArs&season=" + season + "&sw=" + sw;
    var myAjax = new Ajax.Request(
            url,
    {
        method: 'get',
        parameters: pars,
        onComplete: loadFromXml
    });
}

function arChanged()
{
    deSelect([SEAT])
    getSeats("S", $F(SW), $F(AR));
}

function getSeats(season, sw, ar)
{
    var pars = "method=getSeats&season=" + season + "&sw=" + sw + "&ar=" + ar;
    var myAjax = new Ajax.Request(url,
    {
        method: 'get',
        parameters: pars,
        onComplete: loadFromXml
    });
}

function seatChanged()
{
   getLis("S", $F(SW), $F(AR), $F(SEAT));
   evaluateValider();
   
}

function getLis(season, sw, ar, seat)
{
    var pars = "method=getLis&season=" + season + "&sw=" + sw + "&ar=" + ar + "&seat=" + seat;
    var myAjax = new Ajax.Request(url,
    {
        method: 'get',
        parameters: pars,
        onComplete: loadFromXml
    });
}

function liChanged()
{
    deSelect([SI])
    getSis("S", $F(SW), $F(AR), $F(SEAT), $F(LI));
}

function getSis(season, sw, ar, seat, li)
{
    var pars = "method=getSis&season=" + season + "&sw=" + sw + "&ar=" + ar + "&seat=" + seat + "&li=" + li;
    var myAjax = new Ajax.Request(url,
    {
        method: 'get',
        parameters: pars,
        onComplete: loadFromXml
    });
}


function deSelect(params)
{
    for (var i = 0; i < params.length; i++)
    {
        deselectAndPauseCombo(params[i]);
    }
}

/*
* Fonction qui déselectionne la combo et la met en attente
*/
function deselectAndPauseCombo(comboId)
{
    var target = $(comboId);
    // vidage de la combobox
    target.style.backgroundColor='#EDEEF2';
    target.options.length = 1;
    target.disabled = true;
}


function loadFromXml(originalRequest)
{
    //put returned XML in the textarea
    result = originalRequest.responseText;    
    //parsing XML
    try {
        // xmlDoc.LoadXML result;   // parse JS
        var xmlError
        var xmlDoc = new XMLDoc(result, xmlError);
        var action = xmlDoc.docNode;
    }
    catch (e) {
        alert('exception sur parseXML ' + result + ' ' + e);
        return;
    }
    populateComboBoxTarget(action);
}

function populateComboBoxTarget(node)
{
    id = node.getAttribute("type");
    target = $(id);    
    // vidage de la combobox
    target.options.length = 0;

    // remplissage dynamique de la combobox
    var values = node.getElements("value");
    for (j = 0; j < values.length; j++) {
    
        var value = values[j];
        //alert('value '+ value.getText() + '\n escapedvalue '+ escape(value.getText()) + '\n unescapedvalue '+ unescape(value.getText()));
        var val = urldecode(value.getText());
        var tex = urldecode(value.getText());
        if(id == 'date' ) {
			tex = formatDate(tex);
        }
        target.options[j] = new Option(tex, val);
    }
    //    target.disabled = false;
    evaluateCombos([MAKE, RANGE, MODEL, ENGINE,DATE, SW, AR, SEAT]);

    //Si un seul élément, on le sélectionne et on appelle l'évènement de modification de l'élément
    if (values.length == 2) {
        target.options.selectedIndex = 1;
        try {
            eval(id + 'Changed()');
        } catch(ex) {
            //On peut avoir une exception si la méthode n'existe pas
        }
    }
    //On évalue la possibilité d'utiliser le bouton valider
    evaluateValider();

}

function formatDate(t) {
	
	var position = t.indexOf("-", 0);
    if (position != -1) {
        var partie2 = t.substring((position + 1), t.length);
        if ("0/0" == partie2)
            t = t.substring(0, position + 1) + "...";
    }
    return t;
}

function urldecode(ch) {
    ch = ch.replace(/[+]/g, " ")
    return unescape(ch)
}
