// BASED ON FORM GUARD:// 	Form Guard// 	Copyright Xin Yang 2003, 2004// 	Web Site: www.yxScripts.com// 	EMail: m_yangxin@hotmail.com// 	Last Updated: Sep-01-2004// 	This script is free as long as the copyright notice remains intact.// WITH SOME ADDITIONS/CHANGES BY GERARD GLEESON// to consolidate all error messagesvar totalAlert="";// form submit countervar submitCounter=0;// regular expressions used by checking functionsvar reNonBlank=/[\S]/;var reHexColor=/^#[0-9a-fA-F]{6}$/;var reInt=/^\d+$/;var reSignedInt=/^(\+|-)?\d+$/;var reFloat=/^\d+(\.\d+)?$/;var reSignedFloat=/^(\+|-)?\d+(\.\d+)?$/;var reChar=/^[\w\-]+$/;// GG Note: This is not the reEmail expression from the original Form Guard// script, instead I used the expression from "JavaScript & DHTML Cookbook", // by Danny Goodman (pub. O'Reilly, 2003). The original rejected single // character names (e.g. a@domain.com) which are valid.var reEMail=/^[\w-]+(\.[\w-]+)*@([\w-]+\.)+[a-zA-Z]{2,7}$/;var reIP=/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/;var rePostalCA=/^(\w\d){3}$/;var reURL=/^http(s)?\:\/\/\w[\w\-]+(\.\w[\w\-]+)+([\/\%\?\&\+\#\.\w\-]+)*$/;var rePrice=/^\[0-9]{1,5}[.][0-9]{2$}/;function rpChar(f) {  var df=f;  df=df.replace(/\\/g, '\\\\');  df=df.replace(/\//g, '\\\/');  df=df.replace(/\[/g, '\\\[');  df=df.replace(/\]/g, '\\\]');  df=df.replace(/\(/g, '\\\(');  df=df.replace(/\)/g, '\\\)');  df=df.replace(/\{/g, '\\\{');  df=df.replace(/\}/g, '\\\}');  df=df.replace(/\</g, '\\\<');  df=df.replace(/\>/g, '\\\>');  df=df.replace(/\|/g, '\\\|');  df=df.replace(/\*/g, '\\\*');  df=df.replace(/\?/g, '\\\?');  df=df.replace(/\+/g, '\\\+');  df=df.replace(/\^/g, '\\\^');  df=df.replace(/\$/g, '\\\$');  return df;}function rePhone(f) {  var df=rpChar(f);  df=df.replace(/d/gi, '\\d');  df=df.replace(/w/gi, '(\\w|\\d)');  return new RegExp('^'+df+'$');}function reDate(f) {  var df=rpChar(f);  df=df.replace(/dd/gi, '\\d\\d');  df=df.replace(/mm/gi, '\\d\\d');  df=df.replace(/yyyy/gi, '\\d\\d\\d\\d');  return new RegExp('^'+df+'$');}function reCharNM(n,m) {  return new RegExp("\^[\\w\\-]{"+n+","+m+"}\$");}function reNumberN(n,mode) {  return new RegExp("\^"+(mode!=0?"(\\+\|-)?":"")+"\\d{1,"+n+"}\$");}function reNumberN2(n,mode) {  return new RegExp("\^"+(mode!=0?"(\\+\|-)?":"")+"\\d{"+n+"}\$");}function reNumberNM(n,m,mode) {  return new RegExp("\^"+(mode!=0?"(\\+\|-)?":"")+"\\d{1,"+n+"}(\\.\\d{1,"+m+"})?\$");}function reNumberNM2(n,m,mode) {  return new RegExp("\^"+(mode!=0?"(\\+\|-)?":"")+"\\d{"+n+"}\\.\\d{"+m+"}\$");}// wrapper functionsfunction _checkValue(re, value, msg, mode) {  if (!re.test(value)) {    _alertIt(msg, mode);    return (mode && mode==1)?true:false;  }  return true;}function _alertIt(msg, mode) {  if (mode) {    totalAlert+=msg+"\n";  }  else {    totalAlert="";    alert(msg);  }}function _checkIt(re, field, msg, mode) {  if (!re.test(field.value)) {    _alertIt(msg, mode);    if (field.select) {      field.select();    }    if (field.focus) {      field.focus();    }    return (mode && mode==1)?true:false;  }  return true;}function noErrors() {  if (totalAlert=="") {    return true;  }  else {    alert(totalAlert);    totalAlert="";    return false;  }}// the checking functionsfunction goodPasswords(field1, field2, msg1, msg2, mode) {  if (nonBlank(field1, msg1, mode?2:0) && nonBlank(field2, msg1, mode?2:0)) {    if (field1.value == field2.value) {      return true;    }    else {      _alertIt(msg2, mode);    }  }  return (mode && mode==1)?true:false;}function goodPasswordsLen(field1, field2, n, m, msg1, msg2, msg3, mode) {  if (nonBlank(field1, msg1, mode?2:0) && nonBlank(field2, msg1, mode?2:0)) {    if (field1.value == field2.value) {      if (goodCharLen(n, m, field1, msg3, mode?2:0)) {        return true;      }    }    else {      _alertIt(msg2, mode);    }  }  return (mode && mode==1)?true:false;}function goodEMails(field1, field2, msg1, msg2, mode) {  if (goodEMail(field1, msg1, mode?2:0) && goodEMail(field2, msg1, mode?2:0)) {    if (field1.value == field2.value) {      return true;    }    else {      _alertIt(msg2, mode);    }  }  return (mode && mode==1)?true:false;}function goodEMail2(value, msg, mode) {  return _checkValue(reEMail, value, msg, mode);}function goodMultiEMails(field, msg, mode) {  var values = field.value.split(/\s*[,;]\s*/), allGood = reNonBlank.test(field.value);  if (!allGood) {    _alertIt(msg, mode);  }  for (var i = 0; i < values.length && allGood; i++) {    if (reNonBlank.test(values[i])) {      allGood = goodEMail2(values[i], msg, mode?2:0);    }  }  return allGood?true:(mode && mode==1)?true:false;}function goodPhone(pf, field, msg, mode) {  return _checkIt(rePhone(pf), field, msg, mode);}function goodPostalCA(field, msg, mode) {  return _checkIt(rePostalCA, field, msg, mode);}function goodDate(df, field, msg, mode) {  if (_checkIt(reDate(df), field, msg, mode?2:0)) {    var di=field.value;    var y4=df.search(/yyyy/i), y=di.substring(y4, y4+4)-0;    var m2=df.search(/mm/i), m=di.substring(m2, m2+2)-1;    var d2=df.search(/dd/i), d=di.substring(d2, d2+2)-0;    var dd=new Date(y, m, d);    if (y==dd.getFullYear() && m==dd.getMonth() && d==dd.getDate()) {      return true;    }    else {      _alertIt(msg, mode);      field.select();      field.focus();    }  }  return (mode && mode==1)?true:false;}function goodIP(field, msg, mode) {  return _checkIt(reIP, field, msg, mode);}function goodChar(field, msg, mode) {  return _checkIt(reChar, field, msg, mode);}function goodEMail(field, msg, mode) {  return _checkIt(reEMail, field, msg, mode);}function goodInt(field, msg, mode) {  return _checkIt(reInt, field, msg, mode);}function goodSignedInt(field, msg, mode) {  return _checkIt(reSignedInt, field, msg, mode);}function goodFloat(field, msg, mode) {  return _checkIt(reFloat, field, msg, mode);}function goodSignedFloat(field, msg, mode) {  return _checkIt(reSignedFloat, field, msg, mode);}function goodIntLen(n, field, msg, mode) {  return _checkIt(reNumberN(n,0), field, msg, mode);}function goodSignedIntLen(n, field, msg, mode) {  return _checkIt(reNumberN(n,1), field, msg, mode);}function goodIntLen2(n, field, msg, mode) {  return _checkIt(reNumberN2(n,0), field, msg, mode);}function goodSignedIntLen2(n, field, msg, mode) {  return _checkIt(reNumberN2(n,1), field, msg, mode);}function goodCharLen(n, m, field, msg, mode) {  return _checkIt(reCharNM(n,m), field, msg, mode);}function goodFloatLen(n, m, field, msg, mode) {  return _checkIt(reNumberNM(n,m,0), field, msg, mode);}function goodSignedFloatLen(n, m, field, msg, mode) {  return _checkIt(reNumberNM(n,m,1), field, msg, mode);}function goodFloatLen2(n, m, field, msg, mode) {  return _checkIt(reNumberNM2(n,m,0), field, msg, mode);}function goodSignedFloatLen2(n, m, field, msg, mode) {  return _checkIt(reNumberNM2(n,m,1), field, msg, mode);}function _rangeIt(field, r1, r2, msg, mode) {  if (field.value>=r1 && field.value<=r2) {    return true;  }  else {    _alertIt(msg, mode);    field.select();    field.focus();    return (mode && mode==1)?true:false;  }}function rangeInt(field, r1, r2, msg, mode) {  if (goodInt(field, msg, mode?2:0)) {    return _rangeIt(field, r1, r2, msg, mode);  }  return (mode && mode==1)?true:false;}function rangeSignedInt(field, r1, r2, msg, mode) {  if (goodSignedInt(field, msg, mode?2:0)) {    return _rangeIt(field, r1, r2, msg, mode);  }  return (mode && mode==1)?true:false;}function rangeFloat(field, r1, r2, msg, mode) {  if (goodFloat(field, msg, mode?2:0)) {    return _rangeIt(field, r1, r2, msg, mode);  }  return (mode && mode==1)?true:false;}function rangeSignedFloat(field, r1, r2, msg, mode) {  if (goodSignedFloat(field, msg, mode?2:0)) {    return _rangeIt(field, r1, r2, msg, mode);  }  return (mode && mode==1)?true:false;}function rangeIntLen(n, field, r1, r2, msg, mode) {  if (goodIntLen(n, field, msg, mode?2:0)) {    return _rangeIt(field, r1, r2, msg, mode);  }  return (mode && mode==1)?true:false;}function rangeSignedIntLen(n, field, r1, r2, msg, mode) {  if (goodSignedIntLen(n, field, msg, mode?2:0)) {    return _rangeIt(field, r1, r2, msg, mode);  }  return (mode && mode==1)?true:false;}function rangeIntLen2(n, field, r1, r2, msg, mode) {  if (goodIntLen2(n, field, msg, mode?2:0)) {    return _rangeIt(field, r1, r2, msg, mode);  }  return (mode && mode==1)?true:false;}function rangeSignedIntLen2(n, field, r1, r2, msg, mode) {  if (goodSignedIntLen2(n, field, msg, mode?2:0)) {    return _rangeIt(field, r1, r2, msg, mode);  }  return (mode && mode==1)?true:false;}function rangeFloatLen(n, m, field, r1, r2, msg, mode) {  if (goodFloatLen(n, m, field, msg, mode?2:0)) {    return _rangeIt(field, r1, r2, msg, mode);  }  return (mode && mode==1)?true:false;}function rangeSignedFloatLen(n, m, field, r1, r2, msg, mode) {  if (goodSignedFloatLen(n, m, field, msg, mode?2:0)) {    return _rangeIt(field, r1, r2, msg, mode);  }  return (mode && mode==1)?true:false;}function rangeFloatLen2(n, m, field, r1, r2, msg, mode) {  if (goodFloatLen2(n, m, field, msg, mode?2:0)) {    return _rangeIt(field, r1, r2, msg, mode);  }  return (mode && mode==1)?true:false;}function rangeSignedFloatLen2(n, m, field, r1, r2, msg, mode) {  if (goodSignedFloatLen2(n, m, field, msg, mode?2:0)) {    return _rangeIt(field, r1, r2, msg, mode);  }  return (mode && mode==1)?true:false;}function _dd(n) {  return (n<10)?"0"+n:""+n;}function _getOffset(n) {  var d=new Date();  if (n!=0) {    d.setTime(d.getTime()+n*86400000);  }  return d.getFullYear()+""+_dd(d.getMonth()+1)+""+_dd(d.getDate())+"";}function _stringIt(df, d) {  var y4=df.search(/yyyy/i), m2=df.search(/mm/i), d2=df.search(/dd/i);  return d.substring(y4, y4+4)+d.substring(m2, m2+2)+d.substring(d2, d2+2);}function rangeDate(df, field, r1, r2, msg, mode) {  if (goodDate(df, field, msg, mode?2:0)) {    var d=_stringIt(df, field.value);    var r1x="", r2x="";    if (r1.search(/^\d+$/)!=-1) {      r1x=_getOffset(r1-0);    }    else {      r1x=_stringIt(df, r1);    }    if (r2.search(/^\d+$/)!=-1) {      r2x=_getOffset(r2-0);    }    else {      r2x=_stringIt(df, r2);    }    if (d<r1x || d>r2x) {      _alertIt(msg, mode);      field.select();      field.focus();    }    else {      return true;    }  }  return (mode && mode==1)?true:false;}function goodDateRange(df, field1, field2, msg, mode) {  if (goodDate(df, field1, msg, mode?2:0) && goodDate(df, field2, msg, mode?2:0)) {    if (_stringIt(df, field1.value)>_stringIt(df, field2.value)) {      _alertIt(msg, mode);      field1.focus();    }    else {      return true;    }  }  return (mode && mode==1)?true:false;}function goodDateRange2(df, field1, field2, msg, mode) {  if (goodDate(df, field1, msg, mode?2:0) && goodDate(df, field2, msg, mode?2:0)) {    if (_stringIt(df, field1.value)>=_stringIt(df, field2.value)) {      _alertIt(msg, mode);      field1.focus();    }    else {      return true;    }  }  return (mode && mode==1)?true:false;}function goodHexColor(field, msg, mode) {  return _checkIt(reHexColor, field, msg, mode);}function nonBlank(field, msg, mode) {  if (field.type) {    if (/file|select|text|password/.test(field.type)) {      return _checkIt(reNonBlank, field, msg, mode);    }    else if (/radio|checkbox/.test(field.type)) {      if (field.checked) {        return true;      }      else {        _alertIt(msg, mode);        field.focus();        return (mode && mode==1)?true:false;      }    }    else {      _alertIt("Invalid field for nonBlank() checking", mode);      return (mode && mode==1)?true:false;    }  }  else if (field.length && field[0].type && /radio|checkbox/.test(field[0].type)) {    for (var i=0; i<field.length; i++) {      if (field[i].checked) { return true; }    }    _alertIt(msg, mode);    field[0].focus();    return (mode && mode==1)?true:false;  }  else {    _alertIt("Invalid field for nonBlank() checking", mode);    return (mode && mode==1)?true:false;  }}function goodRadioedFields(form, fn, re, msgs, msg, mode) {  for (var i=0; i<form[fn].length; i++) {    if (form[fn][i].checked) {      return _checkIt(re, form[form[fn][i].value], msgs[i], mode);    }  }  _alertIt(msg, mode);  return (mode && mode==1)?true:false;}function goodRadioedFields2(form, fn, re, msgs, msg, mode) {  for (var i=0; i<form[fn].length; i++) {    if (form[fn][i].checked) {      return _checkIt(re[i], form[form[fn][i].value], msgs[i], mode);    }  }  _alertIt(msg, mode);  return (mode && mode==1)?true:false;}function noBadWords(field, strict, words, msg, mode) {  var lw=[], nwb=strict?'':'\\b';  for (var i=0; i<words.length; i++) {    lw[i]=nwb+words[i].toLowerCase()+nwb;  }  var re=new RegExp(lw.join("|"), "i");  if (re.test(field.value)) {    _alertIt(msg, mode);    return (mode && mode==1)?true:false;  }  else {    return true;  }}// credit card checking codes taken from Netscape LivePayment samples codes and modified to fit Form Guardfunction goodCreditCard(field, msg, mode) {  var sum=0, mul=1, l=field.value.length;  var digit, tproduct;  if (_checkIt(reInt, field, msg, mode?2:0)) {    for (var i=0; i<l; i++) {      digit=field.value.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) {      return true;    }    else {      _alertIt(msg, mode);      return (mode && mode==1)?true:false;    }  }}function goodVisa(field, msg, mode) {  if ((field.value.length==16 || field.value.length==13) && field.value.substring(0,1)==4) {    return goodCreditCard(field, msg, mode);  }  else {    _alertIt(msg, mode);    return (mode && mode==1)?true:false;  }}function goodMasterCard(field, msg, mode) {  var firstdig=field.value.substring(0,1), seconddig=field.value.substring(1,2);  if (field.value.length==16 && firstdig==5 && (seconddig>=1 && seconddig<=5)) {    return goodCreditCard(field, msg, mode);  }  else {    _alertIt(msg, mode);    return (mode && mode==1)?true:false;;  }}function goodAmericanExpress(field, msg, mode) {  var firstdig=field.value.substring(0,1), seconddig=field.value.substring(1,2);  if (field.value.length==15 && firstdig==3 && (seconddig==4 || seconddig==7)) {    return goodCreditCard(field, msg, mode);  }  else {    _alertIt(msg, mode);    return (mode && mode==1)?true:false;;  }}function goodDinersClub(field, msg, mode) {  var firstdig=field.value.substring(0,1), seconddig=field.value.substring(1,2);  if (field.value.length==14 && firstdig==3 && (seconddig==0 || seconddig==6 || seconddig==8)) {    return goodCreditCard(field, msg, mode);  }  else {    _alertIt(msg, mode);    return (mode && mode==1)?true:false;;  }}function goodCarteBlanche(field, msg, mode) {  return goodDinersClub(field, msg, mode);}function goodDiscover(field, msg, mode) {  var first4digs=field.value.substring(0,4);  if (field.value.length==16 && first4digs=="6011") {    return goodCreditCard(field, msg, mode);  }  else {    _alertIt(msg, mode);    return (mode && mode==1)?true:false;;  }}function goodEnRoute(field, msg, mode) {  var first4digs=field.value.substring(0,4);  if (field.value.length==15 && (first4digs=="2014" || first4digs=="2149")) {    return goodCreditCard(field, msg, mode);  }  else {    _alertIt(msg, mode);    return (mode && mode==1)?true:false;;  }}function goodJCB(field, msg, mode) {  var first4digs=field.value.substring(0,4);  if (field.value.length==16 && (first4digs=="3088" || first4digs=="3096" || first4digs=="3112" || first4digs=="3158" || first4digs=="3337" || first4digs=="3528")) {    return goodCreditCard(field, msg, mode);  }  else {    _alertIt(msg, mode);    return (mode && mode==1)?true:false;;  }}function notSubmitted(msg) {  if (submitCounter==0) {    submitCounter=1;    return true;  }  else {    alert(msg);    return false;  }}function goodURL(field, msg, mode) {  return _checkIt(reURL, field, msg, mode);}function validRequired(formField,fieldLabel){  var result = true;    if (formField.value == "")  {    alert('Please enter a value for the "' + fieldLabel +'" field.');    formField.focus();    result = false;  }    return result;}function validRequiredShipTo(formField,fieldLabel){  var result = true;    if (formField.value == "")  {    alert('Please enter a value for the "' + fieldLabel +'" field, or leave all Shipping name and address fields blank.');    formField.focus();    result = false;  }    return result;}function goodStringLen(n, m, field, msg) {  var str = field.value;  if ((str == null) || (str.length < n) || (str.length > m)) {    alert(msg);    return false;  } else {    return true;  }}function mygoodPhone(field, msg) {  // hard-coded to "(ddd) ddd-dddd" format, but allow trailing information such as ext. or comment  var str = field.value;  if ((str == null) || (str.length < 14)) {    alert(msg);    field.focus();    return false;  }  if (field.value.substring(0,1) != "(") {    alert(msg);    field.focus();    return false;  }  if (field.value.substring(4,6) != ") ") {    alert(msg);    field.focus();    return false;  }  if (field.value.substring(9,10) != "-") {    alert(msg);    field.focus();    return false;  }  var d1 = field.value.substring(1,4);  var d2 = field.value.substring(6,9);  var d3 = field.value.substring(10,14);  var nums = d1 + d2 + d3;  nums = nums.toString();  if (!nums.match(reInt)) {    alert(msg);    field.focus();    return false;  }  return true;}function goodPrice(field, msg, mode) {  return _checkIt(rePrice, field, msg, mode);}<!-- Original:  ArjoGod, Shauna Merritt --><!-- Modified By:  Ronnie T. Moore, Editor --><!-- This script and many more are available free online at --><!-- The JavaScript Source!! http://javascript.internet.com --><!-- BeginextArray = new Array(".gif", ".jpg", ".jpeg", ".png" );function LimitAttach(form, file) {  allowSubmit = false;  if (!file) return;  while (file.indexOf("\\") != -1)    file = file.slice(file.indexOf("\\") + 1);  ext = file.slice(file.indexOf(".")).toLowerCase();  for (var i = 0; i < extArray.length; i++) {    if (extArray[i] == ext) { allowSubmit = true; break; }  }    return true; // GTG: temporary - this code was rejecting valid ".jpg" filenames  if (allowSubmit) {    return true;  } else {    alert("Please only upload files that end in types:  "     + (extArray.join("  ")) + "\nPlease select a new "    + "file to upload and submit again.");    return false;  }}function validateContactInfo(theForm){  // Customize these calls for your form  // Start ------->  if (!validRequired(theForm.contactpurpose,"Contact Purpose"))  	return false;  	  if (!validRequired(theForm.firstname,"First Name"))    return false;  if (!validRequired(theForm.lastname,"Last Name"))    return false;      if (!validRequired(theForm.email,"Email Address"))    return false;      if (!goodEMail(theForm.email, "Invalid Email Address, format should be user@sitename.type"))    return false;      // <--------- End    return true;}function validatePaymentInfo(theForm){  // Customize these calls for your form  // Start ------->  // if PayPal then skip the rest of the checking  if (theForm.card_type.value == "PayPal")  	return true;    if (!validRequired(theForm.first_name,"First Name"))    return false;  if (!validRequired(theForm.last_name,"Last Name"))    return false;  if (!validRequired(theForm.address,"Address"))    return false;  if (!validRequired(theForm.city,"City/Town"))    return false;  if (!validRequired(theForm.state,"State/Province"))    return false;   if (!validRequired(theForm.zip,"Zip/Post Code"))    return false;       if (!validRequired(theForm.country,"Country"))    return false;          if (!validRequired(theForm.phone,"Phone"))    return false;      if (!validRequired(theForm.email,"Email Address"))    return false;      if (!goodEMail(theForm.email, "Invalid Email Address, format should be user@sitename.type"))    return false;  if (!validRequired(theForm.card_num,"Credit Card Number"))    return false;          if (!goodCreditCard(theForm.card_num, "Invalid Credit Card Number"))    return false;  if (!validRequired(theForm.card_code, "Card Verification Code"))    return false;  // <--------- End    return true;}function validateShippingInfo(theForm){  // Customize these calls for your form  // Start ------->  // if any field is entered then all must be  if ((theForm.shipto_first_name.value) ||  	  (theForm.shipto_last_name.value)  ||   	  (theForm.shipto_company.value)    ||  	  (theForm.shipto_address.value)    ||  	  (theForm.shipto_city.value)       ||  	  (theForm.shipto_state.value)      ||  	  (theForm.shipto_zip.value)        ||  	  (theForm.shipto_country.value)    ||  	  (theForm.shipto_phone.value)) {  	    	if (!validRequiredShipTo(theForm.shipto_first_name,"First Name"))   	 	return false;  	if (!validRequiredShipTo(theForm.shipto_last_name,"Last Name"))    	return false;  	if (!validRequiredShipTo(theForm.shipto_address,"Address"))    	return false;  	if (!validRequiredShipTo(theForm.shipto_city,"City/Town"))    	return false;  	if (!validRequiredShipTo(theForm.shipto_state,"State/Province"))    	return false;   	if (!validRequiredShipTo(theForm.shipto_zip,"Zip/Post Code"))    	return false;       	if (!validRequiredShipTo(theForm.shipto_country,"Country"))    	return false;          	if (!validRequiredShipTo(theForm.shipto_phone,"Phone"))    	return false;  } //end-if any field entered  // <--------- End    return true;}function validateAddProductImages(theForm){	// For each image file field if there's a file specified then check it's type	// FUTURE IDEA: can we ceck its size also?//  alert('validateAddProductImages');  if (theForm.upload_main1.value) {	if (!LimitAttach(theForm, theForm.upload_main1.value)) {	    theForm.upload_main1.focus();	  	    return false;	}  }  if (theForm.upload_det1.value) {	if (!LimitAttach(theForm, theForm.upload_det1.value)) {	    theForm.upload_det1.focus();	  	    return false;	}  }  if (theForm.upload_swatch1.value) {	if (!LimitAttach(theForm, theForm.upload_swatch1.value)) {	    theForm.upload_swatch1.focus();	  	    return false;	}  }    if (theForm.upload_main2.value) {	if (!LimitAttach(theForm, theForm.upload_main2.value)) {	    theForm.upload_main2.focus();	  	    return false;	}  }  if (theForm.upload_det2.value) {	if (!LimitAttach(theForm, theForm.upload_det2.value)) {	    theForm.upload_det2.focus();	  	    return false;	}  }  if (theForm.upload_swatch2.value) {	if (!LimitAttach(theForm, theForm.upload_swatch2.value)) {	    theForm.upload_swatch2.focus();	  	    return false;	}  }    if (theForm.upload_main3.value) {	if (!LimitAttach(theForm, theForm.upload_main3.value)) {	    theForm.upload_main3.focus();	  	    return false;	}  }  if (theForm.upload_det3.value) {	if (!LimitAttach(theForm, theForm.upload_det3.value)) {	    theForm.upload_det3.focus();	  	    return false;	}  }  if (theForm.upload_swatch3.value) {	if (!LimitAttach(theForm, theForm.upload_swatch3.value)) {	    theForm.upload_swatch3.focus();	  	    return false;	}  }  if (theForm.upload_main4.value) {	if (!LimitAttach(theForm, theForm.upload_main4.value)) {	    theForm.upload_main4.focus();	  	    return false;	}  }  if (theForm.upload_det4.value) {	if (!LimitAttach(theForm, theForm.upload_det4.value)) {	    theForm.upload_det4.focus();	  	    return false;	}  }  if (theForm.upload_swatch4.value) {	if (!LimitAttach(theForm, theForm.upload_swatch4.value)) {	    theForm.upload_swatch4.focus();	  	    return false;	}  }      if (theForm.upload_main5.value) {	if (!LimitAttach(theForm, theForm.upload_main5.value)) {	    theForm.upload_main5.focus();	  	    return false;	}  }  if (theForm.upload_det5.value) {	if (!LimitAttach(theForm, theForm.upload_det5.value)) {	    theForm.upload_det5.focus();	  	    return false;	}  }  if (theForm.upload_swatch5.value) {	if (!LimitAttach(theForm, theForm.upload_swatch5.value)) {	    theForm.upload_swatch5.focus();	  	    return false;	}  }  if (theForm.upload_main6.value) {	if (!LimitAttach(theForm, theForm.upload_main6.value)) {	    theForm.upload_main6.focus();	  	    return false;	}  }  if (theForm.upload_det6.value) {	if (!LimitAttach(theForm, theForm.upload_det6.value)) {	    theForm.upload_det6.focus();	  	    return false;	}  }  if (theForm.upload_swatch6.value) {	if (!LimitAttach(theForm, theForm.upload_swatch6.value)) {	    theForm.upload_swatch6.focus();	  	    return false;	}  }  if (theForm.upload_main7.value) {	if (!LimitAttach(theForm, theForm.upload_main7.value)) {	    theForm.upload_main7.focus();	  	    return false;	}  }  if (theForm.upload_det7.value) {	if (!LimitAttach(theForm, theForm.upload_det7.value)) {	    theForm.upload_det7.focus();	  	    return false;	}  }  if (theForm.upload_swatch7.value) {	if (!LimitAttach(theForm, theForm.upload_swatch7.value)) {	    theForm.upload_swatch7.focus();	  	    return false;	}  }    if (theForm.upload_main8.value) {	if (!LimitAttach(theForm, theForm.upload_main8.value)) {	    theForm.upload_main8.focus();	  	    return false;	}  }  if (theForm.upload_det8.value) {	if (!LimitAttach(theForm, theForm.upload_det8.value)) {	    theForm.upload_det8.focus();	  	    return false;	}  }  if (theForm.upload_swatch8.value) {	if (!LimitAttach(theForm, theForm.upload_swatch8.value)) {	    theForm.upload_swatch8.focus();	  	    return false;	}  }    if (theForm.upload_main9.value) {	if (!LimitAttach(theForm, theForm.upload_main9.value)) {	    theForm.upload_main9.focus();	  	    return false;	}  }  if (theForm.upload_det9.value) {	if (!LimitAttach(theForm, theForm.upload_det9.value)) {	    theForm.upload_det9.focus();	  	    return false;	}  }  if (theForm.upload_swatch9.value) {	if (!LimitAttach(theForm, theForm.upload_swatch9.value)) {	    theForm.upload_swatch9.focus();	  	    return false;	}  }     if (theForm.upload_main10.value) {	if (!LimitAttach(theForm, theForm.upload_main10.value)) {	    theForm.upload_main10.focus();	  	    return false;	}  }  if (theForm.upload_det10.value) {	if (!LimitAttach(theForm, theForm.upload_det10.value)) {	    theForm.upload_det10.focus();	  	    return false;	}  }  if (theForm.upload_swatch10.value) {	if (!LimitAttach(theForm, theForm.upload_swatch10.value)) {	    theForm.upload_swatch10.focus();	  	    return false;	}  }    return true;}function validateAddProduct(theForm){  // Customize these calls for your form    // Start ------->  if (!validRequired(theForm.name,"Product name"))  	return false;  	  if (!validRequired(theForm.topcat,"Category"))    return false;  if (!validRequired(theForm.short_description,"Short Description"))    return false;      if (!validRequired(theForm.item_price,"Item Price"))    return false;      // (Sale Dates) - if present should be a valid date range  if (theForm.sale_start_date.value) {    if(!goodDate("yyyy-mm-dd", theForm.sale_start_date, "Please enter a valid Sale Start Date in YYYY-MM-DD format, or leave blank."))      return false;    if(!goodDate("yyyy-mm-dd", theForm.sale_end_date, "Please enter a valid Sale End Date in YYYY-MM-DD format, or leave blank."))      return false;  }      if (!validRequired(theForm.availability,"Availability"))    return false;  // <--------- End    return true;}function validateNewsletterForm(theForm){  // Customize these calls for your form  // Start ------->    // email address  if (!nonBlank(theForm.email, "Please provide your Email address")) {    return false;  }    //(contact email) valid email  if (theForm.email.value) {    if (!goodEMail(theForm.email, "Invalid Email address, format should be user@sitename.type"))      return false;  }  // <--------- End  return true;}