﻿Number.prototype.isInteger =
  function() {
	return Math.floor(this) == this ? true : false;
  };

function _$(id){
	return document.getElementById(id);	
}
function trim(str, chars) {
    return ltrim(rtrim(str, chars), chars);
}

function ltrim(str, chars) {
    chars = chars || "\\s";
    return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
}

function rtrim(str, chars) {
    chars = chars || "\\s";
    return str.replace(new RegExp("[" + chars + "]+$", "g"), "");
}
document.getElementsByClassName = function(cl) {
	var retnode = [];
	var myclass = new RegExp('\\b'+cl+'\\b');
	var elem = this.getElementsByTagName('*');
	for (var i = 0; i < elem.length; i++) {
	var classes = elem[i].className;
	if (myclass.test(classes)) retnode.push(elem[i]);
	}
	return retnode;
}; 
function checkFileName(filename){
	var exp = new RegExp("^[a-zA-Z0-9\-\.\_]+[\.]{1,}[a-zA-Z0-9]{1,3}","");
	return exp.test(filename);
}
function check_saisie_mail(mail){
	var exp = new RegExp("^[a-zA-Z0-9\-._]+[a-zA-Z0-9\.\-_]*@([a-zA-Z0-9\-_])+[\.][a-zA-Z\.\-_]{1,}[a-zA-Z\-_]+","");
	return exp.test(mail);
}

function check_saisie_urlHttp(url){
	var exp = new RegExp("^http://[a-zA-Z0-9]+[\.][a-zA-Z0-9\.\-_/=?]+","");
	return exp.test(url);
}

function check_saisie_date(datetest){
	//var exp = new RegExp("^[0-9]{2}/[0-9]{2}/[0-9]{4}","");
	var exp = new RegExp("^(0[1-9]|[12][0-9]|3[01])/(0[1-9]|1[012])/[0-9]{4}$","");

	return exp.test(datetest);
}


function check_saisie_login(login){
	var exp = new RegExp("^[a-zA-Z0-9\-._]{4,50}$","");
	return exp.test(login);
}

function check_saisie_password(password){	
	var exp = new RegExp("^[a-zA-Z0-9_éèëêàù]{4,50}$","");
	return exp.test(password);
}

function check_saisie_nom(nom){
	//nom = Remplacer(nom);	
	var exp = new RegExp("^[a-zA-Z0-9\-_. éèëêàùâîôûëïüöäç]{1,50}$","");
	return exp.test(nom);
}

function check_saisie_prenom(prenom){
	//prenom = Remplacer(prenom);	
	var exp = new RegExp("^[a-zA-Z0-9\-_. éèëêàùâîôûëïüöäç]{1,50}$","");
	return exp.test(prenom);
}

function check_saisie_phone(phone_number){
var exp = new RegExp("[0-9 ]{1,30}","");
	return exp.test(phone_number);
}

function check_saisie_adresse(adresse){
	//adresse = Remplacer(adresse);	
	var exp = new RegExp("^[a-zA-Z0-9\-_. éèëêàùâîôûëïüöä,ç]{1,150}$","");
	return exp.test(adresse);
}
function check_notempty(valeur){
	//adresse = Remplacer(adresse);	
	return valeur!=null && valeur!="";
}
function check_saisie_ville(ville){
	//ville = Remplacer(ville);
	var exp = new RegExp("^[a-zA-Z0-9\-_. éèëêàùâîôûëïüöäç]{1,100}$","");
	return exp.test(ville)
}
function check_saisie_zipcode(zipcode){
	//var exp = new RegExp("^[0-9\s]{1,20}$","");
	var exp = new RegExp("^[0-9]{5,5}$","");
	return exp.test(zipcode)
}

function checkPositif(number){
	return (!isNaN(number) && number>0);
}

function checkEntierNaturel(number){
	return (!isNaN(number) && (number==parseInt(number)) && number>=0);
}
function check_notsmall(valeur){
	//adresse = Remplacer(adresse);	
	return valeur!=null && valeur!="" && valeur.length > 4;
}


function controle(_form,_input,_controle){
	var valeur = _input.value;
	var ok = true;
	switch(_controle.value){
		case "positif":
			ok= checkPositif(valeur);
		break;
		case "entier":
			ok= checkEntierNaturel(valeur);
		break;		
		case "notempty":
			ok= check_notempty(valeur);
		break;
		case "mail":
			ok= check_saisie_mail(valeur);
		break;
		case "emptyOrmail":
		    ok=check_saisie_mail(valeur) || !check_notempty(valeur);
		break;
		case "emptyOrUrlHttp":
		    ok=check_saisie_urlHttp(valeur) || !check_notempty(valeur);
		break;
		case "login":
			ok= check_saisie_login(valeur);
		break;
		case "password":
			ok= check_saisie_password(valeur);
		break;
		case "nom":
			ok= check_saisie_nom(valeur);
		break;
		case "prenom":
			ok= check_saisie_prenom(valeur);
		break;
		case "phone":
			ok= check_saisie_phone(valeur);
		break;
		case "adresse":
			ok= check_saisie_adresse(valeur);
		break;
		case "ville":
			ok= check_saisie_ville(valeur);
		break;
		case "zipcode":
			ok= check_saisie_zipcode(valeur);
		break;
		case "urlHttp":
			ok= check_saisie_urlHttp(valeur);
		break;
		case "select":
			ok = _input.selectedIndex>0;
		break;
		case "dateJJMMAAAA":
			ok= check_saisie_date(valeur);
		break;
		
		case "email_check":
			//debug($("email"));
			var toioi = document.getElementById("email").value;
			ok=(toioi==valeur);
		break;
		case "passwd_check":
			//debug($("email"));
			var toioi = document.getElementById("passwd").value;
			ok=(toioi==valeur);
		break;
		case "check_notsmall":
			ok = check_notsmall(valeur);
			break;
		
		
		case "radio":
			var radios = document.getElementsByName(_input.name);
			ok = false;
			for(var i=0;i<radios.length;i++){
				if (radios[i].checked)
					ok = true;
			}
			
		break;
	}
	var errMessage = _$(_input.name+"_label");
	
	if (ok){
		if (errMessage)
			errMessage.style.visibility = "hidden";
		if (_controle.value!="radio")
			_input.className = "inputForm";
	}else {
		if (errMessage)
			errMessage.style.visibility = "visible";
		if (_controle.value!="radio")
			_input.className  = "inputFormError";
	}
	return !ok;
	
}

function formValidation(form,message){
	var erreur = false;
	var inputs = form.getElementsByTagName("input");
	if (inputs!=null && inputs)
	for(var i=0;i<inputs.length;i++){
		var control = inputs[i].attributes.getNamedItem("control");
		if (control!=null){	
			erreur=  (controle(form,inputs[i],control)?true:erreur);
		}
	}
	
	inputs = form.getElementsByTagName("select");
	if (inputs!=null && inputs)
	for(var i=0;i<inputs.length;i++){
		var control = inputs[i].attributes.getNamedItem("control");
		if (control!=null){
			erreur=(controle(form,inputs[i],control)?true:erreur);
		}		
	}	
	
	inputs = form.getElementsByTagName("textarea");
	if (inputs!=null && inputs)
	for(var i=0;i<inputs.length;i++){
		var control = inputs[i].attributes.getNamedItem("control");
		if (control!=null){
			erreur=(controle(form,inputs[i],control)?true:erreur);
		}		
	}	
	
	inputs = form.getElementsByTagName("radio");
	if (inputs!=null && inputs)
	for(var i=0;i<inputs.length;i++){
		var control = inputs[i].attributes.getNamedItem("control");
		if (control!=null){
			erreur=(controle(form,inputs[i],control)?true:erreur);
		}		
	}	
	
	var elements = document.getElementsByClassName("errorMessage");
	var errorMessage = (elements.length>0)? elements[0]:false;
	if (erreur){
		if (errorMessage){
			errorMessage.style.visibily = "visible";
			errorMessage.innerHTML = message;
		}
	}else {
		if (errorMessage){
			errorMessage.style.visibily = "hidden";
		}
	}

	return !erreur;
}

function debug(_elt){
	var toto ="";
	var i=0;
	for(var test in _elt){
		if ((i%3)==0 && i!=0)
			toto += test+"\n";
		else
			toto += test+" \t";
		i++;
	}
	alert(toto);
}

function debugFull(_elt){
	var toto ="";
	var i=0;
	for(var test in _elt){
		toto += test+" : "+_elt[test]+"\n";
		i++;
	}
	alert(toto);
}

function deleteSelect(_selectx){
	while(_selectx.options.length>0){
		_selectx.options[0].remove();
	}
}
function addSelectValue(_selectx,_cle, _value){
	_selectx.options[_selectx.options.length] = new Option(_cle,_value);

}
function lastValueSelect(_selectx){
	_selectx.options.selectedIndex = _select.options.length-1;
}


function trim(stringToTrim) {
	return stringToTrim.replace(/^\s+|\s+$/g,"");
}
function ltrim(stringToTrim) {
	return stringToTrim.replace(/^\s+/,"");
}
function rtrim(stringToTrim) {
	return stringToTrim.replace(/\s+$/,"");
}

function supprimerFromPager(pagerName,id){
	if (confirm('Etes vous sûr de vouloir supprimer cet enregistrement ? ')){
		var frm = _$("frm_"+pagerName);
		frm.formOperation.value = "delete";
		frm.formId.value = id;
		frm.submit();
	}
}

