function OUVREpopup(page,nom,option) {
var w=window.open(page,nom,option);
w.document.close();
w.focus();
}

// *********************************************************
// FUNCTION: addZero( )
// argument 1 : la chaine à traiter
//
// Traite la chaine selon le format '0.00'
// ex. input = 9     output = 9.00
//     input = 9.9   output = 9.90
//     input = 9.    output = 9.00
// *********************************************************
// Créé par    : Gecko Communication
// *********************************************************
function addZero(input)
{
// arrondi la valeur recue a 2 chiffres apres la virgule

var input = String(input)
input = input.replace("$","")
input = input.replace(/ /g,"")

posVirgule = input.lastIndexOf(",")
if (input.indexOf(".") == -1) 
	{
	if (posVirgule != -1) 
		{
		 strDebut = input.substring(0,posVirgule)
		 strFin = input.substring(posVirgule+1,String(input).length)
		 input = strDebut + "." + strFin
		}
	}
input = input.replace(/,/g,"")
input = Math.round(parseFloat(input)*100)/100;
input = String(input);

var posPoint    = input.indexOf(".");
var output      = "" 
var nbDecimales = ""

if (posPoint != -1)
	{
	nbDecimales = input.length - (posPoint+1);
	if (nbDecimales == 1)
		{
		// ajoute un 0 pour avoir 2 decimales apres la virgule
		output = input+"0"
		}
	else
		{
		if (nbDecimales == 0)
			{
			// seulement le point, ajoute 2 decimales
			output = input+".00"
			}
			else
			{
			// valeur correcte, aucun changement
			output = input
			}
		}
	}
	else
	{
	// pas de point, ajoute les decimales
	output = input+".00"
	}
	
return output
}

// *********************************************************
// FUNCTION: split1000( )
// argument 1 : la chaine à traiter
//
// Traite la chaine selon le format '1 000 000.00'
// ex. input = 1234            output = 1 234
//     input = 12345.00        output = 12 345.00
//     input = 123456789.00    output = 123 456 789.00
// *********************************************************
// Créé par    : Gecko Communication
// *********************************************************
function split1000(input) {

var times  = ""
var reste  = ""
var start  = ""
var end    = ""
var output = input
var str    = input
var input  = parseInt(input)
var fin    = ""
var leng   = String(input).length

if (leng >= 4) 
	{
	 times = parseInt(leng/3)
	 reste = leng % 3
	 input = String(input)

	// garde en mémoire la partie décimale 
	// ex. str = 'xxxx.xx'    fin = '.XX'
	if (str.indexOf(".") != -1)
		{
	 	fin = String(str.substring(str.indexOf("."),str.length))
		}

	if (reste == 0 )
		{
		for (i=1; i<=times; i++)
			{
			if (i==1) 
		 		{
				 output = input.substr(0,3)
				 chunk  = input.substr(3,3)
				}
			else
		 		{
				 output = output + " " + chunk
				 chunk  = input.substr(i*3,3)
				}
			}
		}
	else
		{		
		for (i=0; i<=times; i++) 
			{
				if (i==0) 
		 			{
					 output = input.substr(0,reste)
					 chunk  = input.substr(reste,3)
					}
			 	else
		 			{
					 output = output + " " + chunk
					 chunk  = input.substr(reste+i*3,3)
					}
			}
		}
		
}

output = String(output)
output = output + fin

return output
}

// *********************************************************
// FUNCTION   : convertMoney( )
// argument 1 : la chaine à traiter
// argument 2 : la devise pour le formattage
//
// Traite la chaine selon la devise passé en argument
// ex. input = 12 345.67    , 'ca'    output = 12 345,66$
//     input = 123 456.78   , 'ca'    output = 123 456,78$
//     input = 1 234.56     , 'us'    output = $1,234.56
//     input = 1 234 567.00 , 'us'    output = $1,234,567.00
// *********************************************************
// Créé par    : Gecko Communication
// *********************************************************
function convertMoney(input, devise) {

input = String(input)
switch (devise)
	{
	// Dollars CAN
	case "ca": 
		output = input.replace(".",",")
		output = output + "$"
		break;
	
	// Dollars US
	case "us": 
		output = input.replace(/ /g,",")
		output = "$" + output
		break;
	}
	
return output
}

// *********************************************************
// FUNCTION   : isRequired( )
// argument 1 : le nom du formulaire
// argument 2 : le nom du champs
//
// Vérifie que le champs obligatoire n'est pas vide ou inactif
// Supporte à ce jour:
// - champs texte
// - champs textarea
// - champs checkbox
// - champs select-one
// - champs select-multiple
// - champs password
// *********************************************************
// Créé par    : Gecko Communication
// *********************************************************
function isRequired(rForm,rField) {

var output = false
var newStr = ""

var oField = document.forms[rForm].elements[rField]
var vType  = oField.type
var vField = oField.value

switch (vType) {
	
	case "text":
	case "textarea":
	if (vField != "") 
		{
		 newStr = vField.replace(/ /g,"")
		 if (newStr.length > 0) 
			{
		 	 output = true
			}
		}
	break;
	
	case "checkbox":
	if (oField.checked == true) 
		{
		 output = true
		}
	break;
	
	case "select-one":
	if (oField.selectedIndex != 0) 
		{
		 output = true
		}
	break;
	
	case "select-multiple":
	if (vField != "") 
		{
		 output = true
		}
	break;
	
	case "password":
	if (vField != "") 
		{
		 output = true
		}
	break;
	
	}
return output

}

// *********************************************************
// FUNCTION   : isPhone( )
// argument 1 : le nom du formulaire
// argument 2 : le nom du champs
// argument 3 : s'il y a un champ code regional
//
// Vérifie que le champs correspond à un no de tel
// Supporte à ce jour:
// - no à 7 chiffres
// - code régional + no à 7 chiffres
//
// IMPORTANT: le champs code régional doit porter le même nom
// que le champs no de tel, en ajoutant le suffixe '_code'
// ex. si no de tel  = 'noTel' alors,
//     code régional = 'notel_code'  
// *********************************************************
// Créé par    : Gecko Communication
// *********************************************************

function isPhone(rForm,rField,gotArea) {

var output = false
var rField2 = rField+"_code"
var input1  = document.forms[rForm].elements[rField].value
var input2  = document.forms[rForm].elements[rField2].value
var output1 = ""
var output2 = ""

if (gotArea == "true") {
	output1 = chkDigits(input1)
	output2 = chkAreaCode(input2)
	if (output1 == true && output2 == true) {
		output = true
	}
}else {
	output1 = chkDigits(input1)
	if (output1 == true) {
		output = true
	}
}
	
return output
}
// *********************************************************
// FUNCTION   : isPhone2( )
// argument 1 : le nom du formulaire
// argument 2 : le nom du champs
// argument 3 : s'il y a un champ code regional inclu dans le field
//
// Vérifie que le champs correspond à un no de tel
// Supporte à ce jour:
// - no à 7 chiffres
// - code régional + no à 7 chiffres
//
//  
// *********************************************************
// Créé par    : Gecko Communication (David modifier par Alex)
// *********************************************************

function isPhone2(rForm,rField,gotArea) {

var output = false

var input  = document.forms[rForm].elements[rField].value

if (gotArea == "true") {
	output = chkDigits2(input)
}else {
	output = chkDigits(input)
}
	
return output
}
// *********************************************************
// vérifie la validité du code régional
// *********************************************************
function chkAreaCode(input) {
var output = false
if (input.length == 3) {
	if (isNaN(input) == false) {
		output = true
		}
	}

return output
}

// *********************************************************
// vérifie la validité du no de tel
// *********************************************************
function chkDigits(input) {
var output = false
var leCheck = false
if (input.indexOf("-") == 3) {
	if (input.length == 8) {
		if (input.indexOf("e") == -1 ) { 
		temp = input.replace("-","")
		
			if (isNaN(temp) == false) {
			output = true
			
				}
			}
		}
	}

return output
}
// *********************************************************
// vérifie la validité du no de tel avec indicatif mod par Alex
// *********************************************************
function chkDigits2(input) {
	var output = false
	if (input.indexOf("-") == 3) {
		if (input.lastIndexOf("-") == 7) {
			if (input.length == 12) {
					temp = input.replace("-","")
					temp = temp.replace("-","")
					if (isNaN(temp) == false) {
						output = true
						
					}
			}
		}
	}
	return output
}

// *********************************************************
// FUNCTION   : isEmail( )
// argument 1 : l'adresse de courriel à valider
//
// Vérifie si l'adresse est valide selon peu_importe@x.xx
// *********************************************************
// Créé par    : Gecko Communication
// *********************************************************
function isEmail(rForm,rField) {

var output = false

var firstOP  = ""
var secondOP = ""
var thirdOP  = ""
var fourthOP = "" 
var fifthOP = "" 

var oField = document.forms[rForm].elements[rField]
var vField = oField.value

var posAt = vField.indexOf("@")
var posDot = vField.lastIndexOf(".")

firstOP = checkForAt(vField)
secondOP = checkForDot(vField, posAt)
thirdOP = checkForDomain(vField, posDot)
fourthOP = checkForHost(vField, posAt, posDot)
fifthOP = checkForBlank(vField)
	
// vérifie les erreurs
if(firstOP == true && secondOP == true && thirdOP == true && fourthOP == true && fifthOP == true) { output = true }

return output
}

// *********************************************************
// vérifie s'il y a un et un seul '@' dans l'adresse
// *********************************************************
function checkForAt(input) {
if(input.indexOf("@") != -1)
	{
	if (input.indexOf("@") == input.lastIndexOf("@"))
		{
		 output = true
		}
	else
		{
		 output = false
		}
	}
else
	{
	 output = false
	}
	
return output
}

// *********************************************************
// vérifie s'il n'y a pas plus d'un '.' apres le '@'
// *********************************************************
function checkForDot(input, posAt) {
if(input.indexOf(".") != -1)
	{
	chunk = input.substring(posAt, input.length)
	if (chunk.indexOf(".") == chunk.lastIndexOf("."))
		{
		 output = true
		}
	else
		{
		 output = false
		}
	}
else
	{
	 output = false
	}
	
return output
}

// *********************************************************
// vérifie s'il y a au moins 2 caratères après le point
// *********************************************************
function checkForDomain(input, posDot) {
chunk = input.substring(posDot+1, input.length)
if (chunk.length <= 3 && chunk.length >= 2)
	{
	 output = true
	}
else
	{
	 output = false
	}
	
return output
}

// *********************************************************
// vérifie s'il y a au moins 1 caratères entre le '@' et le '.'
// *********************************************************
function checkForHost(input, posAt, posDot) {
chunk = input.substring(posAt+1, posDot)
if (chunk.length >= 1)
	{
	 output = true
	}
else
	{
	 output = false
	}
	
return output
}

// *********************************************************
// vérifie s'il n'y a pas d'espace dans l'adresse
// *********************************************************
function checkForBlank(input) {
if(input.indexOf(" ") == -1)
	{
	 output = true
	}
else
	{
	 output = false
	}
		
return output
}

// *********************************************************
// FUNCTION   : isCodePostal( )
// argument 1 : le nom du formulaire
// argument 2 : le nom du champs
//
// Vérifie que le champs correspond au format d'un code postal
//
// *********************************************************
// Créé par    : Gecko Communication
// *********************************************************
function isCodePostal(rForm,rField) {
var output = false

var oField = document.forms[rForm].elements[rField]
var input = oField.value
var lettres = "abcdefghijklmnopqrstuvwxyz"

input = input.replace(/ /g,"")
input = input.toLowerCase()

if (input.length == 6)
	{
	if (lettres.indexOf(input.charAt(0)) != -1 && lettres.indexOf(input.charAt(2)) != -1 && lettres.indexOf(input.charAt(4)) != -1)
		{
		 if (isNaN(input.charAt(1)) == false && isNaN(input.charAt(3)) == false && isNaN(input.charAt(5)) == false)
		 	{
			 output = true
			}
		}
	}

return output
}

// *********************************************************
// FUNCTION   : deplacerDroite( ) & deplacerGauche( )
// argument 1 : nom du formulaire
// argument 2 : nom de la liste de choix
// argument 3 : nom de la liste d'items choisis
//
// Déplace un item d'une liste à l'autre
// Supporte sélections multiples
// ajouter l'event onDblClick="deplacerDroite/Gauche( )" dans la balise <select>
// *********************************************************
// Créé par    : Gecko Communication
// *********************************************************
function deplacerDroite(rForm, rField_left, rField_right) {

var oField_left  = document.forms[rForm].elements[rField_left]
var oField_right = document.forms[rForm].elements[rField_right]

var oField_left_len = oField_left.length ;
    for ( i=0; i<oField_left_len ; i++){
        if (oField_left.options[i].selected == true ) {
            oField_right_len = oField_right.length;
            oField_right.options[oField_right_len]= new Option(oField_left.options[i].text);
            oField_right.options[oField_right_len].value = oField_left.options[i].value;
        }
    }

    for ( i = (oField_left_len -1); i>=0; i--){
        if (oField_left.options[i].selected == true ) {
            oField_left.options[i] = null;
        }
    }
}

function deplacerGauche(rForm, rField_left, rField_right) {

var oField_left  = document.forms[rForm].elements[rField_left]
var oField_right = document.forms[rForm].elements[rField_right]

var oField_right_len = oField_right.length ;
    for ( i=0; i<oField_right_len ; i++){
        if (oField_right.options[i].selected == true ) {
            oField_left_len = oField_left.length;
			oField_left.options[oField_left_len]= new Option(oField_right.options[i].text);	
			oField_left_len = oField_left.length ;
			oField_left.options[oField_left_len-1].value = oField_right.options[i].value;
            }
    }
	
    for ( i=(oField_right_len-1); i>=0; i--) {
         if (oField_right.options[i].selected == true ) {
             oField_right.options[i] = null;
         }
    }
}

// *********************************************************
// FUNCTION   : LbsToKG( ) & KgToLbs( )
// argument 1 : nom du formulaire
// argument 1 : nom du champs
//
// Convertit une valeur en KG ou en Lbs
// Arrondit au centième
// *********************************************************
// Créé par    : Gecko Communication
// *********************************************************
function Lbs_to_KG(input) {

var input = String(input);
var output = input.replace(",",".");
var caract = ""

nombre = parseFloat(output);
// si nombre valide
if (!isNaN(nombre))
	{
	// prend note du caractere pour decimales
	if (output == input)
		{
		caract = "point";
		}
		else
		{
		caract = "virgule";
		}

	//effectue la conversion
	output = nombre * 0.4536;
	output = (Math.round(output*100))/100;
	
	// renvoie a l'autre champ la valeur traitee
	if (caract == "virgule")
		{
		output = String(output).replace(".",",");
		}
		
	return output
	}
}

function KG_to_Lbs(input) {

var input = String(input);
var output = input.replace(",",".");
var caract = ""

nombre = parseFloat(output);
// si nombre valide
if (!isNaN(nombre))
	{
	// prend note du caractere pour decimales
	if (output == input)
		{
		caract = "point";
		}
		else
		{
		caract = "virgule";
		}

	//effectue la conversion
	output = nombre * 2.2;
	output = (Math.round(output*100))/100;
	
	// renvoie a l'autre champ la valeur traitee
	if (caract == "virgule")
		{
		output = String(output).replace(".",",");
		}
		
	return output
	}
}

// *********************************************************
// FUNCTION   : Metres_to_Pieds( ) & Pieds_to_Metres( )
// argument 1 : nom du formulaire
// argument 1 : nom du champs
//
// Convertit une valeur en mètres ou en pieds
// Arrondit au centième
// *********************************************************
// Créé par    : Gecko Communication
// *********************************************************
function Metres_to_Pieds(input) {

var input = String(input);
var output = input.replace(",",".");
var caract = ""

nombre = parseFloat(output);
// si nombre valide
if (!isNaN(nombre))
	{
	// prend note du caractere pour decimales
	if (output == input)
		{
		caract = "point";
		}
		else
		{
		caract = "virgule";
		}

	//effectue la conversion
	output = nombre * 3.281;
	output = (Math.round(output*100))/100;
	
	// renvoie a l'autre champ la valeur traitee
	if (caract == "virgule")
		{
		output = String(output).replace(".",",");
		}
		
	return output
	}
}

function Pieds_to_Metres(input) {

var input = String(input);
var output = input.replace(",",".");
var caract = ""

nombre = parseFloat(output);
// si nombre valide
if (!isNaN(nombre))
	{
	// prend note du caractere pour decimales
	if (output == input)
		{
		caract = "point";
		}
		else
		{
		caract = "virgule";
		}

	//effectue la conversion
	output = nombre * 0.3048;
	output = (Math.round(output*100))/100;
	
	// renvoie a l'autre champ la valeur traitee
	if (caract == "virgule")
		{
		output = String(output).replace(".",",");
		}
		
	return output
	}
} 

// *********************************************************
// FUNCTION   : Metres_to_Pieds( ) & Pieds_to_Metres( )
// argument 1 : nom du formulaire
// argument 1 : nom du champs
//
// Convertit une valeur en mètres ou en pieds
// Arrondit au centième
// *********************************************************
// Créé par    : Gecko Communication
// *********************************************************
function addTaxes(input, devise) {
var input = String(input);
var output = input.replace(",",".");
var caract = ""
var GSTrate = .07
var HSTrate = .08

nombre = parseFloat(output);
// si nombre valide
if (!isNaN(nombre))
	{
	// prend note du caractere pour decimales
	if (output == input)
		{
		caract = "point";
		}
		else
		{
		caract = "virgule";
		}

	switch (devise)
 		{
		 case "AB":
		 break
		 case "BC":
		 break
		 case "MB":
		 break
		 case "NB":
		 break
		 case "NF":
		 break
		 case "PQ":
		 break
		 case "NT":
		 break
		 case "NS":
		 break
		 case "ON":
		 break
		 case "PI":
		 break
		 case "SK":
		 break
		 case "YT":
		 default: 
  		}
	
	// renvoie a l'autre champ la valeur traitee
	if (caract == "virgule")
		{
		output = String(output).replace(".",",");
		}
		
	return output
	}
}


function HandleGST(input, GSTRate) {
input = input + GSTRate*input
}


function HandleHST(input, HSTRate) {
input = input + HSTRate*input
}


function HandleOtherTax() {

}