<!--
/******/

function isFilled(elm) {
    if (elm.value == "" || elm.value == null)
    return false;
    else return true;
}
/******/
function isChecked(elm) {
    if (elm.checked) {
        return true;
    } else {
        return false;
    }
}
/******/
function isNumeric(elm) {
    var regexp1 = /^(\d+)$/;
    var regexp2 = /[1-9]/; // has at least one non-zero value
    if (regexp1.test(elm.value) && regexp2.test(elm.value))
    {
        // strip leading zeros
        elm.value=elm.value.replace(/^0+/g,"");
        return true;
    }
    else
        return false;
}
/******/
function isNumericWithLeadingZero(elm) {
    var regexp1 = /^(\d+)$/;
    var regexp2 = /[0-9]/; // has at least one numeric value including zero
    if (regexp1.test(elm.value) && regexp2.test(elm.value))
    {
        // strip leading zeros
//        elm.value=elm.value.replace(/^0+/g,"");
        return true;
    }
    else
        return false;
}
/******/
function isFloat(elm) {
    var regexp1 = /^((\d+(\.\d*)?)|((\d*\.)?\d+))$/;
    var regexp2 = /[1-9]/;  // has at least one non-zero value
    if (regexp1.test(elm.value) && regexp2.test(elm.value)) {
        // strip leading zeros
        elm.value = elm.value.replace(/^0+/g,"");
        return true;
    }
    else
        return false;
}
/******/
// Updated to set the element value to ddddd-dddd if 9 digits.
// rschramm - 2/6/01.
function isZipValid(elm) {
    var regexp = /^(\d{5}|\d{9}|\d{5}-\d{4})$/;
    var val;
    if ( regexp.test(elm.value) )
    {
       val=elm.value.replace(/[^\d]/,'');
       if (val.length == 5)
          return true;
       else
       {
          regexp2 = /(\d{5})(\d{4})/;
          var parsed = regexp2.exec(val);
          elm.value = parsed[1]+"-"+parsed[2];
          return true;
       }
    }
    else
        return false;
}
/******/
function isPhoneValid(elm) {
    // takes parentheses, spaces, hyphens, and dots as separators of digits
    // match 10 digits, or (ddd) ddd-dddd or 3 digits 3 digits and 4 digits each
    // group seperated by 0 or 1 spaces, dots, or dashes.
    // modified by rschramm 2/5/2001
    var regexp = /^(\d{10}|\(\d{3}\)\s*\d{3}-\d{4}|\d{3}[\-\.\s]?\d{3}[\-\.\s]?\d{4})$/;
    if (regexp.test(elm.value))
    {
      var modVal = elm.value.replace(/[^\d]/g,"");
      var valChop = /(\d{3})(\d{3})(\d{4})/;
      result = valChop.exec(modVal);
      elm.value = result[1]+"-"+result[2]+"-"+result[3];
      return true;
    }
    else
      return false;
}
/******/
function checkMenus(elm){
    if ((elm.value == "noselection") || (elm.value == null))
    return false;
    else return true;
}
/******/
function verifyNewPassword(p1, p2) {
    if (p1.value != p2.value)
        return false;
    else
        return true;
}
/******/
function isPasswordValidLength(elm) {
    if ((elm.value.length < 6) || (elm.value.length > 20))
        return false;
    else
        return true;
}
/******/
function isAlphanumeric(elm) {
    var regexp = /^\w+$/;
    if (regexp.test(elm.value))
        return true;
    else
        return false;
}
/******/
function isAlphabetic(elm) {
    var regexp = /^[a-zA-Z]+$/;
    if (regexp.test(elm.value))
        return true;
    else
        return false;
}
/******/
function isAlphabeticPlusSpacesAndPeriods(elm) {
    // spaces should only be in between words and periods should begin a word
    elm.value = elm.value.replace(/^\s+|\s+$/g,"");
    var regexp = /^[a-zA-Z\s\.\-]+$/;
    if (regexp.test(elm.value)) {
        // invalid combination of characters
        regexp = /\B\.|\b\.\b|\B\-|\-\B/g;
        if (!regexp.test(elm.value))
            return true;
    }
    // if we got here, the string failed the test.
    return false;
}
/******/
function isAlphanumericPlusSpaces(elm) {
    // spaces should only be between words
    elm.value = elm.value.replace(/^\s+|\s+$/g,"");
    var regexp = /^[\w\s]+$/;
    if (regexp.test(elm.value))
        return true;
    else
        return false;
}
/******/
function isAlphanumericPlusSpacesAndPeriods(elm) {
    // spaces should only be in between words and periods should begin a word
    elm.value = elm.value.replace(/^\s+|\s+$/g,"");
    var regexp = /^[\/\w\s\.]+$/;
    if (regexp.test(elm.value)) {
        // invalid combination of characters
        regexp = /\B\.|\b\.\b|\B\/|\/\B/g;
        if (!regexp.test(elm.value))
            return true;
    }
    return false;
}
/******/
function isAlphanumericPlusSpacesAndPeriodsAndPound(elm) {
    // remove leading or trailing spaces
    elm.value = elm.value.replace(/^\s+|\s+$/g,"");
    // v2.9
    // Modify 'A.B' type of instances so they will pass the \b\.\b test
    // but don't push these changes to the form value.
    // This is so P.O., N.E and similar are accepted, but not modified.
    var tempStr = elm.value.replace(/\b([a-zA-Z])\.([a-zA-Z])\b/g,"$1$2");
    var regexp = /^[0-9A-Za-z\/\s\.#\-]+$/;
    // Are there any valid characters?
    if (regexp.test(tempStr)) {
        // Are there any invalid combination of characters?
        regexp = /\B\.|\b\.\b|\B\/|\/\B|#\B|\b#\b|\-\B|\B\-/g;
        if (!regexp.test(tempStr))
            return true;
    }
    return false;
}
/******/
function isCreditCardTypeNumberValid(ccType, ccNum) {
// 	if (ccType.value != "Smith Noble")
    	st = ccNum.value.replace(/[^\d]/g,"");
// 	else
// 		st = ccNum.value;
	
    var prefix;
    if (st.length > 16)
        return (false);
    // Mastercard length should be 16 & prefix should start with 51-55
    if (ccType.value == "MasterCard") {
        if (st.length != 16)
            return (false);
        else {
            prefix = st.substring(0, 2);
            if ((prefix < 51) || (prefix >  55))
                return (false);
        }
     }
     // Visa length should be either 13 or 16 and prefix should be 4
     if (ccType.value == "Visa") {
        if ((st.length !=13) && (st.length !=16))
            return (false);
        else {
            prefix = st.substring(0, 1);
            if (prefix != 4)
                return (false);
        }
     }
     // American express length should be 15 & prefix should be either 34 or 37
     if (ccType.value == "American Express") {
        if (st.length != 15)
            return (false);
        else {
            prefix = st.substring(0, 2);
            if ((prefix != 34) && (prefix !=  37))
                return (false);
        }
     }
     // Discover length should be 16 & prefix should be 6011
     if (ccType.value == "Discover") {
        if (st.length != 16)
            return (false);
        else {
            prefix = st.substring(0, 4);
            if (prefix != 6011)
                return (false);
        }
     }
     // Smith Noble length should be min 14 and max 16
     if (ccType.value == "Smith Noble") {
        if (st.length != 16)
            return (false);
     }     
     return(true);
}
/******/
function isCreditCard(elm) {
    st = elm.value.replace(/[^\d]/g,"");
    // Encoding only works on cards with less than 19 digits
    if (st.length > 19)
        return (false);
    sum = 0; mul = 1; l = st.length;
    for (i = 0; i < l; i++) {
        digit = st.substring(l-i-1,l-i);
        tproduct = parseInt(digit ,10)*mul;
        if (tproduct >= 10)
            sum += (tproduct % 10) + 1;
        else
            sum += tproduct;
        if (mul == 1)
            mul++;
        else
            mul--;
    }
    if ((sum % 10) == 0) {
        elm.value = st;
        return (true);
    }
    else {
        return (false);
    }
}
/******/
function submitForm(formname, elementname, message) {
    if (IE) {
        frmName = eval('document.all.' + formname);
        frmElement = eval('document.all.' + formname + '.' + elementname);
    }
    else {
        frmName = eval('document.' + formname);
        frmElement = eval('document.' + formname + '.' + elementname + '.options[document.' + formname + '.' +  elementname + '.selectedIndex]');
    }
    if (checkMenus(frmElement))
        frmName.submit();
    else
        alert(message);
}
/******/
function checkSwatchNumber(swatchNumber) {
    for (var i = 0; i < swatchNumber.length; i++) {
        var oneChar = swatchNumber.substring(i, i + 1);
        if (oneChar < "0" || oneChar > "9")
            return (false);
    }
    return(true);
}
/******/
function checkAmount(certAmount) {
    var giftLoot = certAmount
    var amount = parseInt(giftLoot);
    if (amount <= 24)
        return (false);
}
/******/
// Validates a single email address
// Moved logic to seperate function validateEmailAddress
function isEmailValid(elm) {
    var emailStr = elm.value;
    return validateEmailAddress(emailStr);
}
/******/
// Validates a list of email addresses.
// rschramm 2/6/2001
function isEmailListValid(elm) {
   var list = elm.value.replace(/\s+/g,"");
   var listArray = new Array;
   listArray = list.split(/,/);
   for (i=0; i < listArray.length; i++) {
      retval = validateEmailAddress(listArray[i]);
      if (!retval)
        return false;
   }
   return true;
}
/******/
// This is now an internal function that is called by isEmailValid and
// isEmailListValid - rschramm 2/6/01
// It takes a string now, and not a form element.
// <!-- This script and many more are available free online at -->
// <!-- The JavaScript Source!! http://javascript.internet.com -->
function validateEmailAddress(emailStr) {
    var emailPat=/^(.+)@(.+)$/ ;
    var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]";
    var validChars="\[^\\s" + specialChars + "\]";
    var quotedUser="(\"[^\"]*\")";
    var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/ ;
    var atom=validChars + '+';
    var word="(" + atom + "|" + quotedUser + ")";
    var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
    var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");
    var matchArray=emailStr.match(emailPat);
    if (matchArray==null)
        return false;
    var user=matchArray[1];
    var domain=matchArray[2];
    // See if "user" is valid
    if (user.match(userPat)==null)
        return false;
    var IPArray=domain.match(ipDomainPat);
    if (IPArray!=null) {
        // this is an IP address
        for (var i=1;i<=4;i++) {
            if (IPArray[i]>255)
                return false;
        }
        return true;
    }
    // Domain is symbolic name
    var domainArray=domain.match(domainPat)
    if (domainArray==null)
        return false;
    var atomPat=new RegExp(atom,"g");
    var domArr=domain.match(atomPat);
    var len=domArr.length;
    if (domArr[domArr.length-1].length<2 ||
        domArr[domArr.length-1].length>4)
       return false;
    if (len<2)
       return false;
    return true;
}
/******/
function isDateExpired(monElm,yrElm) {
   var now = new Date();
   var nowMon = now.getMonth() + 1;
   var nowYr = now.getFullYear();
   var mon = monElm.value;
   var yr = yrElm.value;
   if (yr > nowYr) {
       // It is next year or greater, so it is not expired.
       return false;
   }
   if (yr == nowYr && mon >= nowMon) {
       // It is this year, but it is this month or greater, so OK.
       return false;
   }
   else {
       // The above are the only two valid conditions so return true, indicating the date is expired.
       return true;
   }
}
/******/
function isGCListValid(elm)
{
   var list = elm.value.replace(/\s+/g,"");
   var listArray = new Array;
   listArray = list.split(/,/);
   for (i=0; i < listArray.length; i++) {
      retval = validateGiftCertificateNumber(listArray[i]);
      if (!retval)
        return false;
   }
   return true;
}
/******/
function isSRListValid(elm) {
   var list = elm.value.replace(/\s+/g,"");
   var listArray = new Array;
   listArray = list.split(/,/);
   for (i=0; i < listArray.length; i++) {
      retval = validateSwatchRebateNumber(listArray[i]);
      if (!retval)
        return false;
   }
   return true;
}
/******/
function isWorkOrderNumValid(elm) {
    var regexp = /^(\d{7})$/;
    elm.value.replace(/\s+/g,"");
    return regexp.test(elm.value);
}
/******/
function isCatalogSourceCode(elm){
    var regexp = /^(\d{8,9})$/;
    elm.value.replace(/\s+/g,"");
    return regexp.test(elm.value);
}
/******/
function validateGiftCertificateNumber(gcnum) {
  var GCcheck = /^(\d){7}-(\d){2}$/;
  return GCcheck.test(gcnum);
}
/******/
function validateSwatchRebateNumber(swnum) {
  var SRcheck = /^(\d){7}$/;
  return SRcheck.test(swnum);
}
/******/
function setFocusOnError(elm, elmfocus, showmsg) {
    if (showmsg != true)
        return elm;
    else
        return elmfocus;
}
//-->
