//////////////////////////////////////////////////////////////////////////////
// Archive: VArchive.js
// Created: Mon Sep 01 20:46:08 PDT 2008
// Generator: JSArchive [23]
// 
// The command line arguments to generate this file:
// <=%=> com.cleancode.format.JSArchive -c -f VArchive.js nc:C:/usr/ms/devel/cleancode-support/license/mpl-c.txt ../netscape/sniffer.js ../cleancode/Util/Version.js ../cleancode/Util/Common.js ../cleancode/Tracking/Trackable.js ../cleancode/DOM/crossbrowser.js ../cleancode/DOM/Element.js ../cleancode/Html/Generator.js ../cleancode/Data/Diagnostic.js ../cleancode/Data/InputData.js ../cleancode/Data/InputOptions.js ../cleancode/Data/UrlArgs.js ../cleancode/Cgi/PageValidator.js ../cleancode/Cgi/PageValidator/CheckItem.js ../cleancode/Cgi/PageValidator/LibraryMgr.js ../cleancode/Cgi/PageValidator/Plugin.js ../cleancode/Cgi/PageValidator/Plugin/CreditCardNum.js ../cleancode/Cgi/PageValidator/Plugin/Date.js ../cleancode/Cgi/PageValidator/Plugin/IsAmex.js ../cleancode/Cgi/PageValidator/Plugin/SamePassword.js ../cleancode/Cgi/PageValidator/MainLib/SysLib.js ../cleancode/Cgi/PageValidator/MainLib/UserLib.js ../cleancode/Cgi/PageValidator/PluginLib/CCLib.js
// 
// This file was generated automatically and should not be edited manually.
//////////////////////////////////////////////////////////////////////////////


// <=%=> C:/usr/ms/devel/cleancode-support/license/mpl-c.txt (saved 3%)
// last modified: Thu Dec 28 13:16:32 PST 2006

/*
 * The official license for this file is shown next.
 * Unofficially, consider this e-postcardware as well:
 * if you find this module useful, let us know via e-mail, along with
 * where in the world you are and (if applicable) your website address.
 */

/* ***** BEGIN LICENSE BLOCK *****
 * Version: MPL 1.1
 *
 * The contents of this file are subject to the Mozilla Public License Version
 * 1.1 (the "License"); you may not use this file except in compliance with
 * the License. You may obtain a copy of the License at
 * http://www.mozilla.org/MPL/
 *
 * Software distributed under the License is distributed on an "AS IS" basis,
 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
 * for the specific language governing rights and limitations under the
 * License.
 *
 * The Original Code is part of the CleanCode toolbox.
 *
 * The Initial Developer of the Original Code is Michael Sorens.
 * Portions created by the Initial Developer are Copyright (C) 2001-2004
 * the Initial Developer. All Rights Reserved.
 *
 * Contributor(s):
 *
 * ***** END LICENSE BLOCK *****
 */



// <=%=> ../netscape/sniffer.js (saved 52%)
// last modified: Thu Dec 14 16:46:31 PST 2006

function Is()
{
var agt=navigator.userAgent.toLowerCase();
this.major=parseInt(navigator.appVersion);
this.minor=parseFloat(navigator.appVersion);
this.nav=((agt.indexOf('mozilla')!=-1)&&(agt.indexOf('spoofer')==-1)
&&(agt.indexOf('compatible')==-1)&&(agt.indexOf('opera')==-1)
&&(agt.indexOf('webtv')==-1)&&(agt.indexOf('hotjava')==-1));
this.nav2=(this.nav&&(this.major==2));
this.nav3=(this.nav&&(this.major==3));
this.nav4=(this.nav&&(this.major==4));
this.nav4up=(this.nav&&(this.major>=4));
this.navonly=(this.nav&&((agt.indexOf(";nav")!=-1)||
(agt.indexOf("; nav")!=-1)));
this.nav6=(this.nav&&(this.major==5));
this.nav6up=(this.nav&&(this.major>=5));
this.gecko=(agt.indexOf('gecko')!=-1);
this.ie=((agt.indexOf("msie")!=-1)&&(agt.indexOf("opera")==-1));
this.ie3=(this.ie&&(this.major<4));
this.ie4=(this.ie&&(this.major==4)&&(agt.indexOf("msie 4")!=-1));
this.ie4up=(this.ie&&(this.major>=4));
this.ie5=(this.ie&&(this.major==4)&&(agt.indexOf("msie 5.0")!=-1));
this.ie5_5=(this.ie&&(this.major==4)&&(agt.indexOf("msie 5.5")!=-1));
this.ie5up=(this.ie&&!this.ie3&&!this.ie4);
this.ie5_5up=(this.ie&&!this.ie3&&!this.ie4&&!this.ie5);
this.ie6=(this.ie&&(this.major==4)&&(agt.indexOf("msie 6.")!=-1));
this.ie6up=(this.ie&&!this.ie3&&!this.ie4&&!this.ie5&&!this.ie5_5);
this.aol=(agt.indexOf("aol")!=-1);
this.aol3=(this.aol&&this.ie3);
this.aol4=(this.aol&&this.ie4);
this.aol5=(agt.indexOf("aol 5")!=-1);
this.aol6=(agt.indexOf("aol 6")!=-1);
this.opera=(agt.indexOf("opera")!=-1);
this.opera2=(agt.indexOf("opera 2")!=-1||agt.indexOf("opera/2")!=-1);
this.opera3=(agt.indexOf("opera 3")!=-1||agt.indexOf("opera/3")!=-1);
this.opera4=(agt.indexOf("opera 4")!=-1||agt.indexOf("opera/4")!=-1);
this.opera5=(agt.indexOf("opera 5")!=-1||agt.indexOf("opera/5")!=-1);
this.opera5up=(this.opera&&!this.opera2&&!this.opera3&&!this.opera4);
this.webtv=(agt.indexOf("webtv")!=-1);
this.TVNavigator=((agt.indexOf("navio")!=-1)||(agt.indexOf("navio_aoltv")!=-1));
this.AOLTV=this.TVNavigator;
this.hotjava=(agt.indexOf("hotjava")!=-1);
this.hotjava3=(this.hotjava&&(this.major==3));
this.hotjava3up=(this.hotjava&&(this.major>=3));
if(this.nav2||this.ie3)this.js=1.0;
else if(this.nav3)this.js=1.1;
else if(this.opera5up)this.js=1.3;
else if(this.opera)this.js=1.1;
else if((this.nav4&&(this.minor<=4.05))||this.ie4)this.js=1.2;
else if((this.nav4&&(this.minor>4.05))||this.ie5)this.js=1.3;
else if(this.hotjava3up)this.js=1.4;
else if(this.nav6||this.gecko)this.js=1.5;
else if(this.nav6up)this.js=1.5;
else if(this.ie5up)this.js=1.3
else this.js=0.0;
this.win=((agt.indexOf("win")!=-1)||(agt.indexOf("16bit")!=-1));
this.win95=((agt.indexOf("win95")!=-1)||(agt.indexOf("windows 95")!=-1));
this.win16=((agt.indexOf("win16")!=-1)||
(agt.indexOf("16bit")!=-1)||(agt.indexOf("windows 3.1")!=-1)||
(agt.indexOf("windows 16-bit")!=-1));
this.win31=((agt.indexOf("windows 3.1")!=-1)||(agt.indexOf("win16")!=-1)||
(agt.indexOf("windows 16-bit")!=-1));
this.win98=((agt.indexOf("win98")!=-1)||(agt.indexOf("windows 98")!=-1));
this.winnt=((agt.indexOf("winnt")!=-1)||(agt.indexOf("windows nt")!=-1));
this.win32=(this.win95||this.winnt||this.win98||
((this.major>=4)&&(navigator.platform=="Win32"))||
(agt.indexOf("win32")!=-1)||(agt.indexOf("32bit")!=-1));
this.winme=((agt.indexOf("win 9x 4.90")!=-1));
this.win2k=((agt.indexOf("windows nt 5.0")!=-1));
this.os2=((agt.indexOf("os/2")!=-1)||
(navigator.appVersion.indexOf("OS/2")!=-1)||
(agt.indexOf("ibm-webexplorer")!=-1));
this.mac=(agt.indexOf("mac")!=-1);
if(this.mac&&this.ie5up)this.js=1.4;
this.mac68k=(this.mac&&((agt.indexOf("68k")!=-1)||
(agt.indexOf("68000")!=-1)));
this.macppc=(this.mac&&((agt.indexOf("ppc")!=-1)||
(agt.indexOf("powerpc")!=-1)));
this.sun=(agt.indexOf("sunos")!=-1);
this.sun4=(agt.indexOf("sunos 4")!=-1);
this.sun5=(agt.indexOf("sunos 5")!=-1);
this.suni86=(this.sun&&(agt.indexOf("i86")!=-1));
this.irix=(agt.indexOf("irix")!=-1);
this.irix5=(agt.indexOf("irix 5")!=-1);
this.irix6=((agt.indexOf("irix 6")!=-1)||(agt.indexOf("irix6")!=-1));
this.hpux=(agt.indexOf("hp-ux")!=-1);
this.hpux9=(this.hpux&&(agt.indexOf("09.")!=-1));
this.hpux10=(this.hpux&&(agt.indexOf("10.")!=-1));
this.aix=(agt.indexOf("aix")!=-1);
this.aix1=(agt.indexOf("aix 1")!=-1);
this.aix2=(agt.indexOf("aix 2")!=-1);
this.aix3=(agt.indexOf("aix 3")!=-1);
this.aix4=(agt.indexOf("aix 4")!=-1);
this.linux=(agt.indexOf("inux")!=-1);
this.sco=(agt.indexOf("sco")!=-1)||(agt.indexOf("unix_sv")!=-1);
this.unixware=(agt.indexOf("unix_system_v")!=-1);
this.mpras=(agt.indexOf("ncr")!=-1);
this.reliant=(agt.indexOf("reliantunix")!=-1);
this.dec=((agt.indexOf("dec")!=-1)||(agt.indexOf("osf1")!=-1)||
(agt.indexOf("dec_alpha")!=-1)||(agt.indexOf("alphaserver")!=-1)||
(agt.indexOf("ultrix")!=-1)||(agt.indexOf("alphastation")!=-1));
this.sinix=(agt.indexOf("sinix")!=-1);
this.freebsd=(agt.indexOf("freebsd")!=-1);
this.bsd=(agt.indexOf("bsd")!=-1);
this.unix=((agt.indexOf("x11")!=-1)||this.sun||this.irix||this.hpux||
this.sco||this.unixware||this.mpras||this.reliant||
this.dec||this.sinix||this.aix||this.linux||this.bsd||this.freebsd);
this.vms=((agt.indexOf("vax")!=-1)||(agt.indexOf("openvms")!=-1));
}
var is;
var isIE3Mac=false;
if((navigator.appVersion.indexOf("Mac")!=-1)&&(navigator.userAgent.indexOf("MSIE")!=-1)&&
(parseInt(navigator.appVersion)==3))
isIE3Mac=true;
else is=new Is();


// <=%=> ../cleancode/Util/Version.js (saved 94%)
// last modified: Wed Jan 17 13:21:32 PST 2007

var VERSIONS={};
var versionShown={};
var configData;
function getVersion(vString){
return(/(\d[\d\.]*)/.exec(vString))[1];
}


// <=%=> ../cleancode/Util/Common.js (saved 62%)
// last modified: Tue Dec 19 21:11:31 PST 2006

VERSIONS['Util_Common']=getVersion('$Revision: 7 $');
function isListMember(enumList,value,ignoreCase){
for(var i=0;i<enumList.length;i++)
if((value==enumList[i])||(ignoreCase&&(uc(value)==uc(enumList[i]))))
return true;
return false;
}
function uc(s){
if(typeof(s)=="string")return s.toUpperCase();
var arr=new Array(s.length);
for(var i=0;i<s.length;i++)
arr[i]=s[i].toUpperCase();
return arr;
}
function toHash(tagList){
var tags=new Array();
for(var i=0;i<tagList.length;i++)tags[tagList[i]]=1;
return tags;
}
function exponent(val){
var count=0;
while(val>1){val>>=1;count++;}
return count;
}
function getPropNames(obj){
var newObj={};
for(var prop in obj)
if((typeof obj[prop]).search(/function/)==-1)newObj[prop]=obj[prop];
return toSortedArray(newObj).join(", ");
}
function toSortedArray(obj){
var arr=new Array();
for(var i in obj){arr[arr.length]=i;}
return arr.sort();
}
function abbrJoin(sep,list){
var newlist=list.slice(0,Math.min(3,list.length));
if(list.length>3)newlist[newlist.length]="...";
return newlist.join(sep);
}
function isValidDate(year,month,day){
var daysInMonth=[31,29,31,30,31,30,31,31,30,31,30,31];
return((day>=1&&day<=daysInMonth[month-1])&&
(month>=1&&month<=12)&&
(year>=1&&year<=10000)&&
(month!=2||day!=29||isLeapYear(year))&&
(year!=1752||month!=9||day<=2||day>=14));
}
function isLeapYear(year){
return((year%4==0)&&((year%100!=0)||(year%400==0)));
}
function formatPlaces(n,places){
var s=n+"";
while(s.length<places){s="0"+s;}
return s;
}


// <=%=> ../cleancode/Tracking/Trackable.js (saved 58%)
// last modified: Thu Aug 07 07:02:51 PDT 2008

VERSIONS['Trackable']=getVersion('$Revision: 380 $');
var Trackable_DiagA=0;
var Trackable_DiagB=0;
var Trackable_DiagC=0;
function Trackable(diag,settings){
this.enter=Trackable_enter;
this.leave=Trackable_leave;
this.print=Trackable_print;
this.warnPrint=Trackable_warnPrint;
this.errPrint=Trackable_errPrint;
this.enableCollectMsgs=Trackable_enableCollectMsgs;
this.processMsgs=Trackable_processMsgs;
this.getSetting=Trackable_getSetting;
this._storeMsg=Trackable_storeMsg;
this._tablePrint=Trackable_tablePrint;
this._formatTable=Trackable_formatTable;
this._fmt=Trackable_fmt;
this._orderColumns=Trackable_orderColumns;
if(diag){this.diag=diag;}
if(settings){this.settings=settings;}
if(VERSIONS['Diagnostic']!=null&&Trackable_DiagA==0){
Trackable_DiagA=Diagnostic_TRACE_DIAG;
Trackable_DiagB=Diagnostic_ACCESS_DIAG;
Trackable_DiagC=Diagnostic_VERSION_DIAG;
}
this.enter("Trackable");
this.leave();
return this;
}
Trackable.prototype.collectMsgs=true;
Trackable.prototype.WARN_TAG="w";
Trackable.prototype.ERR_TAG="e";
function Trackable_enter(id){
this.id=id;
if(versionShown[id]==null){
if(this.print(Trackable_DiagC,
"Version["+this.id+"]: "+VERSIONS[this.id])){
versionShown[id]=1;
}
}
this.print(Trackable_DiagA,"Object constructor START: "+this.id);
}
function Trackable_leave(){
this.print(Trackable_DiagA,"Object constructor END: "+this.id);
}
function Trackable_print(level,msg,width,height){
var isHash=((typeof msg).search(/object/)!=-1);
if(isHash){this._tablePrint(level,msg,width,height);return;}
return this.diag?
this.diag.print(level,this.id,msg):
this._storeMsg(level,this.id,msg);
}
function Trackable_warnPrint(msg){
if(this.diag){this.diag.warnPrint(this.id,msg);}
else{this._storeMsg(this.WARN_TAG,this.id,msg);}
}
function Trackable_errPrint(msg){
if(this.diag){this.diag.errPrint(this.id,msg);}
else{this._storeMsg(this.ERR_TAG,this.id,msg);}
}
function Trackable_enableCollectMsgs(onOffState){
Trackable.prototype.collectMsgs=onOffState;
}
function Trackable_processMsgs(diag){
this.diag=diag;
var checkType=typeof this.status;
checkType=checkType.toString();
if(checkType.search(/object/)==-1){return;}
if(this.diag){
this.diag.print(Trackable_DiagA,
"Trackable","===== retrieving stored messages");
for(var i=0;i<this.status.length;i++){
var item=this.status[i];
if(item.tag==this.ERR_TAG){
this.diag.errPrint(item.id,item.msg);
}
else if(item.tag==this.WARN_TAG){
this.diag.warnPrint(item.id,item.msg);
}
else{
this.diag.print(item.tag,item.id,item.msg);
}
}
this.diag.print(Trackable_DiagA,
"Trackable","===== finished retrieving stored messages");
}
else{alert("ERROR: Trackable: Diagnostic object not specified");}
}
function Trackable_getSetting(paramName,defaultValue){
var result=this.settings?
this.settings.getParam(paramName,defaultValue):defaultValue;
this.print(Trackable_DiagB,"Retrieving "+paramName+"="+this._fmt(result));
return result;
}
function Trackable_storeMsg(tag,id,msg){
if(!this.collectMsgs){return;}
if(this.status==null){this.status=new Array();}
this.status[this.status.length]={tag:tag,id:id,msg:msg};
return 1;
}
function Trackable_tablePrint(level,hashObj,width,height){
var winText=this._formatTable(hashObj);
if(this.tablePrintNewWin){
if(this.diag){
this.diag.winPrint(level,this.id,winText,width,height);
}
else{
this.warnPrint(
"No diag object to do a winPrint; reverting to inline display");
this.print(level,winText);
}
}
else this.print(level,winText);
}
function Trackable_formatTable(obj){
var title=this.id;
var colNames=this.fieldList;
var formatter=this.formatter||this.diag.formatter;
var orderedCols=
(colNames!=null)?this._orderColumns(colNames):["value"];
var tableAttr={border:4,cellspacing:0};
var titleAttr={'class':'titleCell'};
var s=formatter.cell("name",titleAttr);
for(var i=0;i<orderedCols.length;i++){
s+=formatter.cell(orderedCols[i],titleAttr);
}
var output=formatter.row(s,null);
var rows=toSortedArray(obj);
for(var i=0;i<rows.length;i++){
var itemName=rows[i];
s=formatter.cell(itemName);
var o=obj[itemName];
if(colNames==null){
s+=formatter.cell(this._fmt(o));
}
else{
for(var j=0;j<orderedCols.length;j++){
s+=formatter.cell(this._fmt(o[orderedCols[j]]));
}
}
output+=formatter.toggleRow(s,"evenCell","oddCell");
}
var formattedTable=formatter.table(output,tableAttr);
return this.tablePrintNewWin?
formatter.format(title,formattedTable,
formatter.include("stylesheet","styles/validate.css","text/css")):
formatter.section(title,2)+formattedTable;
}
function Trackable_orderColumns(colNames){
var cols=[];
for(var name in colNames){
var colIndex=colNames[name];
if(colIndex!=null&&colIndex>0){cols[colIndex-1]=name;}
}
var i=0;
var colList=toSortedArray(colNames);
for(var j=0;j<colList.length;j++){
var name=colList[j];
if(colNames[name]==null){
while(cols[i]!=null){i++;}
cols[i++]=name;
}
}
return cols;
}
function Trackable_fmt(item){
if(item==null||item==""){return"--";}
return((typeof item).search(/object/)==-1)?item:
this.tablePrintAbbr&&item.length>3?abbrJoin(", ",item):
item;
}


// <=%=> ../cleancode/DOM/crossbrowser.js (saved 61%)
// last modified: Tue Dec 19 21:11:31 PST 2006

VERSIONS['CrossBrowser']=getVersion('$Revision: 7 $');
function CrossBrowser(lyrname){
this.styleElem=
is.nav6up?document.getElementById(lyrname).style:
is.ie?document.all[lyrname].style:
eval("document."+lyrname);
this.elem=
is.nav6up?document.getElementById(lyrname):
is.ie?document.all[lyrname]:
eval("document."+lyrname);
return this;
}
function CrossBrowser_notSupported(){
}
function CrossBrowser_setVisibilityNS(visibility)
{
switch(visibility){
case'hidden':visibility='hide';break;
case'visible':visibility='show';break;
case'inherit':break;
default:visibility='show';break;
}
this.styleElem.visibility=visibility;
}
function CrossBrowser_setVisibilityStd(visibility)
{
this.styleElem.visibility=visibility;
}
function CrossBrowser_isVisibleStd(){
return(this.styleElem.visibility=="visible")
||(this.styleElem.visibility=="show");
}
function CrossBrowser_setTextNS(str)
{
}
function CrossBrowser_setTextStd(str)
{
if(typeof(this.elem.innerHTML)!='undefined'){
this.elem.innerHTML=str;
}
}
CrossBrowser.prototype.isVisible=CrossBrowser_isVisibleStd;
if(document.all||document.getElementsByName){
CrossBrowser.prototype.setVisibility=CrossBrowser_setVisibilityStd;
CrossBrowser.prototype.setText=CrossBrowser_setTextStd;
}
else if(document.layers){
CrossBrowser.prototype.setVisibility=CrossBrowser_setVisibilityNS;
CrossBrowser.prototype.setText=CrossBrowser_setTextNS;
}
else{
CrossBrowser.prototype.setVisibility=CrossBrowser_notSupported;
CrossBrowser.prototype.setText=CrossBrowser_notSupported;
}


// <=%=> ../cleancode/DOM/Element.js (saved 60%)
// last modified: Tue Dec 19 21:11:31 PST 2006

VERSIONS['DOM_Element']=getVersion('$Revision: 7 $');
var Element_DiagA;
var Element_MULT_SEPARATOR;
function DOM_Element(formElem,diag,settings){
this.superClass=Trackable;
this.superClass(diag,settings);
this.enter("DOM_Element");
this.elemValue=Element_elemValue;
this._doElement=Element_doElement;
var DEFAULT_MULT_SEPARATOR=" | ";
if(settings!=null&&Element_DiagA==null){
Element_DiagA=this.getSetting("ELEMENT_DIAGA",1);
Element_MULT_SEPARATOR=
this.getSetting("MULT_SEPARATOR",DEFAULT_MULT_SEPARATOR);
}
this._doElement(formElem);
return this;
}
DOM_Element.prototype=new Trackable;
function Element_elemValue(){return this.value;}
function Element_doElement(formElem){
var value="";
var extraText="";
var extraName="";
if(formElem==null){
this.errPrint("element '"+n+"' is not defined");
return;
}
switch(formElem.type){
case"select-one":
extraText="index="+formElem.selectedIndex;
if(formElem.selectedIndex==-1)break;
value=formElem.options[formElem.selectedIndex].value;
break;
case"select-multiple":
extraText="index="+formElem.selectedIndex;
if(formElem.selectedIndex==-1)break;
extraText="index["+formElem.options.length+" choices]";
for(var i=0;i<formElem.options.length;i++)
if(formElem.options[i].selected){
if(value!="")value+=Element_MULT_SEPARATOR;
value+=formElem.options[i].value;
extraText+=" "+i+"["+formElem.options[i].value+"],";
}
break;
case"checkbox":
value=formElem.checked;
break;
case"password":
case"text":
case"textarea":
case"hidden":
case"file":
value=formElem.value;
break;
case"radio":
this.warnPrint(
formElem.name+": singular radio button; checkBox preferred");
if(formElem.checked)value=formElem.value;
break;
default:
for(var j in formElem)if(j!="length")extraName=j;
if(formElem.length>0){
extraText="radio["+formElem.length+" choices]";
for(var j=0;j<formElem.length;j++)
if(formElem[j].checked){
extraText+=" index="+j;
value=formElem[j].value;
}
}
else{
this.errPrint("Unexpected form element: "+
(extraName!=""?extraName:formElem.name)+
": type= "+formElem.type+", value='"+formElem.value+"'");
value=formElem.value;
}
break;
}
this.value=value;
this.print(Element_DiagA,
(extraName!=""?extraName:formElem.name)+
": type="+formElem.type+", value='"+this.value+"'"+
(extraText!=""?" ("+extraText+")":""));
}


// <=%=> ../cleancode/Html/Generator.js (saved 59%)
// last modified: Sun Apr 27 21:36:15 PDT 2008

VERSIONS['Html_Generator']=getVersion('$Revision: 7 $');
var DEFAULT_DOCTYPE='<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">';
function Html_Generator(){
this.superClass=Trackable;
this.superClass(null,null);
this.enter("Html_Generator");
this.isFormatted=Generator_isFormatted;
this.format=Generator_format;
this.start=Generator_start;
this.end=Generator_end;
this.include=Generator_include;
this.section=Generator_section;
this.line=Generator_line;
this.exception=Generator_exception;
this.styleLine=Generator_styleLine;
this.emphasis=Generator_emphasis;
this.table=Generator_table;
this.toggleRow=Generator_toggleRow;
this.toggleCell=Generator_toggleCell;
this.row=Generator_row;
this.cell=Generator_cell;
this.anchor=Generator_anchor;
this.option=Generator_option;
this.select=Generator_select;
this.generic=Generator_generic;
this.genericNL=Generator_genericNL;
this._hasNoEndTag=Generator_hasNoEndTag;
this.mailto=Generator_mailto;
var DEFAULT_SINGLETON_TAGS=[
"AREA","BASE","BASEFONT","BR","COL","FRAME",
"HR","IMG","INPUT","ISINDEX","LINK","META","PARAM"];
this.altRowToggle=false;
this.altColToggle=false;
this.noEndTagList=toHash(uc(DEFAULT_SINGLETON_TAGS));
return this;
}
Html_Generator.prototype=new Trackable;
function Generator_isFormatted(msg){
return msg.search(/^</)!=-1?1:0;
}
function Generator_generic(tag,s){
var options=(arguments.length==3&&arguments[2]!=null)?
_attr2html(arguments[2]):"";
return"<"+tag+options+">"+
(s!=null?s:"")+
(this._hasNoEndTag(tag)?"":"</"+tag+">");
}
function Generator_genericNL(tag,s,attributes){
return this.generic(tag,s,attributes)+"\n";
}
function Generator_include(kind,file,filetype){
var attributes=
(arguments.length==4&&arguments[3]!=null)?arguments[3]:{};
var line="";
switch(kind){
case"stylesheet":
line=this.genericNL("LINK","",
_mergeAttr(attributes,{rel:kind,href:file,type:filetype}));
break;
case"javascript":
line=this.genericNL("SCRIPT","",
_mergeAttr(attributes,{language:kind,src:file,type:filetype}));
break;
case"image":
line=this.genericNL("IMG","",
_mergeAttr(attributes,{src:file}));
break;
}
return line;
}
function Generator_format(title,body,headClauses){
return(this.start(title,headClauses)+body+this.end());
}
function Generator_start(title,headClauses,docType){
if(docType==undefined||docType==null){docType=DEFAULT_DOCTYPE;}
docType=(docType==undefined)?"":docType+"\n";
return(docType+"\n"+
"<HTML>\n"+
this.genericNL("HEAD",
"\n"+this.genericNL("TITLE",title)+headClauses)+
"<BODY>\n"+
this.genericNL("H1",title));
}
function Generator_end(){
return("</BODY>\n</HTML>\n");
}
function Generator_section(s,level){
return this.genericNL(("H"+level),s);
}
function Generator_line(s,attributes){
return this.genericNL("P",s,attributes);
}
function Generator_styleLine(s,style,attributes){
return this.line(s,_mergeAttr(attributes,{"class":style}));
}
function Generator_exception(s){
var style=(s.search(/^ERR/)!=-1)?"errMsg":"warnMsg";
return(s!=null)?this.line("*** "+s,{'class':style}):"";
}
function Generator_emphasis(s){
return this.generic("I",s);
}
function Generator_table(s){
var attributes=
(arguments.length==2&&arguments[1]!=null)?arguments[1]:null;
this.altRowToggle=0;
return this.genericNL("TABLE","\n"+s,attributes);
}
function Generator_toggleRow(s,evenStyle,oddStyle){
var attributes=
(arguments.length==4&&arguments[3]!=null)?arguments[3]:null;
this.altRowToggle=!this.altRowToggle;
this.altColToggle=false;
return this.genericNL("TR",s,_mergeAttr(attributes,
{"class":(this.altRowToggle?evenStyle:oddStyle)}));
}
function Generator_row(s){
var attributes=
(arguments.length==2&&arguments[1]!=null)?arguments[1]:null;
this.altColToggle=false;
return this.genericNL("TR",s,attributes);
}
function Generator_toggleCell(s,evenStyle,oddStyle){
var attributes=
(arguments.length==4&&arguments[3]!=null)?arguments[3]:null;
this.altColToggle=!this.altColToggle;
return this.generic("TD",(s!=null&&s!=""?s:"--"),
_mergeAttr(attributes,
{"class":(this.altColToggle?evenStyle:oddStyle)}));
}
function Generator_cell(s){
var attributes=
(arguments.length==2&&arguments[1]!=null)?arguments[1]:null;
return this.generic("TD",(s!=null&&s!=""?s:"--"),attributes);
}
function Generator_anchor(s,target){
var attributes=
(arguments.length==3&&arguments[2]!=null)?arguments[2]:{};
if(target!=null){attributes=_mergeAttr(attributes,{href:target});}
return this.genericNL("A",s,attributes);
}
function Generator_option(s,val,selected){
var attributes={value:val};
if(selected)attributes.selected=selected;
return this.genericNL("OPTION",s,attributes);
}
function Generator_select(s,name){
var attributes=
(arguments.length==3&&arguments[2]!=null)?arguments[2]:null;
return this.genericNL("SELECT",s,_mergeAttr(attributes,{name:name}));
}
function Generator_mailto(s,name,domain){
return this.anchor(s,"mail"+"to:"+name+"@"+domain);
}
function Generator_hasNoEndTag(tag){
return(this.noEndTagList[tag]!=null);
}
function _mergeAttr(callerAttr,neededAttr){
if(callerAttr==null)return neededAttr;
for(var i in neededAttr)
if(callerAttr[i]==null)callerAttr[i]=neededAttr[i];
return callerAttr;
}
function _attr2html(attributes){
var options="";
for(var attr in attributes){
options+=" "+attr;
var val=attributes[attr];
if(val!=null){
var foundSQ=(val.length>0)&&(val.indexOf("'")!=-1);
var delim=foundSQ?'"':"'";
options+='='+delim+val+delim;
}
}
return options;
}


// <=%=> ../cleancode/Data/Diagnostic.js (saved 66%)
// last modified: Tue Dec 19 21:11:31 PST 2006

VERSIONS['Data_Diagnostic']=getVersion('$Revision: 7 $');
var Diagnostic_FORMATTER_DIAG=0x80000000;
var Diagnostic_INPUTOPTIONS_DIAG=0x40000000;
var Diagnostic_TRACE_DIAG=0x20000000;
var Diagnostic_ACCESS_DIAG=0x10000000;
var Diagnostic_VERSION_DIAG=0x08000000;
function Data_Diagnostic(formatter,settings){
this.superClass=Trackable;
this.superClass(null,settings);
this.print=Diagnostic_print;
this.errPrint=Diagnostic_errPrint;
this.warnPrint=Diagnostic_warnPrint;
this.winPrint=Diagnostic_winPrint;
this.finish=Diagnostic_finish;
this._openDiagnostics=Diagnostic_openDiagnostics;
this._startWindow=Diagnostic_startWindow;
this._endWindow=Diagnostic_endWindow;
this._out=Diagnostic_out;
var DEFAULT_DIAG_LEVEL=0;
var DEFAULT_WARNINGS_ON=1;
this.diagLevel=this.getSetting("DIAG_LEVEL",DEFAULT_DIAG_LEVEL);
this.warningsOn=this.getSetting("WARNINGS_ON",DEFAULT_WARNINGS_ON);
this.styleSheet=this.getSetting("STYLESHEET");
this.formatter=formatter;
this.warnCount=0;
this.errCount=0;
this.diagWin=null;
this.errWin=null;
this._openDiagnostics();
if(formatter)formatter.processMsgs(this);
if(settings)settings.processMsgs(this);
return this;
}
Data_Diagnostic.prototype=new Trackable;
function Diagnostic_finish(){
if(this.diagWin)
this._endWindow(this.diagWin);
if(this.errWin){
if(this.warnCount||this.errCount){
this._out(this.errWin,this.formatter.line(this.warnCount+" warning(s)"));
this._out(this.errWin,this.formatter.line(this.errCount+" error(s)"));
}
this._endWindow(this.errWin);
}
}
function Diagnostic_print(level,myCaller,msg){
if(!this.formatter)return 0;
if(level&this.diagLevel){
var fmtCaller=this.formatter.emphasis(myCaller+"> ");
this._out(this.diagWin,
this.formatter.styleLine(fmtCaller+msg,
"diag"+formatPlaces(exponent(level),2)));
return 1;
}
return 0;
}
function Diagnostic_warnPrint(myCaller,msg){
this.warnCount++;
if(this.warningsOn){
if(this.errWin==null)
this.errWin=this._startWindow("err","Errors / Warnings",600,250);
this._out(this.errWin,this.formatter.exception("WARNING: "+myCaller+"> "+msg));
}
}
function Diagnostic_errPrint(myCaller,msg){
this.errCount++;
if(this.errWin==null)
this.errWin=this._startWindow("err","Errors / Warnings",600,250);
this._out(this.errWin,this.formatter.exception("ERROR: "+myCaller+"> "+msg));
}
function Diagnostic_winPrint(level,win,msg,width,height){
if(level&this.diagLevel){
if(width==0)width=250;
if(height==0)height=400;
var myWin=Diagnostic_openOutputWindow(win,width,height);
myWin.document.open();
myWin.document.write(msg);
myWin.document.close();
myWin.focus();
}
}
function Diagnostic_openDiagnostics(){
if(this.diagLevel>0)
this.diagWin=this._startWindow("diagnostic","Diagnostics",600,250);
}
function Diagnostic_openOutputWindow(win,width,height){
var myWin=window.open(
"",win,"status=no,toolbar=no,menubar=no,resizable=yes,scrollbars=yes,width="
+width+", height="+height);
return myWin;
}
function Diagnostic_out(win,msg){
win.document.write(msg);
win.focus();
}
function Diagnostic_startWindow(name,title,width,height){
var win=Diagnostic_openOutputWindow(name,width,height);
var ss=(this.styleSheet?
this.formatter.include("stylesheet",this.styleSheet,"text/css"):"");
win.document.open();
win.document.write(this.formatter.start(title,ss));
return win;
}
function Diagnostic_endWindow(win){
win.document.write(this.formatter.end());
win.document.close();
}


// <=%=> ../cleancode/Data/InputData.js (saved 67%)
// last modified: Tue Dec 19 21:11:31 PST 2006

VERSIONS['Data_InputData']=getVersion('$Revision: 7 $');
var InputData_DiagA;
var InputData_DiagB;
function InputData(form,diag,settings){
this.superClass=Trackable;
this.superClass(diag,settings);
this.enter("InputData");
this._buildInputList=InputData_buildInputList;
this.getFieldValue=InputData_getFieldValue;
this.getNames=InputData_getNames;
this.tablePrintAbbr=1;
this.tablePrintNewWin=0;
if(InputData_DiagA==null){
InputData_DiagA=this.getSetting("INPUTDATA_DIAGA",1);
InputData_DiagB=this.getSetting("INPUTDATA_DIAGB",1);
}
this._buildInputList(form);
this.print(InputData_DiagA,this.matchList,250,400);
return this;
}
InputData.prototype=new Trackable;
function InputData_getFieldValue(name){
return(name==null)?null:this.matchList[name];
}
function InputData_getNames(){
return this.matchList;
}
function InputData_buildInputList(form){
var uniqList=new Array();
var namesList=new Array();
var rawFields="";
for(var i=0;i<form.length;i++){
var name=form[i].name;
if(name==""){
this.warnPrint("found field with no 'name' attribute");
}
else if(!this.settings.isDiagParam(name)){
if(uniqList[name]!=null&&name!=""&&form[i].type!="radio")
this.warnPrint(name+": duplicate form field");
uniqList[name]=1;
if(rawFields)rawFields+=", ";
rawFields+=name;
}
}
this.print(InputData_DiagB,"All Form Elements:\n"+rawFields);
var exclude=new Array("button","submit","reset");
for(var itemName in uniqList){
var item=form.elements[itemName];
var proceed=true;
for(var i=0;i<exclude.length;i++)
if(item.type==exclude[i])proceed=false;
if(proceed){
this.print(InputData_DiagB,"'"+itemName+"'");
var element=new DOM_Element(item,this.diag,this.settings);
var value=element.elemValue()||"";
value=value.replace(/^\s*/,"");
value=value.replace(/\s*$/,"");
namesList[itemName]=value;
}
}
this.matchList=namesList;
}


// <=%=> ../cleancode/Data/InputOptions.js (saved 64%)
// last modified: Tue Dec 19 21:11:31 PST 2006

VERSIONS['Data_InputOptions']=getVersion('$Revision: 7 $');
var InputOptions_DiagA;
var InputOptions_DiagB=Diagnostic_INPUTOPTIONS_DIAG;
var CONTROL_NAME_PATTERN=/^[A-Z][A-Z0-9_]*$/;
function Data_InputOptions(urlArgs,form,formatter,configData){
this.superClass=Trackable;
this.superClass(null,null);
this.enter("Data_InputOptions");
this.getParam=InputOptions_getParam;
this.setDefault=InputOptions_setDefault;
this.isDiagParam=InputOptions_isDiagParam;
this._processConfigFile=InputOptions_processConfigFile;
this._processCmdLine=InputOptions_processCmdLine;
this._processFormSettings=InputOptions_processFormSettings;
this._storeVal=InputOptions_storeVal;
this.formatter=formatter;
this.setting={};
this.tablePrintAbbr=1;
this.tablePrintNewWin=0;
this._processConfigFile(configData);
this._processCmdLine(urlArgs);
this._processFormSettings(form);
this.enableCollectMsgs(this.getParam("COLLECT_MSGS"));
InputOptions_DiagA=this.getParam("INPUTOPTIONS_DIAGA",1);
this.print(InputOptions_DiagA,this.setting,350,200);
return this;
}
Data_InputOptions.prototype=new Trackable;
function InputOptions_isDiagParam(p){
return((typeof p=="string")&&(p.search(CONTROL_NAME_PATTERN)!=-1));
}
function InputOptions_getParam(name,defaultVal){
if(defaultVal!=null)this.setDefault(name,defaultVal);
var val=this.setting[name];
return val!=null?val:0;
}
function InputOptions_setDefault(name,value){
if(this.setting[name]==null)this.setting[name]=value;
}
function InputOptions_processConfigFile(configData){
if(configData!=null){
for(var paramName in configData){
if(!this.isDiagParam(paramName))
this.errPrint("invalid control param name: "+paramName+"\n");
else this._storeVal("ConfigFile",paramName,configData[paramName]);
}
}
else this.errPrint("configuration file not found\n");
}
function InputOptions_processCmdLine(urlArgs){
var argList=urlArgs.param();
for(var i=0;i<argList.length;i++){
var paramName=argList[i];
if(this.isDiagParam(paramName))
this._storeVal("CmdLine",paramName,urlArgs.param(paramName));
}
}
function InputOptions_processFormSettings(form){
var uniqList=new Array();
for(var i=0;i<form.length;i++)uniqList[form[i].name]=1;
for(var paramName in uniqList){
if(this.isDiagParam(paramName)){
var item=form.elements[paramName];
var element=new DOM_Element(item,null,null);
this._storeVal("Form",paramName,element.value);
}
}
}
function InputOptions_storeVal(dispName,paramName,val){
var alsoHex="";
if((typeof val=="string")&&(val.search(/^0[xX]/)!=-1)){
alsoHex=" ("+val+")";
val=val-0;
}
this.setting[paramName]=val;
this.print(InputOptions_DiagB,dispName+": "+paramName+"='"+val+"'"+alsoHex);
}


// <=%=> ../cleancode/Data/UrlArgs.js (saved 78%)
// last modified: Tue Dec 19 21:11:31 PST 2006

VERSIONS['Data_UrlArgs']=getVersion('$Revision: 7 $');
function Data_UrlArgs(){
this.superClass=Trackable;
this.superClass(null,null);
this.enter("Data_UrlArgs");
this.param=UrlArgs_param;
this._parse=UrlArgs_parse;
this.data=this._parse(location.href);
return this;
}
Data_UrlArgs.prototype=new Trackable;
function UrlArgs_param(name){
if(name)return this.data[name];
var names=new Array();
for(var i in this.data){names[names.length]=i;}
return names;
}
function UrlArgs_parse(str){
var list=new Array();
var pieces=str.split(/\?/);
if(pieces[1]){
pieces[1]=pieces[1].replace(/\+/g,' ');
var params=pieces[1].split(/&/);
for(var i=0;i<params.length;i++){
var info=params[i].split(/=/);
list[unescape(info[0])]=unescape(info[1]);
}
}
return list;
}


// <=%=> ../cleancode/Cgi/PageValidator.js (saved 69%)
// last modified: Tue Dec 19 21:11:31 PST 2006

VERSIONS['CGI_PageValidator']=getVersion('$Revision: 7 $');
var PageValidator_DiagA;
function CGI_PageValidator(inputData,libMgr,namesOnly,diag,settings){
this.superClass=Trackable;
this.superClass(diag,settings);
this.enter("CGI_PageValidator");
this.process=PageValidator_process;
this.setNamesOnly=PageValidator_setNamesOnly;
this.success=PageValidator_success;
this.errors=PageValidator_errors;
this.allFields=PageValidator_allFields;
this.errorCount=PageValidator_errorCount;
this._validate=PageValidator_validate;
this._getDepValue=PageValidator_getDepValue;
this.inputData=inputData;
this.libMgr=libMgr;
this.namesOnly=namesOnly;
if(PageValidator_DiagA==null){
PageValidator_DiagA=this.getSetting("PAGEVALIDATOR_DIAGA",1);
}
this.leave();
return this;
}
CGI_PageValidator.prototype=new Trackable;
function PageValidator_process(){
this.enter("CGI_PageValidator_process");
CGI_PageValidator_CheckItem_reset();
CGI_PageValidator_CheckItem_setNamesOnly(this.namesOnly);
this._validate();
this.errList=CGI_PageValidator_CheckItem_getErrList();
this.allList=CGI_PageValidator_CheckItem_getAllList();
this.leave();
}
function PageValidator_setNamesOnly(boolValue){
this.namesOnly=boolValue;
}
function PageValidator_success(){
return(this.errorCount()==0);
}
function PageValidator_errors(){
return this.errList;
}
function PageValidator_allFields(){
return this.allList;
}
function PageValidator_errorCount(){
var count=0;
for(var i in this.errList)count++;
return count;
}
function PageValidator_validate(){
for(var itemName in this.inputData.getNames()){
this.print(PageValidator_DiagA,"checking "+itemName);
var libItem=this.libMgr.getItem(itemName);
if(libItem!=null){
libItem.doValidate(
this.inputData.getFieldValue(libItem.name),
this._getDepValue(libItem.dependsOn));
}
else{
this.warnPrint("Extra field '"+itemName+
"' supplied in input (not validated)");
}
}
}
function PageValidator_getDepValue(depItem){
if(depItem!=null){
if(typeof(depItem)=="string"){
return this.inputData.getFieldValue(depItem);
}
else{
var depArray=new Array(depItem.length);
for(var i=0;i<depItem.length;i++){
depArray[i]=this.inputData.getFieldValue(depItem[i]);
}
return depArray;
}
}
return null;
}


// <=%=> ../cleancode/Cgi/PageValidator/CheckItem.js (saved 56%)
// last modified: Tue Dec 19 21:11:31 PST 2006

VERSIONS['CGI_PageValidator_CheckItem']=getVersion('$Revision: 7 $');
var CheckItem_DEFAULT_NAMES_ONLY=false;
var CheckItem_DiagA;
var CheckItem_DiagB;
var CheckItem_DiagC;
var CheckItem_NamesOnly=CheckItem_DEFAULT_NAMES_ONLY;
var Checkitem_errList={};
var Checkitem_allList={};
var CheckItem_dep;
var CheckItem_fieldVal;
var CheckItem_depVal;
function CGI_PageValidator_CheckItem(obj,diag,settings,replaced){
this.superClass=Trackable;
this.superClass(diag,settings);
this.enter("CGI_PageValidator_CheckItem");
this.doValidate=CheckItem_doValidate;
this.getNameAndValue=CheckItem_getNameAndValue;
this.getGroupNameAndValue=CheckItem_getGroupNameAndValue;
this.copy=CheckItem_copy;
this._passTest=CheckItem_passTest;
this._pluginEval=CheckItem_pluginEval;
for(var i in obj){this[i]=obj[i];}
this.replaced=replaced;
if(CheckItem_DiagA==null){
CheckItem_DiagA=this.getSetting("CHECKITEM_DIAGA",1);
CheckItem_DiagB=this.getSetting("CHECKITEM_DIAGB",1);
CheckItem_DiagC=this.getSetting("CHECKITEM_DIAGC",1);
}
return this;
}
CGI_PageValidator_CheckItem.prototype=new Trackable;
function CGI_PageValidator_CheckItem_reset(){
Checkitem_errList={};
Checkitem_allList={};
}
function CGI_PageValidator_CheckItem_getErrList(){
return Checkitem_errList;
}
function CGI_PageValidator_CheckItem_getAllList(){
return Checkitem_allList;
}
function CGI_PageValidator_CheckItem_setNamesOnly(boolValue){
CheckItem_NamesOnly=boolValue;
}
function CheckItem_copy(){
var otherCopy={};
for(var i in this){otherCopy[i]=this[i];}
return otherCopy;
}
function CheckItem_getNameAndValue(value){
return(this.displayName||this.name)+" ("+value+")";
}
function CheckItem_getGroupNameAndValue(value){
return(this.displayGroupName||this.displayName||this.name)+" ("+value+")";
}
function CheckItem_doValidate(fieldValue,depValue){
var nameAndVal=this.getNameAndValue(fieldValue);
if(this.skipValidate){
this.print(CheckItem_DiagB,"skipping "+nameAndVal);
return;
}
this.print(CheckItem_DiagB,"found "+nameAndVal+" -- validating...");
if(this.plugin){
var pluginResult=this._pluginEval(fieldValue,depValue);
if(!this._passTest(fieldValue,(pluginResult==""),
"using aux function '"+this.plugin+"'",pluginResult)){return;}
}
if(this.required){
if(!this._passTest(fieldValue,
!(fieldValue==null||fieldValue==false||fieldValue==""),
"for mandatory field (required='"+this.required+"')",
nameAndVal+" must be filled in")){return;}
}
if(fieldValue&&this.maxLen==0){
if(!this._passTest(fieldValue,(fieldValue==""),"for empty",
nameAndVal+" must be empty")){return;}
}
if(fieldValue&&this.enumList){
var list=(this.enumValues||this.enumList);
if(!this._passTest(fieldValue,
isListMember(list,fieldValue,true),
"against enumeration: ("+list+")",
nameAndVal+" is not a valid choice")){return;}
}
if(fieldValue&&this.maxLen){
if(!this._passTest(fieldValue,(fieldValue.length<=this.maxLen),
"<= "+this.maxLen+" chars",
nameAndVal+" must be no more than "+this.maxLen+" chars")){return;}
}
if(fieldValue&&this.minLen){
if(!this._passTest(fieldValue,(fieldValue.length>=this.minLen),
">= "+this.minLen+" chars",
nameAndVal+" must be at least "+this.minLen+" chars")){return;}
}
if(fieldValue&&this.pat){
if(!this._passTest(fieldValue,(fieldValue.search(this.pat)!=-1),
"against "+this.pat,
nameAndVal+" "+this.patMsg)){return;}
}
if(fieldValue&&this.maxVal){
if(!this._passTest(fieldValue,(fieldValue<=this.maxVal),
"<= "+this.maxVal,
nameAndVal+" must be no more than "+this.maxVal)){return;}
}
if(fieldValue&&this.minVal){
if(!this._passTest(fieldValue,(fieldValue>=this.minVal),
">= "+this.minVal,
nameAndVal+" must be at least "+this.minVal)){return;}
}
}
function CheckItem_passTest(fieldValue,cond,checkmsg,errmsg){
this.print(CheckItem_DiagC,
"(("+cond+")) "+this.name+"='"+fieldValue+"' "+
checkmsg+": "+(cond?"GOOD":errmsg));
var fieldName=this.fieldGroupName||this.name;
if(!cond){
Checkitem_errList[fieldName]=(CheckItem_NamesOnly?fieldName:errmsg);
}
Checkitem_allList[fieldName]=true;
return cond;
}
function CheckItem_pluginEval(fieldValue,depValue){
var errMsg="";
var builder=new CGI_PageValidator_Plugin();
CheckItem_dep=this.dependsOn;
CheckItem_fieldVal=fieldValue;
CheckItem_depVal=depValue;
var execCmd=builder.subclass(this.plugin,
"CheckItem_dep","CheckItem_fieldVal","CheckItem_depVal");
this.print(CheckItem_DiagA,"subclass constructor:\n"+execCmd);
this.pluginConstructor=new Function(execCmd);
var depItems="";
if(this.dependsOn!=null){
if(typeof(this.dependsOn)=="string"){
depItems=", "+this.dependsOn+"="+CheckItem_depVal;
}
else{
for(var i=0;i<this.dependsOn.length;i++){
depItems+=", "+this.dependsOn[i]+"="+CheckItem_depVal[i];
}
}
}
this.print(CheckItem_DiagA,
"Attempting eval '"+this.plugin+"("+this.name+"="+fieldValue+
depItems+")'");
var pluginObj=this.pluginConstructor();
this.print(CheckItem_DiagA,"eval '"+this.plugin+"' complete: '"+errMsg+"'");
this.print(CheckItem_DiagA,"executing "+this.plugin+".examine()...");
pluginObj.examine();
this.print(CheckItem_DiagA,"finished "+this.plugin+".examine()");
errMsg=pluginObj.getResult();
return errMsg;
}


// <=%=> ../cleancode/Cgi/PageValidator/LibraryMgr.js (saved 62%)
// last modified: Tue Dec 19 21:11:31 PST 2006

VERSIONS['CGI_PageValidator_LibraryMgr']=getVersion('$Revision: 7 $');
var LibraryMgr_DiagA;
var LibraryMgr_DiagB;
var cacheLib;
function CGI_PageValidator_LibraryMgr(diag,settings){
this.superClass=Trackable;
this.superClass(diag,settings);
this.enter("CGI_PageValidator_LibraryMgr");
this.success=LibraryMgr_success;
this.getItem=LibraryMgr_getItem;
this.buildLib=LibraryMgr_buildLib;
this.checkLib=LibraryMgr_checkLib;
this.checkOrdered=LibraryMgr_checkOrdered;
this.lib={};
this.fieldList={};
this.abort=false;
this.tablePrintAbbr=1;
this.tablePrintNewWin=0;
if(LibraryMgr_DiagA==null){
LibraryMgr_DiagA=this.getSetting("LIBRARYMGR_DIAGA",1);
LibraryMgr_DiagB=this.getSetting("LIBRARYMGR_DIAGA",1);
}
if(cacheLib!=null){
this.lib=cacheLib;
}
else{
this.buildLib(new SysLib());
this.buildLib(new UserLib());
this.print(LibraryMgr_DiagA,this.lib,600,400);
this.checkLib();
cacheLib=this.lib;
}
return this;
}
CGI_PageValidator_LibraryMgr.prototype=new Trackable;
function LibraryMgr_success(){
return(!this.abort);
}
function LibraryMgr_getItem(name){
return this.lib[name];
}
function LibraryMgr_buildLib(lib){
for(var i in lib){
var elem=lib[i];
for(var j in elem){this.fieldList[j]=null;}
if(elem.base&&this.lib[elem.base]){
this.lib[elem.name]=(this.lib[elem.base]).copy();
for(var field in elem)
this.lib[elem.name][field]=elem[field];
}
else{
var replaced=(this.lib[elem.name]!=null);
this.lib[elem.name]=new CGI_PageValidator_CheckItem(
elem,this.diag,this.settings,replaced);
if(elem.base&&!this.lib[elem.base]){
this.errPrint(elem.name+
": non-existent base element '"+elem.base+"'");
this.abort=true;
}
}
this.print(LibraryMgr_DiagB,
elem.name+" attributes: "+getPropNames(this.lib[elem.name]));
}
this.fieldList.base=1;
this.fieldList.name=-1;
}
function LibraryMgr_checkLib(){
for(var name in this.lib){
var libItem=this.lib[name];
if(name.search(/^[a-zA-Z]\w*$/)==-1){
this.errPrint(name+": illegal chars in name");
this.abort=true;
}
if(InputOptions_isDiagParam(name)){
this.errPrint(name+": illegal name--"+
"cannot differentiate from control variable");
this.abort=true;
}
if(libItem.fieldGroupName&&
(libItem.fieldGroupName.search(/^[a-zA-Z]\w*$/)==-1)){
this.errPrint(name+": illegal chars in fieldGroupName '"+
libItem.fieldGroupName+"'");
this.abort=true;
}
if(!libItem.skipValidate&&!libItem.patMsg){
this.warnPrint(name+": missing static error message (patMsg)");
}
var depItem=libItem.dependsOn;
if(depItem!=null){
var names;
if(typeof(depItem)=="string")names=[depItem];
else names=depItem;
for(var i=0;i<names.length;i++){
var depends=names[i];
if(depends&&!this.lib[depends]){
this.errPrint(name+
": undefined dependent element '"+depends+"'");
this.abort=true;
}
}
}
this.checkOrdered(name,"Val",libItem.minVal,libItem.maxVal);
this.checkOrdered(name,"Len",libItem.minLen,libItem.maxLen);
if((libItem.maxLen!=null)&&(libItem.maxLen<=0)&&
libItem.required){
this.warnPrint(name+": maxLen<=0 conflicts with required=true");
}
}
var keyList=toSortedArray(this.fieldList);
for(var i=0;i<keyList.length;i++){
keyList[i]=keyList[i].toLowerCase();
}
for(var i=0;i<keyList.length;i++){
if(keyList[i+1]==keyList[i]){
var similar=new Array();
for(var key in this.fieldList){
if(keyList[i]==key.toLowerCase()){
similar[similar.length]=key;
}
}
this.warnPrint("probable typo in similar field names: "
+similar+"\n");
}
}
}
function LibraryMgr_checkOrdered(name,s,minV,maxV){
if(minV!=null&&maxV!=null&&minV>maxV){
this.warnPrint("LibraryMgr::checkOrdered","element "+name+
" inconsistent: min"+s+" ("+minV+") > max"+s+" ("+maxV+")");
}
}


// <=%=> ../cleancode/Cgi/PageValidator/Plugin.js (saved 87%)
// last modified: Tue Dec 19 21:11:31 PST 2006

VERSIONS['CGI_PageValidator_Plugin']=getVersion('$Revision: 7 $');
var Plugin_DiagA;
function CGI_PageValidator_Plugin(libItem,depItem,fieldValue,depValue){
if(libItem){
this.superClass=Trackable;
this.superClass(libItem.diag,libItem.settings);
this.enter("CGI_PageValidator_Plugin");
}
this.getResult=Plugin_getResult;
this.setResult=Plugin_setResult;
this.report=Plugin_report;
this.examine=Plugin_examine;
this.subclass=Plugin_subclass;
if(libItem){
this.libItem=libItem;
this.libItemValue=fieldValue;
this.dependentItemName=depItem;
this.dependentItemValue=depValue;
this.result="";
}
if(libItem&&(Plugin_DiagA==null)){
Plugin_DiagA=this.getSetting("PLUGIN_DIAGA",1);
}
if(libItem)this.leave();
return this;
}
function Plugin_getResult(){
return this.result;
}
function Plugin_setResult(msg){
this.result=msg;
}
function Plugin_report(myCaller,msg,notable){
if(notable)this.print(Plugin_DiagA,msg);
}
function Plugin_examine(){
this.report("This should be overridden with your plugin code...");
}
function Plugin_subclass(name,depName,fieldValName,depValName){
var superClassName="CGI_PageValidator_Plugin";
var onTheFlyCode=
"function "+name+"(libItem, depItem, fieldValue, depValue) {\n"+
"	this.superClass = "+superClassName+";\n"+
"	this.superClass(libItem, depItem, fieldValue, depValue);\n"+
"	this.enter('"+name+"');\n"+
_tryWrapper("this.examine = "+name+"_examine;","missing "+name+"_examine() method")+"\n"+
"	this.leave();\n"+
"	return this;\n"+
"}\n"+
name+".prototype = new "+superClassName+";\n"+
"return new "+name+
'(this, '+depName+','+fieldValName+','+depValName+')';
return onTheFlyCode;
}
function _tryWrapper(execCmd,msg){
var exceptionSupported=(!isIE3Mac&&(is.nav5up||!is.nav));
return!exceptionSupported?execCmd:
"try { "+execCmd+" }\n"+
"catch(e) { libItem.errPrint('"+msg+"'); }";
}


// <=%=> ../cleancode/Cgi/PageValidator/Plugin/CreditCardNum.js (saved 73%)
// last modified: Tue Dec 19 21:11:31 PST 2006

VERSIONS['CGI_PageValidator_Plugin_CreditCardNum']=getVersion('$Revision: 7 $');
function CreditCardNum_examine(){
this.isCardMatch=CreditCardNum_isCardMatch;
this.checksum=CreditCardNum_checksum;
var ccnum=this.libItemValue;
var cctype=this.dependentItemValue;
var msg=
(ccnum==""||cctype==""||this.isCardMatch(cctype,ccnum))?
"":(this.libItem.getNameAndValue(ccnum)+
" is not valid for "+cctype);
this.report("CreditCardNum_examine",msg,(msg!=""));
this.setResult(msg);
}
function CreditCardNum_isCardMatch(cardType,cardNumber)
{
cardType=cardType.toUpperCase();
if(CCverifier[cardType]==null)return true;
return(this.checksum(cardNumber)&&(cardNumber.search(CCverifier[cardType])!=-1));
}
function CreditCardNum_checksum(s){
if(s.length>19)return(false);
var sum=0;
var oddDigit=true;
for(var i=s.length-1;i>=0;i--){
var digit=s.charAt(i);
var digitPlus=parseInt(digit,10)*(oddDigit?1:2);
var addend=((digitPlus>=10)?((digitPlus%10)+1):digitPlus);
sum+=addend;
this.report("CreditCardNum_examine",
("digit="+digit+", t="+digitPlus+", addend="+addend+", sum="+sum),true);
oddDigit=!oddDigit;
}
return((sum%10)==0);
}


// <=%=> ../cleancode/Cgi/PageValidator/Plugin/Date.js (saved 65%)
// last modified: Tue Dec 19 21:11:31 PST 2006

VERSIONS['CGI_PageValidator_Plugin_Plugin_Date']=getVersion('$Revision: 7 $');
function Date_examine(){
this.checkDate=Date_checkDate;
var year=this.libItemValue;
var month,day;
var depValueList=this.dependentItemValue;
var depNameList=this.dependentItemName;
for(var i=0;i<depNameList.length;i++){
if(depNameList[i].toLowerCase().indexOf("day")!=-1){
day=depValueList[i];
}
if(depNameList[i].toLowerCase().indexOf("month")!=-1){
month=depValueList[i];
}
}
var result=this.checkDate(month,day,year,this.libItem.pluginOption);
this.report("Date_examine",result,result!="");
this.setResult(result);
}
function Date_checkDate(month,day,year,type){
var now=(new Date()).getTime();
var oldEnough=18;
var nameAndValue=
this.libItem.getGroupNameAndValue("y="+year+", m="+month+", d="+day);
if(!isValidDate(year,month,day)){
return nameAndValue+" is not valid";
}
var lowerType=type.toLowerCase();
if(lowerType.search("earlier|before|birth")!=-1){
if((new Date(year,month,day)).getTime()>now){
return nameAndValue+" must be no later than today";
}
}
if(lowerType.search("later|after")!=-1){
if((new Date(year,month,day,23,59,59)).getTime()<now){
return nameAndValue+" must be no earlier than today";
}
}
if(lowerType.search("legal")!=-1){
if((new Date(year+oldEnough,month,day)).getTime()>now){
return nameAndValue+" is not at least "+oldEnough+" years";
}
}
return"";
}


// <=%=> ../cleancode/Cgi/PageValidator/Plugin/IsAmex.js (saved 83%)
// last modified: Tue Dec 19 21:11:31 PST 2006

VERSIONS['CGI_PageValidator_Plugin_IsAmex']=getVersion('$Revision: 7 $');
function IsAmex_examine(){
if(this.dependentItemValue!=null){
var msg;
if(this.dependentItemValue.toLowerCase()=="amex"){
this.libItem.required=1;
msg="required";
}
else{
this.libItem.maxLen=0;
msg="forbidden";
}
this.report("IsAmex_examine",
("Setting '"+msg+"' state for "+this.libItem.name+
" due to "+this.dependentItemName),true);
}
}


// <=%=> ../cleancode/Cgi/PageValidator/Plugin/SamePassword.js (saved 85%)
// last modified: Tue Dec 19 21:11:31 PST 2006

VERSIONS['CGI_PageValidator_Plugin_SamePassword']=getVersion('$Revision: 7 $');
function SamePassword_examine(){
var sameMsg=(this.dependentItemValue==this.libItemValue)?"":
this.libItem.name+" and "+this.dependentItemName+") do not match";
this.report("SamePassword_examine",sameMsg,(sameMsg!=""));
this.setResult(sameMsg);
}


// <=%=> ../cleancode/Cgi/PageValidator/MainLib/SysLib.js (saved 29%)
// last modified: Tue Dec 19 21:11:31 PST 2006

var USStateList=[
"AL","AK","AS","AZ","AR","CA","CO","CT","DE","DC","FM","FL","GA","GU",
"HI","ID","IL","IN","IA","KS","KY","LA","ME","MH","MD","MA","MI","MN",
"MS","MO","MT","NE","NV","NH","NJ","NM","NY","NC","ND","MP","OH","OK",
"OR","PW","PA","PR","RI","SC","SD","TN","TX","UT","VT","VI","VA","WA",
"WV","WI","WY","AE","AA","AE","AE","AP"
];
var CountryList=[
"AFGHANISTAN",
"ALBANIA",
"ALGERIA",
"AMERICAN SAMOA",
"ANDORRA",
"ANGOLA",
"ANGUILLA",
"ANTIGUA",
"ANTILLES (NETHERLAND)",
"ARGENTINA",
"ARMENIA",
"ARUBA",
"ASCENSION",
"AUSTRALIA",
"AUSTRIA",
"AZERBAIJAN",
"AZORES",
"BAHAMAS",
"BAHRAIN",
"BANGLADESH",
"BARBADOS",
"BARBUDA",
"BELARUS",
"BELGIUM",
"BELIZE",
"BENIN",
"BERMUDA",
"BHUTAN",
"BOLIVIA",
"BONAIRE",
"BOSNIA-HERZEGOVINA",
"BOTSWANA",
"BRAZIL",
"BRITISH VIRGIN ISLANDS",
"BRUNEI",
"BULGARIA",
"BURKINA FASO",
"BURMA (MYANMAR)",
"BURUNDI",
"CAMBODIA (KAMPUCHEA)",
"CAMEROON",
"CANADA",
"CANARY ISLANDS",
"CAPE VERDE",
"CAYMAN ISLANDS",
"CENTRAL AFRICAN REPUBLIC",
"CHAD",
"CHANNEL ISLANDS",
"CHILE",
"CHINA",
"COLOMBIA",
"COMOROS",
"CONGO",
"COOK ISLANDS",
"CORSICA",
"COSTA RICA",
"CROATIA",
"CUBA",
"CURACAO",
"CYPRUS",
"CZECH REPUBLIC",
"DENMARK",
"DJIBOUTI",
"DOMINICA",
"DOMINICAN REPUBLIC",
"EAST TIMOR",
"ECUADOR",
"EGYPT",
"EL SALVADOR",
"ENGLAND",
"EQUATORIAL GUINEA",
"ERITREA",
"ESTONIA",
"ETHIOPIA",
"FALKLAND ISLANDS",
"FAROE ISLANDS",
"FIJI",
"FINLAND",
"FRANCE",
"FRENCH GUIANA",
"FRENCH POLYNESIA",
"GABON",
"GAMBIA",
"GEORGIA, REPUBLIC OF",
"GERMANY",
"GHANA",
"GIBRALTAR",
"GREAT BRITAIN",
"GREECE",
"GREENLAND",
"GRENADA",
"GUADELOUPE",
"GUAM",
"GUATEMALA",
"GUERNSEY",
"GUINEA",
"GUINEA-BISSAU",
"GUYANA, BRITISH",
"HAITI",
"HOLLAND",
"HONDURAS",
"HONG KONG",
"HUNGARY",
"ICELAND",
"INDIA",
"INDONESIA",
"IRAN",
"IRAQ",
"IRELAND, REPUBLIC OF",
"ISRAEL",
"ITALY",
"IVORY COAST",
"JAMAICA",
"JAPAN",
"JERSEY",
"JORDAN",
"KAMPUCHEA",
"KAZAKHSTAN",
"KENYA",
"KIRIBATI",
"KOREA, NORTH",
"KOREA, SOUTH",
"KOSRAE",
"KUWAIT",
"KYRGYZSTAN",
"LAOS",
"LATVIA",
"LEBANON",
"LESOTHO",
"LIBERIA",
"LIBYA",
"LIECHTENSTEIN",
"LITHUANIA",
"LUXEMBOURG",
"MACAU",
"MACEDONIA, REPUBLIC OF",
"MADAGASCAR",
"MADEIRA ISLANDS",
"MALAWI",
"MALAYSIA",
"MALDIVES",
"MALI",
"MALTA",
"MARSHALL ISLANDS",
"MARTINIQUE",
"MAURITANIA",
"MAURITIUS",
"MEXICO",
"MICRONESIA",
"MOLDOVA",
"MONACO",
"MONGOLIA",
"MONTENEGRO",
"MONTSERRAT",
"MOROCCO",
"MOZAMBIQUE",
"MYANMAR",
"NAMIBIA",
"NAURU",
"NEPAL",
"NETHERLAND ANTILLES",
"NETHERLANDS",
"NEVIS",
"NEW CALEDONIA",
"NEW ZEALAND",
"NICARAGUA",
"NIGER",
"NIGERIA",
"NIUE",
"NORFOLK ISLANDS",
"NORTHERN IRELAND",
"NORTHERN MARIANA ISLANDS",
"NORWAY",
"OMAN",
"PAKISTAN",
"PALAU",
"PANAMA",
"PAPUA NEW GUINEA",
"PARAGUAY",
"PERU",
"PHILIPPINES",
"PITCAIRN ISLANDS",
"POHNPEI",
"POLAND",
"PORTUGAL",
"PUERTO RICO",
"QATAR",
"REUNION",
"ROMANIA",
"ROTA",
"RUSSIA",
"RWANDA",
"SABA",
"SAIPAN",
"SAN MARINO (ITALY)",
"SAO TOME & PRINCIPE",
"SAUDI ARABIA",
"SCOTLAND",
"SENEGAL",
"SERBIA",
"SEYCHELLES",
"SIERRA LEONE",
"SINGAPORE",
"SLOVAKIA (SLOVAK REPUBLIC)",
"SLOVENIA",
"SOLOMON ISLANDS",
"SOMALIA",
"SOUTH AFRICA",
"SPAIN",
"SRI LANKA",
"ST. BARTHELEMY",
"ST. CHRISTOPHER",
"ST. CROIX",
"ST. EUSTATIUS",
"ST. HELENA",
"ST. JOHN",
"ST. KITTS",
"ST. LUCIA",
"ST. MAARTEN",
"ST. MARTIN",
"ST. PIERRE & MIQUELON",
"ST. THOMAS",
"ST. VINCENT",
"SUDAN",
"SURINAME",
"SWAZILAND",
"SWEDEN",
"SWITZERLAND",
"SYRIA",
"TAHITI",
"TAIWAN",
"TAJIKISTAN",
"TANZANIA",
"THAILAND",
"TINIAN",
"TOGO",
"TONGA",
"TORTOLA",
"TRINIDAD AND TOBAGO",
"TRISTAN DA CUNHA",
"TRUK",
"TUNISIA",
"TURKEY",
"TURKMENISTAN",
"TURKS & CAICOS ISLANDS",
"TUVALU",
"U.S. VIRGIN ISLANDS",
"U.S.A.",
"UGANDA",
"UKRAINE",
"UNION ISLAND",
"UNITED ARAB EMIRATES",
"UNITED KINGDOM",
"UNITED STATES",
"URUGUAY",
"UZBEKISTAN",
"VANUATU",
"VATICAN CITY",
"VENEZUELA",
"VIETNAM",
"VIRGIN ISLANDS (BRITISH)",
"VIRGIN ISLANDS (U.S.)",
"WAKE ISLAND",
"WALES",
"WALLIS & FUTUNA ISLANDS",
"WESTERN SAMOA",
"YAP",
"YEMEN",
"YUGOSLAVIA",
"ZAIRE",
"ZAMBIA",
"ZIMBABWE"
];
var AUStateList=["VIC",
"QLD",
"TAS",
"NSW",
"WA",
"NT",
"SA",
"ACT"
];
var titleList=["Mr","Ms","Mrs","Miss","Dr"];
var CCTypeList=["visa","mc","amex","diners","carteblanche","discover","jcb","enroute"];
var AUAreaCodeList=["02","03","07","08"];
var TextLettersAndHyphens="just letters and hyphens";
function SysLib(){
return new Array(
{name:"Title",
displayGroupName:"Full name",
fieldGroupName:"FullName",
required:true,
enumList:titleList,
minLen:2,
minLen:2,
maxLen:5,
pat:/^[a-zA-Z]{2,}$/,
patMsg:"must be at least 2 letters"
},
{name:"FirstName",
displayName:"First name",
displayGroupName:"Full name",
fieldGroupName:"FullName",
required:true,
displayWidth:20,
minLen:2,
pat:/^[a-zA-Z\-]{2,}[a-zA-Z\s\-]*$/,
patMsg:TextLettersAndHyphens
},
{name:"MiddleName",
displayName:"Middle name",
displayGroupName:"Full name",
fieldGroupName:"FullName",
required:false,
displayWidth:20,
minLen:1,
pat:/^[a-zA-Z\.\'\s\-]*$/,
patMsg:"just letters and punctuation"
},
{name:"LastName",
displayName:"Last name",
displayGroupName:"Full name",
fieldGroupName:"FullName",
required:true,
displayWidth:20,
minLen:2,
pat:/^[a-zA-Z\'\-]{2,}[a-zA-Z\-\'\s]*$/,
patMsg:"just letters and punctuation"
},
{name:"Address",
displayName:"Street address",
required:true,
displayWidth:30,
minLen:2,
pat:/^[\w\'\/\\,.\s\-]{2,}$/,
patMsg:"just letters, digits, and punctuation"
},
{name:"City",
displayGroupName:"City,State,Zip",
fieldGroupName:"CityStateZip",
required:true,
displayWidth:20,
minLen:2,
pat:/^[a-zA-Z\'\.\-]{2,}[a-zA-Z\'\-.\s]*$/,
patMsg:"just letters and punctuation"
},
{name:"USState",
displayGroupName:"City,State,Zip",
fieldGroupName:"CityStateZip",
displayName:"State",
required:true,
minLen:2,
maxLen:2,
enumList:USStateList,
pat:/^[a-zA-Z]{2}$/,
patMsg:"just letters"
},
{name:"AUState",
displayName:"State",
required:true,
minLen:2,
maxLen:3,
enumList:AUStateList,
pat:/^[a-zA-Z]{2,3}$/,
patMsg:"just letters"
},
{name:"USPostCode",
displayGroupName:"City,State,Zip",
fieldGroupName:"CityStateZip",
displayName:"Zip code",
required:true,
minLen:5,
maxLen:10,
pat:/^\d{5}(-?\d{4})?$/,
patMsg:"just digits"
},
{name:"AUPostCode",
displayName:"Post code",
required:true,
minLen:4,
maxLen:4,
pat:/^\d{4}$/,
patMsg:"just digits"
},
{name:"USPhoneAreaCode",
displayName:"Area code",
required:true,
minLen:3,
maxLen:3,
pat:/^\d{3}$/,
patMsg:"just digits"
},
{name:"AUPhoneAreaCode",
displayName:"Area code",
required:true,
minLen:2,
maxLen:2,
enumList:AUAreaCodeList,
pat:/^\d{2}$/,
patMsg:"just digits"
},
{name:"USPhoneNumber",
displayName:"Phone",
required:true,
minLen:7,
maxLen:8,
pat:/^\d{3}[\s-]?\d{4}$/,
patMsg:"just digits, spaces, or hyphens"
},
{name:"AUPhoneNumber",
displayName:"Phone",
required:true,
minLen:8,
maxLen:8,
pat:/^\d{2}(\d\s-)+\d{2}$/,
patMsg:"just digits, spaces, or hyphens"
},
{name:"AUMobileNumber",
displayName:"Mobile number",
required:true,
minLen:10,
maxLen:10,
pat:/^04(\d\s-)+\d{2}$/,
patMsg:"just digits, spaces, or hyphens"
},
{name:"Country",
displayName:"Country",
minLen:2,
maxLen:20,
enumList:CountryList,
pat:/^[a-zA-Z][a-zA-Z.\s\-]+$/,
patMsg:"just letters and punctuation"
},
{name:"BirthDay",
displayName:"Birth day",
displayGroupName:"Birth date",
fieldGroupName:"Birthdate",
required:true,
minLen:1,
maxLen:2,
minVal:1,
maxVal:31,
pat:/\d{1,2}/,
patMsg:"one or two digits"
},
{name:"BirthMonth",
displayName:"Birth month",
displayGroupName:"Birth date",
fieldGroupName:"Birthdate",
required:true,
minLen:1,
maxLen:2,
minVal:1,
maxVal:12,
pat:/\d\d?/,
patMsg:"one or two digits"
},
{name:"BirthYear",
displayName:"Birth year",
displayGroupName:"Birth date",
fieldGroupName:"Birthdate",
required:true,
plugin:"Date",
pluginOption:"earlier",
dependsOn:["BirthDay","BirthMonth"],
minLen:4,
maxLen:4,
minVal:1875,
maxVal:1995,
pat:/\d{4}$/,
patMsg:"just 4 digits"
},
{name:"Email",
displayName:"Email address",
fieldGroupName:"Econtact",
displayGroupName:"E-contact",
required:true,
minLen:5,
displayWidth:30,
pat:/^\w[\w\.]*\@\w+\.\w[\w\.]*$/,
patMsg:"letters, dots, and the \@ character"
},
{name:"UserName",
displayName:"User name",
required:true,
displayWidth:20,
minLen:6,
maxLen:8,
pat:/^[a-zA-Z]\w+$/,
patMsg:TextLettersAndHyphens
},
{name:"CCNameOnCard",
displayName:"Name on card",
required:true,
displayWidth:30,
minLen:4,
pat:/^([A-Za-z\'\-.]+\s+)+[A-Za-z\'\-]{2,}$/,
patMsg:"just letters and punctuation"
},
{name:"CCNumber",
displayName:"CC number",
concealLog:true,
required:true,
minLen:14,
maxLen:17,
plugin:"CreditCardNum",
dependsOn:"CCType",
pat:/^\d{14,17}$/,
patMsg:"just digits (no spaces)"
},
{name:"CCType",
displayName:"CC type",
required:true,
minLen:2,
enumList:CCTypeList,
pat:/^[A-Za-z]+$/,
patMsg:"just letters"
},
{name:"CCExpiryMonth",
displayName:"Expiry month",
displayGroupName:"Expiry date",
fieldGroupName:"Expirydate",
required:true,
minLen:1,
maxLen:2,
minVal:1,
maxVal:12,
pat:/\d\d?/,
patMsg:"just digits"
},
{name:"CCExpiryYear",
displayName:"Expiry year",
displayGroupName:"Expiry date",
fieldGroupName:"Expirydate",
required:true,
plugin:"ValidCCExpiry",
dependsOn:"CCExpiryMonth",
minLen:4,
maxLen:4,
pat:/\d{4}/,
patMsg:"just digits"
},
{name:"CCAmexID",
displayName:"Amex ID",
required:false,
minLen:4,
maxLen:4,
plugin:"IsAmex",
dependsOn:"CCType",
pat:/\d{4}/,
patMsg:"just digits"
},
{name:"Password",
required:true,
concealWeb:true,
concealLog:true,
minLen:6,
maxLen:8,
patMsg:"just text"
},
{name:"IPaddress",
displayName:"IP address",
required:true,
minLen:7,
maxLen:15,
pat:/^(([01]?\d\d|2[0-4]\d|25[0-5])\.){3}([01]?\d\d|2[0-4]\d|25[0-5])$/,
patMsg:"form ddd.ddd.ddd.ddd"
},
{name:"Organization",
displayName:"Organization",
maxLen:30,
pat:/^[\w\'\/\\,.\s\-]{2,}$/,
patMsg:"just letters, digits, and punctuation"
},
{name:"Position",
displayName:"Position",
maxLen:30,
pat:/^\w[\w\s\.\-]+$/,
patMsg:"just letters, digits, and punctuation"
},
{name:"Version",
displayName:"Version",
maxLen:10,
pat:/^[\w.\/-]+$/,
patMsg:"just letters, digits, dots, dashes"
},
{name:"BrowserType",
displayName:"Browser Type",
fieldGroupName:"Browser",
enumList:["NetScape","InternetExplorer","Opera","Mozilla","Other"],
pat:/^[a-zA-Z]+$/,
patMsg:"just letters"
},
{name:"BrowserVersion",
displayName:"Browser Version",
base:"Version",
fieldGroupName:"Browser"
},
{name:"os",
displayName:"Operating System",
fieldGroupName:"System",
maxLen:10,
enumList:["Win3.1","WinNT","Win95","Win98","WinME","Win2000","WinXP","Linux","MacOS","Unix:HP/UX","Unix:IBM-AIX","Unix:other","Solaris2.5.1","Solaris2.6","Solaris7","Solaris8"],
pat:/^\w[\w.\/:-]+$/,
patMsg:"just letters and punctuation"
},
{name:"Platform",
displayName:"Platform",
fieldGroupName:"System",
enumList:["PC","Mac","Sun","Other"],
pat:/^\w[\w.\/:-]+$/,
patMsg:"just letters and punctuation"
},
{name:"Server",
displayName:"Server",
fieldGroupName:"WebServer",
displayGroupName:"Web Server",
enumList:["Apache","IIS","NetScape","Other"],
pat:/^\w[\w.\/:-]+$/,
patMsg:"just letters and punctuation"
},
{name:"ServerPlatform",
base:"Platform",
fieldGroupName:"WebServer",
displayGroupName:"Web Server"
},
{name:"Product",
displayName:"Product Name",
enumList:["Perl library","Java library","JavaScript library","Standalone..."],
pat:/^\w[\w.\/\s:-]+$/,
patMsg:"just letters and punctuation"
},
{name:"ProductVersion",
displayName:"Product Version",
base:"Version"
},
{name:"Category",
displayName:"Incident Category",
enumList:["Program Bug - some feature does not perform as advertised","Documentation Bug - error or inconsistency in the documentation","Installation Issue - problem getting product to run","Request for Enhancement - something that you would find useful that's not there","Ease of use Issue - some feature is confusing or difficult to use","General Comment","General Question"
],
enumValues:["progbug","docbug","install","enhance","usage","comment","question"],
pat:/^[a-zA-Z]+$/,
patMsg:"just letters"
},
{name:"Severity",
displayName:"Incident Severity",
enumList:["Crashes computer","Crashes program","Spec violation","Other severe","Significant","Cosmetic"],
enumValues:["syscrash","progcrash","spec","severe","major","minor"],
pat:/^[a-zA-Z]+$/,
patMsg:"just letters"
},
{name:"Repeatability",
displayName:"Repeatability",
enumList:["Every time","Only right after reboot","Only right after program startup","Intermittent","Only happened once"],
enumValues:["always","reboot","program","intermittent","once"],
pat:/^[a-zA-Z]+$/,
patMsg:"just letters"
},
{name:"Topic",
displayName:"Incident Topic/Synopsis",
maxLen:50,
patMsg:"just letters and punctuation"
},
{name:"Description",
displayName:"Incident Description",
skipValidate:false,
displayWidth:50,
displayHeight:8,
required:true,
minLen:10,
maxLen:1000,
patMsg:"entry required"
},
{name:"ReproduceSteps",
displayName:"How can we repeat this problem?",
skipValidate:true,
displayWidth:50,
displayHeight:5,
maxLen:1000
},
{name:"SuggestedFix",
displayName:"Do you have a suggested fix?",
skipValidate:true,
displayWidth:50,
displayHeight:5,
maxLen:1000
}
);
}


// <=%=> ../cleancode/Cgi/PageValidator/MainLib/UserLib.js (saved 89%)
// last modified: Tue Dec 19 21:11:31 PST 2006

function UserLib(){
return new Array(
{name:"AddressLn1",
displayName:"Primary address",
base:"Address"},
{name:"AddressLn2",
displayName:"Secondary address",
required:false,
base:"Address"},
{name:"State",
base:"USState"},
{name:"PostCode",
base:"USPostCode"},
{name:"PhoneAreaCode",
base:"USPhoneAreaCode"},
{name:"PhoneDay",
displayName:"Daytime phone",
fieldGroupName:"Phone",
base:"USPhoneNumber"},
{name:"PhoneEve",
displayName:"Evening phone",
fieldGroupName:"Phone",
required:false,
base:"USPhoneNumber"},
{name:"PhoneFax",
displayName:"Fax number",
fieldGroupName:"Econtact",
displayGroupName:"E-contact",
required:false,
base:"USPhoneNumber"},
{name:"PhoneMobile",
displayName:"Mobile number",
fieldGroupName:"Phone",
required:false,
base:"USPhoneNumber"},
{name:"Password1",
fieldGroupName:"Password",
base:"Password",
plugin:"SamePassword",
dependsOn:"Password2"},
{name:"Password2",
fieldGroupName:"Password",
base:"Password"},
{name:"OptCity",
required:false,
base:"City"},
{name:"OptState",
required:false,
base:"USState"},
{name:"OptPostCode",
required:false,
base:"USPostCode"},
{name:"OptTitle",
required:false,
base:"Title"},
{name:"OptEmail",
required:false,
base:"Email"},
{name:"OptFirstName",
required:false,
base:"FirstName"},
{name:"OptLastName",
required:false,
base:"LastName"},
{name:"OptPhoneDay",
required:false,
base:"PhoneDay"},
{name:"Time",
required:true,
minVal:3,
patMsg:"any text"
},
{name:"Time1",
minVal:3,
patMsg:"any text"
}
);
}


// <=%=> ../cleancode/Cgi/PageValidator/PluginLib/CCLib.js (saved 93%)
// last modified: Tue Dec 19 21:11:31 PST 2006

var CCverifier={
VISA:/^4\d{12}(\d{3})?$/,
MC:/^5(1|5)\d{14}$/,
AMEX:/^3(4|7)\d{13}$/,
DINERS:/^3(0|6|8)\d{12}$/,
CARTEBLANCHE:/^3(0|6|8)\d{12}$/,
DISCOVER:/^6011\d{12}$/,
JCB:/^3(088|096|112|158|337|528)\d{12}$/,
ENROUTE:/^2(014|149)\d{11}$/
};

