function isCodePostal(codepostal) {
	return codepostal.length==5 && isPositive(codepostal);
}

function isDomTom(codepostal) {
	if (codepostal.length>1) {
		c = codepostal.substring(0,2);
		ok = ((c=='97' || c=='98'));
		return ok;
	}
	else {
		return false;
	}
}

function isPositive(val) {
	return !isNaN(val) && val > 0;
}

function isPositiveOrNull(val) {
	return !isNaN(val) && val >= 0;
}

function isEmpty(val) {
	return val.length < 1;
}

function isCleAlpha(val) {
	n = val.length;
	i = 0;
	ok = true;
	while (i<n && ok) {
		c = val.charAt(i);
		ok = ((c<='z' && c>='a') || (c<='Z' && c>='A') || c=='_' || (c<='9' && c>='0'));
		i += 1;
	}
	return ok;
}

function isEmail(email) {
	invalidChars = " ~'^`\"*+=\\|][(){}$&!#%/:,;";
	for (i=0; i<invalidChars.length; i++) {
		badChar = invalidChars.charAt(i);
		if (email.indexOf(badChar,0) > -1) return false;
	}
	lengthOfEmail = email.length;
	if ((email.charAt(lengthOfEmail - 1) == ".") || (email.charAt(lengthOfEmail - 2) == "."))
	return false;
	Pos = email.indexOf("@",1);
	if (email.charAt(Pos + 1) == ".") return false;
	while ((Pos < lengthOfEmail) && ( Pos != -1)) {
		Pos = email.indexOf(".",Pos);
		if (email.charAt(Pos + 1) == ".") return false;
		if (Pos != -1) Pos++;
	}
	atPos = email.indexOf("@",1);
	if (atPos == -1) return false;
	if (email.indexOf("@",atPos+1) != -1) return false;
	periodPos = email.indexOf(".",atPos);
	if (periodPos == -1) return false;
	if (periodPos+3 > email.length) return false;
	return true;
}

function verifRef() {
	var ref = document.getElementById('numRef').value;
    if (ref == "R\u00E9f\u00E9rence exacte") {
		alert("Vous devez entrer au moins 1 caract\u00E8re !");
        return false;
	} else {
		if (ref.length < 1) {
    		alert("Vous devez entrer au moins 1 caract\u00E8re !");
        	return false;
		}
	}
}

function verifMod(){
	var ref = document.getElementById('numMod').value;
	if (ref.length < 1) {
		alert("Vous devez entrer au moins 1 caract\u00E8re !");
    	return false;
	}
}

function changeMarque() {
	var marque = document.getElementById("marque");
	window.location.href = "/expershop?$COOKIE$&Page=PageChoix.tmpl&numMarque="+ marque.value;
}

function changeAnnee() {
	var date = document.getElementById("annee");
	if (annee.value !="0"){
		window.location.href = "/expershop?$COOKIE$&Page=PageChoix.tmpl&numMarque=$numMarque$&annee="+ date.value;
	}
}

function changeModel() {
	var model = document.getElementById("model");
	if (model.value != "0"){
		window.location.href = "/expershop?$COOKIE$&Page=PageChoix.tmpl&numMarque=$numMarque$&annee=$annee$&numModel="+ model.value;
	}
}

function changeType() {
	var type = document.getElementById("type");
	if (type.value != "0"){
		window.location.href = "/expershop?$COOKIE$&Page=PageChoix.tmpl&numMarque=$numMarque$&annee=$annee$&numModel=$numModel$&numType="+ type.value;
	}
}

//Verifie si la case "J'accepte les conditions generales de ventes" a ete cochee
function checkCGV(){
	var cgv = document.getElementById("cgv");
	
	if(cgv.checked == true){
		return true;
	}
	else{
		alert("Vous devez cocher la case \"J'accepte les conditions g\u00E9n\u00E9rales de ventes\" pour pouvoir continuer");
		return false;
	}
}

function changeVoiture(img) {
	document.getElementById("voiture").style.backgroundImage = 'url("'+img+'")';
}

function resetVoiture()	{
	document.getElementById("voiture").style.backgroundImage = 'url("/images/picto/v_generique.jpg")';
}

function remplacerSautLigne() {
	document.getElementById('LivreComm').value = document.getElementById('LivreComm').value.replace(/\n/g, '<br>');
}

function zoom(val1, val2) {
	f= window.open("/expershop?$COOKIE$&Page=Zoom.tmpl&Marque="+val1+"&Image="+val2,"popup","width=650,height=500,scrollbars=yes,top=100,left=100");
}

function changeMarque2() {
	var marque = document.getElementById("marque");
	window.location.href = "expershop?$COOKIE$&Page=PageChoixTrans.tmpl&numMarque="+ marque.value;
}

function changeModel2() {
	var model = document.getElementById("model");
	if (model.value != "0") {
		window.location.href = "expershop?$COOKIE$&Page=PageChoixTrans.tmpl&numMarque=$numMarque$&numModel="+ model.value;
	}
}

function verifCoord() {
	if (isEmpty(document.getElementById('LastName').value)) {
		alert("Veuillez indiquer votre nom !");
		return false;
	}
	else if (isEmpty(document.getElementById('FirstName').value)) {
		alert("Veuillez indiquer votre pr\u00E9nom !");
		return false;
	}
	else if (isEmpty(document.getElementById('Address').value)) {
		alert("Veuillez indiquer votre adresse !");
		return false;
	}
	else if (isEmpty(document.getElementById('ZipCode').value)) {
		alert("Veuillez indiquer votre code postal !");
		return false;
	}
	else if (!isCodePostal(document.getElementById('ZipCode').value)) {
		alert("Votre code postal semble incorrect !");
		return false;
	}
	else if (isEmpty(document.getElementById('City').value)) {
		alert("Veuillez indiquer votre ville !");
		return false;
	}
	else if (isEmpty(document.getElementById('Tel').value)) {
		alert("Veuillez indiquer votre num\u00E9ro de t\u00E9l\u00E9phone !");
		return false;
	}
	else if (isNaN(document.getElementById('Tel').value)) {
		alert("Votre num\u00E9ro de t\u00E9l\u00E9phone semble incorrect !");
		return false;
	}
	else if (document.getElementById('Tel').value.length != 10) {
		alert("Votre num\u00E9ro de t\u00E9l\u00E9phone semble incorrect !");
		return false;
	}
	else if (isEmpty(document.getElementById('Email').value)) {
		alert("Veuillez indiquer votre adresse email !");
		return false;
	}
	else if (!isEmail(document.getElementById('Email').value)) {
		alert("Votre adresse email semble incorrecte !");
		return false;
	}
	else if (isEmpty(document.getElementById('Password1').value)) {
		alert("Veuillez indiquer votre mot de passe !");
		return false;
	}
	return true;
}

function verifShip() {
	if (isEmpty(document.getElementById('ShipLastName').value)) {
		alert("Veuillez indiquer votre nom (livraison) !");
		return false;
	}
	else if (isEmpty(document.getElementById('ShipFirstName').value)) {
		alert("Veuillez indiquer votre pr\u00E9nom (livraison) !");
		return false;
	}
	else if (isEmpty(document.getElementById('ShipAddress').value)) {
		alert("Veuillez indiquer  votre adresse (livraison) !");
		return false;
	}
	else if (isEmpty(document.getElementById('ShipZipCode').value)) {
		alert("Veuillez indiquer  votre code postal (livraison) !");
		return false;
	}
	else if (!isCodePostal(document.getElementById('ShipZipCode').value)) {
		alert("Votre code postal semble incorrect (livraison) !");
		return false;
	}
	else if (isDomTom(document.getElementById('ShipZipCode').value)) {
		alert("La livraison est effectu\u00E9e uniquement en France m\u00E9tropolitaine !");
		return false;
	}
	else if (isEmpty(document.getElementById('ShipCity').value)) {
		alert("Veuillez indiquer votre ville (livraison) !");
		return false;
	}
	return true;
}

function verifRaison() {
	if (isEmpty(document.getElementById('Society').value)) {
		alert("Veuillez indiquer la raison sociale de l'entreprise !");
		return false;
	}
	if (isEmpty(document.getElementById('Siret').value)) {
		alert("Veuillez indiquer le num\u00E9ro de siret de l'entreprise !");
		return false;
	}
	return true;
}

function verifCustId() {
	if (isEmpty(document.getElementById('CustId').value)) {
		alert("Veuillez indiquer un identifiant !");
		return false;
	}
	else if (!isCleAlpha(document.getElementById('CustId').value)) {
		alert("Votre identifiant est incorrect ! (caract\u00E8res autoris\u00E9s : a-Z 0-9 _ )");
		return false;
	}
	var ident = document.getElementById('CustId').value;
	var qId = new QueryHttp("/expershop", "$COOKIE$");
	qId.setPage("VerifCustId.tmpl");
	qId.setParam("ident", ident);
	var resultat = qId.execute();
	var result = resultat.responseXML.documentElement.getAttribute("result");
	if (result == 1) {
		alert("Identifiant existant ! Veuillez choisir un autre identifiant.");
		return false;
	}
	return true;
}

function verifPassword() {
	var password1 = document.getElementById('Password1').value;
	var password2 = document.getElementById('Password2').value;
	if (password1!=password2) {
		document.getElementById('Password1').value = "";
		document.getElementById('Password2').value = "";
		alert("Les mots de passe saisis sont diff\u00E9rents !");
		return false;
	}
	else if (isEmpty(password1) || isEmpty(password2)) {
		alert("Veuillez remplir les deux champs mot de passe !");
		return false;
	}
	else {
		return true;
	}
}

function verifDemande() {
	if (isEmpty(document.getElementById('Nom').value)) {
		alert("Veuillez indiquer votre nom !");
		return false;
	}
	else if (isEmpty(document.getElementById('Prenom').value)) {
		alert("Veuillez indiquer votre pr\u00E9nom !");
		return false;
	}
	else if (isEmpty(document.getElementById('Email').value)) {
		alert("Veuillez indiquer votre adresse email !");
		return false;
	}
	else if (isEmpty(document.getElementById('Marque').value)) {
		alert("Veuillez indiquer une marque !");
		return false;
	}
	else if (isEmpty(document.getElementById('Modele').value)) {
		alert("Veuillez indiquer un mod\u00E8le !");
		return false;
	}
	return true;
}

function verifMessage() {
	if (isEmpty(document.getElementById('Message').value)) {
		alert("Message manquant !");
		return false;
	}
	return true;
}

function reptrim(element) {
	element.value = trim(element.value);
}


function urlEncode(strText) {
	return escape(strText);
}

function confirmNewsLetter() {
	if (isEmail(document.getElementById('EmailNews').value)){
		return window.confirm("Confirmez-vous votre inscription \u00E0 notre newsletter ?");
	} else {
		alert ("Votre email est invalide.");
		return false;
	}
}

function prepareRecherche() {
	str = document.getElementById('MotsCles').value;
	str2 = "";
	for(i=0; i<str.length; i++) {
		str2 = str2 + ((str.charAt(i)==' ')?",":str.charAt(i));
	}
	document.getElementById('MotsCles').value = str2;
}

function getFileName(path) {
	var lastslash = path.lastIndexOf('/');
	var lastantislash = path.lastIndexOf('\\');
	var lastsep = (lastslash>lastantislash)?lastslash:lastantislash;
	return path.substring(lastsep+1,path.length);
}


function trim(str) {
	var i = 0;
	var lg = str.length;
	var j = lg-1;
	while (i<lg && ((str.charCodeAt(i)==9) || (str.charCodeAt(i)==10) || (str.charCodeAt(i)==13) || (str.charCodeAt(i)==32))) {
		i++;
	}
	while (j>i && ((str.charCodeAt(j)==9) || (str.charCodeAt(j)==10) || (str.charCodeAt(j)==13) || (str.charCodeAt(j)==32))) {
		j--;
	}
	return str.substring(i,j+1);
}

function popup(url, w, h) {
	window.open(url,"","width="+ w +",height="+ h +",scrollbars=yes,toolbar=no,location=no,directories=no,status=no,resizable=yes,copyhistory=no");
}


/* QUERY */
function QueryHttp(servlet,cook) {
	this.servlet=servlet;
	this.cook=cook;
	this.params = "";
	this.plist = new Array();
}

QueryHttp.prototype.execute = function(callBackFunction, callBackParams) {
	this.buildUrlParam();
	var httpRequest = this.getXMLHttpRequest();
	if (httpRequest) {
		if (callBackFunction==undefined) {
			httpRequest.open("POST",this.servlet+"?"+this.cook, false);
			httpRequest.setRequestHeader("Content-type","application/x-www-form-urlencoded");
			httpRequest.send(this.params);
			return httpRequest;
		}
		else {
			httpRequest.onload = function (aEvt) { callBackFunction(httpRequest,callBackParams); };
			httpRequest.open("POST", this.servlet+"?"+this.cook, true);
			httpRequest.setRequestHeader("Content-type","application/x-www-form-urlencoded");
			httpRequest.send(this.params);
		}
	}
}

QueryHttp.prototype.getXMLHttpRequest = function() {
	var HttpRequest = null;
	if(window.XMLHttpRequest) // Firefox et autres
		HttpRequest = new XMLHttpRequest();
	else if(window.ActiveXObject) { // Internet Explorer
		try {
			HttpRequest = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			HttpRequest = new ActiveXObject("Microsoft.XMLHTTP");
		}
	}
	else { // XMLHttpRequest non support###ar le navigateur
		alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
		HttpRequest = false;
	}
	return HttpRequest;
}

QueryHttp.prototype.setParam = function(pname, pvalue) {
	var param = this.getParam(pname);
	if (param==undefined) {
		this.addParam(pname, pvalue);
	}
	else {
		param.setValue(pvalue);
	}
}

QueryHttp.prototype.setAction = function(pvalue) {
	var param = this.getParam("Action");
	if (param==undefined) {
		this.addParam("Action", pvalue);
	}
	else {
		param.setValue(pvalue);
	}
}

QueryHttp.prototype.setPage = function(pvalue) {
	var param = this.getParam("Page");
	if (param==undefined) {
		this.addParam("Page", pvalue);
		this.addParam("ContentType","xml");
	}
	else {
		param.setValue(pvalue);
	}
}

QueryHttp.prototype.setParamById = function(pname, pid) {
	this.setParam(pname, document.getElementById(pid).value);
}


QueryHttp.prototype.setFullParamById = function(pid) {
	this.setParam(pid, document.getElementById(pid).value);
}


QueryHttp.prototype.addParam = function(pname, pvalue) {
	this.plist.push(new Param(pname, pvalue));
}

QueryHttp.prototype.removeParam = function(pname) {
	var trouve = false;
	var i = 0;
	while (!trouve && i<this.plist.length) {
		trouve = (this.plist[i].pname==pname);
		i++;
	}
	if (trouve) {
		this.plist.splice(i-1,1);
	}
}


QueryHttp.prototype.getParam = function(pname) {
	var trouve = false;
	var i = 0;
	while (!trouve && i<this.plist.length) {
		trouve = this.plist[i].pname==pname;
		i++;
	}
	return (trouve?this.plist[i-1]:undefined);
}


QueryHttp.prototype.clearParams = function() {
	this.plist.length = 0;
}


QueryHttp.prototype.buildUrlParam = function() {
	this.params = "";
	for (var i=0; i<this.plist.length; i++)
		this.params += this.plist[i].getUrlParam();
}

function Param(pname, pvalue) {
	this.pname = pname;
	this.pvalue = pvalue;
}


Param.prototype.getUrlParam = function() {
	return "&"+ this.pname +"="+ this.pvalue;
}


Param.prototype.setValue = function(pvalue) {
	this.pvalue = pvalue;
}

function getXhr() {
	var xhr = null;
	if(window.XMLHttpRequest) // Firefox et autres
		xhr = new XMLHttpRequest();
	else if(window.ActiveXObject){ // Internet Explorer
		try {
			xhr = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			xhr = new ActiveXObject("Microsoft.XMLHTTP");
		}
	} else { // XMLHttpRequest non supporté par le navigateur
		alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
		xhr = false;
	}
	return xhr;
}

function category(numAnnee,nomFabUrl,nomModUrl,nomTypUrl,nomPicUrl) {
	var xhr = getXhr();
	// On défini ce qu'on va faire quand on aura la réponse
	xhr.onreadystatechange = function() {
	// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
	if(xhr.readyState == 1) {
		document.getElementById('arbre').innerHTML = "<br /><br /><center><img src='/images/ajax-loader.gif' alt='' /><br />Recherche en cours...</center>";
	}
	if(xhr.readyState == 4 && xhr.status == 200){
			leselect = xhr.responseText;
			// On se sert de innerHTML pour rajouter les options a la liste
			document.getElementById('arbre').innerHTML = leselect;
		}
	}
	// Ici on va voir comment faire du post
	xhr.open("POST","/expershop?Page=PageArbre.tmpl",true);
	xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
	// ne pas oublier de poster les arguments
	xhr.send("numAnnee="+escape(numAnnee)+"&nomFabUrl="+escape(nomFabUrl)+"&nomModUrl="+escape(nomModUrl)+"&nomTypUrl="+escape(nomTypUrl)+"&nomPicUrl="+escape(nomPicUrl));
}



function checkMessage() {
	if (isEmpty(document.getElementById('Name').value)) {
		alert("Veuillez indiquer votre nom...");
		return false;
	}
	else if (isEmpty(document.getElementById('Email').value)) {
		alert("Veuillez indiquer votre email...");
		return false;
	}
	else if (!isEmail(document.getElementById('Email').value)) {
		alert("Votre email semble incorrect...");
		return false;
	}
	else if (isEmpty(document.getElementById('Message').value)) {
		alert("Votre message est vide...");
		return false;
	}
	else {
		return true;
	}
}


function checkMessageTech() {
	if (isEmpty(document.getElementById('Name').value)) {
		alert("Veuillez indiquer votre nom...");
		return false;
	}
	else if (isEmpty(document.getElementById('Email').value)) {
		alert("Veuillez indiquer votre email...");
		return false;
	}
	else if (!isEmail(document.getElementById('Email').value)) {
		alert("Votre email semble incorrect...");
		return false;
	}
	else if (isEmpty(document.getElementById('TypeMine').value)) {
		alert("Veuillez indiquer le type mine de votre v\u00E9hicule...");
		return false;
	}
	else if (isEmpty(document.getElementById('NumSerie').value)) {
		alert("Veuillez indiquer le num\u00E9ro de s\u00E9rie de votre v\u00E9hicule...");
		return false;
	}
	else if (isEmpty(document.getElementById('DateCirc').value)) {
		alert("Veuillez indiquer la date de 1\u00E8re mise en circulation...");
		return false;
	}
	else if(CheckDate(document.getElementById('DateCirc').value)==0){
		alert("Votre date est incorrect...");
		return false;
	}
	else if (isEmpty(document.getElementById('Message').value)) {
		alert("Votre message est vide...");
		return false;
	}
	else {
		return true;
	}
}

function CheckDate(d) {
  // Cette fonction vérifie le format JJ/MM/AAAA saisi et la validité de la date.
  // Le séparateur est défini dans la variable separateur
  var amin=1950; // annee mini
  var amax=2050; // annee maxi
  var separateur="/"; // separateur entre jour/mois/annee
  var j=(d.substring(0,2));
  var m=(d.substring(3,5));
  var a=(d.substring(6));
  var ok=1;
  if ( ((isNaN(j))||(j<1)||(j>31)) && (ok==1) ) {
     //alert("Le jour n'est pas correct."); 
     ok=0;
  }
  if ( ((isNaN(m))||(m<1)||(m>12)) && (ok==1) ) {
     //alert("Le mois n'est pas correct."); 
     ok=0;
  }
  if ( ((isNaN(a))||(a<amin)||(a>amax)) && (ok==1) ) {
     //alert("L'annee n'est pas correcte."); 
     ok=0;
  }
  if ( ((d.substring(2,3)!=separateur)||(d.substring(5,6)!=separateur)) && (ok==1) ) {
     //alert("Les separateurs doivent être des "+separateur); 
     ok=0;
  }
  if (ok==1) {
     var d2=new Date(a,m-1,j);
     j2=d2.getDate();
     m2=d2.getMonth()+1;
     a2=d2.getFullYear();
     if (a2<=100) {a2=1900+a2}
     if ( (j!=j2)||(m!=m2)||(a!=a2) ) {
        //alert("La date "+d+" n'existe pas !");
        ok=0;
     }
  }
  return ok;
}


















