/* Generated 18 May 2003 22:08 by livedonkey.scriptOptimise.vbs v2.4 (livedonkey.net) */
/* script: webFormControl v1.08 url: livedonkey.net updated: 25/02/2003 updated: 18/05/2003  Available rules:  num = numeric alp = alpha ema = email x= where x is the maximum n-z = where n is min and z is max x-= where x is the minimum equ = where field equals field_check eqn = where field equals field_check and is a number eqm = where field equals field_check and is an email */var popupWindow=null;function closeDependantWindows(){if(popupWindow&&popupWindow.open&&!popupWindow.closed){popupWindow.close();}popupWindow=null;}function ignorePrefix(prefList,f){if(!f){return "Error: You must specify a valid field object!\n";}var fName;if(!f.name&&f.length&&!f.type&&f[0]&&f[0].name)fName=f[0].name;else fName=f.name;if(!prefList||!prefList.length){return fName;}for(var p=0;p<prefList.length;p++){if(fName.indexOf(prefList[p])>-1){return fName.replace(eval("/^"+prefList[p]+"/g"),"");}}return fName;}function fcheckRequiredFields(d){return webFormControl(d);}function webFormControl(d){var i;var j;var tmp;var requiredFields;var boolDebug;var oField;var fieldValue;var fieldAttributes;var fieldRange;var fieldRealName;var fieldEasyName;var fieldMin;var fieldMax;var fieldRule;var fieldFocus;var strOutput="";var strDebug="";var strRules="";var displayType;var displayTitle="";var displayHead="";var displayFoot="";var displayCSS="";var prefixList;var outputBuffer="";var outputData;var outputDataDescription;var popupParams;popupParams="height=250, "+"width=400, "+"scrollbars=yes, "+"status=no, "+"menu=no, "+"title=no, "+"resizable=yes, "+"location=no, "+"menubar=no, "+"toolbar=no";if(!d.requiredRules)return true;if(d.requiredDebug&&d.requiredDebug.value!=0)boolDebug=true;if(!boolDebug&&d.requiredRules.value=="")return true;if(d.requiredMsgType)displayType=d.requiredMsgType.value.toString().toLowerCase();else displayType="alert";if(d.requiredMsgTitle)displayTitle=d.requiredMsgTitle.value;if(d.requiredMsgHead)displayHead=d.requiredMsgHead.value;if(d.requiredMsgFoot)displayFoot=d.requiredMsgFoot.value;if(d.requiredMsgCSS)displayCSS=d.requiredMsgCSS.value;if(d.requiredIgnorePrefix)prefixList=d.requiredIgnorePrefix.value.split(",");if(popupWindow&&popupWindow.open&&!popupWindow.closed){popupWindow.close();}popupWindow=null;if(document.all&&document.all.requiredOutput){document.all.requiredOutput.innerHTML="";}requiredFields=d.requiredRules.value;requiredFields=requiredFields.replace(/\s/g, "");requiredFields=requiredFields.split(";");for(i=0;i<requiredFields.length;i++){if(requiredFields[i]=="")continue;if(requiredFields[i].indexOf(":")>-1){fieldAttributes=requiredFields[i].split(":");fieldRealName=fieldAttributes[0];fieldMin=0,fieldMax=0,fieldRule="";oField=eval("d."+fieldRealName);if(!oField){strDebug+="Element '"+fieldRealName+"' does not exist in form '"+d.name+"'!\n";continue;}fieldEasyName=ignorePrefix(prefixList,oField);if(fieldRealName!=fieldEasyName){strDebug+="'"+fieldRealName+"' renames to '"+fieldEasyName+"'\n";}if(oField.length&&!oField.type||oField.type=="select-one"){if(!oField.type)strDebug+="Element '"+fieldRealName+"' is a radio button, rule must be in the form of '"+fieldRealName+";' not '"+requiredFields[i]+";'\n";else strDebug+="Element '"+fieldRealName+"' is a select-one list, rule must be in the form of '"+fieldRealName+";' not '"+requiredFields[i]+";'\n";requiredFields.length++;tmp=(requiredFields.length-1);requiredFields[tmp]=fieldRealName;continue;}for(j=1;j<fieldAttributes.length;j++){if(fieldAttributes[j]=="")continue;if(fieldAttributes[j].indexOf("-")>-1){fieldRange=fieldAttributes[j].split("-");if(!isNaN(fieldRange[0])){fieldMin=fieldRange[0];}if(!isNaN(fieldRange[1])){fieldMax=fieldRange[1];}}else{if(!isNaN(fieldAttributes[j])){fieldMin=0;fieldMax=fieldAttributes[j];}}if(fieldAttributes[j]=="num"||fieldAttributes[j]=="equ"||fieldAttributes[j]=="eqn"||fieldAttributes[j]=="eqm"||fieldAttributes[j]=="alp"||fieldAttributes[j]=="ema"){fieldRule=fieldAttributes[j];}}if(parseInt(fieldMin)>parseInt(fieldMax)){tmp=fieldMax;fieldMax=fieldMin;fieldMin=tmp;}if(!(parseInt(fieldMin)>=0))fieldMin=0;if(!(parseInt(fieldMax)>=0))fieldMax=0;fieldValue=oField.value;if(fieldMin>0&&(fieldMin==fieldMax)){if(fieldValue.length!=fieldMax){tmp=(fieldMax==1)?" character":" characters";strOutput+=fieldEasyName+" must be exactly "+fieldMax+tmp+" long\n";}}else{if(fieldValue.length<fieldMin){tmp=(fieldMin==1)?" character":" characters";strOutput+=fieldEasyName+" must be at least "+fieldMin+tmp+" long\n";}if(fieldValue.length>fieldMax&&fieldMax!=0){tmp=(fieldMax==1)?" character":" characters";strOutput+=fieldEasyName+" must not be more than "+fieldMax+tmp+"\n";}}if(fieldRule!=""){switch(fieldRule.toLowerCase()){case "equ":tmp=eval("d."+fieldRealName+"_check");if(tmp){if(fieldValue!=tmp.value){strOutput+=fieldEasyName+"'s do not match\n";}}else{strDebug+="Element '"+fieldRealName+"_check' does not exist in form '"+d.name+"'!\n";}break;case "eqn":if(isNaN(fieldValue)){strOutput+=fieldEasyName+" must be numeric\n";break;}tmp=eval("d."+fieldRealName+"_check");if(tmp){if(fieldValue!=tmp.value){strOutput+=fieldEasyName+"'s do not match\n";}}else{strDebug+="Element '"+fieldRealName+"_check' does not exist in form '"+d.name+"'!\n";}break;case "eqm":if(!validEmail(fieldValue)){strOutput+=fieldEasyName+" must be a valid email address\n";break;}tmp=eval("d."+fieldRealName+"_check");if(tmp){if(fieldValue!=tmp.value){strOutput+=fieldEasyName+"'s do not match\n";}}else{strDebug+="Element '"+fieldRealName+"_check' does not exist in form '"+d.name+"'!\n";}break;case "num":if(isNaN(fieldValue)){strOutput+=fieldEasyName+" must be numeric\n";}break;case "alp":if(!isNaN(fieldValue)){strOutput+=fieldEasyName+" must contain alphanumeric characters\n";}break;case "ema":if(!(fieldMin==0&&fieldValue.length==0)){if(!validEmail(fieldValue)){strOutput+=fieldEasyName+" must be a valid email address\n";}}break;default:strDebug+="The rule '"+fieldRule+"' for "+fieldRealName+" is not a valid rule\n";}}else{fieldRule="any*";}strRules+=fieldRealName+": "+"Min is "+fieldMin+", Max is "+fieldMax+", Rule is "+fieldRule+"\n";}else{oField=eval("d."+requiredFields[i]);if(!oField){strDebug+="Element '"+requiredFields[i]+"' does not exist in form '"+d.name+"'!\n";continue;}fieldRealName=requiredFields[i];fieldEasyName=ignorePrefix(prefixList,oField);if(fieldRealName!=fieldEasyName){strDebug+="'"+fieldRealName+"' renames to '"+fieldEasyName+"'\n";}if(oField.length&&!oField.type){tmp=false;for(j=0;j<oField.length;j++){if(!tmp)tmp=oField[j].checked;}if(!tmp){strOutput+="You must choose an option for "+fieldEasyName+"\n";}strRules+=fieldRealName+": Rule is choose\n";}else{switch(oField.type){case "select-one":if(oField.options[oField.selectedIndex].value==""){strOutput+="You must select an option for "+fieldEasyName+"\n";}strRules+=fieldRealName+": Rule is select-one\n";break;default:if(oField.value==""){strOutput+="You must specify a value for "+fieldEasyName+"\n";}strRules+=fieldRealName+": Rule is specify\n";}}}if(strOutput!=""&&!fieldFocus)fieldFocus=fieldRealName;}if(fieldFocus){fieldFocus=eval("d."+fieldFocus);if(fieldFocus&&fieldFocus.type){if(eval("d."+fieldFocus.name+"_check")&&eval("d."+fieldFocus.name+"_check.value")!=""&&eval("d."+fieldFocus.name+"_check.value")!=fieldFocus.value){fieldFocus=eval("d."+fieldFocus.name+"_check");}fieldFocus.focus();if(fieldFocus.type.substring(0,6)!="select"){fieldFocus.select();}}else{if(fieldFocus.length&&fieldFocus[0]){fieldFocus[0].focus();}}}if(boolDebug){outputData=new Array("strOutput","strDebug","strRules");outputDataDescription=new Array("Errors Found:","Debugging Information:","Rules Processed:");}else{outputData=new Array("strOutput");outputDataDescription=new Array("Please check the following:");}if(displayTitle!="")outputBuffer+='<div class="text-title">\n\t'+unescape(displayTitle)+'\n</div>\n';if(displayHead!="")outputBuffer+='<div class="text-head">\n\t'+unescape(displayHead)+'\n</div>\n'+'<div class="text-space">\n\t&nbsp;\n</div>\n';for(i=0;i<outputData.length;i++){outputBuffer+='<div class="text-subheading">\n\t'+outputDataDescription[i]+'\n</div>\n';outputBuffer+='<div class="text-normal">\n';tmp=eval(outputData[i]+".split('\\n')");for(j=0;j<tmp.length;j++){if(tmp[j]!="")outputBuffer+='\t'+unescape(tmp[j])+'<br />\n';else if(j==0)outputBuffer+='\tNone<br />\n';}outputBuffer+='</div>\n';outputBuffer+='<div class="text-space">\n\t&nbsp;\n</div>\n';}if(displayFoot!="")outputBuffer+='<div class="text-foot">\n\t'+unescape(displayFoot)+'\n</div>\n';if(strOutput!=""||boolDebug){switch(displayType){case "popup":popupWindow=window.open("","",popupParams);if(popupWindow&&popupWindow.open&&!popupWindow.closed){popupWindow.document.writeln("<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>");popupWindow.document.writeln("<!DOCTYPE html \n\tPUBLIC \"-/"+"/W3C/"+"/DTD XHTML 1.0 Transitional/"+"/EN\" \n\t\"http:/"+"/www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">");popupWindow.document.writeln("");popupWindow.document.writeln("<html xmlns=\"http:/"+"/www.w3.org/1999/xhtml\">\n<head>\n\t<title>"+unescape(displayTitle)+"</title>");if(displayCSS!=""){popupWindow.document.writeln("\t<link href=\""+unescape(displayCSS)+"\" rel=\"stylesheet\" type=\"text/css\" />");}popupWindow.document.writeln("\t<scr"+"ipt language=\"javascr"+"ipt\" type=\"text/javascr"+"ipt\">\n\t<!--");popupWindow.document.writeln("\t\tfunction keepFocus( vtimeout ) {");popupWindow.document.writeln("\t\tif(!(vtimeout) || isNaN(vtimeout)) vtimeout = 2000;");popupWindow.document.writeln("\t\tthis.window.focus();");popupWindow.document.writeln("\t\tsetTimeout( 'keepFocus( ' + vtimeout + ' )', vtimeout);");popupWindow.document.writeln("\t\t}");popupWindow.document.writeln("\t/"+"/ -->\n\t</scr"+"ipt>");popupWindow.document.writeln("</head>\n\n<body id=\"popWindow\" onload=\"keepFocus(500);\">");popupWindow.document.write(outputBuffer);popupWindow.document.writeln("</body>\n</html>\n");popupWindow.keepFocus(400);popupWindow.focus();}break;case "span":if(document.all&&document.all.requiredOutput){document.all.requiredOutput.innerHTML=outputBuffer;break;}else{strDebug+="Element 'requiredOutput' (Layer) does not exist in form '"+d.name+"'!\n";}default:if(displayTitle!=""){outputBuffer=unescape(displayTitle)+'\n';}if(displayHead!=""){outputBuffer+=unescape(displayHead)+'\n\n';}for(i=0;i<outputData.length;i++){outputBuffer+=outputDataDescription[i]+'\n';if(eval(outputData[i])!="")outputBuffer+=unescape(eval(outputData[i])+'\n');else if(i==0)outputBuffer+='None\n\n';}if(displayFoot!=""){outputBuffer+=unescape(displayFoot)+'\n\n';}alert(outputBuffer);}return false;}else{return true;}}function validEmail(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];if(user.match(userPat)==null){return false}var IPArray=domain.match(ipDomainPat);if(IPArray!=null){for(var i=1;i<=4;i++){if(IPArray[i]>255){return false}}return true}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>3){return false}if(len<2){var errStr="This address is missing a hostname!";return false}return true;}