﻿//Basic functions Extend Mootools
Element.implement({
	createSpan:function (txt,id) {
		var cont=document.createElement("span");
		if (id) cont.id=id;
		this.appendChild(cont);
		cont.innerHTML=txt;
	},
	createDiv:function (txt,id) {
		var cont=document.createElement("div");
		if (id) cont.id=id;
		this.appendChild(cont);
		cont.innerHTML=txt;
	},
	tooShort:function  (limite){
		return (this.value.length<limite)?true:false;
	},
	isMail:function  (){
			var reg=/^[\w.-]+@[\w.-]+\.[a-zA-Z]{2,5}$/;
			return reg.test(this.value);
	},
	limiteText:function  (max) { 
		if(this.value.length >= max) 
			this.value = this.value.substring(0,max); 
		return (max - this.value.length); 
	},
	isNumeric:function  (){
		var str=this.value;
		var exp = new RegExp("^[0-9-.]*$","g");
		return str.test(exp);
	},
	insertAfter:function (parent,referenceNode) {//all except IE...
		parent.insertBefore(this, referenceNode.nextSibling);
	}
	

});

//Verif Form Extend Mootools
Element.implement({
	cleanError:function () {
		var error="error_form_border";
		$$("."+error).removeClass(error);
		$$('.error_form').destroy();
	},
	verif:function (don) {
		
			var border=true;
			var reportError=true;
			var reportAlert=0;
			var mp=false;
			
			for (i in don) { eval("this."+i+"=don['"+i+"'];"); }
			
			var error="error_form_border";
			var form=$(this);
						
			form.msg=new Array();
			form.msg2=new Array();
			form.el=new Array();
			var formClass="."+this.get("class");
			this.cleanError();

			$$("form"+formClass+" .required").each(function (el) {
				if (!el.value){
					form.el.push(el);
					form.msg2.push('cet élément ne doit pas être vide');
					form.msg.push('le champ '+el.name+' ne doit pas être vide');
				}
			});
			$$("form"+formClass+" .requiredOption").each(function (el) {
				if ((el.options && el.options.length==0)&& !el.hasClass('check_password')){
					form.el.push(el);
					form.msg2.push('cet élément ne doit pas être vide');
					form.msg.push('le champ '+el.name+' ne doit pas être vide');
				}
			});
			$$("form"+formClass+" .email").each(function (el) {
				if (el.value && !el.isMail()){
					form.el.push(el);
					form.msg2.push('ceci n\'est pas un e-mail');
					form.msg.push( 'le champ '+el.name+' n\'est pas un mail');
				}
			});
			$$("form"+formClass+" .numeric").each(function (el) {
				if (el.value && !el.isNumeric()){
					form.el.push(el);
					form.msg2.push('ceci n\'est pas un nombre');
					form.msg.push('le champ '+el.name+' n\'est pas un nombre');
				}
			});
			$$("form"+formClass+" .limit").each(function (el) {
				if (el.value){
					var tab=el.className.split("_");
					var limit=0;
					var exp = new RegExp("^[0-9]*$");
					for (x=0;x<tab.length;x++) {
						if (tab[x].test(exp)){
							limit=tab[x];
							break;
						}
					}
					if (limit && el.tooShort(limit)){
						form.el.push(el);
						form.msg2.push('doit faire aux moins '+limit+' caractéres');
						form.msg.push('le champ '+el.name+' doit faire aux moins '+limit+' caractéres');
					}
				}
			});
			$$("form"+formClass+" .password").each(function (el) {
				mp=el.value;
				$$("form"+formClass+" .check_password").each(function (el) {
					if (mp!=el.value && el.value || mp!=el.value && !el.hasClass('required')){
						form.el.push(el);
						form.msg2.push('la vérification du mot de passe ne concorde pas avec le mot de passe');
						form.msg.push( 'la vérification du mot de passe ne concorde pas avec le mot de passe');
					}
				});
			});
			$$("form"+formClass+" .spam").each(function (el) {
				if (el.value && el.value!=11){
					form.el.push(el);
					form.msg2.push('la réponse anti-spam n\'est pas bonne');
					form.msg.push( 'la réponse anti-spam n\'est pas bonne');
				}
			});
			
			if (this.addVerif)
				this.addVerif();
			
			if (form.el[0]){
				form.el[0].focus();
			}
			if (form.msg[0]) {
				if (reportAlert==1){
					alert (form.msg[0]);
					if (reportError)
						form.el[0].addError(form.msg2[x],border)
					else if (border)
						form.el[0].addClass(error);
					
				}
				else {
					for (var x=0;x< form.el.length;x++) {
						if (reportError)
							form.el[x].addError(form.msg2[x],border);
						else if (border)
							form.el[x].addClass(error);
		
					}
					if (reportAlert==2){
						alert (form.msg.join("\n"));
					}
				}
				return false;
			}
			return true;
	},
	addError:function (msg,border) {
		var error="error_form_border";
		if (border)
			this.addClass(error);
		var div=new Element('div', {'id':'error_'+this.name,'class':'error_form','text':msg});
		this.parentNode.appendChild(div);
	}
});