<!--
//------------------------------------------------------------------------
var xy = navigator.appVersion;
var xz = xy.substring(0,4);
var timerID      = null;
var timerRunning = false;
 function clearText()
    {
        var txtZipCode = document.getElementById("Menu_txtZipCode");
        if (txtZipCode.value == "-enter zip-")
            txtZipCode.value="";
    }
    
    function validateZipCode()
    {              
			
        var objValue = document.getElementById("Menu_txtZipCode");
        var result = true;
        var numWithNoDash = objValue.value.replace(/-/, "")
		    
		    if(objValue.value.length < 5 || objValue.value.length >10 ) //CANADA
			{
			    strError =  "Please provide a valid 5-10 character zipcode.";
			    alert(strError);
			    result = false;
			}
		    //USA - xxxxx-xxx
		    if(objValue.value.length >= 5 && !isNaN(numWithNoDash))
			{ 
			    if( !objValue.value.match(/^(\d{5}-\d{4}|\d{5}$)/i))
			    {
				    strError =  "Please provide a valid 5-10 character zipcode.";
				    alert(strError );
				    result = false;
				}
			}
			//CAN - LNL NLN
			else if(objValue.value.length >= 5 && isNaN(numWithNoDash) )	
			{	
			    if( !objValue.value.match( /^(\D{1}\d{1}\D{1}[\s{0}|\-]\d{1}\D{1}\d{1}$)|(\D{1}\d{1}\D{1}\d{1}\D{1}\d{1}$)/i)  )
			    {
			        strError =  "Please provide a valid 5-10 character zipcode.";
				    alert(strError );
				    result = false;
				}
			}
        
        return result;
    }

    function doEnter(obj)
    {
        if (validateZipCode()) 
        { 
            document.location.href='findclubresultszip.aspx?zipCode=' + obj.value; 
        } 
    }

//------------------------------------------------------------------------
function formatCurrency(myNumber, myDecimalPlaces, showDollarSign) {
  var num = parseFloat(myNumber);
  var result = new String();
  if(!isNaN(num)){
    var str = new String("" + Math.round(eval(num) * Math.pow(10, myDecimalPlaces)));
    if(str.indexOf("e") != -1){
      return "Out of range!";
    }
    while(str.length <= myDecimalPlaces){
      str = "0" + str;
    }
    var decimalPoint = str.length - myDecimalPlaces;
    if(showDollarSign)
      result = "$" + str.substring(0, decimalPoint) + "." + str.substring(decimalPoint, str.length);
    else
      result = str.substring(0, decimalPoint) + "." + str.substring(decimalPoint, str.length);
  }else{
    result = "NaN";
  }
  return result;
}
//------------------------------------------------------------------------
function fixDate(aDate){
	if(!isDate(aDate))
		aDate=new Date();
  var aYear=aDate.getFullYear();
  var aMonth=aDate.getMonth()+1;
  var aDay=aDate.getDate();
	var strDate = new String(aYear+"/"+aMonth+"/"+aDay);
	return strDate;
}
//------------------------------------------------------------------------
function showDateSelect(strDialogTitle,strFormName,strElementName,strDefaultDate){
	var myForm=window.document.forms(strFormName);
	var myElement=myForm.elements(strElementName);
	var dialogArgs=new Object();
	var answer=new String();
	dialogArgs.dialogTitle=strDialogTitle;
	dialogArgs.defaultDate=strDefaultDate;
	answer=window.showModalDialog('selectdates_modaldialog.asp',dialogArgs,'dialogWidth:176px;dialogHeight:204px;scroll:yes;status:no;center:yes');
	if(answer==undefined)
	  answer=""; 
	else
	  myElement.value=answer;
}
//------------------------------------------------------------------------
function isDate(myDate){return !isNaN(new Date(myDate));}
//------------------------------------------------------------------------
function dateAdd(myInterval,myIncrement,myDate){
	if(!isDate(myDate)){return "invalid date: '"+myDate+"'";}
	if(isNaN(myIncrement)){return "invalid number: '"+myIncrement+"'";}	
	myIncrement=new Number(myIncrement);
	var dt=new Date(myDate);
	switch(myInterval.toLowerCase()){
		case "yyyy":{dt.setFullYear(dt.getFullYear()+myIncrement);break;}       // year
		case "q":{dt.setMonth(dt.getMonth()+(myIncrement*3));break;}		        // quarter
		case "m":{dt.setMonth(dt.getMonth()+myIncrement);break;}		            // month
		case "y":	                                                              // day of year
		case "d":	                                                              // day
		case "w":{dt.setDate(dt.getDate()+myIncrement);break;}		              // weekday
		case "ww":{dt.setDate(dt.getDate()+(myIncrement*7));break;}	            // week of year
		case "h":{dt.setHours(dt.getHours()+myIncrement);break;}		            // hour
		case "n":{dt.setMinutes(dt.getMinutes()+myIncrement);break;}		        // minute
		case "s":{dt.setSeconds(dt.getSeconds()+myIncrement);break;}		        // second
		case "ms":{dt.setMilliseconds(dt.getMilliseconds()+myIncrement);break;} // millesecond
		default:{return "invalid interval: '"+myInterval+"'";}
	}
	return dt;
}
//------------------------------------------------------------------------
function getYesNoAnswer(Title, Prompt) {
  var dialogArgs = new Object();
  dialogArgs.Title = Title;
  dialogArgs.Prompt = Prompt;
	answer = window.showModalDialog("promptYesNoDialog.asp", dialogArgs, 'dialogWidth:400px;dialogHeight:200px;scroll:no;status:no;center:yes');
  return answer;
}
//------------------------------------------------------------------------
function dialogLogin() {
	answer = window.showModalDialog("loginPromptDialog.asp", "", 'dialogWidth:400px;dialogHeight:200px;scroll:no;status:no;center:yes');
  return answer;
}
//------------------------------------------------------------------------
function validDate(fld) {
    var mo, day, yr;
    var entry = fld.value;
    var reLong = /\b\d{1,2}[\/-]\d{1,2}[\/-]\d{4}\b/;
    var reShort = /\b\d{1,2}[\/-]\d{1,2}[\/-]\d{2}\b/;
    var valid = (reLong.test(entry)) || (reShort.test(entry));
    if (valid) {
        var delimChar = (entry.indexOf("/") != -1) ? "/" : "-";
        var delim1 = entry.indexOf(delimChar);
        var delim2 = entry.lastIndexOf(delimChar);
        mo = parseInt(entry.substring(0, delim1), 10);
        day = parseInt(entry.substring(delim1+1, delim2), 10);
        yr = parseInt(entry.substring(delim2+1), 10);
        // handle two-digit year
        if (yr < 100) {
            var today = new Date();
            // get current century floor (e.g., 2000)
            var currCent = parseInt(today.getFullYear() / 100) * 100;
            // two digits up to this year + 15 expands to current century
            var threshold = (today.getFullYear() + 15) - currCent;
            if (yr > threshold) {
                yr += currCent - 100;
            } else {
                yr += currCent;
            }
        }
        var testDate = new Date(yr, mo-1, day);
        if (testDate.getDate() == day) {
            if (testDate.getMonth() + 1 == mo) {
                if (testDate.getFullYear() == yr) {
                    // fill field with database-friendly format
                    fld.value = mo + "/" + day + "/" + yr;
                    return true;
//                } else {
//                    alert("There is a problem with the year entry.");
                }
//            } else {
//                alert("There is a problem with the month entry.");
            }
//        } else {
//            alert("There is a problem with the date entry.");
        }
    } else {
        alert("Incorrect date format. Enter as mm/dd/yyyy.");
    }
    return false;
}
//------------------------------------------------------------------------
function SetScreenSizeCookies() {
  document.cookie = "ScreenWidth=" + screen.width;
  document.cookie = "ScreenHeight=" + screen.height;
}
//------------------------------------------------------------------------
function OpenMSDWin() {
	var OpenWinX=(screen.width/2)-200;
	var OpenWinY=(screen.height/2)-200;
	var pos="left="+OpenWinX+",top="+OpenWinY;
	OpenWinWindow=window.open("selectemployee.asp","SelectEmployee","width=400,height=400,"+pos);
	OpenWinWindow.focus();
}
//------------------------------------------------------------------------
function OpenClubWin() {
	//var OpenWinX=(screen.width/2)-200;
	//var OpenWinY=(screen.height/2)-50;
	//var pos="left="+OpenWinX+",top="+OpenWinY;
	//OpenWinWindow=window.open("selectclub.asp","SelectClub","width=400,height=100,"+pos);
	OpenWinWindow=window.open("selectclub.asp","SelectClub","width=400,height=100,left=" + ((screen.width/2)-200) + ",top=" + ((screen.height/2)-50));
	OpenWinWindow.focus();
}
//------------------------------------------------------------------------
function Trim(str) {    
  var s = new String(str.valueOf());
  while (s.charAt(0) == " ")
    s = s.substring(1, s.length);
  while (s.charAt(s.length - 1) == " ")
    s = s.substring(0, s.length - 1);
  return s.valueOf(); 
}
//------------------------------------------------------------------------
function MakeArray(size) {
  this.length = size;
  for(var i = 1; i <= size; i++) {
    this[i] = "";
  }
  return this;
}
//------------------------------------------------------------------------
function stopclock() {
 if(timerRunning)
   clearTimeout(timerID);
 timerRunning = false
}
//------------------------------------------------------------------------
function showtime() {
  var now       = new Date();
  var year      = now.getYear();
  var month     = now.getMonth() + 1;
  var date      = now.getDate();
  var hours     = now.getHours();
  var minutes   = now.getMinutes();
  var seconds   = now.getSeconds();
  var day       = now.getDay();
  Day           = new MakeArray(7);
  Day[0]        = "Sun";
  Day[1]        = "Mon";
  Day[2]        = "Tue";
  Day[3]        = "Wed";
  Day[4]        = "Thu";
  Day[5]        = "Fri";
  Day[6]        = "Sat";
  var timeValue = "";
  timeValue     += (Day[day]) + " ";
  timeValue     += ((month < 10) ? " 0" : " ") + month + "/";
  timeValue     += date + "/" + year + "  ";
  if (hours == 0) {
    hours = 12;
  }
  timeValue       += ((hours <= 12) ? hours : hours - 12);
  timeValue       += ((minutes < 10) ? ":0" : ":") + minutes;
  timeValue       += ((seconds < 10) ? ":0" : ":") + seconds;
  timeValue       += (hours < 12) ? " AM" : " PM";
  var clock       = this.document.getElementById("ClockCal");
  clock.innerText = " " + timeValue + " ";
  timerID         = setTimeout("showtime()",1000);
  timerRunning    = true;
}
//------------------------------------------------------------------------
function isblank(s) {
  for(var i = 0; i < s.length; i++) {
    var c = s.charAt(i);
    if ((c != ' ') && (c != '\n') && (c != '\t')) return false;
  }
  return true;
}
//------------------------------------------------------------------------
function startclock() {
  stopclock();
  showtime();
}
//------------------------------------------------------------------------
function DeniedBarcodeIDUpdate() {
  alert('Update to BarcodeID was ignored because the requested BarcodeID is already in use.');  
}
//------------------------------------------------------------------------
function hilite(targetdoc, strImgObj, strImgSpec, strMode) {
    var imgType = ".jpg";
    if (strMode == "animated") {
      imgType = ".gif";
    }
    var imgSpec = "./Images/" + strImgSpec + "-" + strMode + imgType;
    targetdoc.images[strImgObj].src = imgSpec;
    return StatusMessage('');
}
//------------------------------------------------------------------------
function hilitepng(targetdoc, strImgObj, strImgSpec, strMode) {
    var imgType = ".png";
    if (strMode == "animated") {
      imgType = ".gif";
    }
    var imgSpec = "./Images/" + strImgSpec + "-" + strMode + imgType;
    targetdoc.images[strImgObj].src = imgSpec;
    return StatusMessage('');
}
//------------------------------------------------------------------------
function StatusMessage(strMessage) {
  this.window.status = strMessage;
  return true;
}
//------------------------------------------------------------------------
function QueryString(query){
  //querystr[index][0]=Query String Name
  //querystr[index][1]=Query String Value
  var prms = window.location.href.split("&");
  var frmelements=new Array();
  var currprmeter, querystr="";
  for(i=0;i<prms.length;i++){
    currprmeter=prms[i].split("=");
    frmelements[i]=new Array();
    frmelements[i][0]=currprmeter[0];
    frmelements[i][1]=currprmeter[1];
  }
  if(query==null) return frmelements;
  for(j=0;j<frmelements.length;j++){
    if(frmelements[j][0]==query){
      querystr=frmelements[j][1];
      break;
    }
  }
  return querystr;
}
//------------------------------------------------------------------------
function SetCookie(cookieName, cookieData, expireDate) {
  var dateToExpire = new Date(expireDate);
  document.cookie = cookieName + "=" + escape(cookieData) + ";expires=" + dateToExpire.toUTCString();
}    
//------------------------------------------------------------------------
function GetCookie(name) {
    var arg = name + "=";
    var alen = arg.length;
    var clen = document.cookie.length;
    var i = 0;
    while (i < clen) {
        var j = i + alen;
        if (document.cookie.substring(i, j) == arg)
            return GetCookieVal (j);
        i = document.cookie.indexOf(" ", i) + 1;
        if (i == 0) break; 
      }
    return null;
    }
//------------------------------------------------------------------------
function GetCookieVal (offset) {
    var endstr = document.cookie.indexOf (";", offset);
    if (endstr == -1)
        endstr = document.cookie.length;
    return unescape(document.cookie.substring(offset, endstr));
    }
//------------------------------------------------------------------------
function showModalProfileWindow(BarcodeID, CustomerID, CustomerName) {
  //var cn = escape(CustomerName);
  window.showModalDialog("profile.asp?BarcodeID="+ BarcodeID + "&CustomerID=" + CustomerID + "&CustomerName=" + CustomerName,"","dialogWidth:" + screen.width + "px;dialogHeight:" + screen.height + "px;scroll:yes;status:no;center:yes");
}
//------------------------------------------------------------------------
function showModalPageWindow(pageSpec, BarcodeID, CustomerID, CustomerName) {
  var cn = escape(CustomerName);
  window.showModalDialog(pageSpec + '?BarcodeID=' + BarcodeID + '&CustomerID=' + CustomerID + '&CustomerName=' + cn,'','dialogWidth:800px;dialogHeight:500px;scroll:yes;status:no;center:yes');
}
//------------------------------------------------------------------------
function showModalPageWindowReturnRefresh(pageSpec, BarcodeID, CustomerID, CustomerName, refURL) {
  var cn = escape(CustomerName);
  window.showModalDialog(pageSpec + '?BarcodeID=' + BarcodeID + '&CustomerID=' + CustomerID + '&CustomerName=' + cn,'','dialogWidth:800px;dialogHeight:500px;scroll:yes;status:no;center:yes');
  window.navigate(refURL + '?BarcodeID=' + BarcodeID + '&CustomerID=' + CustomerID + '&CustomerName=' + cn);
}
//------------------------------------------------------------------------
function pageScrolled() {
  if(window.document.body && typeof window.document.body.scrollTop != "undefined") {
    var mi = GetCookie("AphelionEmpID")
    if(mi == "11") {
      var d=window.document.getElementById("debugInfoPanel");
      var db=window.document.getElementById("debugInfoButton");
      var scrollX=window.document.body.scrollLeft; 
      var scrollY=window.document.body.scrollTop;
      var dbX = scrollX;
      var dbY = scrollY;
      var dX = scrollX;
      var dY = getObjectHeight(db) + scrollY;
      db.style.top=dbY;
      db.style.left=dbX;
      db.style.zIndex=100;
      d.style.top=dY;
      d.style.left=dX;
      d.style.zIndex=100;
    }
  }
}
//------------------------------------------------------------------------
function vCenterSpanToDiv(divID, spanID) {
  var d1 = this.document.getElementById(divID);
  var d2 = this.document.getElementById(spanID);
  //var f1 = d1.Height;
  //var f2 = d2.Height;
  var h1 = d1.offsetHeight;
  var h2 = d2.offsetHeight;
  if (h1 > h2) {
    //var dif        = (f2 - f1);
    var dif        = (h1 - h2);
    dif            = parseInt(dif / 2);
    var d          = this.document.createElement("div");
    d.style.height = dif + "px";
    d1.insertBefore(d, d2);
  }
}
//------------------------------------------------------------------------
function replaceSubstring(inputString, fromString, toString) {
   var temp = new String(inputString);
   if (fromString == "") {
      return inputString;
   }
   if (toString.indexOf(fromString) == -1) {
      while (temp.indexOf(fromString) != -1) {
         var toTheLeft = temp.substring(0, temp.indexOf(fromString));
         var toTheRight = temp.substring(temp.indexOf(fromString)+fromString.length, temp.length);
         temp = toTheLeft + toString + toTheRight;
      }
   } else {
      var midStrings = new Array("~", "`", "_", "^", "#");
      var midStringLen = 1;
      var midString = "";
      while (midString == "") {
         for (var i=0; i < midStrings.length; i++) {
            var tempMidString = "";
            for (var j=0; j < midStringLen; j++) { tempMidString += midStrings[i]; }
            if (fromString.indexOf(tempMidString) == -1) {
               midString = tempMidString;
               i = midStrings.length + 1;
            }
         }
      }
      while (temp.indexOf(fromString) != -1) {
         var toTheLeft = temp.substring(0, temp.indexOf(fromString));
         var toTheRight = temp.substring(temp.indexOf(fromString)+fromString.length, temp.length);
         temp = toTheLeft + midString + toTheRight;
      }
      while (temp.indexOf(midString) != -1) {
         var toTheLeft = temp.substring(0, temp.indexOf(midString));
         var toTheRight = temp.substring(temp.indexOf(midString)+midString.length, temp.length);
         temp = toTheLeft + toString + toTheRight;
      }
   }
   return temp;
}
//------------------------------------------------------------------------
var NUM_CENTYEAR = 30;
var BUL_TIMECOMPONENT = false;
var BUL_YEARSCROLL = true;
var calendars = [];
var RE_NUM = /^\-?\d+$/;
//------------------------------------------------------------------------
function calendar(obj_target) {

	this.gen_date = cal_gen_date;
	this.gen_time = cal_gen_time;
	this.gen_tsmp = cal_gen_tsmp;
	this.prs_date = cal_prs_date;
	this.prs_time = cal_prs_time;
	this.prs_tsmp = cal_prs_tsmp;
	this.popup    = cal_popup;

	// validate input parameters
	if (!obj_target)
		return cal_error("Error calling the calendar: no target control specified");
	if (obj_target.value == null)
		return cal_error("Error calling the calendar: parameter specified is not valid tardet control");
	this.target = obj_target;
	this.time_comp = BUL_TIMECOMPONENT;
	this.year_scroll = BUL_YEARSCROLL;
	
	// register in global collections
	this.id = calendars.length;
	calendars[this.id] = this;
}
//------------------------------------------------------------------------
function cal_popup (str_datetime) {
	this.dt_current = this.prs_tsmp(str_datetime ? str_datetime : this.target.value);
	if (!this.dt_current) return;

	var obj_calwindow = window.open(
		'calendar.html?datetime=' + this.dt_current.valueOf()+ '&id=' + this.id,
		'Calendar', 'width=200,height='+(this.time_comp ? 215 : 190)+
		',status=no,resizable=no,top=200,left=200,dependent=yes,alwaysRaised=yes'
	);
	obj_calwindow.opener = window;
	obj_calwindow.focus();
}
//------------------------------------------------------------------------
// timestamp generating function
function cal_gen_tsmp (dt_datetime) {
	return(this.gen_date(dt_datetime) + ' ' + this.gen_time(dt_datetime));
}
//------------------------------------------------------------------------
// date generating function
function cal_gen_date (dt_datetime) {
	return (
		(dt_datetime.getMonth() < 9 ? '0' : '') + (dt_datetime.getMonth() + 1) + "/"
		+ (dt_datetime.getDate() < 10 ? '0' : '') + dt_datetime.getDate() + "/"
		+ dt_datetime.getFullYear()
	);
}
//------------------------------------------------------------------------
// time generating function
function cal_gen_time (dt_datetime) {
	return (
		(dt_datetime.getHours() < 10 ? '0' : '') + dt_datetime.getHours() + ":"
		+ (dt_datetime.getMinutes() < 10 ? '0' : '') + (dt_datetime.getMinutes()) + ":"
		+ (dt_datetime.getSeconds() < 10 ? '0' : '') + (dt_datetime.getSeconds())
	);
}
//------------------------------------------------------------------------
// timestamp parsing function
function cal_prs_tsmp (str_datetime) {
	// if no parameter specified return current timestamp
	if (!str_datetime)
		return (new Date());

	// if positive integer treat as milliseconds from epoch
	if (RE_NUM.exec(str_datetime))
		return new Date(str_datetime);
		
	// else treat as date in string format
	var arr_datetime = str_datetime.split(' ');
	return this.prs_time(arr_datetime[1], this.prs_date(arr_datetime[0]));
}
//------------------------------------------------------------------------
// date parsing function
function cal_prs_date (str_date) {

	var arr_date = str_date.split('/');

	if (arr_date.length != 3) return alert ("Invalid date format: '" + str_date + "'.\nFormat accepted is dd-mm-yyyy.");
	if (!arr_date[1]) return alert ("Invalid date format: '" + str_date + "'.\nNo day of month value can be found.");
	if (!RE_NUM.exec(arr_date[1])) return alert ("Invalid day of month value: '" + arr_date[1] + "'.\nAllowed values are unsigned integers.");
	if (!arr_date[0]) return alert ("Invalid date format: '" + str_date + "'.\nNo month value can be found.");
	if (!RE_NUM.exec(arr_date[0])) return alert ("Invalid month value: '" + arr_date[0] + "'.\nAllowed values are unsigned integers.");
	if (!arr_date[2]) return alert ("Invalid date format: '" + str_date + "'.\nNo year value can be found.");
	if (!RE_NUM.exec(arr_date[2])) return alert ("Invalid year value: '" + arr_date[2] + "'.\nAllowed values are unsigned integers.");

	var dt_date = new Date();
	dt_date.setDate(1);

	if (arr_date[0] < 1 || arr_date[0] > 12) return alert ("Invalid month value: '" + arr_date[0] + "'.\nAllowed range is 01-12.");
	dt_date.setMonth(arr_date[0]-1);
	 
	if (arr_date[2] < 100) arr_date[2] = Number(arr_date[2]) + (arr_date[2] < NUM_CENTYEAR ? 2000 : 1900);
	dt_date.setFullYear(arr_date[2]);

	var dt_numdays = new Date(arr_date[2], arr_date[0], 0);
	dt_date.setDate(arr_date[1]);
	if (dt_date.getMonth() != (arr_date[0]-1)) return alert ("Invalid day of month value: '" + arr_date[1] + "'.\nAllowed range is 01-"+dt_numdays.getDate()+".");

	return (dt_date);
}
//------------------------------------------------------------------------
// time parsing function
function cal_prs_time (str_time, dt_date) {

	if (!dt_date) return null;
	var arr_time = String(str_time ? str_time : '').split(':');

	if (!arr_time[0]) dt_date.setHours(0);
	else if (RE_NUM.exec(arr_time[0])) 
		if (arr_time[0] < 24) dt_date.setHours(arr_time[0]);
		else return cal_error ("Invalid hours value: '" + arr_time[0] + "'.\nAllowed range is 00-23.");
	else return cal_error ("Invalid hours value: '" + arr_time[0] + "'.\nAllowed values are unsigned integers.");
	
	if (!arr_time[1]) dt_date.setMinutes(0);
	else if (RE_NUM.exec(arr_time[1]))
		if (arr_time[1] < 60) dt_date.setMinutes(arr_time[1]);
		else return cal_error ("Invalid minutes value: '" + arr_time[1] + "'.\nAllowed range is 00-59.");
	else return cal_error ("Invalid minutes value: '" + arr_time[1] + "'.\nAllowed values are unsigned integers.");

	if (!arr_time[2]) dt_date.setSeconds(0);
	else if (RE_NUM.exec(arr_time[2]))
		if (arr_time[2] < 60) dt_date.setSeconds(arr_time[2]);
		else return cal_error ("Invalid seconds value: '" + arr_time[2] + "'.\nAllowed range is 00-59.");
	else return cal_error ("Invalid seconds value: '" + arr_time[2] + "'.\nAllowed values are unsigned integers.");

	dt_date.setMilliseconds(0);
	return dt_date;
}
//------------------------------------------------------------------------
function cal_error (str_message) {
	alert (str_message);
	return null;
}
//------------------------------------------------------------------------
// Form Field Validation Functions:
//
// isValidExpDate(formField,fieldLabel,required)
//   -- checks for date in the format MM/YY or MM/YYYY against the current date
// isValidCreditCardNumber(formField,ccType,fieldLabel,required)
//   -- checks for valid credit card format using the Luhn check and known digits about various cards
//
function validRequired(formField,fieldLabel) {
	var result = true;
	
	if (formField.value == "")
	{
		alert('Please enter a value for the "' + fieldLabel +'" field.');
		formField.focus();
		result = false;
	}
	
	return result;
}
//------------------------------------------------------------------------
function allDigits(str) {
	return inValidCharSet(str,"0123456789");
}
//------------------------------------------------------------------------
function inValidCharSet(str, charset) {
	var result = true;
	
	if (str.length == 0)
	    result = false;
	    
	for (var i=0;i<str.length;i++)
		if (charset.indexOf(str.substr(i,1))<0)	{
			result = false;
			break;
		}
	return result;
}
//------------------------------------------------------------------------
function isValidExpDate(formField,fieldLabel,required) {
	var result = true;
	var formValue = formField.value;

	if (required && !validRequired(formField,fieldLabel))
		result = false;
  
 	if (result && (formField.value.length>0))
 	{
 		var elems = formValue.split("/");
 		
 		result = (elems.length == 2); // should be two components
 		var expired = false;
 		
 		if (result)
 		{
 			var month = parseInt(elems[0],10);
 			var year = parseInt(elems[1],10);
 			
 			if (elems[1].length == 2)
 				year += 2000;
 			
 			var now = new Date();
 			
 			var nowMonth = now.getMonth() + 1;
 			var nowYear = now.getFullYear();
 			
 			expired = (nowYear > year) || ((nowYear == year ) && (nowMonth > month));
 			
			result = allDigits(elems[0]) && (month > 0) && (month < 13) &&
					 allDigits(elems[1]) && ((elems[1].length == 2) || (elems[1].length == 4));
 		}
 		
  		if (!result)
 		{
 			alert('Please enter a date in the format MM/YY for the "' + fieldLabel +'" field.');
			formField.focus();
		}
		else if (expired)
		{
 			result = false;
 			alert('The date for "' + fieldLabel +'" has expired.');
			formField.focus();
		}
	} 
	return result;
}
//------------------------------------------------------------------------
function isValidCreditCardNumber(ccNum) {
	var result = true;
 	if (result && (ccNum.length > 0))	{ 
 		if (!allDigits(ccNum)) {
 			//alert('Please enter only numbers (no dashes or spaces) for the Card Number field.');
			result = false;
		}	
		if (result)	{ 
 			if (!LuhnCheck(ccNum)) {
 				//alert('Please enter a valid card number for the Card Number field.');
				result = false;
			}	
		} 
	}
	if(!ccValidLength(ccNum)){
		result = false;
  } 
	return result;
}
//------------------------------------------------------------------------
function ccValidLength(ccNum) {
	var result = false;
	var cardType
	var cardLen = ccNum.length;
	var firstdig = ccNum.substring(0,1);
	var seconddig = ccNum.substring(1,2);
	var first4digs = ccNum.substring(0,4);
	if(firstdig=="4"){
	  cardType="VISA"
	}else if((firstdig=="3")&&(cardLen==15)){
	  cardType="AMEX"
	}else if(firstdig=="5"){
	  cardType="MC"
	}else if(firstdig=="6"){
	  cardType="NOVUS"
	}else if((firstdig=="3")&&(cardLen==14)){
	  cardType="DINERS"
	}else{
	  cardType="UNKNOWN"
  }
	cardType = cardType.toUpperCase();
	switch (cardType)
	{
		case "VISA":
			result = ((cardLen == 16) || (cardLen == 13)) && (firstdig == "4");
			break;
		case "AMEX":
			var validNums = "47";
			result = (cardLen == 15) && (firstdig == "3") && (validNums.indexOf(seconddig)>=0);
			break;
		case "MC":
			var validNums = "12345";
			result = (cardLen == 16) && (firstdig == "5") && (validNums.indexOf(seconddig)>=0);
			break;
		case "NOVUS":
			result = (cardLen == 16) && (first4digs == "6011");
			break;
		case "DINERS":
			//var validNums = "068";
			//result = (cardLen == 14) && (firstdig == "3") && (validNums.indexOf(seconddig)>=0);
			result = false;
			break;
	}
	return result;
}
//------------------------------------------------------------------------
function LuhnCheck(str) {
  var result = true;
  var sum = 0; 
  var mul = 1; 
  var strLen = str.length;
  for (i = 0; i < strLen; i++) {
    var digit = str.substring(strLen-i-1,strLen-i);
    var tproduct = parseInt(digit ,10)*mul;
    if (tproduct >= 10) {
      sum += (tproduct % 10) + 1;
    } else {
      sum += tproduct;
    }
    if (mul == 1) {
      mul++;
    } else {
      mul--;
    }
  }
  if ((sum % 10) != 0) {
    result = false;
  }  
  return result;
}
//------------------------------------------------------------------------
function GetRadioValue(rArray) {
	for (var i=0;i<rArray.length;i++)
	{
		if (rArray[i].checked)
			return rArray[i].value;
	}
	return null;
}
//------------------------------------------------------------------------
function validateCCNum(cardType,cardNum) {
	var result = false;
	cardType = cardType.toUpperCase();
	
	var cardLen = cardNum.length;
	var firstdig = cardNum.substring(0,1);
	var seconddig = cardNum.substring(1,2);
	var first4digs = cardNum.substring(0,4);

	switch (cardType)
	{
		case "VISA":
			result = ((cardLen == 16) || (cardLen == 13)) && (firstdig == "4");
			break;
		case "AMEX":
			var validNums = "47";
			result = (cardLen == 15) && (firstdig == "3") && (validNums.indexOf(seconddig)>=0);
			break;
		case "MASTERCARD":
			var validNums = "12345";
			result = (cardLen == 16) && (firstdig == "5") && (validNums.indexOf(seconddig)>=0);
			break;
		case "DISCOVER":
			result = (cardLen == 16) && (first4digs == "6011");
			break;
		case "DINERS":
			var validNums = "068";
			result = (cardLen == 14) && (firstdig == "3") && (validNums.indexOf(seconddig)>=0);
			break;
	}
	return result;
}
//------------------------------------------------------------------------
function validCCForm(ccTypeField,ccNumField,ccExpField) {
	var result = isValidCreditCardNumber(ccNumField,ccTypeField.value,"Credit Card Number",true) &&
		isValidExpDate(ccExpField,"Expiration Date",true);
	return result;
}
//------------------------------------------------------------------------
function validABA(s) {
  var i, n, t;
  // First, remove any non-numeric characters.
  t = "";
  if((s.charAt(0) != "0")&&(s.charAt(0) != "1")&&(s.charAt(0) != "2")&&(s.charAt(0) != "3")){
    //alert('Bank Routing Numbers MUST begin with a "0", "1", "2", or "3"! Please try again.');
    return false;
  }
  if((s.charAt(0) == "0")&&(s.charAt(1)=="0"))
    return false;
  for (i = 0; i < s.length; i++) {
    c = parseInt(s.charAt(i), 10);
    if (c >= 0 && c <= 9)
      t = t + c;
  }
  // Check the length, it should be nine digits.
  if (t.length != 9) {
    //alert('Please enter exactly nine(9) digits in the Bank Route field.');
    return false;
  }
  // Now run through each digit and calculate the total.
  n = 0;
  for (i = 0; i < t.length; i += 3) {
    n += parseInt(t.charAt(i),     10) * 3
      +  parseInt(t.charAt(i + 1), 10) * 7
      +  parseInt(t.charAt(i + 2), 10);
  }
  // If the resulting sum is an even multiple of ten (but not zero),
  // the aba routing number is good.
  if (n != 0 && n % 10 == 0) {
    return true;
  } else {
    //alert('Please enter a valid ABA Routing number for the Bank Route field.');
    return false;
  }
}
function IsCanadianRouting(s)
{
    var i, n;
    if (s.length != 9) 
    {
        //alert('Please enter exactly nine(9) digits in the Bank Route field.');
        return false;
    }
    //first 5 has to be digits. 
    for (i = 0; i < 5; i++) 
    {
        if(isNaN(s.charAt(i)))
            return false;
    }
    if(!s.charAt(5) == "-")
    {
        return false;
    }
     //last 3 has to be digits. 
    for (i = 6; i < 9; i++) 
    { 
        n = parseInt(s.charAt(i))
        if(!(n >= 0 && n <=9)) 
        {
            return false;
        }
    }
    return true;
}
//------------------------------------------------------------------------
function isNumeric(val) {
  var result = true;
  var reg_exp  = /\d/;
  for(var i = 0; (i < val.length); i++) {
    if(! reg_exp.test(val.charAt(i))){
      result = false;
    }
  }
  return result;
}
//------------------------------------------------------------------------
function isBarcodeID(val) {
  var result = true;
  var reg_exp  = /\d/;
  for(var i = 1; (i < val.length); i++) {
    if(! reg_exp.test(val.charAt(i))){
      result = false;
    }
  }
  return result;
}
//------------------------------------------------------------------------
function LPad(str, len, padchar) {
  var result = new String(Trim(str));
  var strlen = str.length;
  for(var i = strlen; (i < len); i++) {
    result = padchar + result;
  }
  return result;
}
//------------------------------------------------------------------------
function isValidStreetAddressOld(val) {
  var tmpstr = new String(val);
  tmpstr = tmpstr.toUpperCase();
  tmpstr = tmpstr.replace(' STREET ', ' ST');
  tmpstr = tmpstr.replace(' LANE ', ' LN');
  tmpstr = tmpstr.replace(' CRESCENT ', ' CR');
  tmpstr = tmpstr.replace(' PLACE ', ' PL');
  tmpstr = tmpstr.replace(' WAY ', ' WY');
  tmpstr = tmpstr.replace(' COURT ', ' CT');
  tmpstr = tmpstr.replace(' CIRCLE ', ' CI');
  tmpstr = tmpstr.replace(' AVENUE ', ' AV');
  tmpstr = tmpstr.replace(' AVE. ', ' AV');
  tmpstr = tmpstr.replace(/\./g, '');
  tmpstr = tmpstr.replace(/\s{2,}/g, ' ');
  var regExp = new RegExp();  
  //regExp = /^(\d{1,6})\s((N|S|E|W){1,2}?\.?\s?)?([A-Z]\s+)+(\S\S)+(\s[N|S|E|W]{1,2})?$/;
  regExp = /^(\d{1,6})\s((N|S|E|W){1,2}?\.?\s?)/;
  var result = false;
  //var regExp_UnitNumber = /^(\d{1,6}).*/;
  //var regExp_StreetDirection = /^(\d{1,6})\s+([N|S|E|W]{1,2}?).*/
  //var regExp_StreetName = /(\d{1,6})\s+([N|S|E|W]{1,2}\s+)?([A-Z]\s+)+.*/
  //var regExp_StreetType = /\s\S\S(\s?[N|S|E|W]{0,2})$/
  //var reg_exp  = /^(\d{1,6})\s+(([N|S|E|W]\.?\s)?)([A-Z]\s+)+\S{2,8}/;
  //var regexp2 = /\s\S\S(\s?[N|S|E|W]{0,2})$/;
  //var reg_exp_pobox  = /^P\.*O\.*\sBOX\s\d{1,8}/;
  //var reg_exp_careof  = /^C\/*O*\s[A-Z]+\s*.*/;
  //var myUnitNumber = tmpstr.replace(regExpAll, "$1");
  //var myStreetDirection = tmpstr.replace(regExpAll, "$2")
  //var myStreetName = tmpstr.replace(regExpAll, "$3")
  //alert("UnitNumber="+myUnitNumber);
  //alert("StreetDirection="+myStreetDirection);
  //alert("StreetName="+myStreetName);
  var myAddressArray = regExp.exec(tmpstr);
  alert(myAddressArray);
  //if((reg_exp.test(tmpstr)&&regexp2.test(tmpstr))||reg_exp_pobox.test(tmpstr)||reg_exp_careof.test(tmpstr)){
  result = true;
  //}
  //alert('Valid StreetAddress='+reg_exp.test(tmpstr));  
  //alert('Valid StreetDesignator='+regexp2.test(tmpstr));  
  return result;
}
//------------------------------------------------------------------------
function isValidStreetAddress(strValue){
  var myText = new String(strValue);
  var myRegExp = new RegExp();
  var myRemainingWordsArray = new Array();
  var isProfane = false;
  var isValid = false;
  // relace underscores with spaces
  myText = myText.replace(/_/g, " ");
  // seperate title-case words
  myText = myText.replace(/([a-z])([A-Z])/g, "$1 $2"); 
  // remove pound signs
  myText = myText.replace(/\#/g, "");
  // remove forward slashes
  myText = myText.replace(/\//g, "");
  // relace hyphens with spaces
  myText = myText.replace(/_/g, " ");
  // make uppercase
  myText = myText.toUpperCase();
  // remove leading spaces
  myText = myText.replace(/^\s+/g, "");
  // remove trailing spaces
  myText = myText.replace(/\s+$/g, "");
  // replace multiple consecutive spaces with one space
  myText = myText.replace(/\s{2,}/g, " ");
  // remove periods
  myText = myText.replace(/\./g, "");
  // remove dwelling number
  myText = myText.replace(/^\d+\s+/, "");
  // remove references to apartments, units, building, etc.
  myText = myText.replace(/\sAPARTMENT\s?\S+$/, "");
  myText = myText.replace(/\sAPT\s?\S+$/, "");
  myText = myText.replace(/\sBLDG\s?\S+$/, "");
  myText = myText.replace(/\sBUILDING\s?\S+$/, "");
  myText = myText.replace(/\sROOM\s?\S+$/, "");
  myText = myText.replace(/\sRM\s?\S+$/, "");
  myText = myText.replace(/\sSUITE\s?\S+$/, "");
  myText = myText.replace(/\sSTE\s?\S+$/, "");
  myText = myText.replace(/\sUNIT\s?\S+$/, "");
  // remove unit number
  myText = myText.replace(/\d+[A-Z]?$/, "");
  // remove street direction pre-designators
  myText = myText.replace(/^[NSEW]{1,2}\s+/, "");
  // remove street direction post-designators
  myText = myText.replace(/\s+[NSEW]{1,2}$/, "");
  // remove street type designators
  myText = myText.replace(/\sAV$/, "");
  myText = myText.replace(/\sAVE$/, "");
  myText = myText.replace(/\sAVENUE$/, "");
  myText = myText.replace(/\sBL$/, "");
  myText = myText.replace(/\sBLVD$/, "");
  myText = myText.replace(/\sBOULEVARD$/, "");
  myText = myText.replace(/\sCI$/, "");
  myText = myText.replace(/\sCIR$/, "");
  myText = myText.replace(/\sCIRCLE$/, "");
  myText = myText.replace(/\sCR$/, "");
  myText = myText.replace(/\sCRES$/, "");
  myText = myText.replace(/\sCRESCENT$/, "");
  myText = myText.replace(/\sCT$/, "");
  myText = myText.replace(/\sCOURT$/, "");
  myText = myText.replace(/\sDR$/, "");
  myText = myText.replace(/\sDRIVE$/, "");
  myText = myText.replace(/\sLN$/, "");
  myText = myText.replace(/\sLANE$/, "");
  myText = myText.replace(/\sPL$/, "");
  myText = myText.replace(/\sPLACE$/, "");
  myText = myText.replace(/\sRD$/, "");
  myText = myText.replace(/\sROAD$/, "");
  myText = myText.replace(/\sST$/, "");
  myText = myText.replace(/\sSTREET$/, "");
  myText = myText.replace(/\sWY$/, "");
  myText = myText.replace(/\sWAY$/, "");
  // remove numbered street names
  myText = myText.replace(/\d+ST/i, "");
  myText = myText.replace(/\d+ND/i, "");
  myText = myText.replace(/\d+RD/i, "");
  myText = myText.replace(/\d+TH/i, "");
  // replace multiple consecutive spaces with one space
  myText = myText.replace(/\s{2,}/g, " ");
  // remove leading spaces
  myText = myText.replace(/^\s+/g, "");
  // remove trailing spaces
  myText = myText.replace(/\s+$/g, "");
  // make an array of all that remains
  myRemainingWordsArray = myText.split(" ");
  // compare remaining words against filtered words
  for(var z = 0; z < myRemainingWordsArray.length; z++){
    for(var y = 0; y < dwFilterArray.length; y++){
      if(myRemainingWordsArray[z] == dwFilterArray[y]){
        isProfane = true;
      }
    }
  }
  myRegExp.compile(/^((?:[A-Z]+)\s?){0,4}$/);
  isValid = ((myRegExp.test(myText)&& ! isProfane)||(myText == ""));
  return isValid;
}
//------------------------------------------------------------------------
//function CCValidNumber(CardNumber) {
//  var SubSum    = 0;
//  var CheckSum  = 0;
//  var NumberStr = "";
//  var Mask      = "2121212121212121";
//  var Result    = false;
//  var reg_exp   = /\d/;
//
//  for(var i = 0; (i <= CardNumber.length); i++) {
//    if (reg_exp.test(CardNumber.charAt(i))) {
//      NumberStr += CardNumber.charAt(i);
//    }
//  }
//  if (NumberStr.length < 13) {
//    return false;
//  }
//  while (NumberStr.length < 16) {
//    NumberStr = '0' + NumberStr;
//  }
//  NumberStr = NumberStr.toLowerCase();
//  for (i = 0; i <= 15; i++) {
//    SubSum = (NumberStr.charCodeAt(i) - 48) * (Mask.charCodeAt(i) - 48);
//    if (SubSum > 9) {
//      SubSum -= 9;
//    }
//    Checksum += SubSum;
//  }
//  if ((CheckSum % 10) <> 0) {
//    return false;
//  } else {
//    return true;
//  }
//}
//------------------------------------------------------------------------
//function ValidABA(ABA: TABAStr): Boolean;
//const
//  Weight: String[8] = '37137137';
//var
//  CheckDigit, ABAChkDigit: Char;
//  i, Checksum, NextTen: Integer;
//  ABAChkDig: String;
//begin
//  Checksum := 0;
//  CheckDigit := ABA[9];
//  for i := 1 to 8 do
//  begin
//    Checksum := Checksum + (StrToInt(ABA[i]) * StrToInt(Weight[i]))
//  end;
//  NextTen := (10 + (Checksum - (Checksum mod 10)));
//  ABAChkDig := IntToStr(NextTen - Checksum);
//  ABAChkDigit := ABAChkDig[Length(ABAChkDig)];
//  Result := (CheckDigit = ABAChkDigit);
//end;

//------------------------------------------------------------------------
//------------------------------------------------------------------------
//------------------------------------------------------------------------
//-->

