
	function LTrimString(myString){
		if (myString.length > 0) {
			if (myString.substr(0,1) == ' ' ) return(LTrimString(myString.substr(1)));
		}
		return (myString);
	}
	function RTrimString(myString){
		if (myString.length > 0) {
			if (myString.substr(myString.length - 1,1) == ' ' ) return(RTrimString(myString.substr(0, myString.length - 1)));
		}
		return (myString);
	}

	function TrimString(myString){
		return(LTrimString(RTrimString(myString)));
	}
	
	function AutoTrim(myObject){
		myObject.value = TrimString(myObject.value);
	}
	
	function isValideDate(myDate) {
		if (myDate == "") return false;
		myDate = (myDate).split("/");
		if ((myDate.length != 3) || isNaN(parseInt(myDate[0])) || isNaN(parseInt(myDate[1])) || isNaN(parseInt(myDate[2]))) return false;

		var laDate = new Date(eval(myDate[2]),eval(myDate[1])-1,eval(myDate[0]));
		var annee = laDate.getYear();
		
		if ((Math.abs(annee)+"").length < 4) annee = annee + 1900;
		return ((laDate.getDate() == eval(myDate[0])) && (laDate.getMonth() == eval(myDate[1])-1) && (annee == eval(myDate[2])));
	}

	function ValideInputDate(myObj){
		if (!(isValideDate(myObj.value))){
			alert('Invalid Date format');
			myObj.focus();
			return(false);
		}
		return(true);
	}
	
	function MM_openBrWindow(theURL,winName,features) { //v2.0
	  window.open(theURL,winName,features);
	}

	function CheckAlphanumeric(myString){
		return (myString.search("[^A-Za-z0-9]") < 0);
	}

	function CheckMandatory(myForm, myObjName, myObjType, myAlertMessage) {
		var argv=CheckMandatory.arguments;
		var argc=CheckMandatory.arguments.length;
		
		var resultIsDisplayedInAlert = (argc <= 4);
		
		
		myReturn = true;
		switch(myObjType){
			case 'hidden':
				myReturn = (myForm.elements[myObjName].value != "");
				break;
			case 'text':
				myReturn = (myForm.elements[myObjName].value != "");
				break;
			case 'select':
				myReturn = (myForm.elements[myObjName].selectedIndex > 0);
				break;
			case 'select_list':
				myReturn = (myForm.elements[myObjName].selectedIndex >= 0);
				break;
			case 'text_alphanumeric':
				myReturn = ((myForm.elements[myObjName].value != "") && (CheckAlphanumeric(myForm.elements[myObjName].value)));
				break;
			case 'password':
				// alphanumeric and length >= 6
				myReturn = ((myForm.elements[myObjName].value.length >= 6) && (CheckAlphanumeric(myForm.elements[myObjName].value)));
				break;
			case 'checked':
				myReturn = false;
				for (cpt = 0; cpt < myForm.elements.length; cpt++){
					if (myForm.elements[cpt].name == myObjName) myReturn = (myReturn || (myForm.elements[cpt].checked));
				}
				break;
				
		}
		if (!myReturn) {
			if ((myObjType == 'text') || (myObjType == 'select') || (myObjType == 'password')) {
				myForm.elements[myObjName].focus();
			} else {
				if (myObjType == 'checked') {
					myObjToSetFocus = "";
					for (cpt = 0; cpt < myForm.elements.length; cpt++){
						if (myObjToSetFocus == "")
							if (myForm.elements[cpt].name == myObjName) myObjToSetFocus = myForm.elements[cpt];
					}
					myObjToSetFocus.focus();
				}
			}
			if (myAlertMessage != "") {
				if(resultIsDisplayedInAlert){
					alert(myAlertMessage);
				} else {
					argv[4].innerHTML = myAlertMessage;
				}
			}
		}

		return(myReturn);
	}

	function CheckFieldValidity(myForm, myObjName, myObjType, myMessageFunction) {
		
		myReturn = true;
		switch(myObjType){
			case 'hidden':
				myReturn = (myForm.elements[myObjName].value != "");
				break;
			case 'text':
				myReturn = (myForm.elements[myObjName].value != "");
				break;
			case 'select':
				myReturn = (myForm.elements[myObjName].selectedIndex > 0);
				break;
			case 'select_list':
				myReturn = (myForm.elements[myObjName].selectedIndex >= 0);
				break;
			case 'text_alphanumeric':
				myReturn = ((myForm.elements[myObjName].value != "") && (CheckAlphanumeric(myForm.elements[myObjName].value)));
				break;
			case 'password':
				// alphanumeric and length >= 6
				myReturn = ((myForm.elements[myObjName].value.length >= 6) && (CheckAlphanumeric(myForm.elements[myObjName].value)));
				break;
			case 'checked':
				myReturn = false;
				for (cpt = 0; cpt < myForm.elements.length; cpt++){
					if (myForm.elements[cpt].name == myObjName) myReturn = (myReturn || (myForm.elements[cpt].checked));
				}
				break;
				
		}
		if (!myReturn){
			if(typeof(myMessageFunction) == "function"){
				myMessageFunction();
			} else {
				eval(myMessageFunction);
			}
		} 

		return(myReturn);
	}

	function ShowHide(myLayerID){
		myLayerTmp = document.getElementById(myLayerID);
		
		if (myLayerTmp.style.display == ''){
			myLayerTmp.style.display = 'none';
		} else {
			myLayerTmp.style.display = '';
		}
	}

	function CheckEmail(myEmail){
		var usr = "([a-zA-Z0-9][a-zA-Z0-9_.-]*|\"([^\\\\\x80-\xff\015\012\"]|\\\\[^\x80-\xff])+\")";
		var domain = "([a-zA-Z0-9][a-zA-Z0-9._-]*\\.)*[a-zA-Z0-9][a-zA-Z0-9._-]*\\.[a-zA-Z]{2,5}";
		var regex = "^"+usr+"\@"+domain+"$";
		var myrxp = new RegExp(regex);
		return (myrxp.test(myEmail));
	}

	function EncodeEmail(myHrefID, myDomain, myUser){
		myLink = document.getElementById(myHrefID);
		
		myLink.href = "mailto:" + myUser + "@" + myDomain;
	}

	function EncodeEmailWithInnerHTML(myHrefID, myDomain, myUser){
		myLink = document.getElementById(myHrefID);
		
		myLink.href = "mailto:" + myUser + "@" + myDomain;
		myLink.innerHTML = myUser + "@" + myDomain;
	}
	


	function SubmitEnter(e){
		var keycode;
		if (window.event) keycode = window.event.keyCode;
			else if (e) keycode = e.which;
				else return false;
		if (keycode == 13) return(true);
	}

	Array.prototype.inArray = function (value) {
		var i;
		for (i=0; i < this.length; i++) {
			if (this[i] == value) {
				return true;
			}
		}
		return false;
	};

	function CheckAll(myFormName, myCheckBoxName, myBoolean){
		myForm = document.forms[myFormName];
		for(cptElement = 0; cptElement < myForm.elements.length; cptElement++){
			if(myForm.elements[cptElement].name == myCheckBoxName) myForm.elements[cptElement].checked = myBoolean;
		}
	}

	shuffle = function(o){ //v1.0
		//shuffle arrays
		for(var j, x, i = o.length; i; j = parseInt(Math.random() * i), x = o[--i], o[i] = o[j], o[j] = x);
		return o;
	};

		function ExtractFileName(myFullPath){
			return(myFullPath.substring(myFullPath.lastIndexOf("/")+1,myFullPath.length));
		}

	function DisplayObject(obj) {
	  str='';
	  for(prop in obj){
		str+=prop + " value :"+ obj[prop]+"<br>";
	  }
	  return(str);
	}
	
	function RemovePixelUnit(myString){
		var reg=new RegExp("(px)+","g");
		return(parseInt(myString.replace(reg,"")));
	}

		function runOnLoad(f) {
			if (runOnLoad.loaded) f();    // If already loaded, just invoke f() now.
			else runOnLoad.funcs.push(f); // Otherwise, store it for later
		}
		
		runOnLoad.funcs = []; // The array of functions to call when the document loads
		runOnLoad.loaded = false; // The functions have not been run yet.
		
		runOnLoad.run = function() {
			if (runOnLoad.loaded) return;  // If we've already run, do nothing
		
			for(var i = 0; i < runOnLoad.funcs.length; i++) {
				try { runOnLoad.funcs[i](); }
				catch(e) { /* An exception in one function shouldn't stop the rest */ }
			}
			
			runOnLoad.loaded = true; // Remember that we've already run once.
			delete runOnLoad.funcs;  // But don't remember the functions themselves.
			delete runOnLoad.run;    // And forget about this function too!
		};
		
		// Register runOnLoad.run() as the onload event handler for the window
		if (window.addEventListener)
			window.addEventListener("load", runOnLoad.run, false);
		else if (window.attachEvent) window.attachEvent("onload", runOnLoad.run);
		else window.onload = runOnLoad.run;
