function gup( name ){  name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");  var regexS = "[\\?&]"+name+"=([^&#]*)";  var regex = new RegExp( regexS );  var results = regex.exec( window.location.href );  if( results == null )    return "";  else    return results[1];}

function findObj(theObj, theDoc)                {
        var p, i, foundObj;

        if(!theDoc) theDoc = document;

        if( (p = theObj.indexOf("?")) > 0 && parent.frames.length)              {
                theDoc = parent.frames[theObj.substring(p+1)].document;
                theObj = theObj.substring(0,p);
        }

        if(!(foundObj = theDoc[theObj]) && theDoc.all) foundObj = theDoc.all 
[theObj];

        for (i=0; !foundObj && i < theDoc.forms.length; i++)
                foundObj = theDoc.forms[i][theObj];
                for(i=0; !foundObj && theDoc.layers && i < theDoc.layers.length; i++)
                        foundObj = findObj(theObj,theDoc.layers[i].document);

        if(!foundObj && document.getElementById) foundObj =  
document.getElementById(theObj);
        return foundObj;
}


function insertAtCursor(myField, myValue) {

  //IE support

  if (document.selection) {

    myField.focus();

    sel = document.selection.createRange();

    sel.text = myValue;

  }

  //MOZILLA/NETSCAPE support

  else if (myField.selectionStart || myField.selectionStart == '0') {

    var startPos = myField.selectionStart;

    var endPos = myField.selectionEnd;

    myField.value = myField.value.substring(0, startPos)

                  + myValue

                  + myField.value.substring(endPos, myField.value.length);

  } else {

    myField.value += myValue;

  }

}


function setCaretPosition(elemId, caretPos) {
    var elem = findObj(elemId);

    if(elem != null) {
        if(elem.createTextRange) {
            var range = elem.createTextRange();
            range.move('character', caretPos);
            range.select();
        }
        else {
            if(elem.selectionStart) {
                elem.focus();
                elem.setSelectionRange(caretPos, caretPos);
            }
            else
                elem.focus();
        }
    }
}
  
  

<!-- Original: Richard Gorremans (RichardG@spiritwolfx.com) ==>
<!-- Updates: www.spiritwolfx.com
<!-- Begin

// Check browser version
var isNav4 = false, isNav5 = false, isIE4 = false
var strSeperator = "/"; 
// If you are using any Java validation on the back side you will want to use the / because 
// Java date validations do not recognize the dash as a valid date separator.

var vDateType = 3; // Global value for type of date format
//                1 = mm/dd/yyyy
//                2 = yyyy/dd/mm  (Unable to do date check at this time)
//                3 = dd/mm/yyyy

var vYearType = 4; //Set to 2 or 4 for number of digits in the year for Netscape
var vYearLength = 2; // Set to 4 if you want to force the user to enter 4 digits for the year before validating.

var err = 0; // Set the error code to a default of zero


if(navigator.appName == "Netscape") 
{
   if (navigator.appVersion < "5")  
   {
      isNav4 = true;
      isNav5 = false;
	}
   else
   if (navigator.appVersion > "4") 
   {
      isNav4 = false;
      isNav5 = true;
	}
}
else  
{
   isIE4 = true;
}


function DateFormat(vDateName, vDateValue, e, dateCheck, dateType)  
{

vDateType = dateType;
mDateValue = vDateValue;

if( vDateValue == '' )
{
  alert( "Please enter a valid date." )
  vDateName.focus();
  return false;
}

// vDateName = object name
// vDateValue = value in the field being checked
// e = event
// dateCheck 
//       True  = Verify that the vDateValue is a valid date
//       False = Format values being entered into vDateValue only
// vDateType
//       1 = mm/dd/yyyy
//       2 = yyyy/mm/dd
//       3 = dd/mm/yyyy

   
   //Enter a tilde sign for the first number and you can check the variable information.
   if (vDateValue == "~")
   {
      alert("AppVersion = "+navigator.appVersion+" \nNav. 4 Version = "+isNav4+" \nNav. 5 Version = "+isNav5+" \nIE Version = "+isIE4+" \nYear Type = "+vYearType+" \nDate Type = "+vDateType+" \nSeparator = "+strSeperator);
      vDateName.value = "";
      vDateName.focus();
      return true;
   }
      
   var whichCode = (window.Event) ? e.which : e.keyCode;
 
   // Check to see if a seperator is already present.
   // bypass the date if a seperator is present and the length greater than 8
   if (vDateValue.length > 8 && isNav4)
   {
      if ((vDateValue.indexOf("-") >= 1) || (vDateValue.indexOf("/") >= 1))
         return true;
   }
   
   //Eliminate all the ASCII codes that are not valid
   var alphaCheck = " abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ/-";
   if (alphaCheck.indexOf(vDateValue) >= 1)  
   {
      if (isNav4)
      {
         vDateName.value = "";
         vDateName.focus();
         vDateName.select();
         return false;
      }
      else
      {
         vDateName.value = vDateName.value.substr(0, (vDateValue.length-1));
         return false;
      } 
   }
   if (whichCode == 8) //Ignore the Netscape value for backspace. IE has no value
      return false;
   else 
   {
      //Create numeric string values for 0123456789/
      //The codes provided include both keyboard and keypad values
      
      var strCheck = '47,48,49,50,51,52,53,54,55,56,57,58,59,95,96,97,98,99,100,101,102,103,104,105';
      if (strCheck.indexOf(whichCode) != -1)  
      {
         if (isNav4)  
         {
            if (((vDateValue.length < 6 && dateCheck) || (vDateValue.length == 7 && dateCheck)) && (vDateValue.length >=1))
            {
               alert("Invalid Date\nPlease Re-Enter");
               vDateName.value = "";
               vDateName.focus();
               vDateName.select();
               return false;
            }
            if (vDateValue.length == 6 && dateCheck)  
            {
               var mDay = vDateName.value.substr(2,2);
               var mMonth = vDateName.value.substr(0,2);
               var mYear = vDateName.value.substr(4,4)
               
               //Turn a two digit year into a 4 digit year
               if (mYear.length == 2 && vYearType == 4) 
               {
                  var mToday = new Date();
                  
                  //If the year is greater than 30 years from now use 19, otherwise use 20
                  var checkYear = mToday.getFullYear() + 30; 
                  var mCheckYear = '20' + mYear;
                  if (mCheckYear >= checkYear)
                     mYear = '19' + mYear;
                  else
                     mYear = '20' + mYear;
               }
               var vDateValueCheck = mMonth+strSeperator+mDay+strSeperator+mYear;
               
               if (!dateValid(vDateValueCheck))  
               {
                  alert("Invalid Date\nPlease Re-Enter");
                  vDateName.value = "";
                  vDateName.focus();
                  vDateName.select();
                  return false;
		         }
               vDateName.value = vDateValueCheck;
               return true;
            
            }
            else
            {
               // Reformat the date for validation and set date type to a 1
               
               
               if (vDateValue.length >= 8  && dateCheck)  
               {
                  if (vDateType == 1) // mmddyyyy
                  {
                     var mDay = vDateName.value.substr(2,2);
                     var mMonth = vDateName.value.substr(0,2);
                     var mYear = vDateName.value.substr(4,4)
                     vDateName.value = mMonth+strSeperator+mDay+strSeperator+mYear;
                  }
                  if (vDateType == 2) // yyyymmdd
                  {
                     var mYear = vDateName.value.substr(0,4)
                     var mMonth = vDateName.value.substr(4,2);
                     var mDay = vDateName.value.substr(6,2);
                     vDateName.value = mYear+strSeperator+mMonth+strSeperator+mDay;
                  }
                  if (vDateType == 3) // ddmmyyyy
                  {
                     var mMonth = vDateName.value.substr(2,2);
                     var mDay = vDateName.value.substr(0,2);
                     var mYear = vDateName.value.substr(4,4)
                     vDateName.value = mDay+strSeperator+mMonth+strSeperator+mYear;
                  }
                  
                  //Create a temporary variable for storing the DateType and change
                  //the DateType to a 1 for validation.
                  
                  var vDateTypeTemp = vDateType;
                  vDateType = 1;
                  var vDateValueCheck = mMonth+strSeperator+mDay+strSeperator+mYear;
                  
                  if (!dateValid(vDateValueCheck))  
                  {
                     alert("Invalid Date\nPlease Re-Enter");
                     vDateType = vDateTypeTemp;
                     vDateName.value = "";
                     vDateName.focus();
                     vDateName.select();
                     return false;
		            }
                     vDateType = vDateTypeTemp;
                     return true;
	            }
               else
               {
                  if (((vDateValue.length < 8 && dateCheck) || (vDateValue.length == 9 && dateCheck)) && (vDateValue.length >=1))
                  {
                     alert("Invalid Date\nPlease Re-Enter");
                     vDateName.value = "";
                     vDateName.focus();
                     vDateName.select();
                     return false;
                  }
               }
            }
         }
         else  
         {
         // Non isNav Check
            if (((vDateValue.length < 8 && dateCheck) || (vDateValue.length == 9 && dateCheck)) && (vDateValue.length >=1))
            {
               alert("Invalid Date\nPlease Re-Enter");
               vDateName.value = "";
               vDateName.focus();
               return true;
            }
            
            // Reformat date to format that can be validated. mm/dd/yyyy
            
            
            if (vDateValue.length >= 8 && dateCheck)  
            {
            
               // Additional date formats can be entered here and parsed out to
               // a valid date format that the validation routine will recognize.
               
               if (vDateType == 1) // mm/dd/yyyy
               {
                  var mMonth = vDateName.value.substr(0,2);
                  var mDay = vDateName.value.substr(3,2);
                  var mYear = vDateName.value.substr(6,4)
               }
               if (vDateType == 2) // yyyy/mm/dd
               {
                  var mYear = vDateName.value.substr(0,4)
                  var mMonth = vDateName.value.substr(5,2);
                  var mDay = vDateName.value.substr(8,2);
               }
               if (vDateType == 3) // dd/mm/yyyy
               {
                  var mDay = vDateName.value.substr(0,2);
                  var mMonth = vDateName.value.substr(3,2);
                  var mYear = vDateName.value.substr(6,4)
               }
               if (vYearLength == 4)
               {
                  if (mYear.length < 4)
                  {
                     alert("Invalid Date\nPlease Re-Enter");
                     vDateName.value = "";
                     vDateName.focus();
                     return true;
                  }
               }
               
               // Create temp. variable for storing the current vDateType
               var vDateTypeTemp = vDateType;
               
               // Change vDateType to a 1 for standard date format for validation
               // Type will be changed back when validation is completed.
               vDateType = 1;
               
               // Store reformatted date to new variable for validation.
               var vDateValueCheck = mMonth+strSeperator+mDay+strSeperator+mYear;
               
               if (mYear.length == 2 && vYearType == 4 && dateCheck)  
               {
                  
                  //Turn a two digit year into a 4 digit year
                  var mToday = new Date();
                  
                  //If the year is greater than 30 years from now use 19, otherwise use 20
                  var checkYear = mToday.getFullYear() + 30; 
                  var mCheckYear = '20' + mYear;
                  if (mCheckYear >= checkYear)
                     mYear = '19' + mYear;
                  else
                     mYear = '20' + mYear;
                  vDateValueCheck = mMonth+strSeperator+mDay+strSeperator+mYear;
                  
                  // Store the new value back to the field.  This function will
                  // not work with date type of 2 since the year is entered first.
                  
                  if (vDateTypeTemp == 1) // mm/dd/yyyy
                     vDateName.value = mMonth+strSeperator+mDay+strSeperator+mYear;
                  if (vDateTypeTemp == 3) // dd/mm/yyyy
                     vDateName.value = mDay+strSeperator+mMonth+strSeperator+mYear;

               } 
               
               
               if (!dateValid(vDateValueCheck))  
               {
                  alert("Invalid Date\nPlease Re-Enter");
                  vDateType = vDateTypeTemp;
                  vDateName.value = "";
                  vDateName.focus();
                  return true;
		         }
               vDateType = vDateTypeTemp;
               return true;
            
            }
            else
            {
               
               if (vDateType == 1)
               {
                  if (vDateValue.length == 2)  
                  {
                     vDateName.value = vDateValue+strSeperator;
                  }
                  if (vDateValue.length == 5)  
                  {
                     vDateName.value = vDateValue+strSeperator;
                  }
               }
               if (vDateType == 2)
               {
                  if (vDateValue.length == 4)  
                  {
                     vDateName.value = vDateValue+strSeperator;
                  }
                  if (vDateValue.length == 7)  
                  {
                     vDateName.value = vDateValue+strSeperator;
                  }
               } 
               if (vDateType == 3)
               {
                  if (vDateValue.length == 2)  
                  {
                     vDateName.value = vDateValue+strSeperator;
                  }
                  if (vDateValue.length == 5)  
                  {
                     vDateName.value = vDateValue+strSeperator;
                  }
               }
               return true;
            }
         }
         if (vDateValue.length == 10   && dateCheck)  
         {
            if (!dateValid(vDateName))  
            {
// Un-comment the next line of code for debugging the dateValid() function error messages
//               alert(err);  
               alert("Invalid Date\nPlease Re-Enter");
               vDateName.focus();
               vDateName.select();
	         }
         }
         return false;
      }
      else  
      {
         // If the value is not in the string return the string minus the last
         // key entered.
         if (isNav4)
         {
            vDateName.value = "";
            vDateName.focus();
            vDateName.select();
            return false;
         }
         else
         {
            vDateName.value = vDateName.value.substr(0, (vDateValue.length-1));
            return false;
         }
		}
	}
}


   function dateValid(objName) {
      var strDate;
      var strDateArray;
      var strDay;
      var strMonth;
      var strYear;
      var intday;
      var intMonth;
      var intYear;
      var booFound = false;
      var datefield = objName;
      var strSeparatorArray = new Array("-"," ","/",".");
      var intElementNr;
      // var err = 0;
      var strMonthArray = new Array(12);
      strMonthArray[0] = "Jan";
      strMonthArray[1] = "Feb";
      strMonthArray[2] = "Mar";
      strMonthArray[3] = "Apr";
      strMonthArray[4] = "May";
      strMonthArray[5] = "Jun";
      strMonthArray[6] = "Jul";
      strMonthArray[7] = "Aug";
      strMonthArray[8] = "Sep";
      strMonthArray[9] = "Oct";
      strMonthArray[10] = "Nov";
      strMonthArray[11] = "Dec";
      
      //strDate = datefield.value;
      strDate = objName;
      
      if (strDate.length < 1) {
         return true;
      }
      for (intElementNr = 0; intElementNr < strSeparatorArray.length; intElementNr++) {
         if (strDate.indexOf(strSeparatorArray[intElementNr]) != -1) 
         {
            strDateArray = strDate.split(strSeparatorArray[intElementNr]);
            if (strDateArray.length != 3) 
            {
               err = 1;
               return false;
            }
            else 
            {
               strDay = strDateArray[0];
               strMonth = strDateArray[1];
               strYear = strDateArray[2];
            }
            booFound = true;
         }
      }
      if (booFound == false) {
         if (strDate.length>5) {
            strDay = strDate.substr(0, 2);
            strMonth = strDate.substr(2, 2);
            strYear = strDate.substr(4);
         }
      }
      //Adjustment for short years entered
      if (strYear.length == 2) {
         strYear = '20' + strYear;
      }
      strTemp = strDay;
      strDay = strMonth;
      strMonth = strTemp;
      intday = parseInt(strDay, 10);
      if (isNaN(intday)) {
         err = 2;
         return false;
      }
      
      intMonth = parseInt(strMonth, 10);
      if (isNaN(intMonth)) {
         for (i = 0;i<12;i++) {
            if (strMonth.toUpperCase() == strMonthArray[i].toUpperCase()) {
               intMonth = i+1;
               strMonth = strMonthArray[i];
               i = 12;
            }
         }
         if (isNaN(intMonth)) {
            err = 3;
            return false;
         }
      }
      intYear = parseInt(strYear, 10);
      if (isNaN(intYear)) {
         err = 4;
         return false;
      }
      if (intMonth>12 || intMonth<1) {
         err = 5;
         return false;
      }
      if ((intMonth == 1 || intMonth == 3 || intMonth == 5 || intMonth == 7 || intMonth == 8 || intMonth == 10 || intMonth == 12) && (intday > 31 || intday < 1)) {
         err = 6;
         return false;
      }
      if ((intMonth == 4 || intMonth == 6 || intMonth == 9 || intMonth == 11) && (intday > 30 || intday < 1)) {
         err = 7;
         return false;
      }
      if (intMonth == 2) {
         if (intday < 1) {
            err = 8;
            return false;
         }
         if (LeapYear(intYear) == true) {
            if (intday > 29) {
               err = 9;
               return false;
            }
         }
         else {
            if (intday > 28) {
               err = 10;
               return false;
            }
         }
      }
         return true;
      }

   function LeapYear(intYear) {
      if (intYear % 100 == 0) {
         if (intYear % 400 == 0) { return true; }
      }
      else {
         if ((intYear % 4) == 0) { return true; }
      }
         return false;
      }


function isDate(dateStr) 
{

    var datePat = /^(\d{1,2})(\/|-)(\d{1,2})(\/|-)(\d{4})$/;
    var matchArray = dateStr.match(datePat); // is the format ok?
   
    if (matchArray == null) {
        
        alert("Invalid Date Entry. Must be in the format MM/DD/YYYY");
        return false;
    }

    month = matchArray[1]; // parse date into variables
    day = matchArray[3];
    year = matchArray[5];

    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 FormatPhone( field ){

var re= /\D/;
// test for this format: (xxx)xxx-xxxx
var re2 = /^\({1}\d{3}\)\d{3}-\d{4}/; 
// test for this format: xxx-xxx-xxxx
//var re2 = /^\d{3}-\d{3}-\d{4}/;


var num=field.value;

var newNum;
 if (num != "" && re2.test(num)!=true){
   if (num != ""){
     while (re.test(num)){
     num = num.replace(re,"");
     }
   }

  if (num.length != 10){
    alert('Please enter a 10 digit phone number');
    field.select();
    return;
    }
   else {
     // for format (xxx)xxx-xxxx
     newNum = '' + num.substring(0,3) + '-' + num.substring(3,6) + '-' + num.substring(6,10);
     // for format xxx-xxx-xxxx
     // newNum = num.substring(0,3) + '-' + num.substring(3,6) + '-' + num.substring(6,10);
     field.value=newNum;
     }
   }
  
}
   
function formatNumeric( obj )
{
    
var sign;
var cents;
var num=obj.value;

num = num.toString().replace(/\$|\,/g,'');
num = num.toString().replace(/\%|\,/g,'');
sign = (num == (num = Math.abs(num)));
num = Math.floor(num*100+0.50000000001);
cents = num%100;
num = Math.floor(num/100).toString();
if(cents<10)
cents = "0" + cents;
for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
num = num.substring(0,num.length-(4*i+3))+','+
num.substring(num.length-(4*i+3));
obj.value= (((sign)?'':'-')  + num + '.' + cents);
}

function formatPercent( obj )
{
    
var sign;
var cents;
var num=obj.value;

sign = (num == (num = Math.abs(num)));
num = Math.floor(num*100+0.50000000001);
cents = num%100;
num = Math.floor(num/100).toString();
if(cents<10)
cents = "0" + cents;
for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
num = num.substring(0,num.length-(4*i+3))+','+
num.substring(num.length-(4*i+3));
obj.value= (((sign)?'':'-')  + num + '.' + cents) + ' %';
}


function formatCurrency(num) {
num = num.toString().replace(/\$|\,/g,'');
if(isNaN(num))
	num ='0';
sign = (num == (num = Math.abs(num)));
num = Math.floor(num*100+0.50000000001);
cents = num%100;
num = Math.floor(num/100).toString();
if(cents<10)
cents = "0" + cents;
for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
num = num.substring(0,num.length-(4*i+3))+','+
num.substring(num.length-(4*i+3));
return (((sign)?'':'-') + '$' + num + '.' + cents);
}


function showdiv( obj, height, width )
{
    hideElms('SELECT');
   
    
    
	var top = (screen.availHeight-height) / 3;
	var left = ((document.body.clientWidth-width) / 2)+document.body.scrollLeft;
	top+=document.body.scrollTop;
    //left+=document.body.scrollLeft;
	obj.style.position="Absolute";
	obj.style.top=top;
	obj.style.left=left;
	obj.style.width=width;
	obj.style.height=height;
	obj.style.display='';
	
	obj.style.borderBottom='midnightblue 1px solid';
	obj.style.borderTop='midnightblue 1px solid';
	obj.style.borderLeft='midnightblue 1px solid';
	obj.style.borderRight='midnightblue 1px solid';
	
	
}

function numbersOnly(sExceptions){
  //use in the onkeypress event
  var iKey = event.keyCode;
  var sKey = String.fromCharCode(iKey);
  
	if (event.keyCode<48||event.keyCode>57)	  {
	  if(sExceptions.indexOf(sKey) == -1)     {
	    return false;
	  }
	}
}


function putdiv( obj, height, width, top, left )
{
     
	
	obj.style.position="Absolute";
	obj.style.top=top;
	obj.style.left=left;
	obj.style.width=width;
	obj.style.height=height;
	obj.style.display='';
	obj.style.borderBottom='midnightblue 1px solid';
	obj.style.borderTop='midnightblue 1px solid';
	obj.style.borderLeft='midnightblue 1px solid';
	obj.style.borderRight='midnightblue 1px solid';
	

}



function showdiv2( obj, height, width, totalw )
{
    hideElms('SELECT');
   
     
     
	var top = (screen.height -height) / 3;
	var left = (totalw-width) / 2;
	top+=document.body.scrollTop;
	
	
	
	obj.style.position="Absolute";
	obj.style.top=top;
	obj.style.left=left;
	obj.style.width=width;
	obj.style.height=height;
	
	obj.style.borderBottom='midnightblue 1px solid';
	obj.style.borderTop='midnightblue 1px solid';
	obj.style.borderLeft='midnightblue 1px solid';
	obj.style.borderRight='midnightblue 1px solid';
	

}


function hideElms(elmTag) {
	for (i=0; i<document.all.tags(elmTag).length; i++){
		obj = document.all.tags(elmTag)[i];
		if (!obj || !obj.offsetParent) continue;
		obj.style.visibility = "hidden";
	}
}


function showElms(elmTag) {
	for (i=0; i<document.all.tags(elmTag).length; i++){
		obj = document.all.tags(elmTag)[i];
		if (!obj || !obj.offsetParent) continue;
		obj.style.visibility = "";
	}
}






// 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.');
		result = false;
	}
	
	return result;
}


function allDigits(str)
{
	return inValidCharSet(str,"0123456789");
}

function inValidCharSet(str,charset)
{
	var result = true;
	
	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.');
			
		}
		else if (expired)
		{
 			result = false;
 			alert('The date for "' + fieldLabel +'" has expired.');
					}
	} 
	
	return result;
}

function isValidCreditCardNumber(formField,ccType,fieldLabel,required)
{

    var result = true;
 	var ccNum = formField.value;

	if (required && !validRequired(formField,fieldLabel))
		result = false;
		

		
 
  	if (result && (formField.value.length>0))
 	{ 
 		if (!allDigits(ccNum))
 		{
 			alert('Please enter only numbers (no dashes or spaces) for the "' + fieldLabel +'" field.');
			
			result = false;
		}	
		
		
		

		if (result)
 		{ 
 		  
 			
 			if (!LuhnCheck(ccNum) || !validateCCNum(ccType,ccNum))
 			{
 				alert('Please enter a valid card number for the "' + fieldLabel +'" field.');
				
				result = false;
			}	
		} 

	} 
	
	
	
	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 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 validTime( t )
{
  
  if( t.indexOf(':') == -1  )
  {
     return false;
  }
  
  //if( t.length!= 5 ) return false;
  
  var ar=t.split(":");
  if( ar.length != 2 ) return false;
  if( isNaN(ar[0])) return false;
  if( isNaN(ar[1])) return false;
  
  if( parseInt(ar[0]) < 1 || parseInt(ar[0]) > 23 ) return false;
  if( parseInt(ar[1]) < 0 || parseInt(ar[1]) > 59 ) return false;
  return true;
}

//  End -->


function checkmoney( v )
{
  var x=v.value;  
  x=x.replace("$", "");
  x=x.replace(",", "");
  x=x.replace(" ", "");
  
  
  
  if( isNaN( x ) )
  {
    alert( "Amount is invalid");
    
  }
  else
  {
    var numberTest = new NumberFormat(x);
	numberTest.setCommas(false);
	numberTest.setPlaces(2)
	
	numberTest.setCurrencyPrefix("$");
	
	v.value=numberTest.toFormatted();


  }


}

function checkmoneynoparens( v )
{
  var x=v.value;  
  x=x.replace("$", "");
  x=x.replace(",", "");
  x=x.replace(" ", "");
  x=x.replace("(", "");
  x=x.replace("_", "");
  
  if( isNaN( x ) )
  {
    alert( "Amount is invalid");
    
  }
  else
  {
    var numberTest = new NumberFormat(x);
	numberTest.setCommas(false);
	numberTest.setPlaces(2)
	
	numberTest.setCurrencyPrefix("$");
	
	v.value=numberTest.toFormatted();
    v.value=v.value.replace("(","");  
    v.value=v.value.replace(")","");  

  }


}




function checkmoney3digit( v )
{
  var x=v.value;  
  x=x.replace("$", "");
  x=x.replace(",", "");
  x=x.replace(" ", "");
  
  
  
  if( isNaN( x ) )
  {
    alert( "Amount is invalid");
    
  }
  else
  {
    var numberTest = new NumberFormat(x);
	numberTest.setCommas(false);
	numberTest.setPlaces(3)
	
	numberTest.setCurrencyPrefix("$");
	
	v.value=numberTest.toFormatted();


  }


}

function formatDate(element)    {
  var datePat;
  var matchArray;

  if(element.value != "") {
    element.value = element.value.replace(/(\d{2})(\d{2})(\d{4})/,"$1/$2/$3");
    datePat = /^(\d{1,2})(\/|-)(\d{1,2})(\/|-)(\d{2,4})$/;
    matchArray = element.value.match(datePat); // is the format ok?

    if (matchArray == null) {
        element.focus();
        alert("Sorry -- this is not a valid date.");
        return false;
    }

    month = matchArray[1]; // parse date into variables
    day = matchArray[3];
    year = matchArray[5];

    if(year.length == 2) {
      if(year >= 50)     {
        year = "19" + year;
      }else{
        year = "20" + year;
      }
    }

    element.value = month + "/" + day + "/" + year;

    if(element.value != "")       {
      if(!isDate(element.value))  {
        element.focus();
        return false;
      }
    }
  }
}


function checkboxval( o )
{
   
  if( o.length )
  {
    for( var i=0; i<o.length; i++ )
    {
     
      if( o[i].checked ) return o[i].value;
    }
  }
  return '';
  
}


var aclasslist = new Array();
var aidlist = new Array();
var acount=0;

// preaload some things
aclasslist[0]="addit";
aidlist[0]="addit";

acount=1;

function cbtoggle( oid )
{
  if( ! findObj(oid ) ) return;
  
  var o = findObj(oid);
  
  if( acount==0 )
  {
    cbaddid( oid );
  }
  else
  {
     if( cbindex(oid)==-1 )
     {
       cbaddid(oid);
     }
  }
  if( o.className=='hidden' )
  {
     o.className=cbgetclass( oid );     

  }  
  else
    o.className='hidden';
    
}


function cbhover( oid )
{
  if( ! findObj(oid ) ) return;
  
  var o = findObj(oid);
  
  if( acount==0 )
  {
    cbaddid( oid );
  }
  else
  {
     if( cbindex(oid)==-1 )
     {
       cbaddid(oid);
     }
  }
  if( o.className=='isselected' )
  {
     o.className='notselected'
     
  }  
  else
    o.className='isselected';
    
}

function cbnohover( oid, oid2 )
{

  
  
  if( ! findObj(oid ) ) return;
  if( ! findObj(oid2 ) ) return;
  
  var o = findObj(oid);
  var o2 = findObj(oid2);
  if( acount==0 )
  {
    cbaddid( oid );
  }
  else
  {
     if( cbindex(oid)==-1 )
     {
       cbaddid(oid);
     }
  }
  
  if( o2.checked )
     o.className='isselected'
  else
    o.className='notselected';
    
}


function cbaddid( oid )
{
   aidlist[acount]=oid;
   if( findObj(oid).className != '' && findObj(oid).className !='hidden' )
     aclasslist[acount]=findObj(oid).className;
   else
     aclasslist[acount]='shown';
   acount++;
   
   
}

function cbindex( oid )
{
  for( i=0; i < acount; i++ )
  {
    if( aidlist[i]==oid )
      return i;
  }
  return -1;
}    

function cbgetclass( oid )
{
  var i=cbindex(oid )
  if( i > -1 )
  {
    return aclasslist[i];
  }
  return '';
}


function cbhidediv( oid )
{
  
    var obj=findObj(oid);
    if( obj) 
       obj.className='hidden';
 
}
function cbshowdiv( oid, height, width )
{
    //hideElms('SELECT');
   
    var obj=findObj(oid);
    
	var top = (screen.availHeight-height) / 3;
	var left = ((document.body.clientWidth-width) / 2)+document.body.scrollLeft;
	top+=document.body.scrollTop;
    //left+=document.body.scrollLeft;
	obj.style.position="Absolute";
	obj.style.top=top;
	obj.style.left=left;
	obj.style.width=width;
	obj.style.height=height;
	//obj.style.display='';
	//cbtoggle( obj.id )
	cbtoggle( oid );
	obj.style.borderBottom='midnightblue 1px solid';
	obj.style.borderTop='midnightblue 1px solid';
	obj.style.borderLeft='midnightblue 1px solid';
	obj.style.borderRight='midnightblue 1px solid';
	
	
}


function cbshowdivright( oid, height, width )
{
    //hideElms('SELECT');
   
    var obj=findObj(oid);
    
	var top = (screen.availHeight-height) / 3;
	var left = ((document.body.clientWidth-width))+document.body.scrollLeft;
	left-=20;
	
	top+=document.body.scrollTop;
    //left+=document.body.scrollLeft;
	obj.style.position="Absolute";
	obj.style.top=top;
	obj.style.left=left;
	obj.style.width=width;
	obj.style.height=height;
	//obj.style.display='';
	//cbtoggle( obj.id )
	cbtoggle( oid );
	obj.style.borderBottom='';
	obj.style.borderTop='';
	obj.style.borderLeft='';
	obj.style.borderRight='';
	
	
}


function checkfield( oid )
   {
     var o = findObj(oid);
     if( o.value != "" )
     { 
        o.style.backgroundColor='';
        o.style.color='';
        return 0;
             
     }
     else
     {
      o.style.backgroundColor='crimson';
        o.style.color='white';
        return 1;
      } 
   }

function checkfieldlength( oid , l )
   {
     var o = findObj(oid);
     if( o ) {
         if( o.value.length >= l  )
         { 
            o.style.backgroundColor='';
            o.style.color='';
            return 0;
                 
         }
         else
         {
          o.style.backgroundColor='crimson';
            o.style.color='white';
            return 1;
          } 
       }   
   }


   function checksel( oid )
   {
     var o = findObj(oid);
     
     if( o.selectedIndex > 0  )
     { 
        o.style.backgroundColor='';
        o.style.color='';
        return 0;
             
     }
     else
     {
      o.style.backgroundColor='crimson';
        o.style.color='white';
        return 1;
      } 
   }

function mymonth( dval ) {
  m=month(dval)
  if (len(m)=1) {
    m="0" & m;
}
  mymonth=m
}   

function myday( dval ) {
  m=daY(dval)
  if (len(m)=1) {
    m="0" & m;
  }
  myday=m
}
