function isValidEmail(field)
{
	var reEmail = /^.+\@.+\..+$/;

	return reEmail.test(field);
    
}

/**************************************************************************************
* trimText
*/
function trimText(p_oField, p_iLength)
{
	if( p_oField.value.length > p_iLength )
	{
		p_oField.value = p_oField.value.substr(0, p_iLength);
	}
}


function ValidatePostalCode(sPostalCode,field) {
    var letter = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
    var number = "0123456789";
    var temp;
  
 
    errFlag = 0;
		
    sPostalCode = RemoveSpaces(sPostalCode);
    
    sPostalCode = sPostalCode.toUpperCase();
    if (sPostalCode.length != 6) {
        errFlag = 1; 
        return errFlag;  
    }
      
    temp = sPostalCode.substr(0,1);
    if (letter.indexOf(temp) == "-1") errFlag = 1;
    temp = sPostalCode.substr(1,1);
    if (number.indexOf(temp) == "-1") errFlag = 1;
    temp = sPostalCode.substr(2,1);
    if (letter.indexOf(temp) == "-1") errFlag = 1;       
    temp = sPostalCode.substr(3,1);
    if (number.indexOf(temp) == "-1") errFlag = 1;
    temp = sPostalCode.substr(4,1);
    if (letter.indexOf(temp) == "-1") errFlag = 1;
    temp = sPostalCode.substr(5,1);
    if (number.indexOf(temp) == "-1") errFlag = 1;
    
    field.value = sPostalCode.substring(0,3) + ' ' + sPostalCode.substring(3,6);
    
    return errFlag;      
   }

function RemoveSpaces(string) {
    var temp = "";
    string = '' + string;
    splitstring = string.split(" ");
    for(i = 0; i < splitstring.length; i++)
    temp += splitstring[i];
    return temp;
   }

function TraiterCodePostal(field)
{
	field.value = field.value.toUpperCase();
	
}


function CdnPostalCode(field)
{
	var pcode = field.value
	var newpcode = new String()
	var len = pcode.length
	

// =========== FIND SPACES IN POSTAL CODE AND REMOVE IT

	for (var i=0; i <10; i++)
	{
		while (pcode.charAt(i) == ' ')
			i++
		newpcode = newpcode + pcode.charAt(i)
		
	}


// ========== MAKE SURE THE LENGTH IS 6 -- NO MORE, NO LESS
	
	
	if (newpcode.length != 6)
	{
		alert("La longueur du code postal doit être de 6 caractères.")
		return false
	}

// ========== MAKE SURE THE FIRST CHARACTER IS A LETTER

	for (var j=0; j < newpcode.length; j++)
	{

		var ch = newpcode.charAt(j)


		if( ch < "A" && ch > "Z" )
		{
			alert("Code postal invalide.")
			return false
		}
		if( ch < "a" && ch > "z" )
		{
			alert("Code postal invalide.")
			return false
		}
                j++
	
	}	


	for (var k=1; k< newpcode.length; k++)
	{
		var ch = newpcode.charAt(k)
		if( ch < "0" || "9" < ch)
		{
			alert("Code postal invalide.")
			return false
		}
		k++ 
	}

	
//	alert("Is a valid postal code!")
// ========== INSERT A SPACE IN THE 3RD SLOT
	
	pcode = newpcode.substring(0,3).toUpperCase() + newpcode.substring(3,6).toUpperCase()
//	alert(pcode)
	field.value = pcode;
	return true
}

//-----------------------------------------------------------------------------------------

function CheckCdnPostalCode(field, fieldval, mandatory)
{
	var pcode = new String() // = field.value
	var newpcode = new String()
	var len  // = pcode.length
	
	pcode=fieldval
	len = pcode.length
	

// =========== FIND SPACES IN POSTAL CODE AND REMOVE IT

	for (var i=0; i <10; i++)
	{
		while (pcode.charAt(i) == ' ')
			i++
		newpcode = newpcode + pcode.charAt(i)
		
	}


// ========== MAKE SURE THE LENGTH IS 6 -- NO MORE, NO LESS
	
	
	if (newpcode.length != 6)
	{
//		alert("Length is not 6")
		return false
	}

// ========== MAKE SURE THE FIRST CHARACTER IS A LETTER

	for (var j=0; j < newpcode.length; j++)
	{

		var ch = newpcode.charAt(j)


		if( ch < "A" && ch > "Z" )
		{
//			alert("Invalid postal code")
			return false
		}
		if( ch < "a" && ch > "z" )
		{
//			alert("Invalid postal code")
			return false
		}
                j++
	
	}	


	for (var k=1; k< newpcode.length; k++)
	{
		var ch = newpcode.charAt(k)
		if( ch < "0" || "9" < ch)
		{
//			alert("Invalid postal code")
			return false
		}
		k++ 
	}

	
//	alert("Is a valid postal code!")
// ========== INSERT A SPACE IN THE 3RD SLOT
	
	pcode = newpcode.substring(0,3).toUpperCase() + ' ' + newpcode.substring(3,6).toUpperCase()
//	field.value = pcode;
//	alert(pcode)
	return true;
}

//--------------------------------------------------------------------------------------------

function CheckCdnProv(field, fieldval, mandatory) {
	if(fieldval.length != 2) {
		return false;
	}
	var newStr = fieldval.toUpperCase();
	var prov = "BC AB SK MB ON PQ QC QB NB NS NF LB YK PE NW";
	var provLen = prov.length /3;
	
	for (var i=0; i < provLen; i++) {
		var checkStr = prov.substring(i*3, i*3 + 2);
		if (checkStr == newStr) {
			return true;
		}
	}
	

	return false;
}

//---------------------------------------------------------------------------------------------

function CheckForBlank(fieldval)
{
	for (var i=0; i<fieldval.length; i++)
	{
		var c = fieldval.charAt(i)
		if ((c != ' ') && (c != '\n') && (c != '\t'))
			return false
	}
	return true
}

//---------------------------------------------------------------------------------------------

function CheckLength() 
{
 var str = document.FormName.Message.value; 
 var nbCarac = document.FormName.Message.value.length; 				
 if (nbCarac > 3500)
	document.FormName.Message.value =str.slice(0,3500);				 								
}

//----------------------------------------------------------------------------------------------

function CheckUSState(fieldval, mandatory) {
	if(fieldval.length != 2) {
		return false;
	}
	var newStr = fieldval.toUpperCase();
	var states = "AL AK AR AZ CA CO CT DC DE FL GA IA ID IN IL HI KS KY LA MA MD ME MI MN MO ";
	states +=    "MS MT NC ND NE NH NJ NM NV NY OH OK OR PA RI SC SD TN TX UT VA VT WA WI WV WY ";
	var stateLen = states.length;
	stateLen = stateLen / 3;

	for (var i=0; i < stateLen; i++) {
		var checkStr = states.substring(i*3, i*3 + 2);
		if (checkStr == newStr) {
			return true;
		}
	}

	return false;
}

//-------------------------------------------------------------------------------------------------

function CheckZipCodeFormatShort(number) {
	if(number.length != 5) {
		return false;
	}
	for (var i=0; i<number.length; i++) {
		var ch = number.charAt(i);
		if( ch < "0" || "9" < ch) {
			return false;
		}
	} 
	return true;
}

function CheckZipCodeFormatLong(number) {
	if(number.length != 10) {
		return false;
	}
	if(number.indexOf("-") != 5) {
		return false;
	}
	for (var i=0; i<number.length; i++) {
		if( i==5 ) {
				continue;
		}
		var ch = number.charAt(i);
		if( ch < "0" || "9" < ch) {
			return false;
		}
	} 
	return true;
}


//-----------------------------------------------------------------------------------------------

function IsAllDigits(fieldval, lang) 
{
	if(fieldval.length == 0)
	{
		if (lang == "E")
		{
			alert("Must supply at least one digit");
			return false;
		}
		else if (lang == "F")
		{
			alert ("Il doit y avoir au moins un chiffre");
			return false;
		}
	}	
	for (var i=0; i<fieldval.length; i++)
	{
		var ch = fieldval.charAt(i);
		if( ch < "0" || "9" < ch)
		{
			if (lang == "E")
			{
				alert("Only digits are allowed");
				return false;
			}
			else if (lang == "F")
			{
				alert ("Seulement les numéros ici!")
				return false;
			}
		}
	} 
	return true;
}	

//----------------------------------------------------------------------------------------------

function IsDate(dayField, monthField, yearField, fieldname, lang, format,showDB) {
	var year = yearField.value;
	var daysinmonth = new Array (31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
	
	if ((format.indexOf('D') == -1) || (dayField==null) || (dayField.value == ""))
		var day = 01;
	else
		var day = dayField.value;
	
	if ((format.indexOf('M') == -1) || (monthField.value == ""))
		var month = 01;
	else
		var month = monthField.value;

	if ((format.indexOf('Y') == -1) || (yearField.value == "") )
		var year = 1999;
	else
		var year = yearField.value;		

	if(yearField!=null)
	{
		if (((year < 1900) || (year > 3000)) || ((!IsPositiveInteger(yearField,false))&&(yearField.value!="")))
		{
			if (lang == "E")
			{
				if(showDB)
				{
					alert ("Year is out of range")
					yearField.focus();
				}
				return false;
			}
			else if (lang =="F")
			{
				if(showDB)
				{			
					alert ("L'année n'est pas valide")
					yearField.focus();
				}
				return false;
			}
		}
	}
	if(monthField!=null)
	{
		if ((month < 1) || (month > 12)|| ((!IsPositiveInteger(monthField,false))&&(monthField.value!="")))
		{
			if (lang == "E")
			{
				if(showDB)
				{
					alert ("Month is out of range")
					monthField.focus();
				}
				return false;
			}
			else if (lang =="F")
			{
				if(showDB)
				{
					alert ("Le mois n'est pas valide")
					monthField.focus();
				}
				return false;
			}
		}
	}
	if(dayField!=null)
	{
		if ((day < 1 )|| (day > daysinmonth[month-1])||((!IsPositiveInteger(dayField,false))&&(dayField.value!="")))
		{
			if (((year%4 == 0) || ((year+"").substring(length-1, length) == "00")) && (month == "02") && (day == eval(daysinmonth[month] +1)))
				return true;
			if (lang == "E")
			{
				if(showDB)
				{
					alert ("Day is out of range")
					dayField.focus()
				}
				return false;
			}
			else if (lang =="F")
			{
				if(showDB)
				{
					alert ("Le jour n'est pas valide")
					dayField.focus();
				}
				return false;
			}
			
		}
	}
	return true;
}

function DatePlusPetitQue(dateRefJour, dateRefMois, dateRefAnnee, dateJour, dateMois, dateAnnee)
{
	if (dateAnnee < dateRefAnnee)
		return true;
	if (dateAnnee == dateRefAnnee)
	{
		if (dateMois < dateRefMois)
			return true;
		if ((dateMois == dateRefMois) && (dateJour < dateRefJour))
			return true;
	} 
	return false;
}

function DatePlusGrandQue(dateRefJour, dateRefMois, dateRefAnnee, dateJour, dateMois, dateAnnee)
{
	if (dateAnnee > dateRefAnnee)
		return true;
	if (dateAnnee == dateRefAnnee)
	{
		if (dateMois > dateRefMois)
			return true;
		if ((dateMois == dateRefMois) && (dateJour > dateRefJour))
			return true;
	} 
	return false;
}

function DatePlusPetitOuEgalA(dateRefJour, dateRefMois, dateRefAnnee, dateJour, dateMois, dateAnnee)
{
	if ((dateRefJour == dateJour) && (dateRefMois == dateMois) && (dateRefAnnee == dateAnnee))
		return true;
	else
		return DatePlusPetitQue(dateRefJour, dateRefMois, dateRefAnnee, dateJour, dateMois, dateAnnee);
}

function DatePlusGrandOuEgalA(dateRefJour, dateRefMois, dateRefAnnee, dateJour, dateMois, dateAnnee)
{
	if ((dateRefJour == dateJour) && (dateRefMois == dateMois) && (dateRefAnnee == dateAnnee))
		return true;
	else
		return DatePlusGrandQue(dateRefJour, dateRefMois, dateRefAnnee, dateJour, dateMois, dateAnnee);
}

function GetDB2Year(theDate)
{
	return theDate.substring(0, 4);
}

function GetDB2Month(theDate)
{
	return theDate.substring(5, theDate.lastIndexOf('-'));
}

function GetDB2Day(theDate)
{
	return theDate.substring(theDate.lastIndexOf('-')+1, theDate.length);
}

//-------------------------------------------------------------------------------------------------

function IsEmail(fieldval, lang, mandatory)
{
	if(fieldval.length == 0)
	{
		if (lang == "E")
		{
			alert("must supply info in field");
			return false;
		}
		else if (lang == "F")
		{
			alert("Le courriel ne doit pas être vide.");
			return false;
		}
	}
        var foundSymbol = false;

        for (var i=0; i<fieldval.length; i++) {
		var ch = fieldval.charAt(i);
            	if (ch == "@") {
			if((i == 0) || (i==(fieldval.length - 1)))
			{
				if (lang == "E")
				{
					alert("Invalid e-mail address");
					return false;
				}
				else if (lang == "F")
				{
					alert("Le courriel n'a pas un format valide.");
					return false;
				}
			}
			if(foundSymbol)
			{
				if (lang == "E")
				{
					alert("There should be only 1 @ in an e-mail address");
					return false;
				}
				else if (lang == "F")
				{
					alert("Il ne doit y avoir qu'une @ pour un courriel.");
					return false;
				}
			}
			else
			{
                		foundSymbol=true;
			}
		}
    	}

 	if(!foundSymbol)
	{
		if (lang == "E")
		{
			alert("You must supply an @ in an e-mail address");
			return false;
		}
		else if (lang == "F")
		{
			alert("Vous devez avoir un @ pour le courriel.");
			return false;
		}
	}
	return foundSymbol;
}


//---------------------------------------------------------------------------------------------

function IsForcedBlank(fieldval, fieldname, fieldname_f, dept_fieldname, lang)
{
	if (!CheckForBlank(fieldval, mandatory))
	{
		if (lang == "E")
		{
			alert ("ERROR: " + fieldname + "must be empty because you have not supplied a value for " + dept_fieldname)
			return false;
		}
		else if (lang == "F")
		{
			alert ("ERREUR: " + fieldname_f + "doit etre vide parce que vous n'avez pas donner qqch. pour " + dept_fieldname)
			return false;
		}
	}
	return true
}

//------------------------------------------------------------------------------------------------

function IsInteger(theField,showDB)
{
  	var checkOK = "0123456789";
  	var checkStr = theField.value;
  	var allValid = true;
  	var decPoints = 0;
  	var allNum = "";
  	for (i = 0;  i < checkStr.length;  i++)
  	{
   		ch = checkStr.charAt(i);
    		for (j = 0;  j < checkOK.length;  j++)
      			if (ch == checkOK.charAt(j))
        			break;
    		if (j == checkOK.length)
    		{
      			allValid = false;
      			break;
    		}
    		allNum += ch;
  	}
 	if (!allValid)
  	{
		if(showDB)
		{
    			alert("Ce champ doit contenir des valeurs numériques entières seulement.");
    			theField.focus();
		}
    		return (false);
  	}
  	return (true);
}

function IsPositiveInteger(theField,showDB)
{
	if (IsInteger(theField,showDB))
		if (parseInt(theField.value) >= 0)
			return true;
		else
		{
			if(showDB)
			{
				alert("Ce champ doit contenir des valeurs numériques entières positives seulement.");
    				theField.focus();
			}
    			return false;
		}
	return false;
}

//---------------------------------------------------------------------------------------------

function IsMissingMandatory(fieldval, fieldname, fieldname_f, lang)
{
	if (CheckForBlank(fieldval))
	{
		if (lang == "E")
		{
			alert ("ERROR: " + fieldname + " must be filled in")
			return false;
		}
		else if (lang == "F")
		{
			alert ("ERREUR: " + fieldname_f + " ne peut être vide")	
			return false;
		}
	}
	return true;
}

//----------------------------------------------------------------------------------------------------

function IsNumeric(fieldval, fieldname, fieldname_f, lang, max_digits, precision, display_decimals, mandatory)
{
		
	var c=fieldval.indexOf(",");
	var i=0
	var temp_zero = ""
	var back = fieldval.substring(c+1, fieldval.length)
	var front = fieldval.substring (0, c)
  	var checkOK = "0123456789-";
  	var allValid = true;
  	var decPoints = 0;
  	var allNum = "";


	if (mandatory == "1")
		IsMissingMandatory(fieldval, fieldname, fieldname_f, lang)


  	for (i = 0;  i < back.length;  i++)
  	{
   		ch = back.charAt(i);
    		for (j = 0;  j < checkOK.length;  j++)
      			if (ch == checkOK.charAt(j))
        			break;
    		if (j == checkOK.length)
    		{
      			allValid = false;
      			break;
    		}
    		allNum += ch;
  	}
 	if (!allValid)
  	{
    		return (false);
  	}


  	for (i = 0;  i < front.length;  i++)
  	{
   		ch = front.charAt(i);
    		for (j = 0;  j < checkOK.length;  j++)
      			if (ch == checkOK.charAt(j))
        			break;
    		if (j == checkOK.length)
    		{
      			allValid = false;
      			break;
    		}
    		allNum += ch;
  	}
 	if (!allValid)
  	{
    		return (false);
  	}


	if (c != -1)
	{
		if (precision == 0)
		{
			fieldval = CheckRound (fieldval, precision)

			for (var k = 0; k < display_decimals; k++)
				temp_zero = temp_zero + "0"
			
			return (fieldval+ "." + temp_zero)
		}
		if (precision == back.length) 
		{
			if (display_decimals > precision)
			{
				for (var k = display_decimals; k < precision; k++)
					temp_zero = temp_zero + "0"
			
				return (fieldval+ "." + temp_zero)
			}
			else if (display_decimals < precision)
			{
				return (front + "." + back.substring(0, display_decimals))
			}
			else
				return fieldval
			
		}
		else if (precision > back.length)
		{
			for (var k = display_decimals; k < precision; k++)
				temp_zero = temp_zero + "0"
			return (fieldval+ "." + temp_zero)	
			
		}
			
		else
		{
			if (display_decimals <= precision)
			{
				fieldval= CheckRound (fieldval, precision)
				return fieldval
			}
			else // display_decimals > precision
			{
				fieldval= CheckRound (fieldval, precision)
				for (var k = display_decimals; k < precision; k++)
					temp_zero = temp_zero + "0"
				return (fieldval+ "." + temp_zero)
			}
			
		}
		
	}
	
	else
	{
		for (var k = 0; k < display_decimals; k++)
			temp_zero = temp_zero + "0"
		return (fieldval+ "." + temp_zero)
		
	}
	
	if (eval(front.length + back.length) > max_digits)
	{
		if (lang == "E")
		{
			alert  ("ERROR: " +  fieldname + "has too many digits")
			return false
		}
		else if (lang == "F")
		{
			alert ("ERROR: " + fieldname_f + "a trop de numéros")
			return false
		}
	}
}


function CheckRound (fieldval, precision) 
{
	var c = fieldval.indexOf(".")
	var back = fieldval.substring(c+1, fieldval.length)
	var front = fieldval.substring (0, c)
	var sum = 0

	if (precision > 0)
	{
		for (var i=0; i < precision; i++)
		{
			var ch = back.charAt(i)
			if (ch == "9")
				sum = eval(sum+1)
		}
	

		if (sum == precision)
		{
			front = Math.ceil(fieldval)
		}
		else
		{
	 	      	front = Math.floor(fieldval) 
		}

alert ("front =" + front )

		var power = Math.pow (10, precision)
		fieldval = "" + Math.round(fieldval * power)

alert ("fieldval=" + fieldval)

      		var back = fieldval.substring (eval(fieldval.length-precision), fieldval.length)

alert ("back =" + back )

alert("returning: " + dollar + "." + back )

	return (front  + "." + back );
	}

	if (precision == 0)
	{
		if (back.charAt(0) >= 5)
		{
			fieldval= eval(parseInt(front) + parseInt("1"))
			return s
		}		
		else 
		{
			return front
		}	
	}
        
}

//---------------------------------------------------------------------------------------------------

function IsPcodeZip (object,fieldval, fieldname, fieldname_f, lang, country, mandatory)
{
	if (mandatory == 1)
		IsMissingMandatory(fieldval, fieldname, fieldname_f, lang)
	
	if (country == "CA")
	{
		if (!CheckCdnPostalCode(object, fieldval, mandatory))
		{
			if (lang =="E") {
				alert ("ERROR : " + fieldname + " is not a valid Canadian postal code");
				return false;
			}
			else if (lang == "F") {
				alert ("ERREUR : " + fieldname_f + " n'est pas un code postal canadien valide");
				return false;
			}
		}
		var newpcode = fieldval.toUpperCase()
		return true;
	}
	else if (country == "US")
	{
		if (!CheckZipCodeFormatLong(fieldval) && !CheckZipCodeFormatShort(fieldval))
		{
			if (lang =="E")
				alert ("ERROR: " + fieldname + "is not a valid American zip code")
			else if (lang == "F")
				alert ("ERREUR " + fieldname_f + "n'est pas une code zip americaine")
		}
		var newzcode = fieldval.toUpperCase();
		
		return true;
	}
	
}

//----------------------------------------------------------------------------------------------

function IsPhoneNumber(field, fieldval, fieldname, fieldname_f, lang, country, mandatory) {
        var inStr = field.value;
        var inLen = inStr.length;
	var needFix = false;
	var allDigits = true;

	if (mandatory == 1)
		IsMissingMandatory (field.value, fieldname, fieldname_f, lang)
			
	if ((country == "CA") || (country == "US"))
	{
		if(inLen < 10)
		{
			if (lang == "E")
			{
				alert("ERROR: Not enough digits for " + fieldname);
				return false;
			}
			if (lang == "F")
			{
				alert ("ERREUR: Pas assez de numéros pour " + fieldname_f)
				return false;
			}
		}

	        // If this is a ten digit number XXXYYYZZZZ
        	if(inLen == 10) {
			for(var i=0; i<inLen; i++)
			 {
				var ch = inStr.charAt(i);
				if (ch < "0" || "9" < ch)
					return false;
			}
			var  fixedNumber = inStr.substring(0,3) 
                	    + "-"
	                    + inStr.substring(3,6)
        	            + "-"
                	    + inStr.substring(6,10) ;

			field.value = fixedNumber;
			alert("Reformatted the Phone field to '" + fixedNumber + "'.");
        		return true;
	        }

		if (inLen == 12)
		{
			var ch = inStr.charAt(3);
			if(ch == " " || ch == "-")
			{
				allDigits = false;
			}		
		}
        
	        // Is this is a twelve digit number WWXXXYYYZZZZ
		if (inLen == 12 && allDigits) {
			for (var i = 0; i < 12; i++)
			{
	
				var ch = inStr.charAt(i);
				if (ch < "0" || "9" < ch) 
				{
					if (lang == "E")
					{	
						alert("ERROR: Invalid " + fieldname);
						return false;
					}
					if (lang == "F")
					{
						alert ("ERREUR: Ce n'est pas " + fieldname_f)
						return false;
					}
			
				}
			}

	            var  fixedNumber = inStr.substring(0,2)
        	            + "-"
                	    + inStr.substring(2,5)
	                    + "-"
        	            + inStr.substring(5,8)
                	    + "-"
	                    + inStr.substring(8,12) ;
	
        	    field.value = fixedNumber;
		
	            alert("Reformatted the Phone field to '" + fixedNumber + "'.");
	
        	    return true;
	        }
	
		if (inLen == 12 && !allDigits) {
			/* check country code */
			for (var i = 0; i < 12; i++) {
				var ch = inStr.charAt(i);
				if(i==3 || i==7)
				{
					if(ch == "-")
						continue;
					if(ch == " ")
					{
						needFix = true;
						continue;
					}
					if (lang == "E")
					{
						alert("ERROR: Not enough digits for " + fieldname);
						return false;
					}
					if (lang == "F")
					{
						alert ("ERREUR: Pas assez de numéros pour " + fieldname_f)
						return false;
					}
				}
        	        	if (ch < "0" || "9" < ch)
				{
					if (lang == "E")
					{
						alert("ERROR: Not enough digits for " + fieldname);
						return false;
					}
					if (lang == "F")
					{
						alert ("ERREUR: Pas assez de numeros pour " + fieldname_f)
						return false;
					}
				}
        	    	}

			if(needFix)
			{
				var  fixedNumber = inStr.substring(0,3)
					+ "-"
					+ inStr.substring(4,7)
					+ "-"
					+ inStr.substring(8,12) ;

				field.value = fixedNumber;

				alert("Reformatted the Phone field to '" + fixedNumber + "'.");
			}

			return true;
		}

		if (inLen == 15) {
			/* check country code */
			for (var i = 0; i < 15; i++) {
				var ch = inStr.charAt(i);
				if(i==2 || i==6 || i==10)
				{
					if(ch == "-")
						continue;
					if(ch == " ")
					{
						needFix = true;
						continue;
					}

					if (lang == "E")
					{
						alert("ERROR: Not enough digits for " + fieldname);
						return false;
					}
					if (lang == "F")
					{
						alert ("ERREUR: Pas assez de numéros pour " + fieldname_f)
						return false;
					}
	
				}

	                	if (ch < "0" || "9" < ch)
				{
					if (lang == "E")
					{
						alert("ERROR: Not enough digits for " + fieldname);
						return false;
					}	
					if (lang == "F")
					{
						alert ("ERREUR: Pas assez de numéros pour " + fieldname_f)
						return false;
					}
				}
            		}

			if(needFix)
			{
				var  fixedNumber = inStr.substring(0,2)
					+ "-"
					+ inStr.substring(3,6)
					+ "-"
					+ inStr.substring(7,10)
					+ "-"
					+ inStr.substring(11,15) ;

				field.value = fixedNumber;
	
				alert("Reformatted the Phone field to '" + fixedNumber + "'.");
			}

			return true;
		}
    
		if (lang == "E")
		{
			alert("ERROR: Not enough digits for " + fieldname);
			return false;
		}
		if (lang == "F")
		{	
			alert ("ERREUR: Pas assez de numéros pour " + fieldname_f)
			return false;
		}
	}
}


//--------------------------------------------------------------------------------------------

function IsProvState (field, fieldval, fieldname, fieldname_f, lang, country, mandatory)
{
	if (mandatory == 1)
		IsMissingMandatory (fieldval, fieldname, fieldname_f, lang)
	
	if (country == "CA")
	{
		if (!CheckCdnProv(fieldval, mandatory))
		{
			if (lang =="E")
			{
				alert ("ERROR: " + fieldname + " is not a valid Canadian province")
				return false;
			}
			else if (lang == "F")
			{
				alert ("ERREUR " + fieldname_f + " n'est pas une province canadienne")
				return false;
			}
		}
		field.value = fieldval.toUpperCase()
		return true;
	}
	else if (country == "US")
	{
		if (!CheckUSState(fieldval, mandatory))
		{
			if (lang =="E")
			{
				alert ("ERROR: " + fieldname + " is not a valid American state")
				return false;
			}
			else if (lang == "F")
			{
				alert ("ERREUR " + fieldname_f + " n'est pas un etat americain")
				return false;
			}
		}
		field.value = fieldval.toUpperCase();
		
		return true;
	}
	
}


//-----------------------------------------------------------------------------------------------

function IsTime (fieldval, fieldname, fieldname_f, lang) 
{
	

//	var colon2 = fieldval.charAt(5) 

	var hour = fieldval.substring(0,2)
	var colon1 = fieldval.charAt(2)	
	var minute = fieldval.substring(3,5)
//	var second= fieldval.substring(6,8) 

alert ("fieldval = " + fieldval);
alert ("hour = " + hour)
alert ("colon 1 is " + colon1)
alert ("minute = " + minute)
// alert ("colon 2 is " + colon2)
// alert ("second = " + second) 

alert ("GOT HERE!")
	if ((hour.length > 2) || (minute.length > 2))
	{
		if (lang == "E")
		{
			alert ("Too many digits")
			return false
		}
		if (lang == "F")
		{
			alert ("Trop de numeros")
			return false
		}
	}
alert ("GOT HERE 2!")


	if ((hour.length < 2) || (minute.length < 2))
	{
		if (lang == "E")
		{
			alert ("Not enough digits")
			return false
		}
		if (lang == "F")
		{
			alert ("Pas assez de numeros")
			return false
		}
	}


	if ((!IsAllDigits(hour)) || (!IsAllDigits(minute)))
	{
		if (lang == "E")
		{
			alert ("Must be all digits")
			return false;
		}
		else if (lang =="F")
		{
			alert ("Tous doit etre numeros")
			return false;
		}
	}
	

	if (colon1 != ":")
	{
		if (lang == "E")
		{
			alert ("Must be in HH:MM format")
			return false;
		}
		else if (lang =="F")
		{
			alert ("Doit etre en format HH:MM")
			return false;
		}
	}
		
	
	if ((hour <0) | (hour >23))
	{
		if (lang == "E")
		{
			alert ("Hour is out of range")
			return false;
		}
		else if (lang =="F")
		{
			alert ("L'heure n'est pas dans le range")
			return false;
		}
	}

	if ((minute < 0) || (minute > 59))
	{
		if (lang == "E")
		{
			alert ("Minute is out of range")
			return false;
		}
		else if (lang =="F")
		{
			alert ("Le minute est dehors le range")
			return false;
		}
	}
	
//	if ((second < 0) || (second > 59))
//	{
//		if (lang == "E")
//		{
//			alert ("Second is out of range")
//			return false;
//		}
//		else if (lang =="F")
//		{
//			alert ("Le second est dehors le range")
//			return false;
//		}
//	}
	alert ("The time is: " + hour + colon1 + minute)
	return true;
}

//-----------------------------------------------------------------------------------------------

function StripSpaces(temp)
{
	var s = new String(temp);
	var i = s.length - 1;

	for (i; s.charAt(i) == " "; i--)
		;

	return s.substring(0, i+1);
}

function StripFullSpaces(checkStr)
{
	strLength = checkStr.length;
	strToReturn = "";

	for(i=0; i < (strLength + 1); i++)
	{
		if(checkStr.charAt(i) != " ")
		{
			strToReturn = strToReturn + checkStr.charAt(i);
		}
	}
	return strToReturn;
}

//---------------------------------------------------------------------------------------------

function IsAlpha(fieldval, fieldname)
{
// Renvoi une erreur si Le champ contient des nombres
	for (var j=0; j < fieldval.length; j++)
	{

		if( fieldval(j) < "A" && fieldval(j) > "Z" )
		{
			alert("Ce champ ne doit contenir que des caractères")
			return false
		}
		if( fieldval(j) < "a" && fieldval(j) > "z" )
		{
			alert("Ce champ ne doit contenir que des caractères")
			return false
		}
	
	}	

}


//---------------------------------------------------------------------------------------------

function isFieldBlank(theField)
{

	if (theField.value.length == 0) 
		
		{			
			theField.focus();
			
			return true;
		}
		
	else 
		
		return false;

}

//*********************************************************
//	Author:		Nacer Ainouche
//	Cie:		Ergonet 
//	Date:		2001-03-28
//	Desc:		Verify if is valid E-Mail.
//               
//
//	Input parameters:
//		 fieldval  : The Field to validate
//       ManyEmail : booelan to indicate if is one or many E-Mail Address
//                    ManyEmail = 1 Many EMail Address
//                    ManyEmail = 0 One  EMail Address
//	Output parameters:
//		True or False
//
//	Modified By Patrick Carroll
//	Added : Check to make sure the DOT is found AFTER
//		the @.
//*********************************************************

function isEmail2(field, ManyEmail)
{
   
    var EMailArray = new Array();
    var fieldval = field.value; 
     
	var iAtPos = 0;
	var iDotPos = 0;
     
	if(fieldval.length == 0)
	{
	   return false;
	}
      
    // Decompose les Emails dans un tableau pour validation de chacun deux
    var StrEmail = "";
    var Indice = 0;
    
    for (var i=0; i<fieldval.length; i++) 
	{
	     var ch = fieldval.charAt(i);
	     if(ch != ";" && ch != ",")
	     {
			StrEmail = StrEmail + ch
		 }
		 else
		 {
		   EMailArray[Indice] = StrEmail;
		   StrEmail = ""; 
		   Indice = Indice + 1;
		 }
	}
   
    if(ch != ";" && ch != ",")
    {
       EMailArray[Indice] = StrEmail;
    }
            
    if(ManyEmail == 0 && EMailArray.length > 1)
    {
     return false;
    }

    if( EMailArray[0].indexOf("@.") != -1 )
    {
		return false;
    }
    
    // Validation de chaque EMail

	for (var j=0; j< EMailArray.length; j++) 		    
	{		    
		var foundSymbol = false;

        StrEmail = EMailArray[j];
        
		for (var i=0; i< StrEmail.length; i++) 
		{
		    var ch = StrEmail.charAt(i);
		           
		   if (ch == "@")
		   {
			    if((i == 0) || (i==(StrEmail.length - 1)))
			    {
				    return false;
			    }
			    
			    iAtPos = i;
			    foundSymbol=true;
			}
		}

		if(foundSymbol == false)
		{
			return false;
		}
    }
    
    for (var j=0; j< EMailArray.length; j++) 		    
	{		    
		var foundSymbol = false;

        StrEmail = EMailArray[j];
        
		for (var i=0; i< StrEmail.length; i++) 
		{
		    var ch = StrEmail.charAt(i);
		           
		   if (ch == ".")
		   {
			    if((i == 0) || (i==(StrEmail.length - 1)))
			    {
				    return false;
			    }
			    iDotPos = i;
			    foundSymbol=true;
			}
		}

		if(foundSymbol == false)
		{
			return false;
		}
		
		if( parseInt(iAtPos) > parseInt(iDotPos) )
		{
			return false;
		}
		
    }
    
    return foundSymbol;
}
