nsfixblur = null; // Workaround for Netscape 4.x not having the ability to display input elements within a <div> tag with the <form> tag being outside the <div> tag :(
                  // We will use the "this.blur()" on the input element based upon the criteria within the "intlDisplays(id)" function.

/* -------------------------------------------------------------------------------------- */
/* Open Validation Functions ------------------------------------------------------------ */
/* -------------------------------------------------------------------------------------- */

function replaceSubstring(inputString, fromString, toString) {
   // Goes through the inputString and replaces every occurrence of fromString with toString
   var temp = inputString;
   if (fromString == "") {
      return inputString;
   }
   if (toString.indexOf(fromString) == -1) { // If the string being replaced is not a part of the replacement string (normal situation)
      while (temp.indexOf(fromString) != -1) {
         var toTheLeft = temp.substring(0, temp.indexOf(fromString));
         var toTheRight = temp.substring(temp.indexOf(fromString)+fromString.length, temp.length);
         temp = toTheLeft + toString + toTheRight;
      }
   } else { // String being replaced is part of replacement string (like "+" being replaced with "++") - prevent an infinite loop
      var midStrings = new Array("~", "`", "_", "^", "#");
      var midStringLen = 1;
      var midString = "";
      // Find a string that doesn't exist in the inputString to be used
      // as an "inbetween" string
      while (midString == "") {
         for (var i=0; i < midStrings.length; i++) {
            var tempMidString = "";
            for (var j=0; j < midStringLen; j++) { tempMidString += midStrings[i]; }
            if (fromString.indexOf(tempMidString) == -1) {
               midString = tempMidString;
               i = midStrings.length + 1;
            }
         }
      } // Keep on going until we build an "inbetween" string that doesn't exist
      // Now go through and do two replaces - first, replace the "fromString" with the "inbetween" string
      while (temp.indexOf(fromString) != -1) {
         var toTheLeft = temp.substring(0, temp.indexOf(fromString));
         var toTheRight = temp.substring(temp.indexOf(fromString)+fromString.length, temp.length);
         temp = toTheLeft + midString + toTheRight;
      }
      // Next, replace the "inbetween" string with the "toString"
      while (temp.indexOf(midString) != -1) {
         var toTheLeft = temp.substring(0, temp.indexOf(midString));
         var toTheRight = temp.substring(temp.indexOf(midString)+midString.length, temp.length);
         temp = toTheLeft + toString + toTheRight;
      }
   } // Ends the check to see if the string being replaced is part of the replacement string or not
   return temp; // Send the updated string back to the user
} // Ends the "replaceSubstring" function

// Removes leading spaces from a string.
function LTrim(str) {

  var whitespace = new String(" \t\n\r");
  var s = new String(str);

  if (whitespace.indexOf(s.charAt(0)) != -1) {
    var j=0, i = s.length;

    while (j < i && whitespace.indexOf(s.charAt(j)) != -1)
      j++;
      s = s.substring(j, i);
  }

  return s;

}

// Removes spaces from the end of a string.
function RTrim(str) {

  var whitespace = new String(" \t\n\r");
  var s = new String(str);

  if (whitespace.indexOf(s.charAt(s.length-1)) != -1) {
    var i = s.length - 1;
    
    while (i >= 0 && whitespace.indexOf(s.charAt(i)) != -1)
      i--;
      s = s.substring(0, i+1);
  }

  return s;

}

// Removes leading and trailing spaces from a string.
function Trim(str) {

  return RTrim(LTrim(str));

}

function Left(str, n){
	if (n <= 0)
	    return "";
	else if (n > String(str).length)
	    return str;
	else
	    return String(str).substring(0,n);
}

function Right(str, n){
    if (n <= 0)
       return "";
    else if (n > String(str).length)
       return str;
    else {
       var iLen = String(str).length;
       return String(str).substring(iLen, iLen - n);
    }
}


function isNumeric(field) {

  var valid = "0123456789"
  var ok = "yes";
  var temp;
	
  for (var i=0; i<field.value.length; i++) {
    temp = "" + field.value.substring(i, i+1);
    if (valid.indexOf(temp) == "-1") ok = "no";
  }
	
  if (ok == "no") {
    alert("Error! Only accepts numeric characters.");
    field.select();
    // field.focus();
    return false;
  }

}

function isNumericDash(field) {

  var valid = "0123456789-"
  var ok = "yes";
  var temp;
	
  for (var i=0; i<field.value.length; i++) {
    temp = "" + field.value.substring(i, i+1);
    if (valid.indexOf(temp) == "-1") ok = "no";
  }
	
  if (ok == "no") {
    alert("Error! Only accepts numeric characters and dashes.");
    field.select();
    // field.focus();
    return false;
  }

}

function isAlpha(field,size) {

  var valid = "abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKMLNOPQRSTUVWXYZ"
  var ok = "yes";
  var temp;
	
  for (var i=0; i<field.value.length; i++) {
    temp = "" + field.value.substring(i, i+1);
    if (valid.indexOf(temp) == "-1") ok = "no";
  }
	
  if (ok == "no") {
    alert("Error! Only accepts alpha characters.");
    field.focus();
  }
  else if (field.value.length > size) {
    alert("Error! Maximum characters: " + size);
    field.focus();
  }

}

function isAlphaNumeric(field) {

  var valid = "abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKMLNOPQRSTUVWXYZ 0123456789"
  var ok = "yes";
  var temp;
	
  for (var i=0; i<field.value.length; i++) {
    temp = "" + field.value.substring(i, i+1);
    if (valid.indexOf(temp) == "-1") ok = "no";
  }
	
  if (ok == "no") {
    alert("Error! Only accepts alpha-numeric characters.");
    // field.focus();
    field.select();
  }

}

function isName(field,size) {

  var valid = "abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKMLNOPQRSTUVWXYZ'-"
  var ok = "yes";
  var temp;
	
  for (var i=0; i<field.value.length; i++) {
    temp = "" + field.value.substring(i, i+1);
    if (valid.indexOf(temp) == "-1") ok = "no";
  }
	
  if (ok == "no") {
    alert("Error! Only accepts alpha characters, apostrophes and dashes.");
    field.focus();
    field.select();
  }
  else if (field.value.length > size) {
    alert("Error! Maximum characters: " + size);
    field.focus();
    field.select();
  }

}

function isAddress(field,size) {

  var valid = "abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKMLNOPQRSTUVWXYZ 0123456789-'."
  var ok = "yes";
  var temp;
	
  for (var i=0; i<field.value.length; i++) {
    temp = "" + field.value.substring(i, i+1);
    if (valid.indexOf(temp) == "-1") ok = "no";
  }
	
  if (ok == "no") {
    alert("Error! Only accepts alpha-numeric characters, apostrophes, dashes and periods.");
    field.focus();
    field.select();	
  }
  else if (field.value.length > size) {
    alert("Error! Maximum characters: " + size);
    field.focus();
    field.select();
  }
}

function isCity(field,size) {

  var valid = "abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKMLNOPQRSTUVWXYZ-'."
  var ok = "yes";
  var temp;
	
  for (var i=0; i<field.value.length; i++) {
    temp = "" + field.value.substring(i, i+1);
    if (valid.indexOf(temp) == "-1") ok = "no";
  }
	
  if (ok == "no") {
    alert("Error! Only accepts alpha characters, apostrophes, dashes and periods.");
    field.focus();
    field.select();	
  }
  else if (field.value.length > size) {
    alert("Error! Maximum characters: " + size);
    field.focus();
    field.select();
  }
}

function isTextField(field) {

  var valid = "abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKMLNOPQRSTUVWXYZ 0123456789-.'"
  var ok = "yes";
  var temp;
	
  for (var i=0; i<field.value.length; i++) {
    temp = "" + field.value.substring(i, i+1);
    if (valid.indexOf(temp) == "-1") ok = "no";
  }
	
  if (ok == "no") {
    alert("Error! Only accepts alpha-numeric characters, apostrophes, dashes and periods.\n\nMaximum characters: 50");
    field.focus();
    field.select();	
  }

}

function isUSZip(field,size) {

  var valid = "0123456789"
  var ok = "yes";
  var temp;
	
  for (var i=0; i<field.value.length; i++) {
    temp = "" + field.value.substring(i, i+1);
    if (valid.indexOf(temp) == "-1") ok = "no";
  }
	
  if (ok == "no") {
    alert("Error! Invalid U.S. zip code.\n\nOnly accepts numeric characters.");
    field.focus();
    field.select();
  }
  else if (field.value.length != 0 && field.value.length != size) {
    alert("Error! Invalid U.S. zip code.\n\nMin.\\Max. characters: 5");
    field.focus();
    field.select();
  }

}


function isWherePurchased(field) {

  var valid = "abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKMLNOPQRSTUVWXYZ 0123456789-'&.,"
  var ok = "yes";
  var temp;
	
  for (var i=0; i<field.value.length; i++) {
    temp = "" + field.value.substring(i, i+1);
    if (valid.indexOf(temp) == "-1") ok = "no";
  }
	
  if (ok == "no") {
    alert("Error! Only accepts alpha-numeric characters, apostrophes, dashes, ampersands, commas and periods.\n\nMaximum characters: 50");
    field.focus();
    field.select();	
  }

}

/*
// Validates an e-mail address.
function isEmail(field) {

  // var exclude=/[^@\-\.\w]|^[_@\.\-]|[\._\-]{2}|[@\.]{2}|(@)[^@]*\1/;
  var exclude=/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
  var check=/@[\w\-]+\./;
  var checkend=/\.[a-zA-Z]{2,3}$/;

  if (field.value.length == 0) {
  }

  else {

    if(((field.value.search(exclude) != -1)||(field.value.search(check)) == -1)||(field.value.search(checkend) == -1)){
      alert("Error! Invalid e-mail address.\n\nMaximum characters: 50");
      field.select();
      field.focus();
    }

  }

}
*/

function isEmail(field) { // Validates an e-mail address.

	var filter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;

	if (field.value.length != 0) {
	
	  if (filter.test(field.value)) { 
		// alert('YES! Correct email address');
    }
    else {
      alert("Error! Invalid e-mail address.\n\nMaximum characters: 100");
      field.select();
      field.focus();
    }
  }
}

function fieldCompare(thisfield,otherfield,msg) {
	
	if (thisfield.value.length != 0) { 
	  if (thisfield.value.toLowerCase() != otherfield.value.toLowerCase()) {
		  alert(msg);
		  return false;
		  // thisfield.select();
		  // thisfield.focus();
		}
  }
}	

function isDate(field) { 

/**************************************************************************************************************
Date: Accepts 1 or 2 digit months/days and 2 or four digit years with the following delimters "/", "-" and "."
      Checks for valid days/months and leap years.
      Year range: 1600-9999
      Formats the following for 2 digit years: [00-29] = [2000-2029], [30-99] = [1930-1999]
      Checks for future date input.
**************************************************************************************************************/

// var dateXP = /^(?:(?:(?:0?[13578]|1[02])(\/|-|\.)31)\1|(?:(?:0?[1,3-9]|1[0-2])(\/|-|\.)(?:29|30)\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})$|^(?:0?2(\/|-|\.)29\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:(?:0?[1-9])|(?:1[0-2]))(\/|-|\.)(?:0?[1-9]|1\d|2[0-8])\4(?:(?:1[6-9]|[2-9]\d)?\d{2})$/
var dateXP = /^((0?[13578]|10|12)(-|\/)(([1-9])|(0[1-9])|([12])([0-9]?)|(3[01]?))(-|\/)((19)([2-9])(\d{1})|(20)([01])(\d{1})|([8901])(\d{1}))|(0?[2469]|11)(-|\/)(([1-9])|(0[1-9])|([12])([0-9]?)|(3[0]?))(-|\/)((19)([2-9])(\d{1})|(20)([01])(\d{1})|([8901])(\d{1})))$/

var now = new Date(); // Today's date.
var m1 = now.getMonth() + 1;
var d1 = now.getDate();
var y1 = now.getFullYear();
var today = ""+m1+"/"+d1+"/"+y1+""; // Today's date formatted as [m]/[d]/[y].

  if (field.value.length == 0) { // Field is empty, let user proceed. Add validation here to require user input.
  }

  else { // User has entered a date.

    if (field.value.search(dateXP) == -1) { // Check user input against regular expression.
      alert("Error! Invalid date of purchase.\n\nAcceptable formats:\nmonth/day/year\nmonth-day-year\nmonth.day.year\n\nMaximum characters: 10"); // User input did not validate. 
      field.focus();
      field.select();
      return false;
    }

    else { // Check for future date.

      var rd1 = replaceSubstring(field.value, "-", "/"); // Replaces all occurances of "-" with "/" to keep date format consistency.
      var rd1 = replaceSubstring(rd1, ".", "/"); // Replaces all occurances of "." with "/" to keep date format consistency.
      var myDate_array = rd1.split( '/' ); // Split formatted date into an array. Returns month[0], day[1] and year[2] as a number.
      var myYear = myDate_array[2];

      if (myYear.length == 2) { // User input a two digit year.
      
        if (myYear > 29 && myYear < 100) { // Convert two digit year into four digit year according to SQL Server 2000 date rules.
          var myYear = Number(myYear)+1900;
      	  var pdate = ""+myDate_array[0]+"/"+myDate_array[1]+"/"+myYear+"";

          if (Date.parse(pdate) > Date.parse(today)) { // Check for future date.
            alert("Error! Invalid date of purchase. Future dates are not accepted.\n\nMaximum characters: 10"); // User date is in the future, alert and return to form.
            field.focus();
            field.select();
            return false;
          }

        }

        else if (myYear < 30) { // Convert two digit year into four digit year according to SQL Server 2000 date rules.
      	  var myYear = Number(myYear)+2000;
   	  var pdate = ""+myDate_array[0]+"/"+myDate_array[1]+"/"+myYear+"";
   	  // alert(pdate);

          if (Date.parse(pdate) > Date.parse(today)) { // Check for future date.
            alert("Error! Invalid date of purchase. Future dates are not accepted.\n\nMaximum characters: 10"); // User date is in the future, alert and return to form.
            field.focus();
            field.select();
            return false;
          }

        }
        
      }
      
      else { // User input a four digit year.

        if (Date.parse(rd1) > Date.parse(today)) { // Check for future date.
          alert("Error! Invalid date of purchase. Future dates are not accepted.\n\nMaximum characters: 10"); // User date is in the future, alert and return to form.
          field.focus();
          field.select();
          return false;
        }
      	
      }

    }

  }

}

function isCanadianZipCode(field) { 

// var czcXP = /^[a-zA-Z][0-9][a-zA-Z]\s?[0-9][a-zA-Z][0-9]$/ // Allows for space between the 3 and 4 character.
   var czcXP = /^[a-zA-Z][0-9][a-zA-Z][0-9][a-zA-Z][0-9]$/
  
  if (field.value.length == 0) {
  }

  else {
  	
    if (field.value.search(czcXP) == -1) {
      alert("Error! Invalid Canadian postal code.\nNo spaces or dashes; format ( X1X1X1 )")
      field.focus();
      field.select();
      return false;
    }
  
  }

}

// Automatically tabs to the next designated field after the length of the current field has been met.
function autotab(object1, object2, objectsize) {

  if (object1.value.length == objectsize)
    object2.focus()

}

/* -------------------------------------------------------------------------------------- */
/* Misc. Specific Functions ------------------------------------------------------------- */
/* -------------------------------------------------------------------------------------- */

// Disable form buttons when a user clicks a button with an action assigned to it. This stops the user from clicking more than once.
function disableButtons_01(form_name) {

  if (form_name.submit_btn) {
    form_name.submit_btn.disabled = true;
  }

  if (form_name.back_btn) {
    form_name.back_btn.disabled = true;
  }
  
  if (form_name.cancel_btn) {
    form_name.cancel_btn.disabled = true;
  }

  if (form_name.reset_btn) {
    form_name.reset_btn.disabled = true;
  }

}

function checkZip() {

  var fname = document.register.Zip;
  var is_stateprov = document.register.StateProv.selectedIndex;
  var state = document.register.StateProv.options[is_stateprov].value;
  var CodeDelimiter = "|";
  var StateCodes = "AL|AK|AZ|AR|CA|CO|CT|DE|DC|FL|GA|HI|ID|IL|IN|IA|KS|KY|LA|ME|MD|MA|MI|MN|MS|MO|MT|NE|NV|NH|NJ|NM|NY|NC|ND|OH|OK|OR|PA|RI|SC|SD|TN|TX|UT|VT|VA|WA|WV|WI|WY"
  var ProvCodes = "AB|BC|MB|NB|NF|NT|NS|NN|ON|PE|QC|SK|YT"

  if (state == "") {
  
  }

  else {

    if (fname.value.length != 0) {

      if ((ProvCodes.indexOf(state) != -1) && (state.indexOf(CodeDelimiter) == -1)) {
        isAlphaNumeric(fname);
        isCanadianZipCode(fname);
      }

      else if ((StateCodes.indexOf(state) != -1) && (state.indexOf(CodeDelimiter) == -1)) {
        isNumeric(fname);

        if (fname.value.length != 5) {
          alert("Error! Invalid U.S. zip code.\n\nMaximum characters: 5");
          fname.select();
          // fname.focus();
          return false;
        }

      }
  
    }
  
  }  

}

function getSelectedIndex() {

  var si1, si2, si3;
  
  for (var i = 1; i < document.register.StateProv.length; i++) {

    if(document.register.StateProv.options[i].text == "International (XX)") {
      alert("Found Match");
      alert(document.register.StateProv.options[i].text);
      alert(i);
      si1 = i;
      alert(si1);
    }
    if(document.register.Country.options[i].text == "Canada") {
      alert("Found Match");
      alert(document.register.StateProv.options[i].text);
      alert(i);
      si2 = i;
      alert(si2);
    }
    if(document.register.Country.options[i].text == "United States") {
      alert("Found Match");
      alert(document.register.StateProv.options[i].text);
      alert(i);
      si3 = i;
      alert(si3);
    }
    
  }

}

function setCountryViaStateChoice() { // Displays and hides the Intl. State/Province and Phone fields based upon "State/Province" selection.

  var si0, si1;
  var stateprov = document.register.StateProv.selectedIndex;
  var is_stateprov = document.register.StateProv.options[stateprov].value;
  var country = document.register.Country.selectedIndex;
  var is_country = document.register.Country.options[country].value;
  var CodeDelimiter = "|";
  var StateCodes = "AL|AK|AZ|AR|CA|CO|CT|DE|DC|FL|GA|HI|ID|IL|IN|IA|KS|KY|LA|ME|MD|MA|MI|MN|MS|MO|MT|NE|NV|NH|NJ|NM|NY|NC|ND|OH|OK|OR|PA|RI|SC|SD|TN|TX|UT|VT|VA|WA|WV|WI|WY"
  var ProvCodes = "AB|BC|MB|NB|NF|NT|NS|NN|ON|PE|QC|SK|YT"

  for (var i = 1; i < document.register.Country.length; i++) {
    if(document.register.Country.options[i].text == "Canada") {
      // alert("Found Match");
      // alert(document.register.StateProv.options[i].text);
      // alert(i);
      si0 = i;
      // alert(si0);
    }
  }
  for (var i = 1; i < document.register.Country.length; i++) {
    if(document.register.Country.options[i].text == "United States") {
      si1 = i;
      // alert(si1);
    }
  }

  if (is_stateprov == "") {
    is_country = "";
    country = 0;
    document.register.Country.options.value = "";
    document.register.Country.options[0].selected = true;
      if (document.layers) { // Netscape 4.x
        nsfixblur = false;
      }
      else {
        document.getElementById("L1_IntlStateProv").style.display = 'block';
        document.getElementById("L2_IntlStateProv").style.display = 'block';
        document.getElementById("L1_IntlPhone").style.display = 'block';
      }
  }
    
  else {
  
    if ((ProvCodes.indexOf(is_stateprov) != -1) && (is_stateprov.indexOf(CodeDelimiter) == -1)) {
      is_country = "Canada";
      country = si0;
      document.register.Country.options.value = "Canada";
      document.register.Country.options[si0].selected = true;
      document.register.IntlStateProv.value = "";
        if (document.layers) { // Netscape 4.x
          nsfixblur = true;
        }
        else {
          document.register.Zip.value = "";
          document.register.ZipUrban.value = "";
          document.register.CountryCode.value = "";
          document.register.IntlPhone.value = "";
          document.getElementById("L1_IntlStateProv").style.display = 'none';
          document.getElementById("L2_IntlStateProv").style.display = 'none';
          document.getElementById("L1_IntlPhone").style.display = 'none';
          document.getElementById("L1_Zip").innerHTML = '<span class="formreq2">*</span> Postal Code:';
          document.getElementById("L1_ZipUrban").style.display = 'none';
          document.getElementById("L1_Phone").style.display = 'block';
        }
    }
    else if ((StateCodes.indexOf(is_stateprov) != -1) && (is_stateprov.indexOf(CodeDelimiter) == -1)) {
      is_country = "United States";
      country = si1;
      document.register.Country.options.value = "United States";
      document.register.Country.options[si1].selected = true;
      document.register.IntlStateProv.value = "";
        if (document.layers) { // Netscape 4.x
          nsfixblur = true;
        }
        else {
          document.register.Zip.value = "";
          document.register.ZipUrban.value = "";
          document.register.CountryCode.value = "";
          document.register.IntlPhone.value = "";
          document.getElementById("L1_IntlStateProv").style.display = 'none';
          document.getElementById("L2_IntlStateProv").style.display = 'none';
          document.getElementById("L1_IntlPhone").style.display = 'none';
          document.getElementById("L1_Zip").innerHTML = '<span class="formreq2">*</span> Zip:';
          document.getElementById("L1_ZipUrban").style.display = 'block';
          document.getElementById("L1_Phone").style.display = 'block';
        }
    }
    else if (is_stateprov == "XX") {
      is_country = "";
      country = 0;
      document.register.Country.options.value = "";
      document.register.Country.options[0].selected = true;
        if (document.layers) { // Netscape 4.x
          nsfixblur = true;
        }
        else {
          document.register.Zip.value = "";
          document.register.ZipUrban.value = "";
          document.register.AreaCode.value = "";
          document.register.Prefix.value = "";
          document.register.Phone.value = "";
          document.getElementById("L1_IntlStateProv").style.display = 'block';
          document.getElementById("L2_IntlStateProv").style.display = 'block';
          document.getElementById("L1_Phone").style.display = 'none';
          document.getElementById("L1_IntlPhone").style.display = 'block';
          document.getElementById("L1_Zip").innerHTML = '<span class="formreq2">*</span> Postal Code:';
          document.getElementById("L1_ZipUrban").style.display = 'none';
        }
    }
/*
    else if (is_stateprov == "") {
      is_country = "";
      country = 0;
      document.register.Country.options.value = "";
      document.register.Country.options[0].selected = true;
        if (document.layers) { // Netscape 4.x
          nsfixblur = true;
        }
        else {
          document.getElementById("L1_IntlStateProv").style.visibility = 'visible';
          document.getElementById("L2_IntlStateProv").style.visibility = 'visible';
          document.getElementById("L1_IntlPhone").style.visibility = 'visible';
          document.getElementById("L1_Zip").innerHTML = '<span class="formreq2">*</span> Postal Code:';
          document.getElementById("L1_ZipUrban").style.visibility = 'hidden';
          document.getElementById("L1_Phone").style.visibility = 'hidden';
        }
    }
*/
  }

}

function intlDisplays() { // Displays and hides the Intl. State/Province and Phone fields based upon "COUNTRY" selection.

  var si0;
  var fname = document.register;
  var is_STATE_SI = fname.StateProv.selectedIndex;
  var is_STATE = fname.StateProv.options[is_STATE_SI].value;
  var is_COUNTRY_SI = fname.Country.selectedIndex;
  var is_COUNTRY = fname.Country.options[is_COUNTRY_SI].value;

  for (var i = 1; i < document.register.StateProv.length; i++) {
    if(document.register.StateProv.options[i].text == "International (XX)") {
      // alert("Found Match");
      // alert(document.register.StateProv.options[i].text);
      // alert(i);
      si0 = i;
      // alert(si0);
    }
  }

  if (is_COUNTRY != "United States") {
    document.getElementById("L1_Zip").innerHTML = '<span class="formreq2">*</span> Postal Code:';
    document.getElementById("L1_ZipUrban").style.display = 'none';

    if (is_COUNTRY == "International") {
      document.register.AreaCode.value = "";
      document.register.Prefix.value = "";
      document.register.Phone.value = "";
      document.getElementById("L1_Phone").style.display = 'none';
      document.getElementById("L1_IntlPhone").style.display = 'block';
    }

    else {
    	document.getElementById("L1_Phone").style.display = 'block';
    	document.getElementById("L1_IntlPhone").style.display = 'none';
    }      
  }

  else {
  	document.getElementById("L1_Zip").innerHTML = '<span class="formreq2">*</span> Zip:';
  	document.getElementById("L1_ZipUrban").style.display = 'block';
  	document.getElementById("L1_Phone").style.display = 'block';
  }

  if (is_COUNTRY != "United States" && is_COUNTRY != "Canada") { // Display Intl. State/Province field.

    if (document.layers) { // Netscape 4.x
      nsfixblur = false;
      document.register.StateProv.options[si0].selected = true;
      
    }
    else { // All other browsers
      // Clear value of field before disabling field.
      // fname.IntlStateProv.value = "";
      fname.StateProv.options.value = "XX";
      is_STATE = "XX";
      document.register.AreaCode.value = "";
      document.register.Prefix.value = "";
      document.register.Phone.value = "";
      document.register.StateProv.options[si0].selected = true;
      document.getElementById("L1_IntlStateProv").style.display = 'block';
      document.getElementById("L2_IntlStateProv").style.display = 'block';
      document.getElementById("L1_Phone").style.display = 'none';
      document.getElementById("L1_IntlPhone").style.display = 'block';
    }

  }
    
  else { // Hide Intl. State/Province field.

    if (document.layers) { // Netscape 4.x
      fname.IntlStateProv.value = ""; // Clear value of field before disabling field.
      nsfixblur = true;
      document.register.StateProv.options[0].selected = true;
    }
    else { // All other browsers
      // Clear value of field before disabling field.
      fname.IntlStateProv.value = "";
      document.register.CountryCode.value = "";
      document.register.IntlPhone.value = "";
      document.register.StateProv.options[0].selected = true;
      document.getElementById("L1_IntlStateProv").style.display = 'none';
      document.getElementById("L2_IntlStateProv").style.display = 'none';
      document.getElementById("L1_IntlPhone").style.display = 'none';
    } 

  }

}

function checkZipUrban() {

  var zu = document.register.ZipUrban;
  var is_stateprov = document.register.StateProv.selectedIndex;
  var state = document.register.StateProv.options[is_stateprov].value;
  var CodeDelimiter = "|";
  var StateCodes = "AL|AK|AZ|AR|CA|CO|CT|DE|DC|FL|GA|HI|ID|IL|IN|IA|KS|KY|LA|ME|MD|MA|MI|MN|MS|MO|MT|NE|NV|NH|NJ|NM|NY|NC|ND|OH|OK|OR|PA|RI|SC|SD|TN|TX|UT|VT|VA|WA|WV|WI|WY"
  var ProvCodes = "AB|BC|MB|NB|NF|NT|NS|NN|ON|PE|QC|SK|YT"

  if ((ProvCodes.indexOf(state) != -1) && (state.indexOf(CodeDelimiter) == -1)) {

    if (zu.value.length != "") {
      alert("Error! Zip+4 is only for U.S. zip codes.");
      zu.select();
      zu.focus();
    }
    
  }
  
}

/* -------------------------------------------------------------------------------------- */
/* Specific Validation Functions -------------------------------------------------------- */
/* -------------------------------------------------------------------------------------- */

function validate_ss(form_name) {

  // Set form field value variables and trim leading and trailing spaces from the string.
  var is_firstname = Trim(form_name.first_name.value);
  var is_lastname = Trim(form_name.last_name.value);
  var is_address_1 = Trim(form_name.address_1.value);
  var is_city = Trim(form_name.city.value);
  var state = form_name.state.selectedIndex;
  var is_state = form_name.state.options[state].value;
  var is_zip = Trim(form_name.zip.value);
  var is_areacode = Trim(form_name.phone_ac.value);
  var is_phone = Trim(form_name.phone.value);
  var is_email = Trim(form_name.email.value);
  var is_emailconfirm = Trim(form_name.email_confirm.value);
  var survey_gender = form_name.survey_gender.selectedIndex;
  var is_survey_gender = form_name.survey_gender.options[survey_gender].value;
  var survey_age = form_name.survey_age.selectedIndex;
  var is_survey_age = form_name.survey_age.options[survey_age].value;
  // var survey_purchase_frequency = form_name.survey_purchase_frequency.selectedIndex;
  // var is_survey_purchase_frequency = form_name.survey_purchase_frequency.options[survey_purchase_frequency].value;
  var survey_purchase_pcs = form_name.survey_purchase_pcs.selectedIndex;
  var is_survey_purchase_pcs = form_name.survey_purchase_pcs.options[survey_purchase_pcs].value;
  var survey_purchase_amount = form_name.survey_purchase_amount.selectedIndex;
  var is_survey_purchase_amount = form_name.survey_purchase_amount.options[survey_purchase_amount].value;
  var survey_leads = form_name.survey_leads.selectedIndex;
  var is_survey_leads = form_name.survey_leads.options[survey_leads].value;
  var survey_own_moissanite = form_name.survey_own_moissanite.selectedIndex;
  var is_survey_own_moissanite = form_name.survey_own_moissanite.options[survey_own_moissanite].value;
  var survey_reason_visit = form_name.survey_reason_visit.selectedIndex;
  var is_survey_reason_visit = form_name.survey_reason_visit.options[survey_reason_visit].value;
  var is_survey_reason_visit_other = Trim(form_name.survey_reason_visit_other.value);
  var is_18 = form_name.legal_18.checked;
  var is_rules = form_name.legal_rules.checked;

  // Check for specific values/parameters and alert user with custom error message.
  if (is_firstname == "") {
    alert("Error! Please enter your first name.");
    form_name.first_name.focus();
    return false;
  }
  
  if (is_lastname == "") {
    alert("Error! Please enter your last name.");
    form_name.last_name.focus();
    return false;
  }
 
  if (is_address_1 == "") {
    alert("Error! Please enter your address.");
    form_name.address_1.focus();
    return false;
  }

  if (is_city == "") {
    alert("Error! Please enter your city.");
    form_name.city.focus();
    return false;
  }

  if (is_state == "") {
    alert("Error! Please select your state.");
    form_name.state.focus();
    return false;
  }

  if (is_zip == "") {
    alert("Error! Please enter your zip code.");
    form_name.zip.focus();
    return false;
  }
  
  if (is_areacode == "") {
    alert("Error! Please enter your area code.");
    form_name.phone_ac.focus();
    return false;
  }
  
  if (is_areacode.length < 3) {
    alert("Error! Area codes require three digits.");
    form_name.phone_ac.select();
    form_name.phone_ac.focus();
    return false;
  }  
  
  if (is_phone == "") {
    alert("Error! Please enter your phone number.");
    form_name.phone.focus();
    return false;
  }
  
  if (is_phone.length < 4) {
    alert("Error! Phone numbers require four digits.");
    form_name.phone.select();
    form_name.phone.focus();
    return false;
  }
  
  if (is_email == "") {
    alert("Error! Please enter your e-mail address.");
    form_name.email.focus();
    return false;
  }

  if (is_emailconfirm == "") {
    alert("Error! Please confirm your e-mail address.");
    form_name.email_confirm.focus();
    return false;
  }

  if (is_email.toLowerCase() != is_emailconfirm.toLowerCase()) {
	  alert("Error! E-mail addresses do not match.\n\nPlease confirm!");
		form_name.email.focus();
		return false;
  }

  if (is_survey_gender == "") {
    alert("Error! Please select your gender.");
    form_name.survey_gender.focus();
    return false;
  }
  
  if (is_survey_age == "") {
    alert("Error! Please select your age range.");
    form_name.survey_age.focus();
    return false;
  }

  /*
  if (is_survey_purchase_frequency == "") {
    alert("Error! Please select: Within the last year how frequently have you purchased a fashion item (apparel, jewelry, accessories) on the Internet?");
    form_name.survey_purchase_frequency.focus();
    return false;
  }
  */
  
  if (is_survey_purchase_pcs == "") {
    alert("Error! Please select: Within the last two years how many pieces of jewelry have you purchased for yourself or as a gift on the Internet?");
    form_name.survey_purchase_pcs.focus();
    return false;
  }

  if (is_survey_purchase_amount == "") {
    alert("Error! Please select: How much did you spend on your last jewelry purchase online?");
    form_name.survey_purchase_amount.focus();
    return false;
  }

  if (is_survey_leads == "") {
    alert("Error! Please select: Where did you hear about moissanite?");
    form_name.survey_leads.focus();
    return false;
  }

  if (is_survey_own_moissanite == "") {
    alert("Error! Please select: Do you own moissanite fine jewelry?");
    form_name.survey_own_moissanite.focus();
    return false;
  }

  if (is_survey_reason_visit == "") {
    alert("Error! Please select: The main reason I am visiting brillianceofme.com is because.");
    form_name.survey_reason_visit.focus();
    return false;
  }

  if (is_survey_reason_visit == "Other") {
  	if (is_survey_reason_visit_other == "") {
  		alert("Error! Please enter: The main reason I am visiting brillianceofme.com is because.\n in the \" If other, please specify \" field.");
  		form_name.survey_reason_visit_other.focus();
  		return false;
    }
  }

  if (is_18 == false) {
    alert("Error! You must confirm you are 18 years of age or older.");
    form_name.legal_18.focus();
    return false;
  }

  if (is_rules == false) {
    alert("Error! You must agree to the official rules.");
    form_name.legal_rules.focus();
    return false;
  }

  // Disable form buttons on successful submission. This stops the user from clicking more than once.
  else {
    
    if (form_name.ss_submit_btn) {
      form_name.ss_submit_btn.disabled = true;
    }

    return true;
    
  }

}

function validate_sys(form_name) {

  // Set form field value variables and trim leading and trailing spaces from the string.
  var is_firstname = Trim(form_name.first_name.value);
  var is_lastname = Trim(form_name.last_name.value);
  var is_address_1 = Trim(form_name.address_1.value);
  var is_city = Trim(form_name.city.value);
  var state = form_name.state.selectedIndex;
  var is_state = form_name.state.options[state].value;
  var is_zip = Trim(form_name.zip.value);
  var is_areacode = Trim(form_name.phone_ac.value);
  var is_phone = Trim(form_name.phone.value);
  var is_email = Trim(form_name.email.value);
  var is_emailconfirm = Trim(form_name.email_confirm.value);
  var is_18 = form_name.legal_18.checked;
  var is_rules = form_name.legal_rules.checked;
  var is_car = form_name.legal_car.checked;
  var is_decline = form_name.legal_decline.checked;

  // Check for specific values/parameters and alert user with custom error message.
  if (is_18 == false) {
    alert("Error! You must confirm you are 18 years of age or older.");
    form_name.legal_18.focus();
    return false;
  }

  if (is_firstname == "") {
    alert("Error! Please enter your first name.");
    form_name.first_name.focus();
    return false;
  }
  
  if (is_lastname == "") {
    alert("Error! Please enter your last name.");
    form_name.last_name.focus();
    return false;
  }
 
  if (is_address_1 == "") {
    alert("Error! Please enter your address.");
    form_name.address_1.focus();
    return false;
  }

  if (is_city == "") {
    alert("Error! Please enter your city.");
    form_name.city.focus();
    return false;
  }

  if (is_state == "") {
    alert("Error! Please select your state.");
    form_name.state.focus();
    return false;
  }

  if (is_zip == "") {
    alert("Error! Please enter your zip code.");
    form_name.zip.focus();
    return false;
  }
  
  if (is_areacode == "") {
    alert("Error! Please enter your area code.");
    form_name.phone_ac.focus();
    return false;
  }
  
  if (is_areacode.length < 3) {
    alert("Error! Area codes require three digits: XXX.");
    form_name.phone_ac.select();
    form_name.phone_ac.focus();
    return false;
  }  
  
  if (is_phone == "") {
    alert("Error! Please enter your phone number.");
    form_name.phone.focus();
    return false;
  }
  
  if (is_phone.length < 8) {
    alert("Error! Phone numbers require 8 digits: XXX-XXXX.");
    form_name.phone.select();
    form_name.phone.focus();
    return false;
  }
  
  if (is_email == "") {
    alert("Error! Please enter your e-mail address.");
    form_name.email.focus();
    return false;
  }

  if (is_emailconfirm == "") {
    alert("Error! Please confirm your e-mail address.");
    form_name.email_confirm.focus();
    return false;
  }

  if (is_email.toLowerCase() != is_emailconfirm.toLowerCase()) {
	  alert("Error! E-mail addresses do not match.\n\nPlease confirm!");
		form_name.email.focus();
		return false;
  }

  if (is_decline != true) {
    if (is_rules == false) {
      alert("Error! You must agree to the official rules.");
      form_name.legal_rules.focus();
      return false;
    }
  }

  if (is_car == false) {
    alert("Error! You must agree to the copyright assignment and release.");
    form_name.legal_car.focus();
    return false;
  }

  // Disable form buttons on successful submission. This stops the user from clicking more than once.
  else {
    
    if (form_name.sys_submit_btn) {
      form_name.sys_submit_btn.disabled = true;
    }

    return true;
    
  }

}

function validate_ytts(form_name) {

  // Set form field value variables and trim leading and trailing spaces from the string.
  var is_firstname = Trim(form_name.first_name.value);
  var is_lastname = Trim(form_name.last_name.value);
  var is_address_1 = Trim(form_name.address_1.value);
  var is_city = Trim(form_name.city.value);
  var state = form_name.state.selectedIndex;
  var is_state = form_name.state.options[state].value;
  var is_zip = Trim(form_name.zip.value);
  var is_areacode = Trim(form_name.phone_ac.value);
  var is_phone = Trim(form_name.phone.value);
  var is_email = Trim(form_name.email.value);
  var is_emailconfirm = Trim(form_name.email_confirm.value);
  var is_comments = Trim(form_name.comments.value);
  var is_photo = Trim(form_name.photo.value);
  var is_18 = form_name.legal_18.checked;
  var is_car = form_name.legal_car.checked;

  // Check for specific values/parameters and alert user with custom error message.
  if (is_18 == false) {
    alert("Error! You must confirm you are 18 years of age or older.");
    form_name.legal_18.focus();
    return false;
  }

  if (is_firstname == "") {
    alert("Error! Please enter your first name.");
    form_name.first_name.focus();
    return false;
  }
  
  if (is_lastname == "") {
    alert("Error! Please enter your last name.");
    form_name.last_name.focus();
    return false;
  }
 
  if (is_address_1 == "") {
    alert("Error! Please enter your address.");
    form_name.address_1.focus();
    return false;
  }

  if (is_city == "") {
    alert("Error! Please enter your city.");
    form_name.city.focus();
    return false;
  }

  if (is_state == "") {
    alert("Error! Please select your state.");
    form_name.state.focus();
    return false;
  }

  if (is_zip == "") {
    alert("Error! Please enter your zip code.");
    form_name.zip.focus();
    return false;
  }
  
  if (is_areacode == "") {
    alert("Error! Please enter your area code.");
    form_name.phone_ac.focus();
    return false;
  }
  
  if (is_areacode.length < 3) {
    alert("Error! Area codes require three digits: XXX.");
    form_name.phone_ac.select();
    form_name.phone_ac.focus();
    return false;
  }  
  
  if (is_phone == "") {
    alert("Error! Please enter your phone number.");
    form_name.phone.focus();
    return false;
  }
  
  if (is_phone.length < 8) {
    alert("Error! Phone numbers require 8 digits: XXX-XXXX.");
    form_name.phone.select();
    form_name.phone.focus();
    return false;
  }
  
  if (is_email == "") {
    alert("Error! Please enter your e-mail address.");
    form_name.email.focus();
    return false;
  }

  if (is_emailconfirm == "") {
    alert("Error! Please confirm your e-mail address.");
    form_name.email_confirm.focus();
    return false;
  }

  if (is_email.toLowerCase() != is_emailconfirm.toLowerCase()) {
	  alert("Error! E-mail addresses do not match.\n\nPlease confirm!");
		form_name.email.focus();
		return false;
  }

  if (is_comments == "") {
    alert("Error! Please enter Why moissanite works magic for your wardrobe (100 words or less).");
    form_name.comments.focus();
    return false;
  }

  if (is_photo == "") {
    alert("Error! Please select your photo (jpeg).");
    form_name.photo.focus();
    return false;
  }

  if (is_car == false) {
    alert("Error! You must agree to the copyright assignment and release.");
    form_name.legal_car.focus();
    return false;
  }

  // Disable form buttons on successful submission. This stops the user from clicking more than once.
  else {
    
    if (form_name.ytts_submit_btn) {
      form_name.ytts_submit_btn.disabled = true;
      docUploadStatus(document.ytts.photo);
    }

    return true;
    
  }

}

function wordCount(obj) {
  wc_regex = obj.value.replace(/^\s|\s$/, "").split(/\s+/).length;
  wc_actual = document.getElementById("comments").value.length;
  if (wc_actual == 0) {
    document.getElementById("comments_wc").innerHTML = wc_actual;
  }
  else if (wc_regex > 100) {
    document.getElementById("comments_wc").innerHTML = "<span style='color:red;'>"+wc_regex+"</span>";
  }
  else {
    document.getElementById("comments_wc").innerHTML = wc_regex;
  }
}
    
function docUploadStatus(objFile) {

  if (objFile.value.length != 0) {
    document.getElementById("ytts_upload_status").style.display = 'block';
  }

}

function setSysArea() {
	    		    	
  var fn = document.sys.first_name.value;
	var ln = Left(document.sys.last_name.value, 1);
	var city = document.sys.city.value;
  var si_state = document.sys.state.selectedIndex;
  var state = document.sys.state.options[si_state].value;
  var flcs = fn + " " + ln + "." + " - " + city + ", " + state;
	var oEditor = FCKeditorAPI.GetInstance('story');
  oEditor.SetHTML("<br /><br /><p><i>"+flcs+"</i></p>");

}

function checkSysLegalCb() {

  if (document.sys.legal_decline.checked) {
	  document.sys.legal_rules.checked = false;
	  document.sys.legal_rules.disabled = true;
  }
  else if (document.sys.legal_decline.checked == false) {
  	document.sys.legal_rules.disabled = false;
  }

}

function surveyReasonVisitOther() {

  var fn = document.ss;
  var fe = fn.survey_reason_visit.selectedIndex;
  var is_fe = fn.survey_reason_visit.options[fe].value;

  if (is_fe == "Other") {
    document.getElementById("survey_reason_visit_other").style.display = 'block';
    // document.getElementById("survey_reason_visit_other_label").innerHTML = 'Other, please specify:';
  }
  else {
    document.getElementById("survey_reason_visit_other").style.display = 'none';
    // document.getElementById("survey_reason_visit_other_label").innerHTML = 'Type of jewelry:';
  }

}

function warrantyIDType() {

  var fn = document.register;

  if (fn.WarrantyIDType[0].checked) {

    for(var i = 1 ; i < 6 ; i++) {
      var clearValue0 = 'fn.WarrantyID15D_0'+i+'.value = ""'
      var clearValue1 = 'fn.ConfirmWarrantyID15D_0'+i+'.value = ""'
      eval(clearValue0);
      eval(clearValue1);
    }

    document.getElementById("L1_WarrantyID15D").style.display = 'none';
    document.getElementById("L1_ConfirmWarrantyID15D").style.display = 'none';
    document.getElementById("L1_WarrantyID9D").style.display = 'block';
    document.getElementById("L1_ConfirmWarrantyID9D").style.display = 'block';
    document.getElementById("L1_WarrantyID0a").style.display = 'none';
    document.getElementById("L1_WarrantyID0b").style.display = 'none';
  }
  
  else if (fn.WarrantyIDType[1].checked)  {
    
    for(var i = 1 ; i < 4 ; i++) {
      var clearValue2 = 'fn.WarrantyID9D_0'+i+'.value = ""'
      var clearValue3 = 'fn.ConfirmWarrantyID9D_0'+i+'.value = ""'
      eval(clearValue2);
      eval(clearValue3);
    }

    document.getElementById("L1_WarrantyID15D").style.display = 'block';
    document.getElementById("L1_ConfirmWarrantyID15D").style.display = 'block';
    document.getElementById("L1_WarrantyID9D").style.display = 'none';
    document.getElementById("L1_ConfirmWarrantyID9D").style.display = 'none';
    document.getElementById("L1_WarrantyID0a").style.display = 'none';
    document.getElementById("L1_WarrantyID0b").style.display = 'none';
    
  }
  
  else {

    for(var i = 1 ; i < 6 ; i++) {
      var clearValue0 = 'fn.WarrantyID15D_0'+i+'.value = ""'
      var clearValue1 = 'fn.ConfirmWarrantyID15D_0'+i+'.value = ""'
      eval(clearValue0);
      eval(clearValue1);
    }
    
    for(var i = 1 ; i < 4 ; i++) {
      var clearValue2 = 'fn.WarrantyID9D_0'+i+'.value = ""'
      var clearValue3 = 'fn.ConfirmWarrantyID9D_0'+i+'.value = ""'
      eval(clearValue2);
      eval(clearValue3);
    }

    document.getElementById("L1_WarrantyID15D").style.display = 'none';
    document.getElementById("L1_ConfirmWarrantyID15D").style.display = 'none';
    document.getElementById("L1_WarrantyID9D").style.display = 'none';
    document.getElementById("L1_ConfirmWarrantyID9D").style.display = 'none';
    document.getElementById("L1_WarrantyID0a").style.display = 'block';
    document.getElementById("L1_WarrantyID0b").style.display = 'block';
    
  }

}

function wherePurchasedOther() {

  var fn = document.register;
  var wp = fn.WherePurchased.selectedIndex;
  var is_wpo = fn.WherePurchased.options[wp].value;

  if (is_wpo == "Other") {
    document.getElementById("L1_WherePurchasedOther").style.display = 'block';
    document.getElementById("L1_txt_WherePurchased").innerHTML = '<span class=\"formreq2\">*</span> Where Purchased:<br /><br /><span class=\"formreq2\">*</span> If other, please specify:';
  }
  else {
    document.getElementById("L1_WherePurchasedOther").style.display = 'none';
    document.getElementById("L1_txt_WherePurchased").innerHTML = '<span class=\"formreq2\">*</span> Where Purchased:';
  }

}

function validateFirst_15DWID(field) {

  if (field.value.length != 0) {
  
    if (!field.value.match(/[DdIi]\d\d/)) {
  	  alert("ERROR: Incorrect Warranty ID\n\nMust begin with a \" D \" or \" I \" following by two digits.");
  	  field.select();
  	  field.focus();
    }
  }
}

function compareWarrantyID() {

  var fn = document.register;

  if (fn.WarrantyIDType[0].checked) {
  	var wid  = fn.WarrantyID9D_01.value+fn.WarrantyID9D_02.value+fn.WarrantyID9D_03.value;
  	var cwid = fn.ConfirmWarrantyID9D_01.value+fn.ConfirmWarrantyID9D_02.value+fn.ConfirmWarrantyID9D_03.value;

    if (wid != cwid) {
    	alert("Warranty ID's do not match!")
    	fn.ConfirmWarrantyID9D_01.select();
    	fn.ConfirmWarrantyID9D_01.focus();
    }
  }
  else if (fn.WarrantyIDType[1].checked) {
  	var wid  = fn.WarrantyID15D_01.value+fn.WarrantyID15D_02.value+fn.WarrantyID15D_03.value+fn.WarrantyID15D_04.value+fn.WarrantyID15D_05.value;
  	var cwid = fn.ConfirmWarrantyID15D_01.value+fn.ConfirmWarrantyID15D_02.value+fn.ConfirmWarrantyID15D_03.value+fn.ConfirmWarrantyID15D_04.value+fn.ConfirmWarrantyID15D_05.value;

    if (wid != cwid) {
    	alert("Warranty ID's do not match!")
    	fn.ConfirmWarrantyID15D_01.select();
    	fn.ConfirmWarrantyID15D_01.focus();
    }
  }
}
