var numb = '0123456789';
var lwr = 'abcdefghijklmnopqrstuvwxyz';
var upr = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';

function isValid(parm,val) {
	if (parm == "") return true;
	for (i=0; i<parm.length; i++) {
		if (val.indexOf(parm.charAt(i),0) == -1) return false;
	}
	return true;
}
function isEmpty(parm) {return (parm == "");}
function isNum(parm) {return isValid(parm,numb);}
function isLower(parm) {return isValid(parm,lwr);}
function isUpper(parm) {return isValid(parm,upr);}
function isAlpha(parm) {return isValid(parm,lwr+upr);}
function isAlphanum(parm) {return isValid(parm,lwr+upr+numb);}
function isValidEmail(parm){
	validRegExp = /^[^@]+@[^@]+.[a-z]{2,}$/i;
     // search email text for regular exp matches
    if (parm.search(validRegExp) == -1) {
      return false;
    } 
    return true; 
}

function isDecimal(number){// positive or negative decimal
    if (number == "") return true;
	if(!number) return false;
    decimalRegExp = /^-?(0|[1-9]{1}\d{0,})(\.(\d{1}\d{0,}))?$/
    return decimalRegExp.test(number);
}
function isDate(date,format){
	if (date == "") return true;
    if(!date) return false;
    if(!format) format = 'FR';

    switch(format){
            case'FR': RegExpformat = /^(([0-2]\d|[3][0-1])\/([0]\d|[1][0-2])\/([2][0]|[1][9])\d{2})$/; break;
            case'US': RegExpformat = /^([2][0]|[1][9])\d{2}\-([0]\d|[1][0-2])\-([0-2]\d|[3][0-1])$/; break;
            case'SHORTFR': RegExpformat = /^([0-2]\d|[3][0-1])\/([0]\d|[1][0-2])\/\d{2}$/; break;
            case'SHORTUS': RegExpformat = /^\d{2}\-([0]\d|[1][0-2])\-([0-2]\d|[3][0-1])$/; break;
            //case'dd MMM yyyy':RegExpformat = /^([0-2]\d|[3][0-1])\s(Jan(vier)?|Fév(rier)?|Mars|Avr(il)?|Mai|Juin|Juil(let)?|Aout|Sep(tembre)?|Oct(obre)?|Nov(ember)?|Dec(embre)?)\s([2][0]|[1][19])\d{2}$/; break;
            //case'MMM dd, yyyy':RegExpformat = /^(J(anuary|u(ne|ly))|February|Ma(rch|y)|A(pril|ugust)|(((Sept|Nov|Dec)em)|Octo)ber)\s([0-2]\d|[3][0-1])\,\s([2][0]|[1][9])\d{2}$/; break;
    }
    return RegExpformat.test(date);
}


/*********************************************/

var err_mandatory = 'Elements in red are mandatory!';
var err_numeric = 'Elements in orange should be numeric!';
var err_email = 'The emails in blue seem to be not valid!';
var err_decimal = 'Elements in pink should be decimal!';
var err_date = 'The dates in grey seem to be not valid!';


function setErrMsgMandatory(msg) {this.err_mandatory = msg;}
function setErrMsgNumeric(msg) {this.err_numeric = msg;}
function setErrMsgEmail(msg) {this.err_email = msg;}
function setErrMsgDecimal(msg) {this.err_decimal = msg;}
function setErrMsgDate(msg) {this.err_date = msg;}

function validateForm(currentForm) {
	var blnvalidate = true;
	var mandatory_ok = true;
	var elementsInputs;
	var elementsSelects;
	var msg_mandatory = '';
	var msg_numeric = '';
	var msg_email = '';
	var msg_decimal = '';
	var msg_date = '';
	
	elementsInputs = currentForm.getElementsByTagName("input");
	elementsTextareas = currentForm.getElementsByTagName("textarea");
	elementsSelects = currentForm.getElementsByTagName("select")

	for (var intCounter = 0; intCounter < elementsInputs.length; intCounter++) {
		mandatory_ok = true;
		tmp_check = 0;

		if (elementsInputs[intCounter].className.indexOf('mandatory') != -1) {
			if (tmp_check == 0) elementsInputs[intCounter].style.backgroundColor = '#534e4b';
			
			if (isEmpty(elementsInputs[intCounter].value)) { 
				blnvalidate = false;
				mandatory_ok = false;
				tmp_check = 1;
				elementsInputs[intCounter].style.backgroundColor = '#c14539';
				//alert('Element in red' + ' not numeric');
				if (msg_mandatory == '') msg_mandatory += this.err_mandatory+ "\n";
							
			}
		}
		if (mandatory_ok) {
			if (elementsInputs[intCounter].className.indexOf('numeric') != -1) {
				if (tmp_check == 0) 
					elementsInputs[intCounter].style.backgroundColor = '#534e4b';
				if (!isNum(elementsInputs[intCounter].value)) {
					blnvalidate = false;
					tmp_check = 1;
					elementsInputs[intCounter].style.backgroundColor = '#faca84';
					//alert('Element in orange' + ' not numeric');
					if (msg_numeric == '') 
						msg_numeric += this.err_numeric + "\n";
				}
			}
			if (elementsInputs[intCounter].className.indexOf('email') != -1) {
				if (tmp_check == 0) 
					elementsInputs[intCounter].style.backgroundColor = '#534e4b';
				if (!isValidEmail(elementsInputs[intCounter].value)) {
					blnvalidate = false;
					tmp_check = 1;
					elementsInputs[intCounter].style.backgroundColor = '#9fc2d5';
					//alert('Element in orange' + ' not numeric');
					if (msg_email == '') 
						msg_email += this.err_email + "\n";
				}
			}
			if (elementsInputs[intCounter].className.indexOf('decimal') != -1) {
				if (tmp_check == 0) 
					elementsInputs[intCounter].style.backgroundColor = '#534e4b';
				if (!isDecimal(elementsInputs[intCounter].value)) {
					blnvalidate = false;
					tmp_check = 1;
					elementsInputs[intCounter].style.backgroundColor = '#fab5d6';
					//alert('Element in orange' + ' not numeric');
					if (msg_decimal == '') 
						msg_decimal += this.err_decimal + "\n";
				}
			}
			if (elementsInputs[intCounter].className.indexOf('date') != -1) {
				if (tmp_check == 0) 
					elementsInputs[intCounter].style.backgroundColor = '#534e4b';
				if (!isDate(elementsInputs[intCounter].value)) {
					blnvalidate = false;
					tmp_check = 1;
					elementsInputs[intCounter].style.backgroundColor = '#aaaaaa';
					//alert('Element in grey' + ' not numeric');
					if (msg_date == '') 
						msg_date += this.err_date + "\n";
				}
			}
		}
	}
	
	/*** Textarea ***/
	for (var intCounter = 0; intCounter < elementsTextareas.length; intCounter++) {
		mandatory_ok = true;
		tmp_check = 0;
		
		if (elementsTextareas[intCounter].className.indexOf('mandatory') != -1) {
			if (tmp_check == 0) 
				elementsTextareas[intCounter].style.backgroundColor = '#534e4b';
			
			if (isEmpty(elementsTextareas[intCounter].value)) {
				blnvalidate = false;
				mandatory_ok = false;
				tmp_check = 1;
				elementsTextareas[intCounter].style.backgroundColor = '#c14539';
				//alert('Element in red' + ' not numeric');
				if (msg_mandatory == '') 
					msg_mandatory += this.err_mandatory + "\n";
				
			}
		}
	}
	
	/*** SELECT ***/
	elementsSelects = currentForm.getElementsByTagName("select")
	for (var intCounter = 0; intCounter < elementsSelects.length; intCounter++) {
		mandatory_ok = true;
		tmp_check = 0;

		if (elementsSelects[intCounter].className.indexOf('mandatory') != -1) {
			if (tmp_check == 0) 
				elementsSelects[intCounter].style.backgroundColor = '#534e4b';
			
			if (isEmpty(elementsSelects[intCounter].value)) {
				blnvalidate = false;
				mandatory_ok = false;
				tmp_check = 1;
				elementsSelects[intCounter].style.backgroundColor = '#f8a89f';
				//alert('Element in red' + ' not numeric');
				if (msg_mandatory == '') 
					msg_mandatory += this.err_mandatory + "\n";
				
			}
		}
	}
	if(validate_captcha('input_captcha') == false || validate_captcha('input_captcha') == "false")
	{
		blnvalidate = false;
		
	}
	if (!blnvalidate) {
		//alert (msg_mandatory + msg_numeric + msg_email + msg_decimal + msg_decimal);
		
		//infoActionModal(msg_mandatory + msg_numeric + msg_email + msg_decimal + msg_decimal)
		
		
	}
	return blnvalidate;
}

/*
function onlyNumber(e) {
    var k = (e.keyCode)? e.KeyCode : e.which;
    if (k < 48 || k > 57) {
        //alert('Please only type a number.');
		e.KeyCode = null;
        return false;
    }
}
*/

var isIE = document.all?true:false;
var isNS = document.layers?true:false;
function onlyNumber(e) {
	
	var myevent;

	if (isIE) myevent = window.event;
	else  myevent = e;

    var k = (myevent.keyCode)? myevent.keyCode : myevent.which;
    if (k < 48 || k > 57) {
        //alert('Please only type a number.');
		//myevent.keyCode = null;
        return false;
    }
}





