/* Projet : L'Armandie
*  Auteur : PL-Datalinx
*  Historique : 30/11/2008 - Version initiale
*
*  Objet : Librairie de fonctions Javascript
*/

// Variables globales
var xmlHttp;

function createXMLHttpRequest() {
	if(window.ActiveXObject) {
		xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
	} else if(window.XMLHttpRequest) {
		xmlHttp = new XMLHttpRequest();
	}
}

function Affiche(img, x, y) {
	if(img != "") {
		lien = "zoom.php?img=" + img;
		options = "location=no,toolbar=no,menubar=no,status=no,width=" + x + ",height=" + y + ",dependent=yes";
		window.open(lien, "photo", options);
	}
}

function afficheBis(id_pdt, current_photo, lang) {
	if(id_pdt) {
		lien = "zoombis.php?id_pdt=" + id_pdt + "&current=" + current_photo + "&lang=" + lang;
		options = "location=no,toolbar=no,menubar=no,status=no,scrollbars=yes,width=800,height=600,dependent=yes";
		window.open(lien, "photo", options);
	}
}

// Fonctions de vérification des formulaires
// =========================================

function SupprEspaceG(Chaine) {
	var Cars=0;
	var NbCar=Chaine.length;
	while(Chaine.charAt(Cars)==' ') {Cars++;}
	return Chaine.substring(Cars, NbCar);
}

function SupprEspaceD(Chaine) {
	var NbCar=Chaine.length;
	while(Chaine.charAt(NbCar-1)==' ') {NbCar--;}
	return Chaine.substring(0, NbCar);
}

function errorVide(Chaine) {
	if(Chaine.length == 0) { return true; } else { return false; }
}

function errorFile(Chaine) {
	var err = false;
	var pattern = new RegExp("^[_/a-zA-Z0-9\.\-]+[\.][a-zA-Z0-9]{2,5}$", "g");
	if(!pattern.test(Chaine)) { err = true; }
	return err;
}

function errorEntier(Chaine) {
	// format non valide (nombre entier requis)
	var err = false;
	var pattern = new RegExp("^[0-9]+$", "g");
	if(!pattern.test(Chaine)) { err = true; }
	return err;
}

function errorDecimal(Chaine, Nbre) {
	// format non valide (nombre décimal requis, maximum 2 décimales)
	var err = false;
	var expr = "^[0-9]+[\.\,]?[0-9]{0," + Nbre + "}$";
	var pattern = new RegExp(expr, "g");
	if(!pattern.test(Chaine)) { err = true; }
	return err;
}

function errorPassword(Chaine) {
	// format non valide (caractères spéciaux et accentués proscrits). Minimum 4 caractères.
	var err = false;
	var pattern = new RegExp("^[_a-zA-Z0-9\.\-]{4,20}$", "g");
	if(!pattern.test(Chaine)) { err = true; }
	return err;
}

function errorVariable(Chaine, Min, Max) {
	// format non valide (caractères spéciaux et accentués proscrits)
	var err = false;
	var expr = "^[_a-zA-Z0-9\.\-]{"+ Min + "," + Max + "}$";
	var pattern = new RegExp(expr, "g");
	if(!pattern.test(Chaine)) { err = true; }
	return err;
}

function errorFixeNumerique(Chaine, NbCar) {
	var err = false;
	var pattern = new RegExp("^[0-9]{" + NbCar + "}$", "g");
	if(!pattern.test(Chaine)) { err = true; }
	return err;
}

function errorFixeAlphanum(Chaine, NbCar) {
	var err = false;
	var pattern = new RegExp("^[A-Za-z0-9]{" + NbCar + "}$", "g");
	if(!pattern.test(Chaine)) { err = true; }
	return err;
}

function errorDateFR(Chaine) {
	// format non valide (la date doit être au format jj/mm/aaaa)
	var err = false;
	var pattern = new RegExp("^([0-9]{1,2}/[0-9]{1,2}/[0-9]{4})$", "g");
	if(!pattern.test(Chaine)) { err = true; }
	// Contrôles supplémentaires
	if(err == false) {
		var part = Chaine.split("/");
		jr = eval(part[0]);
		ms = eval(part[1]);
		an = eval(part[2]);
		if(ms < 1 || ms > 12) { err = true; }
	}
	if(err == false) {
		if(an < 1900 || an > 2099) { err = true; }
	}
	if(err == false) {
		var nb_jrs;
		switch(ms) {
			case 4:
			case 6:
			case 9:
			case 11:
			nb_jrs = 30;
			break;
			case 2:
			if(an/4 == Math.round(an/4)) { nb_jrs = 29; } else { nb_jrs = 28; }
			break;
			default:
			nb_jrs = 31;
			break;
		}
		if(jr < 1 || jr > nb_jrs) { err = true; }
	}
	return err;
}

function errorDateUS(Chaine) {
	// format non valide (la date doit être au format aaaa-mm-jj)
	var err = false;
	var pattern = new RegExp("^([0-9]{4}[\-][0-9]{1,2}[\-][0-9]{1,2})$", "g");
	if(!pattern.test(Chaine)) { err = true; }
	// Contrôles supplémentaires
	if(err == false) {
		var part = Chaine.split("/");
		jr = eval(part[2]);
		ms = eval(part[1]);
		an = eval(part[0]);
		if(ms < 1 || ms > 12) { err = true; }
	}
	if(err == false) {
		if(an < 1900 || an > 2099) { err = true; }
	}
	if(err == false) {
		var nb_jrs;
		switch(ms) {
			case 4:
			case 6:
			case 9:
			case 11:
			nb_jrs = 30;
			break;
			case 2:
			if(an/4 == Math.round(an/4)) { nb_jrs = 29; } else { nb_jrs = 28; }
			break;
			default:
			nb_jrs = 31;
			break;
		}
		if(jr < 1 || jr > nb_jrs) { err = true; }
	}
	return err;
}

function compareDatesFR(Chaine1, Chaine2) {
	// la date de fin doit être postérieure ou égale à la date de début
	var err = false;
	// Transformation des dates en nombres (01/12/2007 = 20071201)
	var tmp = Chaine1.split("/");
	var jr = tmp[0];
	var ms = tmp[1];
	var an = tmp[2];
	if(jr.length==1) {jr = "0" + jr;}
	if(ms.length==1) {ms = "0" + ms;}
	var debut = an + ms + jr;
	tmp = Chaine2.split("/");
	jr = tmp[0];
	ms = tmp[1];
	an = tmp[2];
	if(jr.length==1) {jr = "0" + jr;}
	if(ms.length==1) {ms = "0" + ms;}
	var fin = an + ms + jr;
	if(eval(fin) < eval(debut)) {
		err = true;
	}
	return err;
}

function compareDatesUS(Chaine1, Chaine2) {
	// la date de fin doit être postérieure ou égale à la date de début
	var err = false;
	// Transformation des dates en nombres (2007-12-01 = 20071201)
	var tmp = Chaine1.split("-");
	var jr = tmp[2];
	var ms = tmp[1];
	var an = tmp[0];
	if(jr.length==1) {jr = "0" + jr;}
	if(ms.length==1) {ms = "0" + ms;}
	var debut = an + ms + jr;
	tmp = Chaine2.split("-");
	jr = tmp[2];
	ms = tmp[1];
	an = tmp[0];
	if(jr.length==1) {jr = "0" + jr;}
	if(ms.length==1) {ms = "0" + ms;}
	var fin = an + ms + jr;
	if(eval(fin) < eval(debut)) {
		err = true;
	}
	return err;
}


function errorEmail(Chaine) {
	// format non valide (une adresse e-mail doit être du type 'nom@host.com')
	var err = false;
	var pattern = new RegExp("^[_a-zA-Z0-9\-]+[_a-zA-Z0-9\.\-]*@[_a-zA-Z0-9\-]+[\.][_a-zA-Z\.\-]{1,}[_a-zA-Z\-]+", "g");
	if(!pattern.test(Chaine)) { err = true; }
	return err;
}

function errorSiteWeb(Chaine) {
	// format non valide (une URL doit être du type 'http://www.host.com')
	var err = false;	
	var pattern = new RegExp("^(https?|ftp)://[-A-Za-z0-9_]+\\.[-A-Za-z0-9_%&\?\/.=]+$", "g");
	
	if(!pattern.test(Chaine)) { err = true; }
	return err;
}

function errorTel(Chaine) {
	// format non valide (sont acceptés les chiffres, le tiret, les parenthèses, le signe +, le point et l'espace)
	var err = false;
	var pattern = new RegExp("^[0-9\(\). \+\-]+$", "g");
	if(!pattern.test(Chaine)) { err = true; }
	return err;
}

function errorCodePostal(Chaine) {
	// format non valide (sont acceptés les chiffres, les lettres et le tiret). Minimum 4 caractères
	var err = false;
	var pattern = new RegExp("^[a-zA-Z0-9\-]{4,10}$", "g");
	if(!pattern.test(Chaine)) { err = true; }
	return err;
}

function errorSiret(Chaine) {
	// format non valide (format spécifique: 000 000 000 00000)
	var err = false;
	var pattern = new RegExp("^([0-9]{3} ){3}([0-9]{5})$", "g");
	if(!pattern.test(Chaine)) { err = true; }
	return err;
}

function errorNaf(Chaine) {
	// format non valide (format spécifique: 000A)
	var err = false;
	var pattern = new RegExp("^([0-9]{3}[A-Z])$", "g");
	if(!pattern.test(Chaine)) { err = true; }
	return err;
}

function errorTvaIntra(Chaine) {
	// format non valide (format spécifique: FR 00 000 000 000)
	var err = false;
	var pattern = new RegExp("^([a-zA-Z0-9]{2}[0-9\s]{2,18})$", "g");
	if(!pattern.test(Chaine)) { err = true; }
	return err;
}

// Encodage des e-mails (antispam)
function encryptEmail (username, domain, texte) {
	var email_enc = '';
	var aro = '%40';
	var my_email = domain;
	my_email = (username + unescape(aro) + my_email);
	if(texte) {
		email_enc = '<a href="mailto:' + my_email + '">' + texte + '</a>';
	} else {
		email_enc = '<a href="mailto:' + my_email + '">' + my_email + '</a>';
	}
	return email_enc;
}
