var EB_APPLET_OBJECT = 0;
var EB_JSCRIPT_OBJECT = 1;

function isNetscape()
{
    if(window.navigator.appName.indexOf("Microsoft") > -1) return false;
    return true;
}

function getKeyID()
{
   var strKey = new String("");
   var lngKey;
   var objDate = new Date();


   lngKey = parseInt((Math.random() * 1000));
   strKey += ( base10toBaseX(lngKey, 36));

   lngKey = objDate.getTime();
   strKey += ( base10toBaseX(lngKey, 36));

   return strKey;


}

function base10toBaseX(dblBaseTen, intBase)
{

   var digits =  new Array ("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z");

   var intModulus;
   var dblBase;
   var strKey = "";

   var s = new Array();

   while (dblBaseTen >= intBase)
   {
      intModulus = Math.round(dblBaseTen % intBase);
      s[s.length] =  (digits[intModulus]) ;
      dblBaseTen = Math.floor(dblBaseTen / intBase);
   }

   s[s.length] =  digits[dblBaseTen];

   s.reverse();

   for (var i = 0; i < s.length; i++)
   {
      strKey += s[i];
   }
   return strKey;


}

function enableFormControls(objForm, blnEnable)
{
   for (var i = 0; i < objForm.elements.length; i++)
   {
      var objControl = objForm.elements[i];
      objControl.disabled =  ! blnEnable;
   }
}


function checkValidDate(dateStr) {
// dateStr must be of format month day year with either slashes
// or dashes separating the parts. Some minor changes would have
// to be made to use day month year or another format.
// This function returns True if the date is valid.
var slash1 = dateStr.indexOf("/");
if (slash1==-1) { slash1 = dateStr.indexOf("-") }
// if no slashes or dashes, invalid date
if (slash1==-1) { return false }

var dateMonth = dateStr.substring(0, slash1)

var dateMonthAndYear = dateStr.substring(slash1+1, dateStr.length)

var slash2 = dateMonthAndYear.indexOf("/")

if (slash2==-1)
{
   slash2 = dateMonthAndYear.indexOf("-")
}
// if not a second slash or dash, invalid date
if (slash2==-1)
{
   return false
}
var dateDay = dateMonthAndYear.substring(0, slash2)
var dateYear = dateMonthAndYear.substring(slash2+1, dateMonthAndYear.length)



//paul martin: put additional check here for time value in year
//remove time value from year
var timePart = new String(dateYear.substring(4, dateYear.length));
dateYear = dateYear.substring(0, 4);

//make sure the time part is valid
if (timePart != "")
{	
	if (!isValidTime(timePart))
	{
		return false;
	}
}

//paul martin: put additonal check here for max length of year
var strDateYear = new String(dateYear);
if (strDateYear.length > 4)
{	
	return false;
}

// if any non-digits in the month, invalid date
for (var x=0; x<dateMonth.length; x++)
{
   var digit = dateMonth.substring(x, x+1)
   if ((digit < "0") || (digit > "9"))
   {
      return false
   }
}
// convert the text month to a number
var numMonth = 0;
for (var x=0; x<dateMonth.length; x++)
{
   digit = dateMonth.substring(x, x+1)
   numMonth *= 10;
   numMonth += parseInt(digit);
}

if ((numMonth <= 0) || (numMonth > 12))
{
   return false
}
// if any non-digits in the day, invalid date
for (var x=0; x<dateDay.length; x++)
{
   digit = dateDay.substring(x, x+1)
   if ((digit < "0") || (digit > "9"))
   {
      return false
   }
}
// convert the text day to a number
var numDay = 0;
for (var x=0; x<dateDay.length; x++)
{
   digit = dateDay.substring(x, x+1)
   numDay *= 10;
   numDay += parseInt(digit);
}
if ((numDay <= 0) || (numDay > 31))
{
   return false
}
// February can't be greater than 29 (leap year calculation comes later)
if ((numMonth==2) && (numDay>29))
{
   return false
}
// check for months with only 30 days
if ((numMonth==4) || (numMonth==6) || (numMonth==9) || (numMonth==11)) { if (numDay>30) { return false } }
// if any non-digits in the year, invalid date
for (var x=0; x<dateYear.length; x++)
{
   digit = dateYear.substring(x, x+1)
   if ((digit < "0") || (digit > "9"))
   {
      return false
   }
}
// convert the text year to a number
var numYear = 0;
for (var x=0; x<dateYear.length; x++)
{
   digit = dateYear.substring(x, x+1)
   numYear *= 10;
   numYear += parseInt(digit);
}
// if 2-digit year, use 50 as a pivot date
if (numYear < 50) { numYear = numYear + 2000 }
if (numYear < 100) { numYear = numYear + 1900 }
if ((numYear <= 0) || (numYear > 9999))
{
   return false
}
// check for leap year if the month and day is Feb 29
if ((numMonth==2) && (numDay==29)) {
var div4 = numYear%4
var div100 = numYear%100
var div400 = numYear%400
// if not divisible by 4, then not a leap year so Feb 29 is invalid
if (div4!=0) { return false }
// at this point, year is divisible by 4. So if year is divisible by
// 100 and not 400, then it's not a leap year so Feb 29 is invalid
if ((div100==0) && (div400!=0)) { return false }
}
// date is valid
return true
}

function isValidTime(strTime)
{	
	//check for 2 colons
	if (stripWhitespaceNew(strTime) == "")
	{
		return true;
	}
	var objColonArray = strTime.split(":");
	//check that 2 colons exist
	if (objColonArray.length < 2)
	{
		return false;
	}
	//check that position 1,2 are numeric
	var strTimeNum = "";
	strTimeNum = objColonArray[0];
	var iTimeNum = parseInt(strTimeNum);
	if (isNaN(iTimeNum))
	{
		return false;
	}
	if ((iTimeNum < 0) || (iTimeNum > 23))
	{
		return false;
	}
	
	strTimeNum = objColonArray[1];
	iTimeNum = parseInt(strTimeNum);
	if (isNaN(iTimeNum))
	{
		return false;
	}
	if ((iTimeNum < 0) || (iTimeNum > 59))
	{
		return false;
	}
	
	//check that the third value is seconds followed by optional am/pm
	var strThirdPart = objColonArray[2];
	if (stripWhitespaceNew(strThirdPart) == "")
	{
		return false;
	}
	
	//first two chars must be number
	var strSeconds = strThirdPart.substr(0,2);
	iTimeNum = parseInt(strSeconds);
	if (isNaN(iTimeNum))
	{
		return false;
	}
	if ((iTimeNum < 0) || (iTimeNum > 59))
	{
		return false;
	}
	
	//remainder must be am/pm
	if (strThirdPart.length == 2)
	{
		return true;
	}
	var strMeridian = strThirdPart.substr(2, (strThirdPart.length - 2));
	if (stripWhitespaceNew(strMeridian) == "")
	{
		return true;
	}
	strMeridian = stripWhitespaceNew(strMeridian);
	if ((strMeridian.toUpperCase() != "AM")	&& (strMeridian.toUpperCase() != "PM"))
	{
		return false;
	}
	
	return true;

}

function stripWhitespaceNew (s)
{   
	var whitespace = " \t\n\r";
	return stripCharsInBagNew (s, whitespace)
}

function stripCharsInBagNew (s, bag)
{
   var i;
    var 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 acceleratorKeysEdit()
{
   if (!document.layers)
   {
      var strInput = "";
      strInput += "<label for='save' accesskey='s'></label>";
      strInput += "<input type='button'";
      strInput += "onclick='onSave()'";
      strInput += "id='save'";
      strInput += "style='background-color:transparent; width=0; height=0'>";
      strInput += "</input>";

      strInput += "<label for='new' accesskey='n'></label>";
      strInput += "<input type='button'";
      strInput += "onclick='onNew()'";
      strInput += "id='new'";
      strInput += "style='background-color:transparent; width=0; height=0'>";
      strInput += "</input>";

      strInput += "<label for='undo' accesskey='u'></label>";
      strInput += "<input type='button'";
      strInput += "onclick='onUndo()'";
      strInput += "id='undo'";
      strInput += "style='background-color:transparent; width=0; height=0'>";
      strInput += "</input>";

      strInput += "<label for='delete' accesskey='d'></label>";
      strInput += "<input type='button'";
      strInput += "onclick='onDelete()'";
      strInput += "id='delete'";
      strInput += "style='background-color:transparent; width=0; height=0'>";
      strInput += "</input>";

      strInput += "<label for='help' accesskey='h'></label>";
      strInput += "<input type='button'";
      strInput += "onclick='onHelp()'";
      strInput += "id='help'";
      strInput += "style='background-color:transparent; width=0; height=0'>";
      strInput += "</input>";

      document.write(strInput);
   }

}

function acceleratorKeysSearch()
{
   if (!document.layers)
   {
      var strInput = "";
      strInput += "<label for='search' accesskey='s'></label>";
      strInput += "<input type='button'";
      strInput += "onclick='onSearch()'";
      strInput += "id='search'";
      strInput += "style='background-color:transparent;  width=0; height=0'>";
      strInput += "</input>";

      strInput += "<label for='reset' accesskey='r'></label>";
      strInput += "<input type='button'";
      strInput += "onclick='onReset()'";
      strInput += "id='reset'";
      strInput += "style='background-color:transparent; width=0; height=0'>";
      strInput += "</input>";

      strInput += "<label for='new' accesskey='n'></label>";
      strInput += "<input type='button'";
      strInput += "onclick='onSearchNew()'";
      strInput += "id='new'";
      strInput += "style='background-color:transparent;  width=0; height=0'>";
      strInput += "</input>";

      strInput += "<label for='help' accesskey='h'></label>";
      strInput += "<input type='button'";
      strInput += "onclick='onHelp()'";
      strInput += "id='help'";
      strInput += "style='background-color:transparent;  width=0; height=0'>";
      strInput += "</input>";

      document.write(strInput);
   }

}

function CallBack(co)
{

   var objServerObject = co.return_value;
   if (co.status == -1)
   {
      alert(" An error was received from an asynchrounous operation. Error Information: " + co.data);
      return false;
   }

   if (objServerObject._ebParentName == "EBError")
   {
      alert("An error was received, the error information is: " + unescape(objServerObject._ebDescription));
      return false;
   }

   parent.window.status = co.context;
   alert(co.context);
}





var objTabs = new Array();


function clearHistory()
{
   objTabs = new Array();
}



function addHistoryItem(strTitle, strID, strLink)
{
    var objTab = new Object();
    objTab.title = strTitle;
    objTab.link = strLink;
    objTab.id = strID;
    if (!objTabs[strID])
    {
           objTabs[strID] = objTab;
    }
}


function repopulateCombo(objCombo, objArray)
{
    var colOptions = objCombo.options;
    for (i = colOptions.length - 1; i > -1; i--)
    {
        colOptions[i] = null;
    }
    for (var i = 0; i < objArray.length; i++)
    {
        var objList = objArray[i];
        var objOption = new Option(objList.Description, objList.Code);
        colOptions[i] = objOption;
    }
}



function convertPlusSign(strValue)
{
   var strString = new String(strValue);
   while(strString.indexOf("+") != -1)
   {
      var re = "+";
      strString = strString.replace(re, "%2B");
   }
   return(strString);
}


// please keep these lines on when you copy the source
// made by: Nicolas - http://www.javascript-page.com

var timerID = 0;
var tStart  = null;
var mobjFormControl = null;

function UpdateTimer() 
{
    if(timerID) 
    {
       clearTimeout(timerID);
       clockID = 0;
    }

    if(!tStart)
    {
        tStart = new Date();
    }
    var tDate = new Date();
    var tDiff = tDate.getTime() - tStart.getTime();
    //tDiff contains time elapsed in milliseconds
    //convert this value to hours, minutes and seconds    
    mobjFormControl.value = FormatMilli(tDiff);
    
    //tDate.setTime(tDiff);
    //mobjFormControl.value = "" + tDate.getMinutes() + ":" + tDate.getSeconds();
    timerID = setTimeout("UpdateTimer()", 1000);
}

function FormatMilli(lngMilli)
{
//function to convert milliseconds to hh:mm:ss format
//http://www.tek-tips.com/gviewthread.cfm/lev2/4/lev3/32/pid/216/qid/475988
milliSecs = lngMilli;

var msSecs = (1000);
var msMins = (msSecs * 60);
var msHours = (msMins * 60);
var numHours = Math.floor(milliSecs/msHours);
var numMins = Math.floor((milliSecs - (numHours * msHours)) / msMins);
var numSecs = Math.floor((milliSecs - (numHours * msHours) - (numMins * msMins))/ msSecs);


if (numSecs < 10){
  numSecs = "0" + numSecs
}
if (numMins < 10){
  numMins = "0" + numMins
}

var resultString = numHours + ":" + numMins + ":" + numSecs;
return resultString;

}

function StartTimer(objFormControl, objStartDate)
{
   mobjFormControl = objFormControl;
   if (!objStartDate)
   {
      tStart   = new Date();
   }
   else
   {
      tStart = objStartDate;
   }
   mobjFormControl.value = "00:00";
   timerID  = setTimeout("UpdateTimer()", 1000);
}

function StopTimer()
{
   if(timerID)
   {
      clearTimeout(timerID);
      timerID  = 0;
   }
   tStart = null;
}

function Reset()
{
   tStart = null;
   mobjFormControl.value = "00:00";
}



day = new Date();
miVisit = day.getTime();


function clock()
{
   dayTwo = new Date();
   hrNow = dayTwo.getHours();
   mnNow = dayTwo.getMinutes();
   scNow = dayTwo.getSeconds();
   miNow = dayTwo.getTime();
if (hrNow == 0) {
hour = 12;
ap = " AM";
} else if(hrNow <= 11) {
ap = " AM";
hour = hrNow;
} else if(hrNow == 12) {
ap = " PM";
hour = 12;
} else if (hrNow >= 13) {
hour = (hrNow - 12);
ap = " PM";
}
if (hrNow >= 13) {
hour = hrNow - 12;
}
if (mnNow <= 9) {
min = "0" + mnNow;
}
else (min = mnNow)
if (scNow <= 9) {
secs = "0" + scNow;
} else {
secs = scNow;
}
time = hour + ":" + min + ":" + secs + ap;
return time;
}


function enter_now(item)
{
    today = new Date();
    var strDate = "";
    strDate += today.getMonth() + 1;
    strDate += "/" + (today.getDate()) + "/";
    strDate += today.getUTCFullYear();
    item.value = strDate;
}

function GetDateTimeString(objDate)
{
    if (objDate)
    {
        return (objDate.getMonth() + 1) + "/" + objDate.getDate() + "/" + objDate.getUTCFullYear() + ' ' + objDate.getHours() + ":" + objDate.getMinutes() + ":" + objDate.getSeconds();
    }
    else
    {
        return "";
    }
}


function GetDateString(objDate)
{
    if (objDate)
    {
        return (objDate.getMonth() + 1) + "/" + objDate.getDate() + "/" + objDate.getUTCFullYear();
    }
    else
    {
        return "";
    }
}

function demoPopup(p1, p2)
{
    window.open("/content.asp?ID=" + p1 + "&AID=" + p2, "Demo", "directories=no,location=no,menubar=no,status=no,scrollbars=yes,width=730,height=432,resizable=no");
}

function specialChars() {
    for (i=161; i < 256; i ++){
        document.write("<tr><td align='center' width='150'>");
        document.write(i + "<br></td><td align='center' width='150'>");
        document.write(String.fromCharCode(i) + "</td></tr>");

    }
}


function IsBrowserXML()
{
    var bReturn = false;
    var strBrowswer = new String(window.navigator.userAgent).toLowerCase();
    if (strBrowswer.indexOf("mozilla") != -1)
    {
        bReturn = true;
    }
    return bReturn;
}




function SetSearchEventHandler()
{
    document.onkeyup = KeyTrapSearch;
}


function KeyTrapSearch(e)
{
    var intKeyCode = isNetscape() ? e.which : event.keyCode;
    if (intKeyCode == 13) onSearch();
}

function OnErrorHandler(sMsg,sUrl,sLine)
{
    alert("Error Received: " + " " + sMsg + " " + sUrl + " " + sLine);

}


function CleanSQLCrit(strCrit)
{
//function used to clean up sql arguments
    if (strCrit == "")
    {
        return "";
    }

    var strValue = "";
    var strExpr = /\'/gi;
    strValue = strCrit.replace(strExpr, "\'\'");
    
    //replace & with amp;
    var strAmp = /&/gi;
    strValue = strValue.replace(strAmp, "amp;");
    return strValue;
}

function GetStatusMessage(strMessage)
{
    var strReturn = "";
    strReturn += "<html>";
    strReturn += "<head>";
    strReturn += "<link rel=\"STYLESHEET\" TYPE=\"text/css\" HREF=\"/Includes/uistyle.css\"></link>";
    strReturn += "</head>";
    strReturn += "<body class=\"wdBody\">";
    strReturn += "<p class=\"wdBody\">";
    strReturn += strMessage;
    strReturn += "</p>";
    strReturn += "</body>";
    strReturn += "</html>";
    return strReturn;    
}


function ReplaceJavascriptSpecialChars(strData)
{
    if (strData == "")
    {
        return "";
    }

    var strValue = "";
    //replace single slash with 2 slashes
    var strExpr = /\\/g;
    strValue = strData.replace(strExpr, "\\\\");
    return strValue;

}

function returnToList(sName, bExtraLevel)
{
    var objSearch = data.getDataObjectFromCentralStore(sName + "Search");
    objSearch.autoSearch = true;
    data.addDataObjectToCentralStore(sName + "Search", objSearch);
    var oLoc = (bExtraLevel ? parent.parent : parent);
    oLoc.window.location.href = sName + "Frame_Criteria.asp";
}

function popupURL(sLoc)
{
    window.open(sLoc);
}

function popupEmail(sEmail, sSubject, sBody, sCC, sBCC)
{
    if(!sSubject) var sSubject = "";
    var sHREF = "mailto:" + sEmail + "?subject=" + sSubject
    if(sCC) sHREF += "&cc=" + sCC;
    if(sBCC) sHREF += "&bcc=" + sBCC;
    if(sBody) sHREF += "&body=" + sBody;
    window.location.href = sHREF
}

function validateSignedFloatKey(keyStroke)
{
    var oEvent = isNetscape() ? keyStroke : event;
    var strValidKeys = ";1;2;3;4;5;6;7;8;9;0;.;-;";
    validateKeys(oEvent, strValidKeys, this.value, ".-");
}

function validateFloatNumberKey(keyStroke)
{
    var oEvent = isNetscape() ? keyStroke : event;
    var strValidKeys = ";1;2;3;4;5;6;7;8;9;0;.;";
    var sValue = isNetscape() ? "" : event.srcElement.value;
    if(typeof(this.value) != "undefined") sValue = this.value;
    validateKeys(oEvent, strValidKeys, sValue, ".");
}

function validateSignedNumberKey(keyStroke)
{
    var oEvent = isNetscape() ? keyStroke : event;
    var strValidKeys = ";1;2;3;4;5;6;7;8;9;0;-;";
    validateKeys(oEvent, strValidKeys, this.value, "-");
}

function validateNumberKey(keyStroke)
{
    var oEvent = isNetscape() ? keyStroke : event;
    var strValidKeys = ";1;2;3;4;5;6;7;8;9;0;";
    validateKeys(oEvent, strValidKeys);
}

function validateDateKey(keyStroke)
{
    var oEvent = isNetscape() ? keyStroke : event;
    var strValidKeys = ";1;2;3;4;5;6;7;8;9;0;/;";
    validateKeys(oEvent, strValidKeys);
}

function validateKeys(oEvent, sValidKeys, sValue, sLimitKeys, sLimitAmounts)
{
    var keyCode = isNetscape() ? oEvent.which : oEvent.keyCode;
    var sKey = String.fromCharCode(keyCode);
    if(sLimitKeys) if(sLimitKeys.indexOf(sKey) > -1)
    {
        if(sLimitAmounts) var colLimits = sLimitAmounts.split(";");
        var nLimit = 1;
        if(colLimits) nLimit = colLimits[sLimitKeys.indexOf(sKey)];
        if(nLimit == "") nLimit = 1;
        var oReg = new RegExp(escapeRegExp(sKey), "g");
        var colMatch = sValue.match(oReg);
        var nCount = 0;
        if(colMatch != null) nCount = colMatch.length;
        if(nCount == nLimit)
        {
            if(isNetscape()) oEvent.which = 0; else oEvent.keyCode = 0;
            return;
        }
    }
    if(sValidKeys.indexOf(";" + sKey + ";") > -1) return;
    if(isNetscape()) oEvent.which = 0; else oEvent.keyCode = 0;
}

function escapeRegExp(sRegExp)
{
    var oReg = /([\\\$\(\)\*\+\.\[\]\?\/\^\{\}\|])/g;
    sRegExp = sRegExp.replace(oReg, "\\$1");      
    return sRegExp;
}

//function FormatListControl(strCriteria)
//{
    //var objArray = strListItems.split(",");
    //strText = "";
    //for (var i = 0; i < objArray.length; i++)
    //{
    //    strText += "'" + objArray[i] + "'";
    //    if (i != (objArray.length - 1) && objArray.length != 1)
    //    {
    //        strText += ",";
    //    }
    //}
    
//}    


function ConvertTimeToDate(strHours, strMinutes, strAM)
{
	if (strHours == "" || strMinutes == "")
	{
		return null;
	}
	var objDate = new Date();
	if (strAM == "pm")
	{
		if (parseInt(strHours) == 12)
		{
			strHours = 0;
		}
		else
		{
			strHours = parseInt(strHours) + 12;
		}
	}
	objDate.setHours(parseInt(strHours), parseInt(strMinutes), 0);
	return objDate;
	
}


function ConvertDateToTime(strDate)
{
	var strTimeValue = "";
	
	if (strDate == "")
	{
		return "";
	}
	var objDate = new Date(strDate);
	var strAM = "AM";    var iHours = objDate.getHours();    if (iHours > 11)    {		iHours = iHours - 12;		if (iHours == 0)		{
			iHours = 12;		}
		strAM = "PM";    }
    strTimeValue = iHours + ":" + objDate.getMinutes() + " " + strAM;
    
    if (isNaN(parseInt(strTimeValue)))	{		return strDate;	}    return strTimeValue;
    
}

// 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;

      

      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;

    formValue = formValue.substring(0,2) + "/" + formValue.substring(2,4);

      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(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.');

                  formField.focus();

                  result = false;

            }     

 

            if (result)

            { 

                  

                  if (!LuhnCheck(ccNum) || !validateCCNum(ccType,ccNum))

                  {

                        //alert('Please enter a valid card number for the "' + fieldLabel +'" field.');

                        alert('Card Type and Card Number do not match. Please verify "Card Type" and "Card Number" fields.');

                        formField.focus();

                        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 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 IsLessThan(iValA, iValB)
{
	if (iValA < iValB)
	{
		return true;
	}
	else
	{
		return false;
	}
}

function IsGreaterThan(iValA, iValB)
{
	if (iValA > iValB)
	{
		return true;
	}
	else
	{
		return false;
	}
}


function DrawTabs(objWindow, strTabName, bIsList)
{
	//view the list of tabs loaded
	var objRightTabsDat = objWindow.frames["data"].getDataObjectFromCentralStore("RightTabsDat");
	var strRightTabs = "";
	if (!objRightTabsDat)return;	if (!bIsList)
	{		if (!objRightTabsDat[strTabName])
		{
			var objRightTabsDatItem = new Object();
			objRightTabsDatItem.Name = strTabName;
			objRightTabsDatItem.Position = objRightTabsDat.length;
			objRightTabsDat[strTabName] = objRightTabsDatItem;
		}	}
	if (objRightTabsDat)
	{
		for (objProperty in objRightTabsDat)
		{
			var objRightTabsDatItem = objRightTabsDat[objProperty];
			if (objRightTabsDatItem)
			{
				if (strRightTabs != "")
				{
					strRightTabs += ",";
				}				if (objRightTabsDatItem.Name)				{
					strRightTabs += objRightTabsDatItem.Name + "Tabs.xsl"				}
			}
		}
	}	return strRightTabs;

}
function AddTab(objWindow, strTabName){	var objRightTabsDat = objWindow.frames["data"].getDataObjectFromCentralStore("RightTabsDat");	if (!objRightTabsDat)
	{
		var objRightTabsDat = new Array();
		objWindow.frames["data"].addDataObjectToCentralStore("RightTabsDat", objRightTabsDat);
	}	
	if (!objRightTabsDat[strTabName])
	{		var objRightTabsDatItem = new Object();
		objRightTabsDatItem.Name = strTabName;		objRightTabsDatItem.Position = objRightTabsDatItem.length;
		objRightTabsDat[strTabName] = objRightTabsDatItem;
	}}
function ClearTabs(objWindow)
{	var objRightTabsDat = objWindow.frames["data"].getDataObjectFromCentralStore("RightTabsDat");
	if (objRightTabsDat)
	{		for (objProperty in objRightTabsDat)		{
			var objRightTabsItem = objRightTabsDat[objProperty];
			if (objRightTabsItem)
			{				objRightTabsItem.Name = null;				objRightTabsItem.Position = null;				objRightTabsItem = null;
			}		}		
	}	
	objRightTabsDat = new Array();	objWindow.frames["data"].removeObjectFromCentralStore("RightTabsDat");	objWindow.frames["data"].addDataObjectToCentralStore("RightTabsDat",objRightTabsDat);
}
function RemoveTab(objWindow, strTabName){
	var objRightTabsDat = objWindow.frames["data"].getDataObjectFromCentralStore("RightTabsDat");
	if (objRightTabsDat)
	{		for (objProperty in objRightTabsDat)		{
			var objRightTabsItem = objRightTabsDat[objProperty];
			if (objRightTabsItem)
			{
				if (strTabName == objRightTabsItem.Name)
				{					objRightTabsItem.Name = null;					objRightTabsItem.Position = null;					objRightTabsItem = null;
					objRightTabsDat[objProperty] = null;				}
			}		}	
		
		//make a copy of the array with deleted items out
		var objTempRightTabsDat = new Array();		for (objProperty in objRightTabsDat)		{
			var objRightTabsItem = objRightTabsDat[objProperty];
			if (objRightTabsItem)
			{				objTempRightTabsDat[objProperty] = objRightTabsItem;			}		}
					objWindow.frames["data"].addDataObjectToCentralStore("RightTabsDat",objTempRightTabsDat);
	}
	}