/* 
#----------------------------------------
# formLib.js
# Form functions library.
# Written by: Michael Carico
# Website: http://www.kabam.net
# Copyright (c) 2007 KABAM, Inc., All rights reserved.
# Commercial Liscense -- DO NOT DISTRIBUTE -- 
#
# Version 1.0 (April 2007)
#----------------------------------------
Each function returns:
- valid_field = 1 (ok)
- valid_field = 0 (error)

#----------------------------------------
# Functions
#----------------------------------------
function doClear(theText) 
function doRestore(theText)
function formatPhone(field) 
function checkPhone(field,field_name_text,focus_flag)
function checkDefault(field,text,message_flag, focus_flag)
function checkBlank(field,text,message_flag, focus_flag)
function checkRadioBlank(radioGroup, text)
function checkSelectBlank(selectGroup, text)
function radioValue(radioGroup)         
function checkPasswords(pass1,pass2,force_good)
function checkEmail(field,manditory,showMessage,text1,text2)
#----------------------------------------

*/

function doClear(theText) {
  if (theText.value == theText.defaultValue) 
    theText.value = "";
}

function doRestore(theText) {
  if (theText.value == '')
    theText.value = theText.defaultValue;
}

function formatPhone(field) {
  var nbr = '';
  var phoneNbr = field.value; 

  for (i = 0; i < phoneNbr.length; i++) {   
    var c = phoneNbr.charAt(i);
    if ((c >= "0") && (c <= "9")) {
	  nbr += c;
    }
  }

  if (nbr.length == 7) {
    nbr = nbr.substr(0,3) + '-' + nbr.substr(3,4);
    field.value = nbr;
  } else if (nbr.length == 10) {
    nbr = nbr.substr(0,3) + '-' + nbr.substr(3,3) + '-' + nbr.substr(6,4);
    field.value = nbr;
  } else if (nbr.length == 11) {
    nbr = nbr.substr(0,1) + '-' + nbr.substr(1,3) + '-' + nbr.substr(4,3) + '-' + nbr.substr(7,4);
    field.value = nbr;
  }
}

function checkPhone(field, field_name_text, focus_flag) {
  var phoneNbr = field.value;
  var valid_field = 1;
  var nbr = '';  

  for (i = 0; i < phoneNbr.length; i++) {   
    var c = phoneNbr.charAt(i);
    if ((c >= "0") && (c <= "9")) {
	  nbr += c;
    }
  }

  if ((nbr.length != 10) && (nbr.length != 11)) {
    var message = 'Please format ' + field_name_text + ' as 999-999-9999.';
    alert (message);
    if (focus_flag == 1) {
      field.focus();
	}
    valid_field = 0;
  }

  return valid_field;
}

function checkDefault(field,text,message_flag, focus_flag) {
  var valid_field;
  
  valid_field = 1;

  if (field.value == field.defaultValue) { 
    if (message_flag == 0) {
      message = text;
	} else {
      message = 'Please enter ' + text;
    }
    alert (message);
    if (focus_flag == 1) {
      field.focus();
	}
    valid_field = 0;
  }
  return valid_field;

}

function checkBlank(field,text,message_flag, focus_flag) {
  var valid_field;
  
  valid_field = 1;

  if (field.value == '') { 
    if (message_flag == 0) {
      message = text;
	} else {
      message = 'Please enter ' + text;
    }
    alert (message);
    if (focus_flag == 1) {
      field.focus();
	}
    valid_field = 0;
  }
  return valid_field;

}


function checkRadioBlank(radioGroup, text) {
  var valid_field = 1;
  var thisValue = radioValue(radioGroup);
  
  if (thisValue == null) { 
    alert (text);
    valid_field = 0;
  }
  return valid_field;
}

function radioValue(radioGroup) {
  selValue = -1;
  var i  = radioGroup.length - 1;

  for (i; i > -1; i--) {
    if (radioGroup[i].checked) {
      selValue = i; 
     }
  }

  if (selValue > -1) {
    return radioGroup[selValue].value;
  } else {
    return null;
  }
}
              
function checkSelectBlank(selectGroup, text) {
  var valid_field = 1;
  var thisNum = selectGroup.selectedIndex;
  
  if (thisNum == 0) { 
    alert (text);
    valid_field = 0;
  }
  return valid_field;
}


function checkPasswords(pass1_field,pass2_field,force_good) {
  var valid_field = 1;
  var invalid = " "; // Invalid character is a space
  var minLength = 6; // Minimum length
  var pass1 = pass1_field.value;
  var pass2 = pass2_field.value;

  // check for a value in both fields.
  if (pass1 == '' || pass2 == '') {
    alert('Please enter your password twice.');
    valid_field = 0;
    return valid_field;
  }

  // same password twice
  if (pass1 != pass2) {
    alert ("You did not enter the same new password twice. Please re-enter your password.");
    valid_field = 0;
	pass1_field.focus();
    return valid_field;
  }

  // check for minimum length
  if (pass1.length < minLength) {
    alert('Your password must be at least ' + minLength + ' characters long. Please try again.');
    valid_field = 0;
    return valid_field;
  }

  var illegalChars = /[\W_]/; // allow only letters and numbers
  if (illegalChars.test(pass1)) {
    alert('Your password contains illegal characters.  Please try again.');
    valid_field = 0;
    return valid_field;
  }
  
  // force "good" password
  if (force_good) {
    if (!((pass1.search(/(a-z)+/)) && (pass1.search(/(A-Z)+/)) && (pass1.search(/(0-9)+/)))) {
      alert('Your password must contain at least one uppercase letter, one lowercase letter, and one numeral. Please try again.');
      valid_field = 0;
      return valid_field;
	}
  }

  return valid_field;
}


function checkEmail(field,manditory,showMessage,text1,text2) {
  valid_field = 1;
  addr = field.value;

  // check for blank and manditory
  if (addr == '' && manditory) {
    if (showMessage) {
      alert('Please enter ' + text2 + ' email address');
      field.focus();
	}
    valid_field = 0;
	return valid_field;
  }
  
  //check for invalid characters
  var illegalChars= /[\(\)\<\>\,\;\:\\\/\"\[\]]/

  if (addr.match(illegalChars)) {
    if (showMessage) {
      alert(text1 + ' e-mail address contains invalid characters.  Please check the address and try again');
      field.focus();
    }
    valid_field = 0;	  
    return valid_form;
  }

  //check email address format
  //var emailFilter=/^.+@.+\..{2,3,4,6}$/;
  //var emailFilter=/^([\w]+)(.[\w]+)*@([\w]+)(.[\w]{2,3}){1,2}$/;  
  var emailFilter=/^.+@.+\../;
  if (!emailFilter.test(addr)) { 
    if (showMessage) {
      alert(text1 + ' e-mail address is invalid.  Please check the e-mail address and try again');
      field.focus();
    }
	valid_field = 0;
	return valid_field;
  } 

  // check for non ASCII text characters
  for (i=0; i<addr.length; i++) {
    if (addr.charCodeAt(i)>127) {
      if (showMessage) {
        alert(text1 + "e-mail address contains invalid characters.  Please enter your e-mail address again");
        field.focus();
	  }
	  valid_field = 0;
	  return valid_field;
	}
  }
  return valid_field;
}

