function showElement(myDiv) {
  document.getElementById(myDiv).style.display = "block";
  document.getElementById(myDiv).style.visibility = "visible";
}
function hideElement(myDiv) {
  document.getElementById(myDiv).style.display = "none";
  document.getElementById(myDiv).style.visibility = "hidden";
}

function encodeAmp(myStr) {
  return myStr.replace(/&/g,"%26");
}

function toggleLang (myLang,curURL) {
  for (i=0; i < document.forms.length; i++) {
    for (j=0; j < document.forms[i].elements.length; j++) {
      if (document.forms[i].elements[j].name == "l") {
        document.forms[i].elements[j].value = myLang;
        document.forms[i].submit();
        return;
      }
    }
  }
  window.location = curURL+"?l="+myLang;
}
/*function getStyleClass(className) {
	for (var s = 0; s < document.styleSheets.length; s++)
	{
		if(document.styleSheets[s].rules)
		{
			for (var r = 0; r < document.styleSheets[s].rules.length; r++)
			{
				if (document.styleSheets[s].rules[r].selectorText == '.' + className)
				{
					return document.styleSheets[s].rules[r];
				}
			}
		}
		else if(document.styleSheets[s].cssRules)
		{
			for (var r = 0; r < document.styleSheets[s].cssRules.length; r++)
			{
				if (document.styleSheets[s].cssRules[r].selectorText == '.' + className)
					return document.styleSheets[s].cssRules[r];
			}
		}
	}
	return null;
}*/
function doHover(myImg) {
  myStr = myImg.src;
  myImg.src = myStr.substring(0,myStr.length-4) + "Hover." + myStr.substring(myStr.length-3,myStr.length);
}
function undoHover(myImg) {
  myStr = myImg.src;
  myImg.src = myStr.replace(/Hover./,".");
}
function cancelEnter(e) {
  var keycode;
  if (window.event) keycode = window.event.keyCode;
  else if (e) keycode = e.which;
  if (keycode == 13) {return false;}
}
function validNumKeycode (kCode) {
  if (kCode != 17 && (kCode <= 31 || (kCode >= 48 && kCode <= 57) || (kCode >= 37 && kCode <= 40) || (kCode >= 33 && kCode <= 36) || (kCode >= 96 && kCode <= 105) || (kCode >= 112 && kCode <= 123) || kCode == 144 || kCode == 145 || kCode == 45 || kCode == 46 || kCode == 92)) return true;
  else return false;
}
function allgoodKeycode (kCode) {
  if (kCode != 17 && (kCode <= 31 || (kCode >= 37 && kCode <= 40) || (kCode >= 33 && kCode <= 36) || (kCode >= 112 && kCode <= 123) || kCode == 144 || kCode == 145 || kCode == 45 || kCode == 46 || kCode == 92)) return true;
  else return false;
}
function checkIfNumber (e,myInput) {
  var keycode = (window.event) ? window.event.keyCode : e.which;
  if (validNumKeycode(keycode)) return true;
  else return false;
}
function getIndex(input) {
  var index = -1, i = 0, found = false;
  while (i < input.form.length && index == -1)
  if (input.form[i] == input)index = i;
  else i++;
  return index;
}
function changeField(e,myInput) {
  var keycode = (window.event) ? window.event.keyCode : e.which;
  if (!allgoodKeycode(keycode)) {
    tempStr = myInput.value;
    if (tempStr.length == myInput.maxLength) myInput.form[(getIndex(myInput)+1) % myInput.form.length].focus();
  }
}
function isNumKeycode (kCode) {
  if ((kCode >= 48 && kCode <= 57)) return true;
  else return false;
}
function isCurrencyKeycode (kCode) {
  if ((kCode >= 48 && kCode <= 57) || kCode == 44 || kCode == 46) return true;
  else return false;
}
function isLetterKeycode (kCode) {
  if ((kCode >= 65 && kCode <= 90) || (kCode >= 97 && kCode <= 122) || (kCode >= 192 && kCode <= 197) || (kCode >= 199 && kCode <= 207) || (kCode >= 210 && kCode <= 214) || (kCode >= 217 && kCode <= 221) || (kCode >= 224 && kCode <= 229) || (kCode >= 231 && kCode <= 239) || (kCode >= 242 && kCode <= 246) || (kCode >= 249 && kCode <= 255) || kCode == 32) return true;
  else return false;
}
function vForm(myForm,isStrict) { //CURRENCY NOT COMPLETE
  var isGroup = 0;
  var isEndGroup = false;
  var groupStr = "";
  var mustBeIdentical = "";
  var rLength_array = new Array();
  
  for (i=0; i < myForm.elements.length; i++) {
    tempStr = myForm.elements[i].name;
    validate_array = tempStr.split("_");
    rLength_array.length = 0;
    if (validate_array.length == 3 && myForm.elements[i].value != "") { //If length restriction is specified
      rLength_array = validate_array[2].split("-");
      if (rLength_array.length == 2) { //If length is a range or characters
        if (myForm.elements[i].value.length < rLength_array[0] || myForm.elements[i].value.length > rLength_array[1]) {
          (pageLang == "en") ? alert ("-"+myForm.elements[i].title.toUpperCase()+"- Must be between "+rLength_array[0]+" and "+rLength_array[1]+" characters long.") : alert("-"+myForm.elements[i].title.toUpperCase()+"- Doit avoir entre "+rLength_array[0]+" et "+rLength_array[1]+" caractères de long.");
          myForm.elements[i].focus();
          return false;
        }
      }
      else { //If length is a specific value
        if (myForm.elements[i].value.length != rLength_array[0]) {
          (pageLang == "en") ? alert ("-"+myForm.elements[i].title.toUpperCase()+"- Must be "+rLength_array[0]+" characters long.") : alert("-"+myForm.elements[i].title.toUpperCase()+"- Doit avoir "+rLength_array[0]+" caractères de long.");
          myForm.elements[i].focus();
          return false;
        }
      }
    }
    if (validate_array.length > 1) {
      validate_array = validate_array[1].split("");
      if (validate_array[0] != "") {
        for (j=0; j < validate_array.length; j++) {
          switch(validate_array[j]) {
            case "P": //PseudoMandatory(ALL OR NOTHING - GROUP SPECIFIC)
              if (isGroup) {//HAS to be a group
                (vPMandatory(myForm.elements[i])) ? groupStr += "1" : groupStr += "0";
                if (validate_array[j+1] == "M") {
                  if(!vMandatory(myForm.elements[i])) {
                    (pageLang == "en") ? alert ("-"+myForm.elements[i].title.toUpperCase()+"- Must have all "+groupStr.length+" fields filled in.") : alert("-"+myForm.elements[i].title.toUpperCase()+"- Doit avoir tous ses "+groupStr.length+" champs remplis");
                    myForm.elements[i].focus();
                    return false;
                  }
                }
                if (isEndGroup) { //If current field is the end of the group
                  if ((groupStr.indexOf("0") != -1) && (groupStr.indexOf("1") != -1)) { //All or nothing, so "1" and "0" can't be found at the same time
                    (pageLang == "en") ? alert ("-"+myForm.elements[i].title.toUpperCase()+"- Must have all "+groupStr.length+" fields filled in.") : alert("-"+myForm.elements[i].title.toUpperCase()+"- Doit avoir tous ses "+groupStr.length+" champs remplis");
                    myForm.elements[i-(groupStr.indexOf("0"))].focus();
                    return false;
                  }
                  isEndGroup = false;
                  isGroup = 0;
                  groupStr = "";
                }
              } 
              else {return false;}
              break;
            case "M": //Mandatory
              if (isStrict) {
                if (isGroup) {
                  (vMandatory(myForm.elements[i])) ? groupStr += "1" : groupStr += "0";
                  if (isEndGroup) { //If current field is the end of the group
                    if (groupStr.indexOf("1") == -1) { //Most likely a checkbox... only 1 needed.
                      (pageLang == "en") ? alert ("-"+myForm.elements[i].title.toUpperCase()+"- Must have at least one selected choice.") : alert("-"+myForm.elements[i].title.toUpperCase()+"- Doit avoir au moins un élément sélectionné.");
                      myForm.elements[i-(groupStr.indexOf("0"))].focus();
                      return false;
                    }
                    isEndGroup = false;
                    isGroup = 0;
                    groupStr = "";
                  }            
                }
                else {
                  if(!vMandatory(myForm.elements[i])) {
                    if (rLength_array.length == 2) { //If length is a range or characters
                      if (myForm.elements[i].value.length < rLength_array[0] || myForm.elements[i].value.length > rLength_array[1]) {
                        (pageLang == "en") ? alert ("-"+myForm.elements[i].title.toUpperCase()+"("+(i+1)+")- Must be between "+rLength_array[0]+" and "+rLength_array[1]+" characters long.") : alert("-"+myForm.elements[i].title.toUpperCase()+"("+(i+1)+")- Doit avoir entre "+rLength_array[0]+" et "+rLength_array[1]+" caractères de long.");
                        myForm.elements[i].focus();
                        return false;
                      }
                    }
                    else if (rLength_array.length == 1) { //If length is a specific value
                      if (myForm.elements[i].value.length != rLength_array[0]) {
                        (pageLang == "en") ? alert ("-"+myForm.elements[i].title.toUpperCase()+"("+(i+1)+")- Must be "+rLength_array[0]+" characters long.") : alert("-"+myForm.elements[i].title.toUpperCase()+"("+(i+1)+")- Doit avoir "+rLength_array[0]+" caractères de long.");
                        myForm.elements[i].focus();
                        return false;
                      }
                    }
                    if (myForm.elements[i].type == "radio" ||myForm.elements[i].type == "checkBox" ||myForm.elements[i].type == "select-one") {
                      (pageLang == "en") ? alert ("-"+myForm.elements[i].title.toUpperCase()+"- Nothing was selected, please make a selection.") : alert("-"+myForm.elements[i].title.toUpperCase()+"- Rien n'a été sélectionné, veuillez faire un choix.");
                    }
                    else {
                      (pageLang == "en") ? alert ("-"+myForm.elements[i].title.toUpperCase()+"- Please fill in this field.") : alert("-"+myForm.elements[i].title.toUpperCase()+"- Veuillez remplir ce champ.");
                      myForm.elements[i].focus();
                    }
                    return false;
                  }
                }
              }
              else {
                if (isEndGroup) {isEndGroup = false; isGroup = 0; groupStr = "";}
              }
              break;
            case "I": //Identical fields (password confirmation)
              if (mustBeIdentical != "") {
                if (myForm.elements[i].value != myForm.elements[mustBeIdentical].value) {
                  (pageLang == "en") ? alert ("-"+myForm.elements[mustBeIdentical].title.toUpperCase()+"- and -"+myForm.elements[i].title.toUpperCase()+"- Must be identical.") : alert("-"+myForm.elements[mustBeIdentical].title.toUpperCase()+"- et -"+myForm.elements[i].title.toUpperCase()+"- Doivent être identiques.");
                  myForm.elements[mustBeIdentical].focus();
                  return false;
                }
                mustBeIdentical = "";
              }
              else {mustBeIdentical = i;}
              break;
            case "N": //Numbers
              if (!vNumber(myForm.elements[i])) {
                (pageLang == "en") ? alert ("-"+myForm.elements[i].title.toUpperCase()+"- Only numbers are allowed (0-9).") : alert("-"+myForm.elements[i].title.toUpperCase()+"- Seuls les numéros sont acceptés (0-9).");
                myForm.elements[i].focus();
                return false;
              }
              break;
            case "L": //Letters
              if (!vLetter(myForm.elements[i])) {
                (pageLang == "en") ? alert ("-"+myForm.elements[i].title.toUpperCase()+"- Only letters are allowed (a-z A-Z).") : alert("-"+myForm.elements[i].title.toUpperCase()+"- Seules les lettres sont acceptées (a-z A-Z).");
                myForm.elements[i].focus();
                return false;
              }
              break;
            case "A": //Alphanumeric
              if (!vAlphaNumeric(myForm.elements[i])) {
                (pageLang == "en") ? alert ("-"+myForm.elements[i].title.toUpperCase()+"- Only numbers/letters are allowed (0-9 a-z A-Z).") : alert("-"+myForm.elements[i].title.toUpperCase()+"- Seuls les numéros/lettres sont acceptés (0-9 a-z A-Z).");
                myForm.elements[i].focus();
                return false;
              }
              break;
            case "E": //Email
              if (!vEmail(myForm.elements[i])) {
                (pageLang == "en") ? alert ("-"+myForm.elements[i].title.toUpperCase()+"- Email address is invalid.") : alert("-"+myForm.elements[i].title.toUpperCase()+"- L'adresse courriel n'est pas conforme.");
                myForm.elements[i].focus();
                return false;
              }
              break;
            case "C": //Currency
              if (!vCurrency(myForm.elements[i])) {
                (pageLang == "en") ? alert ("-"+myForm.elements[i].title.toUpperCase()+"- Only currency values are allowed (0-9 , .)") : alert("-"+myForm.elements[i].title.toUpperCase()+"- Veuillez entrer une valeur monétaire seulement (0-9 , .)");
                myForm.elements[i].focus();
                return false;
              }
              break;
            case "G": //Group
              isGroup++;
              if (isGroup == 2) {isEndGroup=true;}
              break;
            case "T": //mailing lisT
              errorStr = vMailList(myForm.elements[i]);
              if (errorStr != "") {
                (pageLang == "en") ? alert ("-"+myForm.elements[i].title.toUpperCase()+"- The follow email addresses are invalid :"+errorStr) : alert("-"+myForm.elements[i].title.toUpperCase()+"- Les adresses courriel suivantes ne sont pas conforme :"+errorStr);
                myForm.elements[i].focus();
                return false;
              }
              break;
          }
        }
      }
    }
  }
  return true;
}
function vPMandatory(myElement) {
  switch(myElement.type) {
    case "text":
      if (myElement.value == "") {return false;} else {return true;}
      break;
    case "textarea":
      if (myElement.value == "") {return false;} else {return true;}
      break;
    case "checkbox":
      if (myElement.checked) {return true;} else {return false;}
      break;
  }
}
function vMandatory(myElement) {
  switch(myElement.type) {
    case "text":
      if (myElement.value == "") {return false;} else {return true;}
      break;
    case "textarea":
      if (myElement.value == "") {return false;} else {return true;}
      break;
    case "radio":
      //alert(myElement.form.name);
      tempElement = eval("document."+myElement.form.name+"."+myElement.name);
      if (tempElement.length == null)
        if (tempElement.checked) {return true;} else {return false;}       
      else {
        for (k=0; k < tempElement.length; k++) {
          if (tempElement[k].checked) {return true;} else {return false;}
        }
      }
      //if (myElement.checked) {return true;} else {return false;}
      break;
    case "checkbox":
      if (myElement.checked) {return true;} else {return false;}
      break;
    case "select-one":
      if (myElement.selectedIndex) {return true;} else {return false;}
      break;
  }
}
function vNumber(myElement) {
  for (k=0; k < myElement.value.length; k++) {
    if (!isNumKeycode(myElement.value.charCodeAt(k)))
      return false;
  }
  return true;
}
function vLetter(myElement) {
  for (k=0; k < myElement.value.length; k++) {
    if (!isLetterKeycode(myElement.value.charCodeAt(k)))
      return false;
  }
  return true;
}
function vAlphaNumeric(myElement) {
  for (k=0; k < myElement.value.length; k++) {
    if (!isNumKeycode(myElement.value.charCodeAt(k)) && !isLetterKeycode(myElement.value.charCodeAt(k)))
      return false;
  }
  return true;
}
function vCurrency(myElement) {
  for (k=0; k < myElement.value.length; k++) {
    if (!isCurrencyKeycode(myElement.value.charCodeAt(k)))
      return false;
  }
  return true;
}
function vEmail(myElement) {
  return eCheck(myElement.value);
}
function eCheck(str)
{
	var at="@";
	var dot=".";
	var lat=str.indexOf(at);
	var lstr=str.length;
	var ldot=str.indexOf(dot);
	
	if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==(lstr-1))
    return false
	if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==(lstr-1))
    return false
	if (str.indexOf(at,(lat+1))!=-1)
    return false
	if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot)
    return false
	if (str.indexOf(dot,(lat+2))==-1)
    return false
	if (str.indexOf(" ")!=-1)
    return false
  if (str.indexOf(",")!=-1)
    return false
	return true;
}
function vMailList(myElement) {
  emails_array = myElement.value.split(",");
  emailStr = "";
  for (k=0; k < emails_array.length; k++) {
    if (!eCheck(emails_array[k]))
      emailStr += "\n"+emails_array[k];
  }
  return emailStr;
}
