postal_code_template1 = /^[a-z]{1}\d[a-z]{1}\s?$/i;
postal_code_template2 = /^\d[a-z]{1}\d\s?$/i;
phone_template = /^ *\d{3}\-\d{3}\-\d{4}\s?$/;
email_template1 = /^\w+([\.-]?\w+)*$/;
email_template2 = /^\w+([\.-]?\w+)*(\.\w{2,3})+$/;
postal_match = false;
form_postal_value1 = '';
form_postal_value2 = '';
emailFull = '';
postalcode = '';
phoneFinal = '';
form_email_value1='';
form_email_value2='';
    
postalCodes2=new Array ("A","B","C","E","G","H","J","K","L","M","N","P","R","S","T","V","X","Y");

postalCodes=new Array (
  "A2V","A5A","A8A","B0C","B0E","B0H","B0J","B0K","B0M","B0N",
  "B0P","B0S","B0T","B0V","B0W","B1A","B1B","B1H","B1P","B1S",
  "B1V","B1Y","B2A","B2G","B2H","B2N","B2T","B2V","B2W","B2X",
  "B2Y","B2Z","B3A","B3B","B3G","B3H","B3J","B3K","B3L","B3M",
  "B3R","B3S","B3V","B3Z","B4A","B4B","B4C","B4H","B4N","B4P",
  "B4R","B4V","B5A","B9A","BB1","BOS","C0A","C0B","C1A","C1B",
  "C1E","C1N","CT2","E1A","E1B","E1C","E1E","E1V","E1W","E1X",
  "E2A","E2E","E2H","E2K","E2L","E2M","E2S","E2V","E2V","E3A",
  "E3B","E3C","E3E","E3L","E3N","E3V","E3Y","E3Z","E4E","E4H",
  "E4K","E4N","E4P","E4S","E4V","E4W","E4Z","E5C","E5N","E6L",
  "E7A","E7H","E7K","E7L","E7M","E7P","E8C","E8E","E8J","E8P",
  "E8R","E8S","K0B","K0E","K0G","K0J","K0K","K0L","K0M","K0X",
  "K1A","K1B","K1C","K1G","K1J","K1K","K1L","K1M","K1N","K1P",
  "K1R","K1S","K1T","K1V","K1Y","K1Z","K2A","K2B","K2C","K2E",
  "K2G","K2H","K2K","K2L","K2P","K2S","K2S","K4K","K4P","K4R",
  "K6A","K6H","K6J","K6V","K7A","K7G","K7H","K7K","K7L","K7M",
  "K7P","K7R","K7V","K8A","K8N","K8P","K8V","K9A","K9H","K9J",
  "K9L","K9V","L0A","L0B","L0C","L0E","L0G","L0H","L0J","L0K",
  "L0L","L0M","L0N","L0N","L0P","L0P","L0R","L0S","L1A","L1B",
  "L1C","L1E","L1G","L1H","L1J","L1K","L1M","L1N","L1P","L1R",
  "L1S","L1T","L1V","L1W","L1X","L1Y","L1Z","L1Z","L2A","L2E",
  "L2G","L2H","L2J","L2K","L2M","L2N","L2P","L2R","L2S","L2T",
  "L2W","L3B","L3C","L3K","L3M","L3N","L3P","L3R","L3S","L3T",
  "L3V","L3X","L3Y","L3Z","L4A","L4B","L4C","L4E","L4G","L4H",
  "L4J","L4K","L4L","L4M","L4N","L4P","L4R","L4S","L4T","L4V",
  "L4W","L4X","L4Y","L4Z","L5A","L5B","L5C","L5E","L5G","L5G",
  "L5H","L5J","L5K","L5L","L5M","L5N","L5P","L5R","L5S","L5T",
  "L5V","L5W","L6A","L6B","L6C","L6E","L6H","L6J","L6K","L6L",
  "L6M","L6P","L6R","L6S","L6T","L6V","L6W","L6X","L6Y","L6Y",
  "L6Z","L7A","L7B","L7C","L7E","L7G","L7J","L7K","L7L","L7M",
  "L7N","L7P","L7R","L7S","L7T","L8E","L8G","L8H","L8J","L8K",
  "L8L","L8M","L8N","L8P","L8R","L8S","L8T","L8V","L8W","L9A",
  "L9B","L9C","L9G","L9H","L9K","L9L","L9M","L9N","L9P","L9R",
  "L9S","L9T","L9T","L9V","L9W","L9Y","L9Z","M0A","M0N","M1A",
  "M1B","M1C","M1E","M1G","M1H","M1J","M1K","M1L","M1M","M1N",
  "M1P","M1R","M1S","M1T","M1V","M1W","M2H","M2J","M2K","M2L",
  "M2M","M2N","M2P","M2R","M3A","M3B","M3C","M3H","M3J","M3K",
  "M3L","M3M","M3N","M3R","M4A","M4B","M4C","M4E","M4G","M4H",
  "M4J","M4K","M4L","M4M","M4N","M4P","M4R","M4S","M4T","M4V",
  "M4W","M4X","M4Y","M5A","M5B","M5C","M5E","M5G","M5H","M5J",
  "M5K","M5L","M5M","M5N","M5P","M5R","M5S","M5T","M5V","M5W",
  "M5X","M6A","M6B","M6C","M6E","M6G","M6H","M6J","M6K","M6L",
  "M6M","M6N","M6P","M6R","M6S","M7A","M8B","M8V","M8W","M8X",
  "M8Y","M8Z","M9A","M9B","M9C","M9L","M9M","M9N","M9P","M9R",
  "M9V","M9W","N0A","N0B","N0C","N0E","N0G","N0H","N0J","N0K",
  "N0L","N0M","N0N","N0P","N0R","N1A","N1E","N1G","N1H","N1K",
  "N1L","N1M","N1P","N1R","N1S","N1T","N2A","N2B","N2C","N2E",
  "N2G","N2H","N2J","N2K","N2L","N2M","N2N","N2P","N2R","N2T",
  "N2V","N2Z","N3A","N3B","N3C","N3H","N3L","N3P","N3R","N3S",
  "N3T","N4B","N4G","N4JK","N4K","N4L","N4N","N4S","N4T","N4V",
  "N4W","N4X","N4Z","N5A","N5C","N5G","N5H","N5P","N5R","N5V",
  "N5W","N5X","N5Y","N5Z","N6A","N6B","N6C","N6E","N6G","N6H",
  "N6J","N6K","N6L","N6P","N6T","N7A","N7G","N7L","N7M","N7S",
  "N7T","N7V","N7X","N8A","N8H","N8M","N8N","N8P","N8R","N8S",
  "N8T","N8W","N8X","N8Y","N9A","N9B","N9C","N9E","N9G","N9H",
  "N9J","N9K","N9V","N9Y","N9Y","P0A","P0B","P0H","P0J","P0K",
  "P0L","P0M","P0N","P0P","P0R","P0S","P0T","P0V","P0W","P1A",
  "P1B","P1H","P1L","P1P","P2A","P2B","P2J","P2N","P2P","P3A",
  "P3B","P3C","P3E","P4N","P4R","P5A","P6B","P6C","P6G", "P6H", "P7A",
  "P7B","P7C","P7E","P7J","P7L","P8N","P8T","P9A","P9N","POL",
  "R0C","R0G","R0J","R0K","R0L","R0M","R1A","R1N","R2E","R2G",
  "R2H","R2J","R2M","R2Y","R3B","R3C","R3G","R3J","R3K","R3L",
  "R3M","R3P","R3T","R3Y","R6M","R7A","R8N","R9A","S0A","S0E",
  "S0G","S0K","S0M","S3N","S4A","S4H","S4K","S4N","S4P","S4R",
  "S4S","S4T","S4X","S6B","S6H","S6V","S7K","S7L","S7M","S7N",
  "S9A","S9H","S9V","T0A","T0C","T0E","T0G","T0H","T0J","T0K",
  "T0L","T0M","T1A","T1B","T1J","T1P","T1R","T1S","T1V","T1W",
  "T1Y","T2A","T2C","T2E","T2G","T2H","T2J","T2M","T2N","T2P",
  "T2R","T2S","T2T","T2V","T2W","T2X","T2Z","T3A","T3B","T3C",
  "T3E","T3G","T3H","T3K","T3L","T3R","T4B","T4C","T4H","T4J",
  "T4L","T4N","T4S","T4V","T4W","T5B","T5F","T5G","T5H","T5J",
  "T5K","T5L","T5M","T5N","T5P","T5R","T5S","T6B","T6C","T6E",
  "T6G","T6H","T6J","T6L","T6R","T7A","T7N","T7S","T7V","T7X",
  "T8A","T8H","T8N","T8V","T9A","T9C","T9E","T9H","T9N","T9S",
  "T9V","V0A","V0B","V0C","V0E","V0G","V0H","V0J","V0K","V0L",
  "V0N","V0R","V0S","V0X","V1B","V1C","V1E","V1G","V1H","V1J",
  "V1K","V1L","V1M","V1N","V1R","V1T","V1V","V1W","V1X","V1Y",
  "V1Z","V2A","V2C","V2E","V2G","V2H","V2J","V2L","V2M","V2P",
  "V2R","V2S","V2T","V2V","V2W","V2X","V2Y","V2Z","V3A","V3B",
  "V3C","V3E","V3H","V3J","V3K","V3L","V3M","V3N","V3R","V3S",
  "V3T","V3W","V3X","V3Y","V4A","V4B","V4C","V4K","V4N","V4P",
  "V4R","V4T","V4V","V5A","V5B","V5C","V5G","V5H","V5J","V5K",
  "V5L","V5M","V5N","V5R","V5S","V5T","V5V","V5W","V5Y","V5Z",
  "V6A","V6B","V6C","V6E","V6G","V6H","V6J","V6K","V6M","V6N",
  "V6P","V6R","V6S","V6T","V6V","V6W","V6X","V6Y","V6Z","V7A",
  "V7C","V7E","V7G","V7J","V7K","V7L","V7M","V7N","V7P","V7R",
  "V7T","V7V","V7W","V7X","V7Y","V8A","V8B","V8C","V8G","V8H",
  "V8J","V8K","V8L","V8M","V8P","V8R","V8S","V8T","V8V","V8W",
  "V8X","V8Y","V9A","V9B","V9C","V9G","V9K","V9L","V9M","V9N",
  "V9P","V9R","V9S","V9T","V9W","V9Y","X0E","X1A","Y1A"
);

function trim(pString)
{
  pString=pString.replace(/^[\s]+/ , "");
  pString=pString.replace(/[\s]+$/ , "");
  return pString;
}

function trimTextElements(form)
{
  for (i=0; i <form.elements.length; i++)
  {
    tempObject=form.elements[i];

    if (!(tempObject && tempObject.type))
      continue;

    if (tempObject.type.toLowerCase()=="text" || tempObject.type.toLowerCase()=="textarea" || tempObject.type.toLowerCase()=="password")
      tempObject.value=trim(tempObject.value);
  }
}

function arrayContains(pArr, pObj)
{
  var i = pArr.length;

  while (i--)
    if (pArr[i] === pObj)
      return true;

  return false;
}


function checkCanada(country)
{
  if(country != "Canada")
  {
    document.getElementById("postalcode1").disabled = true; 
    document.getElementById("postalcode2").disabled = true;
    document.getElementById("state").disabled = true;  
  }
  else
  {
    document.getElementById("postalcode1").disabled = false; 
    document.getElementById("postalcode2").disabled = false;
    document.getElementById("state").disabled = false;  
  }
}

function getWindowSize()
{
  windowWidth= window.innerWidth ? window.innerWidth : document.body.offsetWidth;
  windowHeight= window.innerHeight ? window.innerHeight : document.body.offsetHeight;

  return [windowWidth, windowHeight];
}

function getStyle(oElm, strCssRule)
{
  if (strCssRule=='height' && navigator.appName=='Microsoft Internet Explorer')
  {
    return oElm.offsetHeight;
  }

  var strValue = "";
  if(document.defaultView && document.defaultView.getComputedStyle)
  {
    strValue = document.defaultView.getComputedStyle(oElm, "").getPropertyValue(strCssRule);
  }
  else if(oElm.currentStyle)
  {
    strCssRule = strCssRule.replace(/\-(\w)/g, function (strMatch, p1)
    {
      return p1.toUpperCase();
    });
    strValue = oElm.currentStyle[strCssRule];
  }
  return strValue;
}

function findPos(obj)
{
  curleft = curtop = 0;
  if (obj.offsetParent)
  {
    do
    {
      curleft += obj.offsetLeft;
      curtop += obj.offsetTop;
    }
    while (obj = obj.offsetParent);
    return [curleft,curtop];
  }
}

function openList(pOpener)
{
  if (typeof(listWidth)=='undefined')
    listWidth=400;
  if (typeof(listHeight)=='undefined')
    listHeight=200;

  var trialOptionsList=document.getElementById("trialOptionsList");
  var trialDropdown=document.getElementById("trialDropdown");
  var trialOptionsIframe=document.getElementById("trialOptionsIframe");
  var posOpener=findPos(trialDropdown);

  trialOptionsList.style.left=posOpener[0]+'px';
  trialOptionsList.style.top=posOpener[1]+parseInt(trialDropdown.style.borderBottomWidth.replace('px', ''))+parseInt(trialDropdown.style.height.replace('px', ''))+'px';

  trialOptionsList.style.width=listWidth+'px';
  trialOptionsList.style.height=listHeight+'px';
    
  trialOptionsList.style.backgroundColor='white';
  trialOptionsList.style.visibility='visible';
  
  trialOptionsIframe.style.width='100%';
  trialOptionsIframe.style.height='100%';
}

function closeList()
{
  document.getElementById("trialOptionsList").style.visibility='hidden';
}

function getEvent(pEvent)
{
  return pEvent ? pEvent : (window.event ? window.event : null);
}

function getEventKeyCode(pEvent)
{
  return pEvent ? pEvent.keyCode ? pEvent.keyCode : pEvent.which : 0 ;
}

function addTrialOptionsOnclick()
{
  oldOnclick=document.onclick;
  document.onclick=function(e)
  {
    evt=getEvent(e);
    srcElement = evt.srcElement? evt.srcElement : evt.target;  

    if (srcElement.id=="trialDropdown" || srcElement.id=="dropDownBox" || srcElement.id=="arrowBox")
      openList(srcElement);
    else
    {
      if (document.getElementById("trialOptionsList").style.visibility=='hidden')
        ;
      else
        closeList();
      if (oldOnclick)
        eval("tmp=oldOnclick; tmp(evt)");
    }
  }
}

function addTrialOptionsOnresize()
{
  oldOnresize=window.onresize;
  window.onresize=function(e)
  {
    evt=getEvent(e);
    if (document.getElementById("trialOptionsList").style.visibility=='hidden')
      ;
    else
    {
      closeList();
      openList();
    }
    if (oldOnresize)
      eval("tmp=oldOnresize; tmp(evt)");
  }
}

function showHintForElement(pEl, pHintEl)
{
  if (!pHintEl)
    return;

  if (typeof(listWidth)=='undefined')
    listWidth='315px';
  if (typeof(listHeight)=='undefined')
    listHeight='250px';

  try
  {
    if (typeof frameWindow.hintBoxBorderColor=="undefined")
      frameWindow.hintBoxBorderColor="blue";
    pHintEl.style.borderColor=frameWindow.hintBoxBorderColor;

    if (typeof frameWindow.listWidth!="undefined")
      listWidth=frameWindow.listWidth;

    if (typeof frameWindow.listHeight!="undefined")
      listHeight=frameWindow.listHeight;
  }
  catch (e)
  {
    alert(e.message);
  }

  frameWindow= pHintEl.contentWindow || pHintEl.contentDocument;
  frameDocument=frameWindow.document;

  if (frameDocument.getElementById("ajaxResults")=="undefined" || parseInt(frameDocument.getElementById("ajaxResults").innerHTML.length)<50)
  {
    hideHint(pHintEl);
    return;
  }

  pos=findPos(pEl);

  pHintEl.style.width=listWidth;
  pHintEl.style.height=listHeight;
  pHintEl.style.minHeight=listHeight;
  pHintEl.style.left=pos[0];
  pHintEl.style.top=pos[1]+parseInt(getStyle(pEl, 'border-top-width'))+parseInt(getStyle(pEl, 'height'))+'px'; 
  pHintEl.style.visibility='visible';
}

function hideHint(pHintEl)
{
  if (!pHintEl)
    return;

  pHintEl.style.width='0px';
  pHintEl.style.height='0px';
  pHintEl.style.visibility='hidden';
}

function getHintResults(pEl, pHintEl, pQueryString, pEvent)
{
  if (!pHintEl)
    return;

  skipKeyCodes=[9, 13, 16, 17, 18, 20, 27, 35, 36, 37, 38, 39, 40];
  
  keyCode=getEventKeyCode(getEvent(pEvent));

  HTML_START='<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">\
<html xmlns="http://www.w3.org/1999/xhtml">\
<head>\
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\
<script>\
function doOvr(pEl)\
{\
  pEl.className="rowOvr";\
}\
function doOut(pEl)\
{\
  pEl.className="rowOut";\
}\
</script>\
</head>\
<body>\
<div id="divResults"></div>';

  HTML_END='\
<script>\
if (typeof hintCSSFile=="undefined")\
  hintCSSFile="hintDefault.css";\
elCSS=document.createElement("link");\
elCSS.setAttribute("rel", "stylesheet");\
elCSS.setAttribute("type", "text/css");\
elCSS.setAttribute("href", location.protocol+"//"+location.host+"/forms/css/"+hintCSSFile);\
document.getElementsByTagName("head")[0].appendChild(elCSS);\
\
</script>\
</body></html>';

  if (pEvent && arrayContains(skipKeyCodes, keyCode))
    return;

  if (pEl.value.length<3)
  {
    hideHint(pHintEl);
    return;    
  }

  if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
    xmlhttp=new XMLHttpRequest();
  }
  else
  {// code for IE6, IE5
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
  xmlhttp.onreadystatechange=function()
  {
    if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
      frameWindow= pHintEl.contentWindow || pHintEl.contentDocument;
      frameDocument=frameWindow.document;
      frameDocument.open();
      frameDocument.write(HTML_START);
      frameDocument.write(xmlhttp.responseText);
      frameDocument.write(HTML_END);
      frameDocument.close();

      showHintForElement(pEl, pHintEl);
    }
  }
  xmlhttp.open("POST","/forms/ajaxServer.php?", true);
  xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
  xmlhttp.send(pQueryString);
}

function addOnclickCloseForHint(pHintEl)
{
  if (!pHintEl)
    return;

  oldOnclick=document.onclick;
  document.onclick=function(e)
  {
    evt=getEvent(e);
    srcElement = evt.srcElement? evt.srcElement : evt.target;  

    if (srcElement!=pHintEl)
    {
      if (pHintEl.style.visibility!='hidden')
        hideHint(pHintEl);
    }
    if (oldOnclick)
      eval("tmp=oldOnclick; tmp(evt)");
  }
}

function checkNumberInput(evt)
{
  evt = evt || window.event;
  var keyCode = evt.keyCode ? evt.keyCode : evt.charCode ? evt.charCode : evt.which;  
  
  var keyChar = String.fromCharCode(keyCode);

  if (keyCode>47 && keyCode<58) // digits
    return true;
  if (keyCode==8) // backspace
    return true;
  if (keyCode==9) // tab
    return true;
  if (keyCode==45) // minus sign
    return true;
  if (keyCode==46) // del
    return true;
  if (keyCode==35) // end
    return true;
  if (keyCode==36) // home
    return true;
  if (keyCode==0) // firefox -- arrow keys
    return true;
  if (keyCode==37 && keyChar=="%") // arrow key
    return true;
  if (keyCode==39 && keyChar=="\'") // arrow key
    return true;

  return false;
}
