/* check from obj */
/* Date de creation: 10/06/2008 */
/*Array.prototype.inArray = function (item) {
	return this.indexOf(item);
}*/

String.prototype.trim = function(){
	var m=((0==arguments.length?'lr':arguments[0].replace(/\s*/gi,"")).toUpperCase());
	var s=(m.indexOf('L')>-1?this.replace(/^\s*/,""):this);
	return (m.indexOf('R')>-1?s.replace(/\s*$/,""):s);
}

var onforms = {
	formsArray : [],
	oFields : {},
	divErrorMsg : '',
	workOnAnAjaxForm : null,
	workFormId : null,
	
	set : function(workform, fieldsObj, divError){
		this.workFormId = workform;
		this.workOnAnAjaxForm = (typeof thisIsAnAjaxForm!='undefined')? true : false;
		this.oFields = fieldsObj;
		this.divErrorMsg = divError;

		if (this.workFormId!=false) {
			this.formsArray = document.getElementById(this.workFormId).parentNode.getElementsByTagName("form");// specific form
		}
		else this.formsArray = document.getElementsByTagName("form");// all forms

		for (var i=0;i<this.formsArray.length;i++){
			onforms.setSubmit(i);
		}
	},
	setSubmit : function (n) {
		var ajaxForm = this.workOnAnAjaxForm;
		var workform = this.workFormId;
		var N = n;
		this.formsArray[n].onsubmit = function () {

			if (onforms.checkb4submit(N)==false) { // test des champs
				return false;
			}

			if (ajaxForm) {// test si envoyé par ajax

				getAjaxAnswer.sending(workform);
				return false;
			}
			// submit "normal"
			return true;
		}
	},
	checkb4submit : function(n){
		var chkarray = new Array('input', 'select', 'textarea');
		var add_a_message="";
		var errors =0;
		for (var a=0; a<chkarray.length; a++) {
			var inputArray		= this.formsArray[n].getElementsByTagName(chkarray[a]);
			// type connus : empty, email, password, number// =>a mettre en tableau?
			for (var i=0; i<inputArray.length; i++){
				var classArray = inputArray[i].className.split(" ");
				for (var j=0; j<classArray.length; j++){// verifie la presence de la class dans l'input

					if ( onforms.oFields[classArray[j]]!=undefined ) {
						inputArray[i].className = inputArray[i].className.replace(onforms.oFields[classArray[j]]['class'],'');//restauration du style
						if(inputArray[i].type=="checkbox") {//restauration du style du parent
							inputArray[i].parentNode.className = inputArray[i].parentNode.className.replace(onforms.oFields[classArray[j]]['class'],'');
							document.getElementById(this.divErrorMsg).innerHTML = onforms.oFields[classArray[j]]['empty'];
							errors++;
						}

						if ( onforms.oFields[classArray[j]]['empty']!=undefined ) {//Empty field
							if (inputArray[i].type=="checkbox"){//checkbox;
								if (onforms.checkedtest(inputArray[i].checked)==false) {
									inputArray[i].parentNode.className += " "+onforms.oFields[classArray[j]]['class'];
								}
							} else if (inputArray[i].type=="radio"){//radio
								
							} else {// input et textarea
								if (onforms.emptyCheck(inputArray[i].value)==false) {
									inputArray[i].className += " "+onforms.oFields[classArray[j]]['class'];
									document.getElementById(this.divErrorMsg).innerHTML = onforms.oFields[classArray[j]]['empty'];
									errors++;
								}
							}
						}
						if ( onforms.oFields[classArray[j]]['email']!=undefined ) {//valid email + empty field
							if (onforms.emptyCheck(inputArray[i].value)!=false) {
								var saveClass = inputArray[i].className;
								var saveValue = inputArray[i].value;
								if (onforms.mailcheck(inputArray[i].value)==false) {
									errors++;
									inputArray[i].className += " "+onforms.oFields[classArray[j]]['emailclass'];
									inputArray[i].value = onforms.oFields[classArray[j]]['email'];
									inputArray[i].onfocus = function(){
										this.value = saveValue;
										this.className = saveClass;
									}
								}
							}
						}
						if ( onforms.oFields[classArray[j]]['comp']!=undefined ) {//compare + empty field
							if (onforms.emptyCheck(inputArray[i].value)!=false) {
								var saveClass2 = inputArray[i].className;
								var saveValue2 = inputArray[i].value;
								if (onforms.compare(inputArray[i].id)==false) {
									errors++;
									inputArray[i].className += " "+onforms.oFields[classArray[j]]['compclass'];
									if (inputArray[i].type=="password") {
										if (compareErrorPassMsg!=undefined) add_a_message += " - "+compareErrorPassMsg;
										else add_a_message += " - "+onforms.oFields[classArray[j]]['comp'];
									}
									else inputArray[i].value = onforms.oFields[classArray[j]]['comp'];
									inputArray[i].onfocus = function(){
										this.value = saveValue2;
										this.className = saveClass2;
									}
								}
							}
						}
						if ( onforms.oFields[classArray[j]]['number']!=undefined ) {// valid number
							//a definir
						}
					}
				}
			}
		}
		if (errors>0) {
			if((add_a_message!="") && (document.getElementById(this.divErrorMsg).innerHTML!="")){
				document.getElementById(this.divErrorMsg).innerHTML += add_a_message;
			}
			return false;
		}
		return true;
	},
	emptyCheck : function(value) {// a developper avec un prototype de string
		var answer = true;
		if (value.trim()=='') answer = false;
		return answer;
	},
	mailcheck : function(value){
		var exclude=/[^@\-\.\w]|^[_@\.\-]|[\._\-]{2}|[@\.]{2}|(@)[^@]*\1/;
		var check=/@[\w\-]+\./;
		var checkend=/\.[a-zA-Z]{2,3}$/;
		var bEmailCheck = true ;
		if(((value.search(exclude) != -1)||(value.search(check)) == -1)||(value.search(checkend) == -1)) {
			return false;
		}
		return true;
	},
	compare : function(field) {// a developper avec un prototype de string
		var val1	= document.getElementById(field).value;
		var conf	= field.substr(0, (field.length-("_confirm".length))  );
		var val2	= document.getElementById(conf).value;

		if(val1 != val2) return false;
		return true;
	},
	checkedtest : function(checkstate){
		if (checkstate==false) return false;
		else  return true;
	}
}
