function validForm(frm) {
	
	var tags = new Array('input','textarea','select');
	for (var k=0; k<tags.length; k++){
		if (typeof(frm) != 'undefined') 
			var sfElems = frm.getElementsByTagName(tags[k]);
		else 
			var sfElems = document.getElementsByTagName(tags[k]);
		
		for (var i = 0; i < sfElems.length; i++) {
			if (sfElems[i].value == "" && sfElems[i].getAttribute('obg')=="true") {
				alert(sfElems[i].getAttribute('err'));
				sfElems[i].focus();
				return(false);
			}
			else if (sfElems[i].getAttribute('obg')=="check" && sfElems[i].checked == false) {
				alert(sfElems[i].getAttribute('err'));
				sfElems[i].focus();
				return(false);
			}
			
			switch(sfElems[i].getAttribute("special")){
				
				case null : isValid = true;
							break;
				case "email" : 	isValid = (sfElems[i].getAttribute("obg") != "true" && sfElems[i].value == '') ? true : validMail(sfElems[i].value);
								oComments = "\nEx.: nom@site.com";
								break;
				case "date" :  	isValid = (sfElems[i].getAttribute("obg") != "true" && sfElems[i].value == '') ? true :  validDate(sfElems[i].value);
								oComments = "\nEx.: 1982-03-25";
								break;
				case "nospecial" :  isValid = (sfElems[i].getAttribute("obg") != "true" && sfElems[i].value == '') ? true :  validSpecial(sfElems[i].value);
									oComments = "\nEx.: a-z, A-Z, 0-9";
									break;
				case "numeric" :  	isValid = (sfElems[i].getAttribute("obg") != "true" && sfElems[i].value == '') ? true :  validNumeric(sfElems[i].value);
									oComments = '';
									if (isValid && sfElems[i].getAttribute('minval') != null &&  parseFloat(sfElems[i].value) < parseFloat(sfElems[i].getAttribute('minval'))) {
										isValid=false;	
									}
									if (isValid && sfElems[i].getAttribute('maxval') != null &&  parseFloat(sfElems[i].value) > parseFloat(sfElems[i].getAttribute('maxval'))) {
										isValid=false;	
									}
									
									break;
				case "mustequal" : 
								oComments = '';
								if (sfElems[i].value != document.getElementById(sfElems[i].getAttribute('depend_id')).value) isValid=false;
								break;							
			}
			if(!isValid){
				alert(sfElems[i].getAttribute("errorspecial")+oComments);
				sfElems[i].focus();
				return false;
			}
			if (sfElems[i].getAttribute("minlength") != null && sfElems[i].value.length < sfElems[i].getAttribute("minlength")) {
				alert(sfElems[i].getAttribute("errorlength"));
				sfElems[i].focus();
				return false;
			}
			
		}
	}
	return(true);
}

function validDate(dateaaaammjj) {
	var dt=dateaaaammjj.split("-"),date=new Date(dt[0],dt[1]-1,dt[2]);
	return date.getDate()==dt[2]&&date.getMonth()+1==dt[1]&&date.getFullYear()==dt[0]?date:false;
}

function validSpecial(fStr){
	myReg = new RegExp("[A-Za-z0-9]+");
	if(myReg.exec(fStr)!=fStr){return false};
	return true;
}

function validNumeric(fStr){
	myReg = new RegExp("[0-9.]+");
	if(myReg.exec(fStr)!=fStr){return false};
	return true;
}


function checkDependency(obg) {
	if (obg.getAttribute('depend')!="")
	{
		var sfElems = document.getElementsByTagName('input');
		for (var i = 0; i < sfElems.length; i++) {
			if (obg.getAttribute('depend')== sfElems[i].name && obg.value=="" && sfElems[i].checked==true && sfElems[i].value=="1") {
				//alert(obg.getAttribute('err'));
				return(false);
			}
		}
		
	}
	return(true);
}

function validMail(email) {
	var result = false
	var theStr = new String(email)
	var index = theStr.indexOf("@");
	if (index > 0) {
		var pindex = theStr.indexOf(".",index);
		if ((pindex > index+1) && (theStr.length > pindex+1)) result = true;
	}
	return result;
}

function isDatePlusGrande(d_big,d_small) {
	if (!validDate(d_small) || !validDate(d_big)) return false;
	try {
		var dsmall = new Date();
		dsmall.setFullYear(parseInt(d_small.split(/-/)[0],10));
		dsmall.setMonth(parseInt(d_small.split(/-/)[1],10)-1);
		dsmall.setDate(parseInt(d_small.split(/-/)[2],10));
		dsmall.setHours(0);
		dsmall.setMinutes(0);
		dsmall.setSeconds(0);
		dsmall.setMilliseconds(0);
		var dbig = new Date();
		dbig.setFullYear(parseInt(d_big.split(/-/)[0],10));
		dbig.setMonth(parseInt(d_big.split(/-/)[1],10)-1);
		dbig.setDate(parseInt(d_big.split(/-/)[2],10));
		dbig.setHours(0);
		dbig.setMinutes(0);
		dbig.setSeconds(0);
		dbig.setMilliseconds(0);
		
		if (dbig.getTime()>dsmall.getTime()) return true;
		else return false;
	} catch(e) { return false; }
	
}

function isDatetimePlusGrande(d_big,h_big,m_big,d_small,h_small,m_small) {
	if (!validDate(d_small) || !validDate(d_big)) return false;
	try {
		var dsmall = new Date();
		dsmall.setFullYear(parseInt(d_small.split(/-/)[0],10));
		dsmall.setMonth(parseInt(d_small.split(/-/)[1],10)-1);
		dsmall.setDate(parseInt(d_small.split(/-/)[2],10));
		dsmall.setHours(parseInt(h_small,10));
		dsmall.setMinutes(parseInt(m_small,10));
		dsmall.setSeconds(0);
		dsmall.setMilliseconds(0);
		var dbig = new Date();
		dbig.setFullYear(parseInt(d_big.split(/-/)[0],10));
		dbig.setMonth(parseInt(d_big.split(/-/)[1],10)-1);
		dbig.setDate(parseInt(d_big.split(/-/)[2],10));
		dbig.setHours(parseInt(h_big,10));
		dbig.setMinutes(parseInt(m_big,10));
		dbig.setSeconds(0);
		dbig.setMilliseconds(0);
		if (dbig.getTime()>dsmall.getTime()) return true;
		else return false;
	} catch(e) { return false; }
}

function isDatetimePlusGrande2(dsmall,d_big,h_big,m_big) {
	try {
		var dbig = new Date();
		dbig.setFullYear(parseInt(d_big.split(/-/)[0],10));
		dbig.setMonth(parseInt(d_big.split(/-/)[1],10)-1);
		dbig.setDate(parseInt(d_big.split(/-/)[2],10));
		dbig.setHours(parseInt(h_big,10));
		dbig.setMinutes(parseInt(m_big,10));
		dbig.setSeconds(0);
		dbig.setMilliseconds(0);
		if (dbig.getTime()>dsmall.getTime()) return true;
		else return false;
	
	} catch(e) { return false; }
}

function validCompte(frm) {
	if ($('courriel').value != '' && !validMail($('courriel').value)) {
		alert('L\'adresse courriel est invalide.');	
		return false;
	}
	if ($('password').value != '' || $('password2').value != '') {
		if ($('password').value != $('password2').value) {
			alert('Les 2 mots de passe ne correspondent pas.');	
			return false;
		}
		if ($('password').value.length < 4) {
			alert('Votre mot de passe doit contenir au minimum 4 caractères.');	
			return false;
		}
	}
	return true;
}
