function _$(name){
	var obj = document.getElementById(name);
	return obj;
}
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 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_login(login){
	var exp = new RegExp("^[a-zA-Z0-9\-._]{6,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("^[a-zA-Z0-9_. \-éèëêàùâîôûëïüöäç]{1,30}$","");
	return exp.test(zipcode)
}

function controle(_form,_input,_controle){
	var valeur = _input.value;
	var ok = true;
	switch(_controle.value){
		case "notempty":
			ok= check_notempty(valeur);
		break;
		case "mail":
			ok= check_saisie_mail(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 "select":
			ok = _input.selectedIndex>0;
		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;
	}
	
	return errorInput(ok,_input,_controle.value);
}

function errorInput(ok,_input,controleValue){
	var errMessage = _$(_input.name+"_label");
	if (ok){
		if (errMessage)
			errMessage.style.visibility = "hidden";
		if (controleValue!=null && controleValue!="radio")
			_input.className = "inputForm";
	}else {
		if (errMessage)
			errMessage.style.visibility = "visible";
		if (controleValue!=null && controleValue!="radio")
			_input.className  = "inputFormError";
	}
	return !ok;	
}

function getGroup(input){
	var groupName = input.attributes.getNamedItem("groupName");	
	if (groupName!=null){
		if (groups[groupName.value]==null){
			groups[groupName.value] = new Array();	
		}
		groups[groupName.value].push(input);
	}
}

var groups= new Array();
function formValidation(form,message){
	groups= new Array();
	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");
		var groupName = inputs[i].attributes.getNamedItem("groupName");	
		if (control!=null && groupName==null){	
			erreur=  (controle(form,inputs[i],control)?true:erreur);
		}
		getGroup(inputs[i]);
	}
	
	inputs = form.getElementsByTagName("select");
	if (inputs!=null && inputs)
	for(var i=0;i<inputs.length;i++){
		var control = inputs[i].attributes.getNamedItem("control");
		var groupName = inputs[i].attributes.getNamedItem("groupName");	
		if (control!=null && groupName==null){
			erreur=(controle(form,inputs[i],control)?true:erreur);
		}	
		getGroup(inputs[i]);
	}	
	
	inputs = form.getElementsByTagName("textarea");
	if (inputs!=null && inputs)
	for(var i=0;i<inputs.length;i++){
		var control = inputs[i].attributes.getNamedItem("control");
		var groupName =inputs[i].attributes.getNamedItem("groupName");	
		if (control!=null && groupName==null){
			erreur=(controle(form,inputs[i],control)?true:erreur);
		}	
		getGroup(inputs[i]);
	}	
	
	inputs = form.getElementsByTagName("radio");
	if (inputs!=null && inputs)
	for(var i=0;i<inputs.length;i++){
		var control = inputs[i].attributes.getNamedItem("control");
		var groupName = inputs[i].attributes.getNamedItem("groupName");	
		if (control!=null && groupName==null){
			erreur=(controle(form,inputs[i],control)?true:erreur);
		}
		getGroup(inputs[i]);
	}	
	
	// vérification des champs de group
	for(var test in groups){
		var ok=false;
		for(var i=0;i<groups[test].length;i++){	
			//debug(groups[test][i]);
			var name = groups[test][i].nodeName.toLowerCase();
			var control = groups[test][i].attributes.getNamedItem("control");
			
			switch(name){
				case "input":
				var type = groups[test][i].attributes.getNamedItem("type");
				switch(type.value.toLowerCase()){
					case "text":
					if (groups[test][i].value=="")
						ok = true;
					break;
					case "checkbox":
					if (groups[test][i].checked)
						ok = true;
					break;				
					case "radio":
					if (groups[test][i].checked)
						ok = true;
					break;						
				}
				break;
				case "textarea":
				if (groups[test][i].value=="")
					ok = true;
				break;

			}
		}
		for(var i=0;i<groups[test].length;i++){	
			if (control==null)
				errorInput(ok,groups[test][i]);
			else
				errorInput(ok,groups[test][i],control.value);
		}
		
		if (!ok)
			erreur = true;
	}
	

	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 deleteSelect(_select){
	while(_select.options.length>0){
		_select.options[0].remove();
	}
}
function addSelectValue(_select,_cle, _value){
	_select.options[_select.options.length] = new Option(_cle,_value);

}
function lastValueSelect(_select){
	_select.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();
	}
}

