var isEmpty = /^\s*$/
var validDateFormat = /^\d{1,2}\/\d{1,2}\/(\d{2}|\d{4})$/
//--------------------------------------------------------------
function validateUserName(username)
{
  if(isEmpty.test(username))
  {
    alert('Please enter a valid username.'); <!-- MSG# 11 -->
    return false;
  }
  else
    return true;
}
//--------------------------------------------------------------
function validatePassword(password)
{
  if(isEmpty.test(password) || password.length < 5 || password.length > 15)
  {
    alert('Your password must be between 5 and 15 characters in length.'); <!-- MSG# 77 -->
    return false;
  }
  else
    return true;
}
//--------------------------------------------------------------
function validateCurrentPassword(current_password)
{
  if(isEmpty.test(current_password))
  {
    alert('Please enter your current, existing password.'); <!-- MSG# 68 -->
    return false;
  }
  return true;
}
//--------------------------------------------------------------
function validateNewPassword(new_password)
{
  if(new_password.length < 5 || new_password.length > 15 )
  {
    alert('Your new password must be between 5 and 15 characters in length.'); <!-- MSG# 69 -->
    return false;
  }
  var valid_password_chars = /^\w*$/
  if(!valid_password_chars.test(new_password))
  {
    alert('Your new password must contain only letters and/or numbers.');<!-- MSG #9 -->
    return false;
  }
  return true;
}
//--------------------------------------------------------------
function validateAccountNumber(accountNumber)
{
  var valid_account = /^((\d{4})|(\d{6}))$/;

  if(!valid_account.test(accountNumber))
  {
    alert('Your account number must be 4 or 6 characters in length and contain numbers only.');
    return false;
  }
  else
    return true;
}
//--------------------------------------------------------------
//This Function validates Account Number with a Wild Card character(*)
function validateAccountNumberWild(accountNumber)
{
  if(accountNumber.indexOf("*") != -1)
  {
    return true;
  }
  else
  {
    var valid_account = /^((\d{4})|(\d{6}))$/;
    if(!valid_account.test(accountNumber))
    {
      alert('Your account number must be 4 or 6 characters in length and contain numbers only Or Any length with numbers and * only.');
      return false;
    }
    else
      return true;
  }
}
//--------------------------------------------------------------
function validatePhoneNumber(areaCode, prefix, suffix)
{
  var valid_area_or_prefix = /^\d{3}$/;
  var valid_suffix = /^\d{4}$/;

  if(!valid_area_or_prefix.test(areaCode.value))
  {
    alert('Please enter a valid area code.'); <!-- MSG# 15 -->
    areaCode.focus();
    return false;
  }
  if(!valid_area_or_prefix.test(prefix.value))
  {
    alert('Please enter complete phone number.'); <!-- MSG# 16 -->
    prefix.focus();
    return false;
  }
  if(!valid_suffix.test(suffix.value))
  {
    alert('Please enter complete phone number.'); <!-- MSG# 16 -->
    suffix.focus();
    return false;
  }
  return true;
}
//--------------------------------------------------------------
function validateOptionalPhoneNumber(areaCode, prefix, suffix)
{
  if(areaCode == "" && prefix == "" && suffix == ""){return true;}

  var valid_area_or_prefix = /^\d{3}$/;
  var valid_suffix = /^\d{4}$/;

  if(!valid_area_or_prefix.test(areaCode.value))
  {
    alert('Please enter a valid area code.'); <!-- MSG# 15 -->
    areaCode.focus();
    return false;
  }
  if(!valid_area_or_prefix.test(prefix.value))
  {
    alert('Please enter complete phone number.'); <!-- MSG# 16 -->
    prefix.focus();
    return false;
  }
  if(!valid_suffix.test(suffix.value))
  {
    alert('Please enter complete phone number.'); <!-- MSG# 16 -->
    suffix.focus();
    return false;
  }
  return true;
}
//--------------------------------------------------------------
function validateManagerPhoneNumber(areaCode, prefix, suffix)
{
  return validateOptionalPhoneNumber(areaCode, prefix, suffix);
}
//--------------------------------------------------------------
function validateManagerFaxNumber(areaCode, prefix, suffix)
{
  return validateOptionalFaxNumber(areaCode, prefix, suffix);
}
//--------------------------------------------------------------
function validatePhoneExtension(field)
{
  var valid_extension = /^\d*$/;
  if(field.value != "")
  {
    if(!valid_extension.test(field.value))
    {
      alert('Please enter complete phone number.');
      field.focus();
      return false;
    }
    return true;
  }
  return true;
}
//--------------------------------------------------------------
function validateFaxNumber(areaCode, prefix, suffix)
{
  var valid_area_or_prefix = /^\d{3}$/;
  var valid_suffix = /^\d{4}$/;

  if(!valid_area_or_prefix.test(areaCode.value))
  {
    alert('Please enter fax area code.'); <!-- MSG# 178 -->
    areaCode.focus();
    return false;
  }
  if(!valid_area_or_prefix.test(prefix.value))
  {
    alert('Please enter complete fax number.'); <!-- MSG# 79 -->
    prefix.focus();
    return false;
  }
  if(!valid_suffix.test(suffix.value))
  {
    alert('Please enter complete fax number.'); <!-- MSG# 79 -->
    suffix.focus();
    return false;
  }
  return true;
}
//--------------------------------------------------------------
function validateOptionalFaxNumber(areaCode, prefix, suffix)
{
    if(areaCode == "" && prefix == "" && suffix == ""){return true;}

  var valid_area_or_prefix = /^\d{3}$/;
  var valid_suffix = /^\d{4}$/;

  if(!valid_area_or_prefix.test(areaCode.value))
  {
    alert('Please enter fax area code.'); <!-- MSG# 178 -->
    areaCode.focus();
    return false;
  }
  if(!valid_area_or_prefix.test(prefix.value))
  {
    alert('Please enter complete fax number.'); <!-- MSG# 79 -->
    prefix.focus();
    return false;
  }
  if(!valid_suffix.test(suffix.value))
  {
    alert('Please enter complete fax number.'); <!-- MSG# 79 -->
    suffix.focus();
    return false;
  }
  return true;
}
//--------------------------------------------------------------
function validateName(field)
{
  var validName= /[A-Za-z]+/
  if(!validName.test(field.value))
  {
    alert('Please enter a valid name.'); <!-- MSG# 2 -->
    field.focus();
    return false;
  }
  return true;
}
//--------------------------------------------------------------
function validateCompany(field)
{
  if(isEmpty.test(field.value))
  {
    alert('Please enter your company name.'); <!-- MSG# 3 -->
    field.focus();
    return false;
  }
  return true;
}
//--------------------------------------------------------------
function validateEmail(field)
{
  var valid_email = /^\w+((-\w+)|(\.\w+))*\@\w+((\.|-)\w+)*\.\w{2,}$/

  if(!valid_email.test(field.value))
  {
    alert('Please enter a valid e-mail address.'); <!-- MSG# 6 -->
    field.focus();
    return false;
  }
  return true;
}
//--------------------------------------------------------------
function validateEmailList(field)
{
  var valid_email = /^\w+((-\w+)|(\.\w+))*\@\w+((\.|-)\w+)*\.\w{2,}$/

  var emailList = field.value;
  do {
    emailList = emailList.replace(" ", "");
  } while (emailList.indexOf(" ") > -1);
  //reset the field value to the value without spaces
  field.value = emailList;
  
  //split the value into an Array
  var emailListArray = emailList.split(",");
  
  //loop through the array and validate each e-mail
  for (i=0; i<emailListArray.length; i++) {
    if(!valid_email.test(emailListArray[i]))
    {
      alert('The email in position ' + i + ' is invalid.\n\nPlease enter a valid list of e-mail addresses, seperated by a \ncomma and no spaces.'); <!-- MSG# ????? -->
      field.focus();
      return false;
    }
  }

  return true;
}
//--------------------------------------------------------------
function validateZipCode5Digit(field)
{
    var fiveDigits = /^\d{5}$/;
    if(!fiveDigits.test(field.value))
    {
      alert('Please enter a valid 5-digit ZIP code.'); <!--MSG# 28 -->
      field.focus();
      return false;
    }
    return true;
}
//--------------------------------------------------------------
function validateCCZipCode5Digit(field)
{
    var fiveDigits = /^\d{5}$/;
    if(!fiveDigits.test(field.value))
    {
      alert('Please enter a valid 5-digit ZIP for your Billing Address.'); <!--MSG# 43 -->
      field.focus();
      return false;
    }
    return true;
}
//--------------------------------------------------------------
function validateZipCode9Digit(zip)
{
    var NineDigits = /^\d{5}-\d{4}$/;
    if(!NineDigits.test(zip))
      return false;
    return true;
}
//--------------------------------------------------------------
function validateZipCodeEither(zip)
{
  return (validateZipCode5Digit(zip)||validateZipCode9Digit(zip));
}
//--------------------------------------------------------------
function validateZipCodeEither5Or9Digits(field)
{
  var fiveDigits = /^\d{5}$/;
  var nineDigits = /^\d{9}$/;
  if(!fiveDigits.test(field.value)&&!nineDigits.test(field.value))
  {
     alert('Please enter a valid 5-digit OR 9-digit ZIP code. Please do not enter a hyphen.')
     field.focus();
     return false;
  }
  return true;
}
//--------------------------------------------------------------
function validateAddress1(field)
{
  if(isEmpty.test(field.value))
  {
    alert('Please enter your Address.');
    field.focus();
    return false;
  }
  return true;
}
//--------------------------------------------------------------
function validateCity(field)
{
  if(isEmpty.test(field.value))
  {
    alert('Please enter your City.');
    field.focus();
    return false;
  }
  return true;
}
//--------------------------------------------------------------
function validateState(field)
{
  if(field.value == "--")
  {
    alert('Please enter your State.');
    field.focus();
    return false;
  }
  return true;
}
//--------------------------------------------------------------
function validateTitle(field)
{
  if(isEmpty.test(field.value))
  {
    alert('Please enter your Job Title.');
    field.focus();
    return false;
  }
  return true;
}
//--------------------------------------------------------------
function validateFirstName(field)
{
  if(isEmpty.test(field.value))
  {
    alert('Please enter a valid first name.'); <!--MSG# 12 -->
    field.focus();
    return false;
  }
  return true;
}
//--------------------------------------------------------------
function validateLastName(field)
{
  if(isEmpty.test(field.value))
  {
    alert('Please enter a valid last name.'); <!--MSG# 13 -->
    field.focus();
    return false;
  }
  return true;
}
//--------------------------------------------------------------
function focusFirstElement(_form)
{
  elems = _form.elements;
  for(j = 0; j < elems.length; j++)
  {
    e = elems[j];
    if(e.type != "hidden" && e.disabled == false)
    {
      e.focus();
      return true;
    }
    if (j == elems.length-1) {
    	return false;
    }
  }
  return false;
}
//--------------------------------------------------------------
function focusFirstBodyAreaElement()
{
	var x = document.getElementById("content");
    if (x != 'undefined') {
      forms = x.getElementsByTagName("form");
      for (i=0; i < forms.length; i++) {
        //we don't want to set focus to the product search element
        if (forms[i].name != 'manufacturer_part_number_form' && 
        		forms[i].name != 'item_number_form' && 
        		forms[i].name != 'customer_part_number_form' && 
        		forms[i].name != 'keyword_search_form'  &&
        		forms[i].name != 'manufacturer_form' &&
        		forms[i].name != 'shopping_cart_pagelet') {
          if (forms[i].elements.length > 0) {
            if (focusFirstElement(forms[i])) {
        	    return;
            }
          }
        }
        if (i == (forms.length-1)) {
        	return;
        }
      }
    }
}
//--------------------------------------------------------------
function focusElementIndex(_form, index)
{
  elems = _form.elements;
  e = elems[index];
  e.focus();
}
//--------------------------------------------------------------
// returns the date in the short format
function getShortDate(date)
{
  return (date.getMonth() + 1) + "/" + date.getDate() + "/" + date.getFullYear();
}
//--------------------------------------------------------------
function createDate(dateString)
{
  if(validDateFormat.test(dateString))
  {
    var parts = dateString.match(/\d+/g);
    var month = parts[0] - 0;
    var day = parts[1] - 0;
    var year = parts[2] - 0;
    if (year <70)  year += 2000;
    if (year < 1900)  year += 1900;

    var newDate = new Date(month + '/' + day + '/' + year);

    if(!isNaN(newDate))
      if(newDate.getMonth()+1 == month && newDate.getDate() == day)
        return newDate;
  }
  return null;
}
//--------------------------------------------------------------
function isDateInPast(date)
{
  return (compareDates(date, new Date()) < 0);
}
//--------------------------------------------------------------
function isDateInFuture(date)
{
  return (compareDates(date, new Date()) > 0);
}
//--------------------------------------------------------------
function clearTimePrecision( d ) {
  if ( d != null ) {
    d.setHours( 0 );
    d.setMinutes( 0 );
    d.setSeconds( 0 );
    d.setMilliseconds( 0 );
  }
}
//--------------------------------------------------------------
function compareDates(date1, date2) {
  var d1 = new Date( date1 );
  var d2 = new Date( date2 );
  clearTimePrecision( d1 );
  clearTimePrecision( d2 );
  return ( d1.valueOf() - d2.valueOf() );
}
//--------------------------------------------------------------
// returns string with the alpha and numeric chars  only
function getAlphaNumericOnly(str) {
  var alphaNum = /[A-Za-z0-9]/
  var whiteSpace = /\w/
  var newStr = "";
  for( i="0" ; i < str.length ; i++ ) {
    var currChar = str.charAt( i )
    if( alphaNum.test( currChar ) ) {
      newStr = newStr + currChar;
    }
  }
  return newStr;
}
//--------------------------------------------------------------
//returns string with the alpha and numeric chars  only
function getNumericOnly(str) {
var alphaNum = /[0-9.]/
var whiteSpace = /\w/
var newStr = "";
for( i="0" ; i < str.length ; i++ ) {
 var currChar = str.charAt( i )
 if( alphaNum.test( currChar ) ) {
   newStr = newStr + currChar;
 }
}
return newStr;
}
//--------------------------------------------------------------
// returns true if value is empty string
function isEmptyString(str) {
  if ( str != null ) {
    for( i="0" ; i < str.length ; i++ ) {
      if( str.charAt( i ) != " " ) {
        return false;
      }
    }
  }
  return true;
}
//--------------------------------------------------------------
function ltrim(argvalue) {

  while (1) {
    if (argvalue.substring(0, 1) != " ")
      break;
    argvalue = argvalue.substring(1, argvalue.length);
  }
  return argvalue;
}
//--------------------------------------------------------------
function rtrim(argvalue) {

  while (1) {
    if (argvalue.substring(argvalue.length - 1, argvalue.length) != " ")
      break;
    argvalue = argvalue.substring(0, argvalue.length - 1);
  }
  return argvalue;
}
//--------------------------------------------------------------
function trim(argvalue) {
  var tmpstr = ltrim(argvalue);

  return rtrim(tmpstr);
}
//--------------------------------------------------------------
function validateThisFirstName(field,name)
{
  if(isEmpty.test(field.value))
  {
    alert('Please enter ' + name + ' first name.');
    field.focus();
    return false;
  }
  return true;
}
//--------------------------------------------------------------
function validateThisLastName(field,name)
{
  if(isEmpty.test(field.value))
  {
    alert('Please enter ' + name + ' last name.');
    field.focus();
    return false;
  }
  return true;
}
//--------------------------------------------------------------
function validateThisState(field,name)
{
  if(field.value == "")
  {
    alert('Please enter ' + name + ' State.');
    field.focus();
    return true;

  }
  return true;
}
//--------------------------------------------------------------
function validateThisPhoneNumber(areaCode, prefix, suffix, name) {
  var valid_area_or_prefix = /^\d{3}$/;
  var valid_suffix = /^\d{4}$/;

  if(!valid_area_or_prefix.test(areaCode.value))
  {
    alert('Please enter ' + name + ' area code.'); <!-- MSG# 15 -->
    areaCode.focus();
    return false;
  }
  if(!valid_area_or_prefix.test(prefix.value))
  {
    alert('Please enter ' + name + ' complete phone number.'); <!-- MSG# 16 -->
    prefix.focus();
    return false;
  }
  if(!valid_suffix.test(suffix.value))
  {
    alert('Please enter ' + name + ' complete phone number.'); <!-- MSG# 16 -->
    suffix.focus();
    return false;
  }
  return true;
}
//--------------------------------------------------------------
function validateSNSItemNumberField(field)
{
    var valid_item_num = /^((\d{6})|(\d{10}))$/;
  if(!valid_item_num.test(field.value))
  {
    return false;
  }
  return true;
}
//--------------------------------------------------------------
function validateSNSItemNumber(snsItemNum)
{
    var valid_item_num = /^((\d{6})|(\d{10}))$/;
  if(!valid_item_num.test(snsItemNum.value))
  {
    return false;
  }
  return true;
}
//--------------------------------------------------------------
function isNumeric(value, mand)
{
 var validChars = "0123456789.";
 var strChar;
 var isNumeric = true;

 if (value.length == 0) return !mand;
 for (i = 0; i < value.length && isNumeric == true; i++)
 {
   strChar = value.charAt(i);
   if (validChars.indexOf(strChar) == -1)
   {
     isNumeric = false;
   }
 }
 return isNumeric;
}
//--------------------------------------------------------------
function isNumericInteger(value, mand)
{
 var validChars = "0123456789";
 var strChar;
 var isNumeric = true;

 if (value.length == 0) return !mand;
 for (i = 0; i < value.length && isNumeric == true; i++)
 {
   strChar = value.charAt(i);
   if (validChars.indexOf(strChar) == -1)
   {
     isNumeric = false;
   }
 }
 return isNumeric;
}
//--------------------------------------------------------------
function clearSelectList( selList ) {
  if ( selList != null ) {
     var i = selList.length - 1;
     for(; i >="0" ; i--) {
        selList[ i ] = null;
     }
  }
}
//--------------------------------------------------------------

