/*
 JS utilisé pour le formulaire de recherche avancée de motos.
 Pour : Moto85.com
 Par : Olivier Scherrer
 Fonctions CreateActiveXObject() et createRequestObject() pour la création de l'objet xmlHttpRequest par Louis SAUNDERS & PiXeL.
 Dernière modification : 19/05/2008
*/
var SERVER_NAME = 'www.moto86.net';

/*
* Initialisation des formulaires de recherche
*/
function initSearchForms() {
    hideShowSearchForm('liste-marque-modele'); 
    hideShowSearchForm('recherche-rapide');
}

/*
* Affiche ou cache le formulaire demandé,
* cache les autres formulaires,
* Modifie le fond des onglets recherche-avancée/recherche-rapide/liste-marque-modele pour indiquer le formulaire en cours.
*/
function hideShowSearchForm(idForm) {
    
    /* 
    * Liste des ids des 3 formulaires.
    */
    var listeForms = new Array();
    listeForms[0] = 'recherche-rapide';
    listeForms[1] = 'recherche-avancee';
    listeForms[2] = 'liste-marque-modele';
    
    /*
    * Longueur du tableau.
    */
    var formLength = listeForms.length;
    
    // Affiche ou cache l'élément passé en paramètre selon le statut courant.
    if (document.getElementById(idForm).style.display  == 'block') {
        document.getElementById(idForm).style.display = 'none';
        document.getElementById('onglet-' + idForm).style.backgroundPosition = '0 0';
        document.getElementById('onglet-' + idForm).style.color = 'black';
    } else {
        document.getElementById(idForm).style.display = 'block'; 
        document.getElementById('onglet-' + idForm).style.backgroundPosition = '0 -48px';
        document.getElementById('onglet-' + idForm).style.color = 'white';
    }    
    // Masque les autres
    for (var i = 0; i < formLength; i++) {
        if (idForm != listeForms[i]) {
            document.getElementById(listeForms[i]).style.display = 'none';    
            document.getElementById('onglet-' + listeForms[i]).style.backgroundPosition = '0 0';
            document.getElementById('onglet-' + listeForms[i]).style.color = 'black';
        }
    }
    
    if (idForm == 'liste-marque-modele' || idForm == 'recherche-avancee') {
        if (document.getElementById(idForm).style.display == 'block') {
              // on cache center column.
              if (col = document.getElementById('center-column'))
                  col.style.display = 'none';
              if (col = document.getElementById('center-column-wide'))
                  col.style.display = 'none';
        } else {
              // on affiche center column.
              if (col = document.getElementById('center-column'))
                  col.style.display = 'block';
              if (col = document.getElementById('center-column-wide'))
                  col.style.display = 'block';
        }
    } else {
              // on affiche center column.
              if (col = document.getElementById('center-column'))
                  col.style.display = 'block';
              if (col = document.getElementById('center-column-wide'))
                  col.style.display = 'block';    
    }
}

var tableauModeles = new Array();
var reponse;

/**
* Permet d'instancier un objet présent sur le système.
*
*	Paramètre :
* 		. progid : correspond au nom de l'objet (chaine de caractère) tel qu'il
*       	     est connu du système. Sous Windows, correspond au nom d'une
*           	 clef contenue dans HKCR (HKey Classes Root) dans la base de
*            	registre.
*
* 	Renvoie :
* 		. L'objet créé ou null.
*/
function CreateActiveXObject(progid) {
	var axo = null;

	try {
		axo = new ActiveXObject(progid);
	} catch(excpt) {
		axo = null;
	}
	return axo;
}

function createRequestObject()
{
	var xmlhttp = null;

	if (xmlhttp == null) xmlhttp = CreateActiveXObject("Msxml2.XMLHTTP");
	if (xmlhttp == null) xmlhttp = CreateActiveXObject("Microsoft.XMLHTTP");
	if (xmlhttp == null && typeof XMLHttpRequest != "undefined") xmlhttp = new XMLHttpRequest();

	return xmlhttp;
}

// Charge la liste des millésimes en fonction de marque, cylindrée, modèle.
function loadMillesimes(marque, cylindree, modele, id) {

			// Crée l'objet xmlhttprequest.
			var http = createRequestObject();

	    http.open('GET', 'http://'+SERVER_NAME+'/sk/modules/annonces_moto/traitement/chargerMillesimes.php?marque='+marque+'&modele='+modele+'&cylindree='+cylindree, true);

			var tableauMillesimes;

	    // Lorsque les résultats ont été récupérés.
	    http.onreadystatechange = (function () {
	        if (http.readyState == 4) {
	            if (http.status == 200) {
										
								if (http.responseText != "0") {		
									
									tableauMillesimes = eval('(' + http.responseText + ')');
									
									// On travaille sur le noeud millésimes.
									var millesimeNode = document.getElementById("millesime"+id);
									
									// On le vide.
									while (millesimeNode.childNodes.length>0) {
										millesimeNode.removeChild(millesimeNode.firstChild);
									}

									
									// On le rempli avec les nouvelles valeurs.
									for (millesime in tableauMillesimes ) {
										if (typeof tableauMillesimes[millesime] == "string") {
											var optionNode = document.createElement("option");
											optionNode.appendChild(document.createTextNode(tableauMillesimes[millesime]));
											optionNode.setAttribute('value', tableauMillesimes[millesime]);
											millesimeNode.appendChild(optionNode);
										}
									}
									
									// On active le bouton calcul de cote.
									var boutonCalculerCote = document.getElementById("boutonCalculerCote");
									boutonCalculerCote.removeAttribute('disabled');
									boutonCalculerCote.setAttribute('enabled', 'enabled');
									boutonCalculerCote.src = 'images/cote/bouton-calculer-cote.png';
									
								} else {
									// On travaille sur le noeud millésimes.
									var millesimeNode = document.getElementById("millesime"+id);
									
									// On le vide.
									while (millesimeNode.childNodes.length>0) {
										millesimeNode.removeChild(millesimeNode.firstChild);
									}
									// On ajoute l'intitulé
									var optionNode = document.createElement("option");
									optionNode.appendChild(document.createTextNode("Aucune concurrence"));
									optionNode.setAttribute('value', "0");
									millesimeNode.appendChild(optionNode);
									
									// On désactive le bouton calcul de cote.
									var boutonCalculerCote = document.getElementById("boutonCalculerCote");
									boutonCalculerCote.removeAttribute('enabled');
									boutonCalculerCote.setAttribute('disabled', 'disabled');
									boutonCalculerCote.src = 'images/cote/bouton-calculer-cote-off.png';
								}
							}
					}
			});			
			http.send(null);
}

// Affiche la liste des cylindrées en fonction de la marque choisie.
function swapCylindree(marque,n,autre,defautCylindree,defautModele) {

	// Crée l'objet xmlhttprequest.
	var http = createRequestObject();

	var isIE = false
	if ( navigator.userAgent.indexOf('MSIE') != -1 ) {
		isIE = true;
	}
	
	if (autre == true) {
		var selectNode = document.getElementById("autreCylindreeId");
		selectNode.style.display = "none";
		
		var selectNode = document.getElementById("modeleId");
		selectNode.style.display = "block";
		
		var selectNode = document.getElementById("autreModeleId");
		selectNode.style.display = "none";
		
		var selectNode = document.getElementById("cylindree40");
		selectNode.selectedIndex = 0;
		
		var selectNode = document.getElementById("modele40");
		selectNode.selectedIndex = 0;
	}
	
	if (marque != '' && marque != '0') {

	    // Requête asynchrone.
			// On remplace les éventuels espaces par des tirets.
			marque = marque.replace(/\s+/g,'-');
			
	    http.open('GET', 'http://'+SERVER_NAME+'/sk/modules/modeles/cache/' + marque + '.php', true);

	    // Lorsque les résultats ont été récupérés.
	    http.onreadystatechange = (function () {
	        if (http.readyState == 4) {
	            if (http.status == 200) {
	                
		            // Evaluation du résultat.
		            tableauModeles = eval('(' + http.responseText + ')');
		            
		            // On travaille sur le noeud cylindrée.
		            var selectNode = document.getElementById("cylindree"+n);
								
		            // On vide le noeud avant rafraichissement.
		            while (selectNode.childNodes.length>0) {
		                selectNode.removeChild(selectNode.firstChild);
		            }
		            
		            // Ajoute l'intitulé du menu dans la liste déroulante cylindrée.
		            var optionNode = document.createElement("option");
		            optionNode.appendChild(document.createTextNode("Cylindrée"));
		            optionNode.setAttribute('value', '0');
		            selectNode.appendChild(optionNode);
					
								if (autre == true) {
									var optionNode = document.createElement("option");
									optionNode.appendChild(document.createTextNode("Autre cylindrée"));
									optionNode.setAttribute('value', 'other');
									selectNode.appendChild(optionNode);
								}
				                
								// Reset le menu modèle.
								var modeleNode = document.getElementById("modele"+n);
								while (modeleNode.childNodes.length>0) {
									modeleNode.removeChild(modeleNode.firstChild);
								}
								var optionNode = document.createElement("option");
								optionNode.appendChild(document.createTextNode("Modèle"));
								optionNode.setAttribute('value', '0');
								modeleNode.appendChild(optionNode);
								
								// Génère la liste des options.
								for (cylindree in tableauModeles ) {
									var optionNode = document.createElement("option");
									optionNode.appendChild(document.createTextNode(cylindree));
									optionNode.setAttribute('value', cylindree);
									selectNode.appendChild(optionNode);
								}
								
								// cylindree par defaut
								if (isIE) {
									for (i = 0; i < selectNode.options.length; i++) {
										if (selectNode.options[i].value == defautCylindree) {
											//selectNode.options[i].selected = true;
											selectNode.options[i].setAttribute('selected',true);
										}
									}
								}
								else {
									selectNode.getElements('option').each(function(option) {
										if(option.getProperty('value') == defautCylindree) option.setProperty('selected', true);
									});
								}
								
								// si on veut selectionner par defaut une cylindree et un modele, on raffraichit les modeles aussi
								if(defautCylindree && defautModele){
									//var cylindreeNode	= document.getElementById('cylindree'+n);
									swapModele(defautCylindree,n,autre,defautModele);
								}
	            }
	        }
	    });

	    http.send(null);
	}

}

// Affiche la liste des modèles en fonction de la cylindrée
function swapModele(cylindree,n,autre,defaut) {

	// Crée l'objet xmlhttprequest.
	var http = createRequestObject();

	var isIE = false
	if ( navigator.userAgent.indexOf('MSIE') != -1 ) {
		isIE = true;
	}
	
	var selectNode = document.getElementById("modele"+n);
	var marque     = document.getElementById("marque"+n).value;

	while (selectNode.childNodes.length>0) {
		selectNode.removeChild(selectNode.firstChild);
	}

	// Ajoute l'intitulé du menu dans la liste déroulante modèle.
	var optionNode = document.createElement("option");
	optionNode.appendChild(document.createTextNode("Modèle"));
	optionNode.setAttribute('value', '0');
	selectNode.appendChild(optionNode);

	if (autre == true) {
		var optionNode = document.createElement("option");
		optionNode.appendChild(document.createTextNode("Autre modèle"));
		optionNode.setAttribute('value', 'other');
		selectNode.appendChild(optionNode);
	}

	if (typeof tableauModeles[cylindree] == "object") {
		for (modele in tableauModeles[cylindree] ) {
			if (typeof tableauModeles[cylindree][modele] == "string") {
				var optionNode = document.createElement("option");
				optionNode.appendChild(document.createTextNode(tableauModeles[cylindree][modele]));
				optionNode.setAttribute('value', tableauModeles[cylindree][modele]);
				selectNode.appendChild(optionNode);
			}
		} 
	} else if (typeof tableauModeles[cylindree] == "string") {
		var optionNode = document.createElement("option");
		optionNode.appendChild(document.createTextNode(tableauModeles[cylindree]));
		optionNode.setAttribute('value', tableauModeles[cylindree]);
		selectNode.appendChild(optionNode); 
	}
  
	// modele par defaut
	if (isIE) {
		for (i = 0; i < selectNode.options.length; i++) {
			if (selectNode.options[i].value == defaut) {
				//selectNode.options[i].selected = true;
				selectNode.options[i].setAttribute('selected',true);
			}
		}
	}
	else {
		selectNode.getElements('option').each(function(option) {
			if(option.getProperty('value') == defaut) option.setProperty('selected', true);
		});
	}
	   
   if (autre == true) {		
		if (cylindree == 'other') {
			var selectNode = document.getElementById("autreCylindreeId");
			selectNode.style.display = "block";
			
			var selectNode = document.getElementById("modeleId");
			selectNode.style.display = "none";
			
			var selectNode = document.getElementById("modele40");
			selectNode.value = "other";
			
			var selectNode = document.getElementById("autreModeleId");
			selectNode.style.display = "block";
			
			stop = true;
		} else {
			var selectNode = document.getElementById("autreCylindreeId");
			selectNode.style.display = "none";
			
			var selectNode = document.getElementById("modeleId");
			selectNode.style.display = "block";
			
			var selectNode = document.getElementById("autreModeleId");
			selectNode.style.display = "none";
		}
	}
}

// Ajoute une textbox si c'est une cylindrée non existante
function otherCylindree(cylindree) {
	if (cylindree == 'other') {
		var selectNode = document.getElementById("autreCylindreeId");
		selectNode.style.display = "block";
	} else {
		var selectNode = document.getElementById("autreCylindreeId");
		selectNode.style.display = "none";
	}
}

// Ajoute une textbox si c'est un modèle non existant
function otherModele(modele) {
	if (modele == 'other') {
		var selectNode = document.getElementById("autreModeleId");
		selectNode.style.display = "block";
	} else {
		var selectNode = document.getElementById("autreModeleId");
		selectNode.style.display = "none";
	}
}

// Active ou desactive la recherche par marque modèle lorsqu'un type est sélectionné.
function endisableType(idMenu, value) {

    var idMenuMarque = 'marque' + idMenu;
    var idMenuModele = 'modele' + idMenu;
    var idMenuCylindree = 'cylindree' + idMenu;

    if (value == 0) {
        var currentOption = 'disabled';
        var option = 'enabled';
    } else {
        var currentOption = 'enabled';
        var option = 'disabled';
    }
    
    var selectNode = document.getElementById(idMenuMarque);
    selectNode.removeAttribute(currentOption);
    selectNode.setAttribute(option, option);
    
    var selectNode = document.getElementById(idMenuModele);
    selectNode.removeAttribute(currentOption);
    selectNode.setAttribute(option, option);
    
    var selectNode = document.getElementById(idMenuCylindree);
    selectNode.removeAttribute(currentOption);
    selectNode.setAttribute(option, option);
    
    
}

// Active ou désactive la liste des départements si le pays sélectionné est la France.
function endisableDepartements(idFrance, idPays, idDep) {
    
    var selectNode = document.getElementById(idDep);

    if (idFrance == idPays) {
        selectNode.removeAttribute('disabled');
        selectNode.setAttribute('enabled', 'enabled');
    } else {
        selectNode.removeAttribute('enabled');
        selectNode.setAttribute('disabled', 'disabled');
    }
    
}

// Active ou désactive la liste des pays si un département est sélectionné.
function endisablePays(idDep, pays) {
    
    var selectNode = document.getElementById(pays);

    if (idDep == 0) {
        selectNode.removeAttribute('disabled');
        selectNode.setAttribute('enabled', 'enabled');
    } else {
        selectNode.removeAttribute('enabled');
        selectNode.setAttribute('disabled', 'disabled');
    }
    
}

// Coche le bouton radio correspondant à la recherche géographique voulue.
function selectField(idField) {
    document.getElementById(idField).checked = true;
}
