/*
by cler stephane

pour que la balise soit verifiée elle doit conporter l'attribue  "check" qui est un object
 
eXemple : check="{type:'mail', alert:'votre adresse mail nest pas bonne et l'extention est inderdite', extTrue:'.png,.bmp,.png'}"

Liste des propriétés interpretées:
	
	
	[type] ne s'applique qu'au balise Input [text]
	
		type : mail 		/ vérifie juste que l'adresse soit conforme
		type : num 			/ Caractères numériques (= nombre positif)
		type : alpha 		/ Caractères alphabétiques (accents pris en charge + espaces)
		type : alphanum 	/  Caractères alphanumériques (+ accents + espaces)
	
	
	[extTrue] et [extFalse] s'applique au Input [file], exemple extTrue:'.png,.bmp,.png' ,chaque extension doit etre separer par une ","
	
		extTrue : 	/ Extentions autorisées
		extFalse : 	/ Extentions interdites
	
	
	[alert] le texte qui sera renvoyer comme erreur à la function "checkFormError" qui peut etre surchargée 	
*/ 

//////////////////////////////////////////	 prototype String ////////////////////////////////////////////
// numériques
String.prototype.isNumber = function() {
	return /^[-]?\d+$/.test(this);
} 

String.prototype.isIpV4 = function() {
	return /^[\d]{1,3}[.][\d]{1,3}[.][\d]{1,3}[.][\d]{1,3}$/.test(this);
}  

String.prototype.isMac = function() {
	return /^[\0-9a-f]{2}[:][\0-9a-f]{2}[:][\0-9a-f]{2}[:][\0-9a-f]{2}[:][\0-9a-f]{2}[:][\0-9a-f]{2}$/.test(this);
}  


//  adresse mail
String.prototype.isEmail = function() {
	return /^[\w\._\-]+@[\w_\-]{2,}[.][A-Za-z]{1,6}$/.test(this);
} 

//  alphanumériques
String.prototype.isAlphaNum = function() {
	return /^[\wÀÂÇÈÉÊËÎÔÙÛàâçèéêëîôùû\s]+$/.test(this);
} 

// alphabétiques
String.prototype.isAlpha = function() {
	return /^[A-Za-zÀÂÇÈÉÊËÎÔÙÛàâçèéêëîôùû\s]+$/.test(this);
}  


//extentions autorisés
String.prototype.findExtention = function(e){
	e = e.split(',');
	for (var i = 0; i < e.length; i++)
		if( new RegExp(e[i] + '$', 'i').test(this) ) return true;
		
	return false
} 



//////////////////////////////////////////	Fin  prototype String ////////////////////////////////////////////
function checkByAttr(b){
	
	var check = true;
	
	if(!b.getAttribute('check'))return true;
		
	var a = b.getAttribute('check').indexOf("{",0);
	
	if(a > -1)	eval("var o = "+b.getAttribute('check'))
	else var o = {alert:b.getAttribute('check')}
	
	if(o.type){	
	
		switch (o.type){
		case "mail":
			if(!b.value.isEmail())	check = false;
			break;
		case "num":
			if(!b.value.isNumber())	check = false;
			break;
		case "alpha":
			if(!b.value.isAlpha())	check = false;
			break;
		case "alphanum":
			if(!b.value.isAlphaNum()) check = false;
			break;
		}
			
	}else if(o.extTrue){
	
		if( !b.value.findExtention(o.extTrue) )	check = false;
	
	}else if(o.extFalse){
		
		if( b.value.findExtention(o.extFalse) )	check = false;
	
	}
	
	
	if(!check || b.value == ''){
		b.focus();
		checkFormError(o.alert);
		return false;
	} 
	
	return true;	
} 

function checkForm(obj){ 

	// verification input
	var x = obj.getElementsByTagName("input");
	for (var i=0; i < x.length; i++)
	   if(!checkByAttr(x[i]))return false;
	
	
	// verification select
	var x = obj.getElementsByTagName("select");
	for (var i=0;i<x.length;i++)
		if(!checkByAttr(x[i]))return false;
	
	// verification textarea
	var x = obj.getElementsByTagName("textarea");
	for (var i=0;i<x.length;i++) 
		if(!checkByAttr(x[i]))return false;
		
	return true;
}  



// function à surcharger
function checkFormError(data){alert(data);};


   

/*******************************************************************************/

