/*
General Web Form Utilities
Copyright 1999,2000 Webatory Inc., All Rights Reserved.Last Updated 4/13/2000version 2.01
*/if ( ! versions_loaded ) {

    // Determine Browser Version
    var bV   = parseInt( navigator.appVersion );
    var NS4  = (document.layers)         ? true : false;
    var NS3  = (document.images)         ? true : false;
    var IE4  = ((document.all)&&(bV>=4)) ? true : false;
    var ver4 = (NS4 || IE4)              ? true : false;

    // Determine Browser Platform
    var MAC   = (navigator.userAgent.indexOf("Mac")      != -1) ? true : false;
    var Opera = (navigator.userAgent.indexOf("Opera")    != -1) ? true : false;
    var IE5   = (navigator.userAgent.indexOf("MSIE 5.0") != -1) ? true : false;

    var versions_loaded = true;
}

var aryForms			= new Array();
aryForms.length			= 0;
var sfriendly_message	= new String();
var cpassword;

function checkPassword(password, cpassword) {
  if (password.value != cpassword.value) {
    alert("Your password was not confirmed correctly.  Please re-enter and confirm your password.");
    password.value = "";
    cpassword.value = "";
    password.focus();
    return (false);
  }
  return (true);
}

function verifyNumber(inStr) {
  iNumber = parseFloat(inStr);
  if (isNaN(iNumber)) return (false);
  else return (iNumber);
}

function stripNumber(inStr) {
  var i;
  var sIn = new String(inStr);
  var sOut = "";
  if (sIn != "undefined") {
    for (i=0; i<sIn.length; i++) {
      if ("1234567890.".indexOf(sIn.substring(i,i+1)) != -1) sOut += sIn.substring(i,i+1);
    }
    if (sIn.substring(0,1) == "-") sOut = "-" + sOut;
  }
  sOut = parseFloat(sOut);
  if (!isNaN(sOut)) return (sOut);
  else return("");
}

function trimString(inStr) {
  var sIn	= new String(inStr);
  var z=0;
  if (sIn == "undefined") return ("");
  while (sIn.substring(0,1) == " ") {
    sIn = sIn.substring(1);
    z++;
    if (z==100) break;
  }
  z=0;
  while (sIn.substring(sIn.length) == " ") {
    sIn = sIn.substring(0,sIn.length-1);
    z++;
    if (z==100) break;
  }
  return (sIn);
}

// Verifies that phone number is a valid 10 digit US phone number.
function verifyPhone(field) {
  var sPhone		= new String(field.value);
  var sPhoneString	= "";
  var sOut			= "";
 
  sPhoneString = String(stripNumber(sPhone));
  
  if (sPhoneString.length == 0) {
    field.value = "";
    return (true);
  }

  if (sPhoneString.length != 10) {
    alert("Please enter a valid ten digit phone number.");
    field.value = "";
    field.focus();
    return (false);
  }

  sOut = "(" + sPhoneString.substring(0,3) + ") " + sPhoneString.substring(3,6) + "-" + sPhoneString.substring(6);
  field.value = sOut;
  return (true);
}

function verifyEmail(field) {
  var sEmail = new String(field.value);
  if (((sEmail.indexOf("@") == -1) || (sEmail.indexOf(".") == -1)) && sEmail.length > 0) {
    alert("Please enter a valid email address in the format user@emailprovider.com");
    field.value = "";
    field.focus();
    return (false);
  }
  return (true);
}

function verifyURL(field) {
  var sURL = new String(field.value);
  if ((sURL.indexOf("http://") == -1 || sURL.indexOf(".") == -1) && sURL.length > 0) {
    alert("Please enter a valid web address in the format http://www.domain.com.");
    field.value = "";
    field.focus();
    return false;
  }
  return (true);
}

function formatCurrency(field) {
  var sMoney	= new String(field.value);
  var sDollars	= new String();
  var sCents	= new String();
   
  sMoney = new String(stripNumber(sMoney));
  if (sMoney.indexOf(".") > 0) {
    sDollars = sMoney.slice(0,sMoney.indexOf("."));
    sCents = sMoney.slice(sMoney.indexOf("."));
    if (sCents.length == 1) {sCents = sCents + "00";}
    if (sCents.length == 2) {sCents = sCents + "0";}
  }
  else {
    sDollars = sMoney;
    sCents = "";
  }
  
  sMoney = "";
  numchr = sDollars.length;
  start = numchr % 3;
  if (start != 0) {
    sMoney = sDollars.slice(0,start);
    if (numchr > 3) {
      sMoney += ",";
    }
  }
  for (i=start; i<(numchr-2); i=i+3) {
    sMoney += sDollars.slice(i,i+3);
    if (i+3 < numchr) {
      sMoney += ",";
    }
  }

  if (sMoney.length > 0) field.value = "$"+sMoney+sCents;
  else field.value = "";
  return (true);
}

// Formats and verifies that zipcode is 5 or 9 digits (US Zipcode format).
function verifyZipcode(field) {
  var sZipcode	= field.value;
  var sOut		= "";
  
  if (sZipcode.length > 0) {
	for (i=0; i<sZipcode.length; i++) {
      if ("1234567890".indexOf(sZipcode.substring(i,i+1)) != -1) sOut += sZipcode.substring(i,i+1);
	}
	sZipcode = sOut;
	if (sZipcode.length != 5 && sZipcode.length != 9) {
      alert("Please enter a valid 5 or 9 digit zipcode.");
      field.value = "";
      field.focus();
      return (false);
	}
	if (sZipcode.length == 9) {
      sOut = sZipcode.substring(0,5) + "-" + sZipcode.substring(5);
      field.value = sOut;
	}
	field.value = sZipcode;
  }
  return (true);
}

function verifyNumeric(field, sRef) {
  sRef = new String(sRef);
  if (sRef == "undefined") sRef = "value";
  if (field.value == "" || field.value == 0) return (true);
  if (!verifyNumber(field.value)) {
    alert("Please enter " + sRef + " in numeric format.");
    field.value = "";
    field.focus();
    return (false);
  }
  else field.value = verifyNumber(field.value);
  return (true);
}

function verifyYear(field) {
  sYear = field.value;
  if (sYear == "") return (true);
  if (!verifyNumber(field.value) || sYear.length != 4) {
    alert("Please enter a valid 4 digit year.");
    field.value = "";
    field.focus();
    return (false);
  }
  return (true);
}

function checkLength(field, iMax, sField_Name) {
  var sValue		= String(field.value);
  
  if (iMax > 0) {
    if (sValue.length >= iMax) {
      if (sField_Name) alert("You have reached the maximum length allowed for " + sField_Name + " (" + iMax + " characters).");
      else alert("You have reached the maximum length allowed for this field (" + iMax + " characters).");
      field.value = sValue.substring(0, iMax-1);
      return (false);
    }
  }
  return (true);
}

function formatTime(field, txtRef) {
  var out	= new String();
  var mm, hh, inStr;
  
  if (field.value == "") return (true);
    
  inStr = new String(stripNumber(field.value));
  sOrig = field.value;
  
  if (inStr.length == 4) {
    hh = inStr.substring(0,2);
    mm = inStr.substring(2,4);
  }
  if (inStr.length == 3) {
    hh = inStr.substring(0,1);
    mm = inStr.substring(1,3);
  }
  if (inStr.length == 2) {
    hh = inStr;
    mm = "00";
  }
  if (inStr.length == 1) {
    hh = inStr;
    mm = "00";
  }
  
  hh = String(hh);
  if (hh == "undefined") {
    alert("Please enter your " + txtRef + " in the format 'hh:mm am'.");
    field.value = "";
    field.focus();
    return (false);
  }
    
  if (hh > 12 || mm > 60) {    
    alert(txtRef + " is invalid.  Please enter a valid " + txtRef + " in the format 'hh:mm am'.");
    field.value = "";
    field.focus();
    return (false);
  }
  
  if (sOrig.toLowerCase().indexOf("pm") > 0) {
    out = hh + ":" + mm + " PM";
  }
  else {
    if (sOrig.toLowerCase().indexOf("am") > 0 || (hh > 6 && hh < 12)) out = hh + ":" + mm + " AM";
    else out = hh + ":" + mm + " PM";
  }

  field.value = out;
  return (true);
}

function formatDate(field, sRef) {
  var out			= "";
  var sField_Ref	= new String(sRef);
  if (sField_Ref == "undefined") sField_Ref = "Date entered";
  if (field.value == "") return (true);
  
  sDate = new Date(field.value);
  if (!isNaN(sDate)) {
    out = (sDate.getMonth() + 1) + "/";
    out += sDate.getDate() + "/";
    if (ver4) out += sDate.getFullYear();
    else out += sDate.getYear();
    field.value = out;
    return (true);
  }
  else {
    alert(sField_Ref + " is invalid.  Please enter a valid date in the format mm/dd/yyyy.");
    field.value = "";
    field.focus();
    return (false);
  }
}

function Form( sFormName ) {
  this.name	= sFormName;
  this.fields = new Array();
  this.fields.length = 0;
  
  aryForms[aryForms.length++] = this; 
  aryForms[sFormName]		  = this;  
  return( this );
}

function Field( sField, sError, bForce, sValue ) {
  this.name		= sField;
  this.error	= sError;
  this.required = bForce;
  (sValue == "null") ? this.value = "" : this.value = sValue;
  return( this );
}

function Form_addField( sField, sErr, bForce, sValue ) {
  newField = new Field(sField, sErr, bForce, sValue );
  this.fields[this.fields.length++] = newField;
  this.fields[sField] = this;
  return( newField );
}

Form.prototype.addField = Form_addField;

function checkForm(sFormName) {
  var rForm = aryForms[sFormName];
  var form = document.forms[rForm.name];
  if (form) {
    for (z=0; z < rForm.fields.length; z++) {
      if (rForm.fields[z].required == true) {
        fieldok = false;
        sField = rForm.fields[z].name;
        sError = rForm.fields[z].error;
        field = form.elements[sField];  
        
        if (field) {
          //alert(field.type);
          if (field.type == "text" || field.type == "password" || field.type == "hidden" || field.type == "textarea" || field.type == "file") {
            if (field.value != "") fieldok = true;
          }
          else {
            if (field.type == "select-one") {
              if (field.selectedIndex > 0) fieldok = true;
            }
            else {
              if (field.type == "checkbox" || field.type == "radio") {
                if (field.checked == true) fieldok = true;
              }
              else {
                //alert(field.type);
                if (field[0]) {   
                  if (field[0].type == "checkbox" || field[0].type == "radio") {
                    for (x=0;x<field.length;x++) {
                      if (field[x].checked == true) fieldok = true;
                    }
                  }
                  else {
                    if (field[0].value != "" && field[0].value != null) fieldok = true;
                  }
                }
              }
            }
          }
          
          //alert(fieldok);
          if (fieldok == false) {
            alert(sfriendly_message + unescape(sError) + "\n");
            if (field.type == "text" || field.type == "password" || field.type == "select-one" || field.type == "checkbox" || field.type == "radio" || field.type == "textarea" || field.type == "file") field.focus();
            else {
              if (field[0]) {
                if (field[0].type == "checkbox" || field[0].type == "radio") { 
                  field[0].focus();
                }
              }
            }
            return (false);
          }        
        }
      }
    }
    if (cpassword == true) {
      return checkPassword(form.Password, form.CPassword);
    } 
  }
  return (true);
}

function popForm() {
  var i, j, k, l;
  for (i=0; i<aryForms.length; i++) {
    form	= document.forms[aryForms[i].name];
    fields	= aryForms[i].fields;
    if (form) {
    for (j=0; j < fields.length; j++) {
      field = form.elements[fields[j].name];
      //alert(fields[j].name);
      //alert(field.type);
      if (field) {
      if (field.type == "text" || field.type == "password" || field.type == "hidden" || field.type == "textarea" || field.type == "file") field.value = unescape(fields[j].value);
      else {
        if (field.type == "select-one") selectBox(form, field, unescape(fields[j].value));
        else {
          if (field.type == "checkbox" || field.type == "radio") checkBox(form, field, unescape(fields[j].value));
          else {
            if (field[0]) {
			  if (field[0].type == "checkbox" || field[0].type == "radio") checkBox(form, field, unescape(fields[j].value));
			  if (field[0].type.indexOf("select") != -1) selectBox(form, field, unescape(fields[j].value));
			  if (field[0].type == "text") {
                sVal = unescape(fields[j].value);
                if (sVal.indexOf("///") != -1) sVals = sVal.split("///");
				else sVals = sVal.split(",");
                for (l=0; (l < field.length && l < sVals.length); l++) {
                  if ("undefined" != new String(sVals[l])) field[l].value = trimString(sVals[l]);
                }
              }
            }
          }
        }
      }
      }
    }
    }
  }
}

function checkBox( form, fields, sFrmVal ) {
  var k, l;
  var sVal = new String(sFrmVal);
  
  if (sVal.indexOf("///") != -1) sVals = sVal.split("///");
  else sVals = sVal.split(",");
  for (k=0; k < sVals.length; k++) {
    if (fields[0]) {
      for (l=0; l < fields.length; l++) {
        if (fields[l].value == trimString(sVals[k])) {
          fields[l].checked = true;
        }
      }
    }
    else {
      if (fields.value == sVals[k]) fields.checked = true;
    }
  }
}

function selectBox(form, fields, sFrmVal) {
  var k, j;
  var sVal	= new String(sFrmVal);
  var sVals = new Array(0); 
  j = 0;
  z = 0;
  if (sVal.indexOf("///") != -1) sVals = sVal.split("///");
  else sVals = sVal.split(",");
  while(fields[j]) {
    if (sVals[j] != "undefined" && sVals[j] != null) {
      if (fields[j].length) {
        for (k=0; k < fields[j].length; k++) {
          if (fields[j][k].value == trimString(sVals[j])) fields[j].options[k].selected = true;
        }
      }
      else {
        for (k=0; k < fields.length; k++) {
          if (fields[k].value == trimString(sVals[j])) fields.options[k].selected = true;
        }
      }
    }
    j++;
    if (j > 10) break;
  }
}