// Kaosweaver Calendar Settings - do not remove
// by Paul Davis - http://www.kaosweaver.com
// KW_lang[English]
// KW_order[0,1,2]
// KW_del1[/]
// KW_del2[/]
// KW_dd[true]
// KW_cWidth[170]

var sDate = new Array();
var mName = new Array("January","February","March","April","May","June","July","August","September","October","November","December")
var wName = new Array("Su","Mo","Tu","We","Th","Fr","Sa")
var cFontName = "Arial, Helvetica, sans-serif;"
var KW_color = new Array("#000000","#02ca93","#d9d6fe","#ffffff","#afefff","#cccccc","#7e9790","#d9d6fe")
var KW_cl=0;
var KW_od=-1;
var KW_tmo=0;
var KW_cWidth=170;
function m_class(m,d,y) { 
	this.month=m;this.day=d;this.year=y;this.output=this.month+"/"+this.day+"/"+this.year;
	var kd=new Date();this.special=checkDates(this.month,this.day,this.year)
	this.today=((kd.getMonth()+1)==this.month && kd.getDate()==this.day && kd.getFullYear()==this.year)
	var td=new Date(this.year, (this.month-1), this.day+KW_od);this.past=(KW_od==-1)?0:(kd>td)
}
// Kaosweaver End of Calendar Settings - do not remove
function KW_doCalendar(obj,E,m,y) { //v2.2.0
  var d=new Date();f=0;d.setDate(1);if (!m && m!=0) {m=d.getMonth();f=KW_cl}
  if (f==1 && MM_findObj('KW_selectedMonth').value!=-1) 
  m=MM_findObj('KW_selectedMonth').value-1;d.setMonth(m);	
  if (!y) y=d.getFullYear();if (f==1 && MM_findObj('KW_selectedYear').value!=-1) 
  y=MM_findObj('KW_selectedYear').value;d.setFullYear(y);dy=d.getDay();if (!E) E=0;
  if(E==1)dy=(dy==0)?6:dy-1;dP=new Date();dP.setMonth(m);dP.setDate(0);
  pStart=dP.getDate()-dy+1;dStr=new Array();for (i=pStart;i<dP.getDate()+1;i++) { tmo=(KW_tmo)?"":i;
  tMonth=(m==0)?"12":m;tYear=(m==0)?y-1:y;dStr[dStr.length]=new m_class(tMonth,tmo,tYear);
  }EOM=false;for (i=1;!EOM;i++){d.setDate(i);if (m!=d.getMonth()) EOM=true; else { 
  dStr[dStr.length]=new m_class((Number(m)+1),i,y);}}cnt=1;si=0;
  if(E==1)si=(d.getDay()==0)?6:d.getDay()-1;else si=d.getDay();	for (i=si;i<7;i++) {
  tMonth=(m==11)?"1":Number(m)+2;tYear=(m==11)?Number(y)+1:y; tmo=(KW_tmo)?"":cnt;
  dStr[dStr.length]=new m_class(tMonth,tmo,tYear); cnt++;}pM=(m==0)?11:m-1;
  pY=(m==0)?y-1:y;nM=(m==11)?0:Number(m)+1;nY=(m==11)?Number(y)+1:y;
  wStr="<html><head><style type=\"text/css\"><!--td {  font-family: "+cFontName+" font-size: 12px; }\n.tblHdr { font-weight: bold; color: "+KW_color[0]+"; background-color: "+KW_color[6]+" }\n.subTbl{ color: "+KW_color[0]+"; background-color: "+KW_color[7]+";  text-align: center}-->\n</style>\n<title>"+mName[m]+", "+y+"</title>\n</head>\n<body  topmargin=\"0\" marginwidth=\"0\" marginheight=\"0\" leftmargin=\"0\" onLoad=\"window.focus()\">\n<table width=\"100%\" border=\"0\" cellspacing=\"0\">\n<tr>\n<td bgcolor=\""+KW_color[6]+"\">\n<table width=\"100%\" border=0>\n"
  wStr+="<tr>\n<td align=center bgcolor=\""+KW_color[6]+"\" class=\"tblHdr\" colspan=\"4\"><a href=\"javascript:window.opener.KW_doCalendar('"+obj+"',"+E+",'"+pM+"','"+pY+"');\" class=\"tblHdr\">&laquo</a>&nbsp;&nbsp;"+mName[m]+"&nbsp;&nbsp;<a href=\"javascript:window.opener.KW_doCalendar('"+obj+"',"+E+",'"+nM+"','"+nY+"');\"  class=\"tblHdr\">&raquo</a></td>\n<td colspan=3 align=center class=\"tblHdr\"><a href=\"javascript:window.opener.KW_doCalendar('"+obj+"',"+E+",'"+m+"','"+(y-1)+"');\" class=\"tblHdr\">&laquo</a>&nbsp;&nbsp;"+y+"&nbsp;&nbsp;<a href=\"javascript:window.opener.KW_doCalendar('"+obj+"',"+E+",'"+m+"','"+(Number(y)+1)+"');\"  class=\"tblHdr\">&raquo</a></td>\n</tr>\n"
  wStr+="<tr>\n";for(wdn=0;wdn<7;wdn++)wStr+="<td class=\"subTbl\">"+wName[wdn]+"</td>\n";wStr+="</tr>\n"
  for (x=0;x<parseInt(dStr.length/7);x++) {	wStr+="<tr>\n";	for (y=0;y<7;y++) {
  yT=(E==1)?5:0;bC=(y==yT||y==6)?KW_color[2]:KW_color[3];
  if ((Number(m)+1)!=dStr[x*7+y].month) bC=KW_color[5]; if (dStr[x*7+y].special) 
  bC=KW_color[4];if (dStr[x*7+y].today) bC=KW_color[1];
  a0=(KW_cl!=1)?"":"window.opener.MM_findObj('KW_selectedMonth',window.opener.document).value='"+dStr[x*7+y].month+"';window.opener.MM_findObj('KW_selectedYear',window.opener.document).value='"+dStr[x*7+y].year+"'; "  
  a1=(dStr[x*7+y].past)?"":"<a href=\"javascript:window.opener.MM_findObj('"+obj+"',window.opener.document).value='"+dStr[x*7+y].output+"';"+a0+" window.close();\" >";
  a2=(dStr[x*7+y].past)?"":"</a>";
  wStr+="<td align=\"center\" bgcolor="+bC+">"+a1+dStr[x*7+y].day+a2+"</td>\n";
	}	wStr+="</tr>\n";}	wStr+="<tr><td colspan=7></td></tr></table></td></tr></table></body></html>";
	var w = parseInt(screen.width/2-75); var h=parseInt(screen.height/2-75);
	var look='width='+KW_cWidth+',height=155,left='+w+',top='+h;	popwin=window.open('','calendar',look);
	popwin.document.open();	popwin.document.write(wStr);	popwin.document.close();
}

<!-- Zoom Browser Window (Used to display page-specific Help)
var zBox,zStep=0,zLink

function doZoom() {
    zStep+=1;zPct=(10-zStep)/10
if (document.layers) {
	zBox.moveTo(toX+zPct*(fromX-toX),toY+zPct*(fromY-toY));
	zBox.document.open();
	zBox.document.write("<table width='"+maxW*(1-zPct)+"' height="+maxH*(1-zPct)+" border=2 cellspacing=0><tr><td></td></tr></table>");
	zBox.document.close();
  }else{
	zBox.style.border="2px solid #999999";
	zBox.style.left=toX+zPct*(fromX-toX);
	zBox.style.top=toY+zPct*(fromY-toY);
	zBox.style.width=maxW*(1-zPct);
	zBox.style.height=maxH*(1-zPct);
	}
zBox.style.visibility="visible";
  if  (zStep < 10) setTimeout("doZoom("+fromX+","+fromY+","+toX+","+toY+")",30);
  else{zBox.style.visibility='hidden';zStep=0;
  if (zLink) {
  var w=window.open(''+ zLink + '','zWindow','width='+maxW+',height='+maxH+',left='+adjX+',top='+adjY+','+ScllBr+',resizable');
  }
 }
}

function Lvl_Zoom(evt,zlink,maxw,maxh,tox,toy,scr) {
  if (arguments.length > 2)
  scrollH=(window.pageYOffset!=null)?window.pageYOffset:document.body.scrollTop;
     maxW=maxw?maxw:window.innerWidth?innerWidth:document.body.clientWidth;
     maxH=maxh?maxh:window.innerHeight?innerHeight:document.body.clientHeight;
      toX=tox?tox:0;
      toY=(toy?toy:0)+scrollH;
    fromX=evt.pageX?evt.pageX:evt.clientX;
    fromY=(evt.pageY?evt.pageY:evt.clientY)+(document.all?scrollH:0);
     adjX=toX+evt.screenX-fromX;
     adjY=toY+evt.screenY-fromY;
 if (document.createElement && document.body.appendChild && !zBox) {
	zBox=document.createElement("div");
	zBox.style.position="absolute";
	document.body.appendChild(zBox);
 }else if (document.all && !zBox) {
	document.all[document.all.length-1].outerHTML+='<div id="zBoxDiv" style="position:absolute"></div>';
	zBox=document.all.zBoxDiv;
 }else if (document.layers && !zBox) {
	zBox=new Layer(maxW);zBox.style=zBox;
 }if (scr == 'y'){ ScllBr = 'scrollbars=yes'}else{ScllBr = 'scrollbars=no'}
    zLink=zlink;
    doZoom();
}

function P7_OpResizeFix(a) { //v1.1 by PVII
if(!window.opera){return;}if(!document.p7oprX){
 document.p7oprY=window.innerWidth;document.p7oprX=window.innerHeight;
 document.onmousemove=P7_OpResizeFix;
 }else{if(document.p7oprX){
  var k=document.p7oprX-window.innerHeight;
  var j=document.p7oprY - window.innerWidth;
  if(k>1 || j>1 || k<-1 || j<-1){
  document.p7oprY=window.innerWidth;document.p7oprX=window.innerHeight;
  location.reload();}}}
}
P7_OpResizeFix();

function P7_getWD(tDim){ //v2.1 by PVII
 var sh=0,sw=0,rt=0;if(window.innerWidth){sh=window.innerHeight;sw=window.innerWidth;
 }else if(document.body){sh=document.body.clientHeight;sw=document.body.clientWidth;
 if(document.body.offsetHeight==sh&&document.documentElement&&document.documentElement.clientHeight){
  sh=document.documentElement.clientHeight;}
 if(document.body.offsetWidth==sw&&document.documentElement&&document.documentElement.clientWidth) {
 sw=document.documentElement.clientWidth;}}rt=(tDim=="width")?sw:sh;return rt;
}

function P7_getLDims(el) { //v2.1 by PVII
 var x,ll=0,tl=0,hh=0,ww=0,wx,g,gg;
 if((g=MM_findObj(el))!=null){gg=(document.layers)?g:g.style;ll=parseInt(gg.left);tt=parseInt(gg.top);
 if(isNaN(ll)){if(g.currentStyle){ll=parseInt(g.currentStyle.left);}else if(document.defaultView){
 ll=parseInt(document.defaultView.getComputedStyle(g,"").getPropertyValue("left"));}if(isNaN(ll)){ll=0;}}
 if(isNaN(tt)){if(g.currentStyle){tt=parseInt(g.currentStyle.top);}else if(document.defaultView){
 tt=parseInt(document.defaultView.getComputedStyle(g,"").getPropertyValue("top"));}if(isNaN(ll)){tt=0;}}
 if(document.all||document.getElementById){ww=parseInt(g.offsetWidth);hh=parseInt(g.offsetHeight);
 if(!ww){ww=parseInt(g.style.pixelWidth);if(!ww){ww=parseInt(g.style.width);}}if(!hh){
 hh=parseInt(g.style.pixelHeight);}if(g.hasChildNodes){for(x=0;x<g.childNodes.length;x++){
 wx=parseInt(g.childNodes[x].offsetWidth);if(wx>ww){ww=wx;}}}}else if(document.layers){
 ww=parseInt(g.clip.width);hh=parseInt(g.clip.height);}}var aR=[ll,tt,hh,ww];return aR;
}

function P7_alignRR() { //v2.1 by PVII
 var i;if(!document.p7alignRR) {return;}if(document.layers){
 if(innerWidth!=document.p7RRiw || innerHeight!=document.p7RRih){location.reload();}
 }else{document.p7RR=1;for(i=0;i<p7aRR.length;i++){eval(p7aRR[i]);}document.p7RR=0;}
}

function P7_alignWD2() { //v2.1 by PVII
 var g,gg,lp=0,tp=0,aL,lh,lw,ww,wh,pa='px',args=P7_alignWD2.arguments;if(document.layers||window.opera){pa='';}
 for(var i=0;i<args.length;i+=4){if((g=MM_findObj(args[i]))!=null){gg=(document.layers)?g:g.style;
 mm=parseInt(args[i+1]);mr=parseInt(args[i+2]);ml=parseInt(args[i+3]);ww=parseInt(P7_getWD('width'));
 wh=parseInt(P7_getWD('height'));aL=P7_getLDims(args[i]);lh=aL[2];lw=aL[3];tp=aL[1];lp=aL[0];
 if(mm==1){lp=mr;}if(mm==2){lp=parseInt((ww-lw-mr)/2);if(lp<0){lp=0;}}if(mm==3){lp=ww-lw-mr;if(lp<ml){lp=ml;}}
 if(mm==4){tp=parseInt((wh-lh-mr)/2);if(tp<0){tp=0;}}if(mm==5){tp=parseInt((wh-lh)/2);lp=parseInt((ww-lw)/2);
 if((lp-mr)<=0){lp=mr;}if((tp-ml)<=0){tp=ml;}}if(mm==6){tp=wh-lh-mr;}gg.top=tp+pa;gg.left=lp+pa;
 if(!document.p7alignRR){p7aRR=new Array();document.p7alignRR=true;document.p7RR=0;
 if(document.layers){document.p7RRiw=innerWidth;document.p7RRih=innerHeight;}onresize=P7_alignRR;}
 if(document.p7RR==0){p7aRR[p7aRR.length]="P7_alignWD2('"+args[i]+"',"+mm+","+mr+","+ml+")";}}}
}

function P7_alignLL2(){ //v2.1 by PVII
 var g,gg,lp,tp,tW,tH,oV,oH,aL,aT,pa='px',args=P7_alignLL2.arguments;if(document.layers||window.opera){pa='';}
 for(var i=0;i<args.length;i+=5){if((g=MM_findObj(args[i]))!=null){gg=(document.layers)?g:g.style;
 oV=parseInt(args[i+3]);oH=parseInt(args[i+4]);aL = P7_getLDims(args[i]);aT = P7_getLDims(args[i+1]);
 lp=aL[0];tp=aL[1];switch (args[i+2]){case 'A':lp=aT[0]-aL[3]+oH;tp=aT[1]-aL[2]+oV;break;
 case 'B':lp=aT[0]+oH;tp=aT[1]-aL[2]+oV;break;case 'C':lp=aT[0]+aT[3]+oH;tp=aT[1]-aL[2]+oV;break;
 case 'D':lp=aT[0]-aL[3]+oH;tp=aT[1]+oV;break;case 'E':lp=aT[0]+aT[3]+oH;tp=aT[1]+oV;break;
 case 'F':lp=aT[0]-aL[3]+oH;tp=aT[1]+aT[2]+oV;break;case 'G':lp=aT[0]+oH;tp=aT[1]+aT[2]+oV;break;
 case 'H':lp=aT[0]+aT[3]+oH;tp=aT[1]+aT[2]+oV;break;}gg.left=lp+pa;gg.top=tp+pa;
 if(!document.p7alignRR){p7aRR=new Array();document.p7alignRR=true;document.p7RR=0;onresize=P7_alignRR;
 if(document.layers){document.p7RR=0;document.p7RRiw=innerWidth;document.p7RRih=innerHeight;}}if(document.p7RR==0){
 p7aRR[p7aRR.length]="P7_alignLL2('"+args[i]+"','"+args[i+1]+"','"+args[i+2]+"',"+oV+","+oH+")";}}}
}
function MM_showHideLayers() { //v6.0
  var i,p,v,obj,args=MM_showHideLayers.arguments;
  for (i=0; i<(args.length-2); i+=3) if ((obj=MM_findObj(args[i]))!=null) { v=args[i+2];
    if (obj.style) { obj=obj.style; v=(v=='show')?'visible':(v=='hide')?'hidden':v; }
    obj.visibility=v; }
}

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

function P7_autoLayers() { //v1.2 by PVII
 var g,b,k,f,args=P7_autoLayers.arguments;
 var a = parseInt(args[0]);if(isNaN(a))a=0;
 if(!document.p7setc) {p7c=new Array();document.p7setc=true;
  for (var u=0;u<10;u++) {p7c[u] = new Array();}}
 for(k=0; k<p7c[a].length; k++) {
  if((g=MM_findObj(p7c[a][k]))!=null) {
   b=(document.layers)?g:g.style;b.visibility="hidden";}}
 for(k=1; k<args.length; k++) {
  if((g=MM_findObj(args[k])) != null) {
   b=(document.layers)?g:g.style;b.visibility="visible";f=false;
   for(j=0;j<p7c[a].length;j++) {
    if(args[k]==p7c[a][j]) {f=true;}}
  if(!f) {p7c[a][p7c[a].length++]=args[k];}}}
}

function P7_Scrub(obj) { //v1.0 by PVII
 if(obj.blur){obj.blur();}
}
function P7_Snap() { //v2.63 by PVII
 var x,y,ox,bx,oy,p,tx,a,b,k,d,da,e,el,tw,q0,xx,yy,w1,pa='px',args=P7_Snap.arguments;a=parseInt(a);
 if(document.layers||window.opera){pa='';}for(k=0;k<(args.length);k+=4){
 if((g=MM_findObj(args[k]))!=null){if((el=MM_findObj(args[k+1]))!=null){
 a=parseInt(args[k+2]);b=parseInt(args[k+3]);x=0;y=0;ox=0;oy=0;p="";tx=1;
 da="document.all['"+args[k]+"']";if(document.getElementById){
 d="document.getElementsByName('"+args[k]+"')[0]";if(!eval(d)){
 d="document.getElementById('"+args[k]+"')";if(!eval(d)){d=da;}}
 }else if(document.all){d=da;}if(document.all||document.getElementById){while(tx==1){
 p+=".offsetParent";if(eval(d+p)){x+=parseInt(eval(d+p+".offsetLeft"));y+=parseInt(eval(d+p+".offsetTop"));
 }else{tx=0;}}ox=parseInt(g.offsetLeft);oy=parseInt(g.offsetTop);tw=x+ox+y+oy;
 if(tw==0||(navigator.appVersion.indexOf("MSIE 4")>-1&&navigator.appVersion.indexOf("Mac")>-1)){
  ox=0;oy=0;if(g.style.left){x=parseInt(g.style.left);y=parseInt(g.style.top);}else{
  w1=parseInt(el.style.width);bx=(a<0)?-5-w1:-10;a=(Math.abs(a)<1000)?0:a;b=(Math.abs(b)<1000)?0:b;
  x=document.body.scrollLeft+event.clientX+bx;y=document.body.scrollTop+event.clientY;}}
 }else if(document.layers){x=g.x;y=g.y;q0=document.layers,dd="";for(var s=0;s<q0.length;s++){
  dd='document.'+q0[s].name;if(eval(dd+'.document.'+args[k])){x+=eval(dd+'.left');y+=eval(dd+'.top');
  break;}}}e=(document.layers)?el:el.style;xx=parseInt(x+ox+a),yy=parseInt(y+oy+b);
 if(navigator.appVersion.indexOf("MSIE 5")>-1 && navigator.appVersion.indexOf("Mac")>-1){
  xx+=parseInt(document.body.leftMargin);yy+=parseInt(document.body.topMargin);}
 e.left=xx+pa;e.top=yy+pa;}}}
}
function MM_reloadPage(init) {  //reloads the window if Nav4 resized
  if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {
    document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }}
  else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload();
}
MM_reloadPage(true);

function pviiClassNew(obj, new_style) { //v2.7 by PVII
  obj.className=new_style;
}
function MM_callJS(jsStr) { //v2.0
  return eval(jsStr)
}

function checkDates(m1,d1,y1) { //v2.1.5
	var rStr=false;for(var i=0;i<sDate.length;i++) {var tDate=sDate[i].split(",");
		if (tDate[2]=="*" || tDate[2]==y1) {if (tDate[1]==d1 && tDate[0]==m1)	rStr=true;
		}}return rStr;
}
//Scripts from BaseScripts.js
var digits = "0123456789";
var lowercaseLetters = "abcdefghijklmnopqrstuvwxyz"
var uppercaseLetters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
var whitespace = " \t\n\r";
var decimalPointDelimiter = "."
var phoneNumberDelimiters = "()- ";
var DateDelimiters = "/";
var validUSPhoneChars = digits + phoneNumberDelimiters;
var validWorldPhoneChars = digits + phoneNumberDelimiters + "+";
var SSNDelimiters = "- ";
var validSSNChars = digits + SSNDelimiters;
var digitsInSocialSecurityNumber = 9;
var digitsInUSPhoneNumber = 10;
var ZIPCodeDelimiters = "-";
var ZIPCodeDelimeter = "-"
var validZIPCodeChars = digits + ZIPCodeDelimiters
var digitsInZIPCode1 = 5
var digitsInZIPCode2 = 9
var creditCardDelimiters = " "
var mPrefix = "You did not enter a value into the "
var mSuffix = " field. This is a required field. Please enter it now."
var sUSLastName = "Last Name"
var sUSFirstName = "First Name"
var sWorldLastName = "Family Name"
var sWorldFirstName = "Given Name"
var sTitle = "Title"
var sCompanyName = "Company Name"
var sUSAddress = "Street Address"
var sWorldAddress = "Address"
var sCity = "City"
var sStateCode = "State Code"
var sWorldState = "State, Province, or Prefecture"
var sCountry = "Country"
var sZIPCode = "ZIP Code"
var sWorldPostalCode = "Postal Code"
var sPhone = "Phone Number"
var sFax = "Fax Number"
var sDateOfBirth = "Date of Birth"
var sExpirationDate = "Expiration Date"
var sEmail = "Email"
var sSSN = "Social Security Number"
var sCreditCardNumber = "Credit Card Number"
var sOtherInfo = "Other Information"
var pEntryPrompt = "Please enter a "
var pStateCode = "2 character code (like CA)."
var pZIPCode = "5 or 9 digit U.S. ZIP Code (like 94043)."
var pUSPhone = "10 digit U.S. phone number (like 415 555 1212)."
var pWorldPhone = "international phone number."
var pSSN = "9 digit U.S. social security number (like 123 45 6789)."
var pEmail = "valid email address (like foo@bar.com)."
var pCreditCard = "valid credit card number."
var pDay = "day number between 1 and 31."
var pMonth = "month number between 1 and 12."
var pYear = "2 or 4 digit year number."
var defaultEmptyOK = false

function makeArray(n) {
   for (var i = 1; i <= n; i++) {
      this[i] = 0
   }
   return this
}

var daysInMonth = makeArray(12);
daysInMonth[1] = 31;
daysInMonth[2] = 29;   // must programmatically check this
daysInMonth[3] = 31;
daysInMonth[4] = 30;
daysInMonth[5] = 31;
daysInMonth[6] = 30;
daysInMonth[7] = 31;
daysInMonth[8] = 31;
daysInMonth[9] = 30;
daysInMonth[10] = 31;
daysInMonth[11] = 30;
daysInMonth[12] = 31;

var USStateCodeDelimiter = "|";
var USStateCodes = "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"

function isEmpty(s)
{   return ((s == null) || (s.length == 0))
}

function isWhitespace (s)
{   var i;
    if (isEmpty(s)) return true;

    for (i = 0; i < s.length; i++)
    {
        var c = s.charAt(i);

        if (whitespace.indexOf(c) == -1) return false;
    }
    return true;
}

function stripWhitespace (s)

{   return stripCharsInBag (s, whitespace)
}

function charInString (c, s)
{   for (i = 0; i < s.length; i++)
    {   if (s.charAt(i) == c) return true;
    }
    return false
}

function stripInitialWhitespace (s)

{   var i = 0;

    while ((i < s.length) && charInString (s.charAt(i), whitespace))
       i++;
    return s.substring (i, s.length);
}
function isLetter (c)
{   return ( ((c >= "a") && (c <= "z")) || ((c >= "A") && (c <= "Z")) )
}
function isDigit (c)
{   return ((c >= "0") && (c <= "9"))
}
function isLetterOrDigit (c)
{   return (isLetter(c) || isDigit(c))
}
function isInteger (s)
{   var i;

    if (isEmpty(s))
       if (isInteger.arguments.length == 1) return defaultEmptyOK;
       else return (isInteger.arguments[1] == true);
  for (i = 0; i < s.length; i++)
    {
        // Check that current character is number.
        var c = s.charAt(i);

        if (!isDigit(c)) return false;
    }
    return true;
}

function isValidTime(timeStr) {
// Checks for a time format of hh:mm am/pm
var amORpm = new String();
var myHour;
var myMinutes;
var myLength;
var mtInt;

//first, get rid of all of the whitespace
timeStr = stripWhitespace(timeStr);

//Get the length of the string
myLength = timeStr.length;
//if the string is not at least the minumum length and less than the max length
// we should return false
if ((myLength<6) || (myLength>7))
{
	//alert ("too many / too few characters.  Length = " + myLength);
	return false;
}
//The rightmost 2 characters should be am or pm
amORpm = timeStr.substr(myLength-2, 2);
//test for am / pm
tmp = amORpm.toLowerCase();

if (tmp=="am")
{
}
else
{
	if (tmp=="pm")
	{
	}
	else
	{
		//alert ("not am or pm.  amORpm = " + tmp);
		return false;
	}
}

//The 2 characters to the left of that sould be the minutes
myMinutes = timeStr.substr(myLength-4, 2);
//make sure it is a number
if (isNaN(parseInt(myMinutes, 10)))
{
	//alert ("Minutes is not a number.");
	return false
}
//it is a number...Make sure it is between 0 and 60
myInt = parseInt(myMinutes, 10);
//alert ("myHour = " + myInt.toString());
if ((myInt<0) || (myInt>60))
{
	//alert ("Minutes is out of range.  myMinutes = " + myInt.toString());
	return false;
}

//The characters before the ":" should be the hour
myHour = timeStr.substring(0, timeStr.indexOf(':'))
//make sure it is a number
if (isNaN(parseInt(myHour, 10)))
{
	//alert ("The Hour is not a number.");
	return false
}
//it is a number...Make sure it is between 1 and 12
myInt = parseInt(myHour, 10);
//alert ("myHour = " + myInt.toString());
if ((myInt<1) || (myInt>12))
{
	//alert ("Hour is out of range.  myHour = " + myInt.toString());
	return false;
}

return true;  //time is valid
}



function isValidDate(dateStr)
{
	// Checks for the following valid date formats:
	// MM/DD/YY   MM/DD/YYYY   MM-DD-YY   MM-DD-YYYY
	// Also separates date into month, day, and year variables
	
	//var datePat = /^(\d{1,2})(\/|-)(\d{1,2})\2(\d{2}|\d{4})$/;
	
	// To require a 4 digit year entry, use this line instead:
	var datePat = /^(\d{1,2})(\/|-)(\d{1,2})\2(\d{4})$/;
	
	var matchArray = dateStr.match(datePat); // is the format ok?
	if (matchArray == null)
	{
		alert("Date is not in a valid mm/dd/yyyy format.")
		return false;
	}
	month = matchArray[1]; // parse date into variables
	day = matchArray[3];
	year = matchArray[4];
	if (month < 1 || month > 12)
	{ // check month range
		alert("Month must be between 1 and 12.");
		return false;
	}
	if (day < 1 || day > 31)
	{
		alert("Day must be between 1 and 31.");
		return false;
	}
	if ((month==4 || month==6 || month==9 || month==11) && day==31)
	{
		alert("Month "+month+" doesn't have 31 days!")
		return false
	}
	if (month == 2)
	{ // check for february 29th
		var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
		if (day>29 || (day==29 && !isleap))
		{
			alert("February " + year + " doesn't have " + day + " days!");
			return false;
	   }
	}
	return true;  // date is valid
}

function isInRange (s, a, b)
{
	if (isEmpty(s)) return false;
    if (!isInteger(s)) return false;
    var num = parseInt (s);
    return ((num >= a) && (num <= b));
}

function reformat (s)
{
	var arg;
    var sPos = 0;
    var resultString = "";

    for (var i = 1; i < reformat.arguments.length; i++) {
       arg = reformat.arguments[i];
       if (i % 2 == 1) resultString += arg;
       else {
           resultString += s.substring(sPos, sPos + arg);
           sPos += arg;
       }
    }
    return resultString;
}
function isUSPhoneNumber (s)
{   if (isEmpty(s))
       if (isUSPhoneNumber.arguments.length == 1) return defaultEmptyOK;
       else return (isUSPhoneNumber.arguments[1] == true);
    return (isInteger(s) && s.length == digitsInUSPhoneNumber)
}
function stripCharsInBag (s, bag)

{   var i;
    var returnString = "";

    // Search through string's characters one by one.
    // If character is not in bag, append to returnString.

    for (i = 0; i < s.length; i++)
    {
        // Check that current character isn't whitespace.
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }

    return returnString;
}
function reformatUSPhone (USPhone)
{   return (reformat (USPhone, "(", 3, ") ", 3, "-", 4))
}

function stripWhitespace (s)

{   return stripCharsInBag (s, whitespace)
}
function isZIPCode (s)
{  if (isEmpty(s))
       if (isZIPCode.arguments.length == 1) return defaultEmptyOK;
       else return (isZIPCode.arguments[1] == true);
   return (isInteger(s) &&
            ((s.length == digitsInZIPCode1) ||
             (s.length == digitsInZIPCode2)))
}
function reformatZIPCode (ZIPString)
{   if (ZIPString.length == 5) return ZIPString;
    else return (reformat (ZIPString, "", 5, "-", 4));
}
function isStateCode(s)
{   if (isEmpty(s))
       if (isStateCode.arguments.length == 1) return defaultEmptyOK;
       else return (isStateCode.arguments[1] == true);
    return ( (USStateCodes.indexOf(s) != -1) &&
             (s.indexOf(USStateCodeDelimiter) == -1) )
}
function isFloat (s)

{   var i;
    var seenDecimalPoint = false;

    if (isEmpty(s))
       if (isFloat.arguments.length == 1) return defaultEmptyOK;
       else return (isFloat.arguments[1] == true);

    if (s == decimalPointDelimiter) return false;

    for (i = 0; i < s.length; i++)
    {
        // Check that current character is number.
        var c = s.charAt(i);

        if ((c == decimalPointDelimiter) && !seenDecimalPoint) seenDecimalPoint = true;
        else if (!isDigit(c)) return false;
    }
    return true;
}

function isNumeric(val)
{
	if(isFloat(val) || isInteger(val))
	{
		return true;
	}
	else
	{
		return false;
	}
}

function numDecimalPlaces(val)
{
	//Returns the number of decimal places in a numeric value
	if(isFloat(val))
	{
		decPos = val.indexOf('.');
		if(decPos == -1) { return 0; }
		else { return (val.length - 1 - decPos); }
	}
	else { return 0; }
}

function validateDataType(data, type)
{
	var returnValue = false;
	
	if(type == "T")
	{
		returnValue = true;
	}
	else if(type == "N")
	{
		returnValue = (isFloat(data) || isInteger(data));
	}
	else if(type == "P")
	{
		returnValue = (isFloat(data) || isInteger(data));
	}
	else if(type == "C")
	{
		returnValue = (isFloat(data) || isInteger(data));
	}
	else if(type == "Y")
	{
		returnValue = isBool(data);
	}
	else if(type == "D")
	{
		returnValue = isValidDate(data);
	}
	else if(type == "H")
	{
		returnValue = (isFloat(data) || isInteger(data));
	}
	else if(type == "K")
	{
		returnValue = true;
	}
	else if(type == "I")
	{
		returnValue = isInteger(data);
	}
	else if(type == "F")
	{
		returnValue = true;
	}
	else if(type == "none")
	{
		returnValue = true;
	}
	
	return returnValue;
}

function isBool(val)
{
	var returnValue = false;
	
	if(val == "Y" || val == "N")
	{
		returnValue = true;
	}
	if(val == 1 || val == 0)
	{
		returnValue = true;
	}
	if(val == true || val == false)
	{
		returnValue = true;
	}
	
	return returnValue;
}

function isMonth (s)
{   if (isEmpty(s))
       if (isMonth.arguments.length == 1) return defaultEmptyOK;
       else return (isMonth.arguments[1] == true);
    return isIntegerInRange (s, 1, 12);
}

function isYear (s)
{   if (isEmpty(s))
       if (isYear.arguments.length == 1) return defaultEmptyOK;
       else return (isYear.arguments[1] == true);
    if (!isNonnegativeInteger(s)) return false;
    return ((s.length == 4));
}

function isIntegerInRange (s, a, b)
{   if (isEmpty(s))
       if (isIntegerInRange.arguments.length == 1) return defaultEmptyOK;
       else return (isIntegerInRange.arguments[1] == true);

    if (!isInteger(s, false)) return false;

    var num = parseInt (s);
    return ((num >= a) && (num <= b));
}

function isNonnegativeInteger (s)
{   var secondArg = defaultEmptyOK;

    if (isNonnegativeInteger.arguments.length > 1)
        secondArg = isNonnegativeInteger.arguments[1];

    return (isSignedInteger(s, secondArg)
         && ( (isEmpty(s) && secondArg)  || (parseInt (s) >= 0) ) );
}

function isSignedInteger (s)

{   if (isEmpty(s))
       if (isSignedInteger.arguments.length == 1) return defaultEmptyOK;
       else return (isSignedInteger.arguments[1] == true);

    else {
        var startPos = 0;
        var secondArg = defaultEmptyOK;

        if (isSignedInteger.arguments.length > 1)
            secondArg = isSignedInteger.arguments[1];

        // skip leading + or -
        if ( (s.charAt(0) == "-") || (s.charAt(0) == "+") )
           startPos = 1;
        return (isInteger(s.substring(startPos, s.length), secondArg))
    }
}


function isEmail (s)
{   if (isEmpty(s))
       if (isEmail.arguments.length == 1) return defaultEmptyOK;
       else return (isEmail.arguments[1] == true);

    // is s whitespace?
    if (isWhitespace(s)) return false;

    // there must be >= 1 character before @, so we
    // start looking at character position 1
    // (i.e. second character)
    var i = 1;
    var sLength = s.length;

    // look for @
    while ((i < sLength) && (s.charAt(i) != "@"))
    { i++
    }

    if ((i >= sLength) || (s.charAt(i) != "@")) return false;
    else i += 2;

    // look for .
    while ((i < sLength) && (s.charAt(i) != "."))
    { i++
    }

    // there must be at least one character after the .
    if ((i >= sLength - 1) || (s.charAt(i) != ".")) return false;
    else return true;
}


function emailCheck (emailStr) 
{
	/* The following variable tells the rest of the function whether or not
	to verify that the address ends in a two-letter country or well-known
	TLD.  1 means check it, 0 means don't. */
	var checkTLD=1;
	
	/* The following is the list of known TLDs that an e-mail address must end with. */
	var knownDomsPat=/^(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum|cc|us)$/;
	
	/* The following pattern is used to check if the entered e-mail address
	fits the user@domain format.  It also is used to separate the username
	from the domain. */
	var emailPat=/^(.+)@(.+)$/;
	
	/* The following string represents the pattern for matching all special
	characters.  We don't want to allow special characters in the address. 
	These characters include ( ) < > @ , ; : \ " . [ ] */
	var specialChars="\\(\\)><@,;:\\\\\\\"\\.\\[\\]";
	
	/* The following string represents the range of characters allowed in a 
	username or domainname.  It really states which chars aren't allowed.*/
	var validChars="\[^\\s" + specialChars + "\]";
	
	/* The following pattern applies if the "user" is a quoted string (in
	which case, there are no rules about which characters are allowed
	and which aren't; anything goes).  E.g. "jiminy cricket"@disney.com
	is a legal e-mail address. */
	var quotedUser="(\"[^\"]*\")";
	
	/* The following pattern applies for domains that are IP addresses,
	rather than symbolic names.  E.g. joe@[123.124.233.4] is a legal
	e-mail address. NOTE: The square brackets are required. */
	var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
	
	/* The following string represents an atom (basically a series of non-special characters.) */
	var atom=validChars + '+';
	
	/* The following string represents one word in the typical username.
	For example, in john.doe@somewhere.com, john and doe are words.
	Basically, a word is either an atom or quoted string. */
	var word="(" + atom + "|" + quotedUser + ")";
	
	// The following pattern describes the structure of the user
	var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
	
	/* The following pattern describes the structure of a normal symbolic
	domain, as opposed to ipDomainPat, shown above. */
	var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");
	
	/* Finally, let's start trying to figure out if the supplied address is valid. */
	
	/* Begin with the coarse pattern to simply break up user@domain into
	different pieces that are easy to analyze. */
	var matchArray=emailStr.match(emailPat);
	
	if (matchArray==null) 
	{
		/* Too many/few @'s or something; basically, this address doesn't
		even fit the general mould of a valid e-mail address. */
		alert("Email address seems incorrect (check @ and .'s)");
		return false;
	}
	
	var user=matchArray[1];
	var domain=matchArray[2];
	
	// Start by checking that only basic ASCII characters are in the strings (0-127).
	for (i=0; i<user.length; i++) 
	{
		if (user.charCodeAt(i)>127) 
		{
			alert("Ths username contains invalid characters.");
			return false;
		  }
	}
	
	for (i=0; i<domain.length; i++) 
	{
		if (domain.charCodeAt(i)>127) 
		{
			alert("Ths domain name contains invalid characters.");
			return false;
	   }
	}
	
	// See if "user" is valid 
	if (user.match(userPat)==null) 
	{
		// user is not valid
		alert("The username doesn't seem to be valid.");
		return false;
	}
	
	/* if the e-mail address is at an IP address (as opposed to a symbolic
	host name) make sure the IP address is valid. */
	
	var IPArray=domain.match(ipDomainPat);
	if (IPArray!=null) 
	{
	// this is an IP address
		for (var i=1;i<=4;i++) 
		{
			if (IPArray[i]>255) 
			{
				alert("Destination IP address is invalid!");
				return false;
			}
		}
		return true;
	}
	
	// Domain is symbolic name.  Check if it's valid.
	var atomPat=new RegExp("^" + atom + "$");
	var domArr=domain.split(".");
	var len=domArr.length;
	
	for (i=0;i<len;i++) 
	{
		if (domArr[i].search(atomPat)==-1) 
		{
			alert("The domain name does not seem to be valid.");
			return false;
	   }
	}
	
	/* domain name seems valid, but now make sure that it ends in a
	known top-level domain (like com, edu, gov) or a two-letter word,
	representing country (uk, nl), and that there's a hostname preceding 
	the domain or country. */
	if (checkTLD && domArr[domArr.length-1].length!=2 && domArr[domArr.length-1].search(knownDomsPat)==-1) 
	{
		alert("The address must end in a well-known domain or two letter " + "country.");
		return false;
	}
	
	// Make sure there's a host name preceding the domain.
	if (len<2) 
	{
		alert("This address is missing a hostname!");
		return false;
	}
	
	// If we've gotten this far, everything's valid!
	return true;
}

function checkUSPhone (theField)
{
    var normalizedPhone =
    stripCharsInBag(theField, phoneNumberDelimiters)
  if (!isUSPhoneNumber(normalizedPhone, false))
    return false;
  else
  {
    theField = reformatUSPhone(normalizedPhone)
    return true;
   }
}

function validateField(fieldText, bRequired)
{
  //Check to see if the text has any length
  if(fieldText.length > 0)
  {
	
    //Replace the single quotes with html single quotes....
    //  These will display correctly on the screen and
    //  go into the database with no problems.
    //fieldText = fieldText.replace("'", "&#039;");
 //   while (fieldText.indexOf("\"")> -1)
//	{
//		fieldText = fieldText.replace("\"","''"); // replace a double quote with \'
//	}	
    fieldText = replaceit(fieldText,"\"","''"); // replace a double quote with \'
  }
  else
  {
    //If it is required, raise an error...
    if(bRequired == true)
    {
      //Error blank field
      return false;
    }
  }
  return fieldText;
}

function isRequired(ctrlTxt)
{
	if(ctrlTxt.length == 0) { return false; }
	else { return true; }
}

function isListboxSelected(ctrl)
{
	//Used to determine whether an option has been selected from a listbox.
	if(ctrl.selectedIndex > -1) { return true; }
	else { return false;}
}

function isComboboxSelected(ctrl)
{
	//Used to determine whether a valid option has been selected from a selectbox.
	if(ctrl.options[ctrl.selectedIndex].text == "(no selection)") { return false; }
	else { return true;}
}

function isCheckboxSelected(ctrl)
{
	//Used to determine whether at least one option in checkbox or radio button 
	//group has been selected
	for(i = 0; i < ctrl.length; i++)
	{
		if(ctrl[i].checked) { return true; }
	}
	
	return false;
}

//Get/Set cookie...
function getCookie(Name) {
  var search = Name + "="
  if (document.cookie.length > 0) { // if there are any cookies
    offset = document.cookie.indexOf(search)
    if (offset != -1) { // if cookie exists
      offset += search.length
      // set index of beginning of value
      end = document.cookie.indexOf(";", offset)
      // set index of end of cookie value
      if (end == -1)
        end = document.cookie.length
      return unescape(document.cookie.substring(offset, end))
    }
  }
}

function setCookie(name, value, daysExpire) {
  if(daysExpire) {
    var expires = new Date();
    expires.setTime(expires.getTime() + 1000*60*60*24*daysExpire);
  }
  document.cookie = name + "=" + escape(value) + (daysExpire == null ? "" : (";expires=" + expires.toGMTString())) + ";path=/";
}

function checkLength(ctrlName, minVal, maxVal)
{
	//Default to true
	var breturn = true;
	
	//If the length of the text passed in is greater than the max length
	//	return false.
	if(ctrlName.length > maxVal)
	{
		breturn = false;
	}
	//If the length of the text passed in is less than
	//	the minimum value then return false
	if(ctrlName.length < minVal)
	{
		breturn = false;
	}
	
	//Return the result
	return breturn;
}

function checkMinLength(value, len)
{
	if(value.length < len)
	{
		return false;
	}
	else
	{
		return true;
	}
}

function convJS(s) {
/// Convert problem characters to JavaScript Escaped values
  if (s == null) {
    return "";
  }
  
  t = s;
  t = replaceit(t,"\\","\\\\"); // replace backslash with \\
  t = replaceit(t,"'","\\\'");  // replace an single quote with \'
  t = replaceit(t,"\"","\\\""); // replace a double quote with \"
  t = replaceit(t,"\r","\\r"); // replace CR with \r;
  t = replaceit(t,"\n","\\n"); // replace LF with \n;

  return t;
} 

function replaceit(s, one, another) 
{
// In a string replace one substring with another
  if (s=="") return "";
  res = "";
  i = s.indexOf(one,0);
  lastpos = 0;
  while (i != -1) {
    res += s.substring(lastpos,i) + another;
    lastpos = i + one.length;
    i = s.indexOf(one,lastpos);
  }
  res += s.substring(lastpos);  // the rest
  return res;  
}



function isNoOffensiveHtml(StrToCheck)
{
  // returns true if there is no offensive html in the string
  // Checks for the following:
  // <A href
  // <Input
  // <script
  var strNoSpaces;
  var i;
  strNoSpaces = stripWhitespace (StrToCheck)

  if (strNoSpaces.indexOf("<ahref",0) != -1)
	return false;  
  if (strNoSpaces.indexOf("<input",0) != -1)
	return false;  
  if (strNoSpaces.indexOf("<script",0) != -1)
	return false;  

return true;  
}

function ltrim ( s )
{
	return s.replace( /^\s*/, "" );
}

function rtrim ( s )
{
	return s.replace( /\s*$/, "" );
}

function trim ( s )
{
	return rtrim(ltrim(s));
}

/* Begin: Functions for dependent Country and State select controls */
function selectCountry(countryCtrl, stateCtrl, selectedState)
{
	if(countryCtrl.options[countryCtrl.selectedIndex].value == "USA")
		fillStatesList(countryCtrl, stateCtrl, selectedState);
	else if(countryCtrl.options[countryCtrl.selectedIndex].value == "Canada")
		fillCanadianProvinces(countryCtrl, stateCtrl, selectedState);
	else
	{
		clearStatesList(stateCtrl);
		
		opt = new Option("(No States/Provinces)", "");
		stateCtrl.options[0] = opt;
	}
}

function clearStatesList(stateCtrl)
{
	// Clear out contents of State list
	if(stateCtrl.length == 0) return;
	
	for(var i = stateCtrl.length - 1; i > -1; i--)
	{
		stateCtrl.remove(i);
	}
}

function selectState(countryCtrl)
{
	if(countryCtrl.options[countryCtrl.selectedIndex].value == 'USA')
		return true;
	else
		return false;
}
	
function fillStatesList(countryCtrl, stateCtrl, selectedState)
{
	clearStatesList(stateCtrl);
	
	// Now add state options
	opt = new Option("(Select a State)", "");
	stateCtrl.options[0] = opt;

	opt = new Option("Alabama", "AL");
	if(selectedState == "AL")
		opt.selected = true;
	stateCtrl.options[stateCtrl.options.length] = opt;

	opt = new Option("Alaska", "AK");
	if(selectedState == "AK")
		opt.selected = true;
	stateCtrl.options[stateCtrl.options.length] = opt;

	opt = new Option("Arizona", "AZ");
	if(selectedState == "AZ")
		opt.selected = true;
	stateCtrl.options[stateCtrl.options.length] = opt;

	opt = new Option("Arkansas", "AR");
	if(selectedState == "AR")
		opt.selected = true;
	stateCtrl.options[stateCtrl.options.length] = opt;

	opt = new Option("California", "CA");
	if(selectedState == "CA")
		opt.selected = true;
	stateCtrl.options[stateCtrl.options.length] = opt;

	opt = new Option("Colorado", "CO");
	if(selectedState == "CO")
		opt.selected = true;
	stateCtrl.options[stateCtrl.options.length] = opt;

	opt = new Option("Connecticut", "CT");
	if(selectedState == "CT")
		opt.selected = true;
	stateCtrl.options[stateCtrl.options.length] = opt;

	opt = new Option("Delaware", "DE");
	if(selectedState == "DE")
		opt.selected = true;
	stateCtrl.options[stateCtrl.options.length] = opt;

	opt = new Option("District of Columbia", "DC");
	if(selectedState == "DC")
		opt.selected = true;
	stateCtrl.options[stateCtrl.options.length] = opt;

	opt = new Option("Florida", "FL");
	if(selectedState == "FL")
		opt.selected = true;
	stateCtrl.options[stateCtrl.options.length] = opt;

	opt = new Option("Georgia", "GA");
	if(selectedState == "GA")
		opt.selected = true;
	stateCtrl.options[stateCtrl.options.length] = opt;

	opt = new Option("Hawaii", "HI");
	if(selectedState == "HI")
		opt.selected = true;
	stateCtrl.options[stateCtrl.options.length] = opt;

	opt = new Option("Idaho", "ID");
	if(selectedState == "ID")
		opt.selected = true;
	stateCtrl.options[stateCtrl.options.length] = opt;

	opt = new Option("Iowa", "IA");
	if(selectedState == "IA")
		opt.selected = true;
	stateCtrl.options[stateCtrl.options.length] = opt;

	opt = new Option("Illinois", "IL");
	if(selectedState == "IL")
		opt.selected = true;
	stateCtrl.options[stateCtrl.options.length] = opt;

	opt = new Option("Indiana", "IN");
	if(selectedState == "IN")
		opt.selected = true;
	stateCtrl.options[stateCtrl.options.length] = opt;

	opt = new Option("Kansas", "KS");
	if(selectedState == "KS")
		opt.selected = true;
	stateCtrl.options[stateCtrl.options.length] = opt;

	opt = new Option("Kentucky", "KY");
	if(selectedState == "KY")
		opt.selected = true;
	stateCtrl.options[stateCtrl.options.length] = opt;

	opt = new Option("Louisiana", "LA");
	if(selectedState == "LA")
		opt.selected = true;
	stateCtrl.options[stateCtrl.options.length] = opt;

	opt = new Option("Maine", "ME");
	if(selectedState == "ME")
		opt.selected = true;
	stateCtrl.options[stateCtrl.options.length] = opt;

	opt = new Option("Maryland", "MD");
	if(selectedState == "MD")
		opt.selected = true;
	stateCtrl.options[stateCtrl.options.length] = opt;

	opt = new Option("Massachusetts", "MA");
	if(selectedState == "MA")
		opt.selected = true;
	stateCtrl.options[stateCtrl.options.length] = opt;

	opt = new Option("Michigan", "MI");
	if(selectedState == "MI")
		opt.selected = true;
	stateCtrl.options[stateCtrl.options.length] = opt;

	opt = new Option("Minnesota", "MN");
	if(selectedState == "MN")
		opt.selected = true;
	stateCtrl.options[stateCtrl.options.length] = opt;

	opt = new Option("Mississippi", "MS");
	if(selectedState == "MS")
		opt.selected = true;
	stateCtrl.options[stateCtrl.options.length] = opt;

	opt = new Option("Missouri", "MO");
	if(selectedState == "MO")
		opt.selected = true;
	stateCtrl.options[stateCtrl.options.length] = opt;

	opt = new Option("Montana", "MT");
	if(selectedState == "MT")
		opt.selected = true;
	stateCtrl.options[stateCtrl.options.length] = opt;

	opt = new Option("Nebraska", "NE");
	if(selectedState == "NE")
		opt.selected = true;
	stateCtrl.options[stateCtrl.options.length] = opt;

	opt = new Option("Nevada", "NV");
	if(selectedState == "NV")
		opt.selected = true;
	stateCtrl.options[stateCtrl.options.length] = opt;

	opt = new Option("New Hampshire", "NH");
	if(selectedState == "NH")
		opt.selected = true;
	stateCtrl.options[stateCtrl.options.length] = opt;

	opt = new Option("New Jersey", "NJ");
	if(selectedState == "NJ")
		opt.selected = true;
	stateCtrl.options[stateCtrl.options.length] = opt;

	opt = new Option("New York", "NY");
	if(selectedState == "NY")
		opt.selected = true;
	stateCtrl.options[stateCtrl.options.length] = opt;

	opt = new Option("North Carolina", "NC");
	if(selectedState == "NC")
		opt.selected = true;
	stateCtrl.options[stateCtrl.options.length] = opt;

	opt = new Option("North Dakota", "ND");
	if(selectedState == "ND")
		opt.selected = true;
	stateCtrl.options[stateCtrl.options.length] = opt;

	opt = new Option("Ohio", "OH");
	if(selectedState == "OH")
		opt.selected = true;
	stateCtrl.options[stateCtrl.options.length] = opt;

	opt = new Option("Oregon", "OR");
	if(selectedState == "OR")
		opt.selected = true;
	stateCtrl.options[stateCtrl.options.length] = opt;

	opt = new Option("Oklahoma", "OK");
	if(selectedState == "OK")
		opt.selected = true;
	stateCtrl.options[stateCtrl.options.length] = opt;

	opt = new Option("Pennsylvania", "PA");
	if(selectedState == "PA")
		opt.selected = true;
	stateCtrl.options[stateCtrl.options.length] = opt;

	opt = new Option("Rhode Island", "RI");
	if(selectedState == "RI")
		opt.selected = true;
	stateCtrl.options[stateCtrl.options.length] = opt;

	opt = new Option("South Carolina", "SC");
	if(selectedState == "SC")
		opt.selected = true;
	stateCtrl.options[stateCtrl.options.length] = opt;

	opt = new Option("South Dakota", "SD");
	if(selectedState == "SD")
		opt.selected = true;
	stateCtrl.options[stateCtrl.options.length] = opt;

	opt = new Option("Tennessee", "TN");
	if(selectedState == "TN")
		opt.selected = true;
	stateCtrl.options[stateCtrl.options.length] = opt;

	opt = new Option("Texas", "TX");
	if(selectedState == "TX")
		opt.selected = true;
	stateCtrl.options[stateCtrl.options.length] = opt;

	opt = new Option("Utah", "UT");
	if(selectedState == "UT")
		opt.selected = true;
	stateCtrl.options[stateCtrl.options.length] = opt;

	opt = new Option("Vermont", "VT");
	if(selectedState == "VT")
		opt.selected = true;
	stateCtrl.options[stateCtrl.options.length] = opt;

	opt = new Option("Virginia", "VA");
	if(selectedState == "VA")
		opt.selected = true;
	stateCtrl.options[stateCtrl.options.length] = opt;

	opt = new Option("Washington", "WA");
	if(selectedState == "WA")
		opt.selected = true;
	stateCtrl.options[stateCtrl.options.length] = opt;

	opt = new Option("West Virginia", "WV");
	if(selectedState == "WV")
		opt.selected = true;
	stateCtrl.options[stateCtrl.options.length] = opt;

	opt = new Option("Wisconsin", "WI");
	if(selectedState == "WI")
		opt.selected = true;
	stateCtrl.options[stateCtrl.options.length] = opt;

	opt = new Option("Wyoming", "WY");
	if(selectedState == "WY")
		opt.selected = true;
	stateCtrl.options[stateCtrl.options.length] = opt;
}

function fillCanadianProvinces(countryCtrl, stateCtrl, selectedProvince)
{
	clearStatesList(stateCtrl);
	
	// Now add state options
	opt = new Option("(Select a Province)", "");
	stateCtrl.options[0] = opt;

	opt = new Option("Alberta", "AB", false, false);
	if(selectedProvince == "AB")
		opt.selected = true;
	stateCtrl.options[stateCtrl.options.length] = opt;

	opt = new Option("British Columbia", "BC", false, false);
	if(selectedProvince == "BC")
		opt.selected = true;
	stateCtrl.options[stateCtrl.options.length] = opt;

	opt = new Option("Manitoba", "MB", false, false);
	if(selectedProvince == "MB")
		opt.selected = true;
	stateCtrl.options[stateCtrl.options.length] = opt;

	opt = new Option("New Brunswick", "NB", false, false);
	if(selectedProvince == "NB")
		opt.selected = true;
	stateCtrl.options[stateCtrl.options.length] = opt;

	opt = new Option("Newfoundland and Labrador", "NL", false, false);
	if(selectedProvince == "NL")
		opt.selected = true;
	stateCtrl.options[stateCtrl.options.length] = opt;

	opt = new Option("Northwest Territories", "NT", false, false);
	if(selectedProvince == "NT")
		opt.selected = true;
	stateCtrl.options[stateCtrl.options.length] = opt;

	opt = new Option("Nova Scotia", "NS", false, false);
	if(selectedProvince == "NS")
		opt.selected = true;
	stateCtrl.options[stateCtrl.options.length] = opt;

	opt = new Option("Nunavat", "NU", false, false);
	if(selectedProvince == "NU")
		opt.selected = true;
	stateCtrl.options[stateCtrl.options.length] = opt;

	opt = new Option("Ontario", "ON", false, false);
	if(selectedProvince == "ON")
		opt.selected = true;
	stateCtrl.options[stateCtrl.options.length] = opt;

	opt = new Option("Prince Edward Island", "PE", false, false);
	if(selectedProvince == "PE")
		opt.selected = true;
	stateCtrl.options[stateCtrl.options.length] = opt;

	opt = new Option("Quebec", "QC", false, false);
	if(selectedProvince == "QC")
		opt.selected = true;
	stateCtrl.options[stateCtrl.options.length] = opt;

	opt = new Option("Saskatchewan", "SK", false, false);
	if(selectedProvince == "SK")
		opt.selected = true;
	stateCtrl.options[stateCtrl.options.length] = opt;

	opt = new Option("Yukon", "YT", false, false);
	if(selectedProvince == "YT")
		opt.selected = true;
	stateCtrl.options[stateCtrl.options.length] = opt;
}
/* End: Functions for dependent Country and State select controls */
