// JavaScript Document

var xmlhttp

//Show Menu items

function showmenubycategory(MenuCatTypeID, MenuCatName)
{
xmlhttp=GetXmlHttpObject();
if (xmlhttp==null)
  {
  alert ("Your browser does not support AJAX!");
  return;
  }
var url="showmenuitems.asp";
url=url+"?q1="+MenuCatTypeID;
url=url+"&q2="+MenuCatName;
url=url+"&q3=0";
url=url+"&sid="+Math.random();
xmlhttp.onreadystatechange=stateChanged;
xmlhttp.open("GET",url,true);
xmlhttp.send(null);
}

function stateChanged()
{
if (xmlhttp.readyState==4)
  {
  	document.getElementById("MenuList").innerHTML=xmlhttp.responseText;
  }
}



function showordermenubycategory(MenuCatTypeID, MenuCatName)
{
xmlhttp=GetXmlHttpObject();
if (xmlhttp==null)
  {
  alert ("Your browser does not support AJAX!");
  return;
  }
var url="showordermenuitems.asp";
url=url+"?q1="+MenuCatTypeID;
url=url+"&q2="+MenuCatName;
url=url+"&q3=1";
url=url+"&sid="+Math.random();
xmlhttp.onreadystatechange=stateChangedOrderMenu;
xmlhttp.open("GET",url,true);
xmlhttp.send(null);
}

function stateChangedOrderMenu()
{
if (xmlhttp.readyState==4)
  {
  	document.getElementById("OrderMenuList").innerHTML=xmlhttp.responseText;
  }
}


function showMenuItemDetail(MenuItemID, Description)
{
xmlhttp=GetXmlHttpObject();
if (xmlhttp==null)
  {
  alert ("Your browser does not support AJAX!");
  return;
  }
var url="showomenuitemdetail.asp";
url=url+"?q1="+MenuItemID;
url=url+"&q2="+Description;
url=url+"&sid="+Math.random();
xmlhttp.onreadystatechange=stateChangedMenuItemDetail;
xmlhttp.open("GET",url,true);
xmlhttp.send(null);
}

function stateChangedMenuItemDetail()
{
if (xmlhttp.readyState==4)
  {
  	document.getElementById("infolight").innerHTML=xmlhttp.responseText;
	document.getElementById('infolight').style.display='block';
	document.getElementById('fade').style.display='block'
  }
}


// End Show menu Items


//order processing

function processOrderDetail(MenuDefinitionID, OptionList, isModifier)
{	
xmlhttp=GetXmlHttpObject();
if (xmlhttp==null)
  {
  alert ("Your browser does not support AJAX!");
  return;
  }
var url="showorderdetails.asp";
url=url+"?q1="+MenuDefinitionID;
url=url+"&q2="+OptionList;
url=url+"&q3="+isModifier;
url=url+"&sid="+Math.random();
xmlhttp.onreadystatechange=stateChangedOrderDetail;
xmlhttp.open("GET",url,true);
xmlhttp.send(null);
}

function stateChangedOrderDetail()
{
if (xmlhttp.readyState==4)
  {
  	document.getElementById("OrderList").innerHTML=xmlhttp.responseText;
	CloseMenuOptions();
  }
}


function ClearOrder()
{	
xmlhttp=GetXmlHttpObject();
if (xmlhttp==null)
  {
  alert ("Your browser does not support AJAX!");
  return;
  }
var url="clearorderdetails.asp";
xmlhttp.onreadystatechange=stateChangedClearOrderDetail;
xmlhttp.open("GET",url,true);
xmlhttp.send(null);
}

function stateChangedClearOrderDetail()
{
if (xmlhttp.readyState==4)
  {
  	document.getElementById("OrderList").innerHTML=xmlhttp.responseText;
  }
}


//end order processing


//Start Order Menu Options


function processOrderOption(MenuDefinitionID,optionsList,OptionsLevel,MenuCategoryID)
{
xmlhttp=GetXmlHttpObject();
if (xmlhttp==null)
  {
  alert ("Your browser does not support AJAX!");
  return;
  }
var url="orderMenuOption.asp";
url=url+"?q1="+MenuDefinitionID;
url=url+"&q2="+optionsList;
url=url+"&q3="+OptionsLevel;
url=url+"&q4="+MenuCategoryID;
url=url+"&sid="+Math.random();
xmlhttp.onreadystatechange=stateChangedOrderOptions;
xmlhttp.open("GET",url,true);
xmlhttp.send(null);
}

function stateChangedOrderOptions()
{
if (xmlhttp.readyState==4)
  {
  	document.getElementById("optionlight").innerHTML=xmlhttp.responseText;
	document.getElementById('optionlight').style.display='block';
	document.getElementById('fade').style.display='block'
  }
}



function getSelected(opt) 
{
var selected = new Array();
var index = 0;
for (var intLoop = 0; intLoop < opt.length; intLoop++) {
	if ((opt[intLoop].selected) ||
	(opt[intLoop].checked)) {
		index = selected.length;
		selected[index] = new Object;
		selected[index].value = opt[intLoop].value;
		selected[index].index = intLoop;
	}
}
return selected;
}


function OptionsSelected(MenuDefinitionID,optionsList,opt) {
	var sel = getSelected(opt);
	var strSel = "";
	for (var item in sel)       
		strSel += sel[item].value + "|";
		
	CloseMenuOptions();
	processOrderDetail(MenuDefinitionID,optionsList + strSel,"N");
}



function CheckMaxSide(MenuDefinitionID,optionsList,maxside,opt) 
{
var selected = new Array();
var count = 0;
var index = 0;
for (var intLoop = 0; intLoop < opt.length; intLoop++) {
	if ((opt[intLoop].selected) ||
	(opt[intLoop].checked)) {
		count += 1;
		index = selected.length;
		selected[index] = new Object;
		selected[index].value = opt[intLoop].value;
		selected[index].index = intLoop;
		}
	}
	
	if (maxside == count)
	{
		var strSel = "";
		for (var item in selected)       
			strSel += selected[item].value + "|";
			
		CloseMenuOptions();
		processOrderDetail(MenuDefinitionID,optionsList + strSel,"N");
	}
}


function CloseMenuOptions()
{
document.getElementById('optionlight').style.display='none';
document.getElementById('fade').style.display='none';
}


function CloseMenuPizzaOption()
{
document.getElementById('pizzalight').style.display='none';
document.getElementById('fade').style.display='none';
}

//End Order Menu Options





//Start Order Detail Delete & QTY

function OrderDetailQTY(MenuName, OrderDetailID, QTY)
{
xmlhttp=GetXmlHttpObject();
if (xmlhttp==null)
  {
  alert ("Your browser does not support AJAX!");
  return;
  }
var url="orderQty.asp";
url=url+"?q1="+MenuName;
url=url+"&q2="+OrderDetailID;
url=url+"&q3="+QTY;
url=url+"&sid="+Math.random();
xmlhttp.onreadystatechange=stateChangedQty;
xmlhttp.open("GET",url,true);
xmlhttp.send(null);
}

function stateChangedQty()
{
if (xmlhttp.readyState==4)
  {
  	document.getElementById("qtylight").innerHTML=xmlhttp.responseText;
	document.getElementById('qtylight').style.display='block';
	document.getElementById('fade').style.display='block'
  }
}


function changeOrderDetail(OrderDetailID, Qty)
{
xmlhttp=GetXmlHttpObject();
if (xmlhttp==null)
  {
  alert ("Your browser does not support AJAX!");
  return;
  }

if (Qty == -1)
	{
		Qty = eval("document.itemqty.txtqty.value");
	}

var url="changeorderdetails.asp";
url=url+"?q1="+OrderDetailID;
url=url+"&q2="+Qty;
url=url+"&sid="+Math.random();
xmlhttp.onreadystatechange=stateChangedChangeDetail;
xmlhttp.open("GET",url,true);
xmlhttp.send(null);

CloseChangeQty();
}

function stateChangedChangeDetail()
{
if (xmlhttp.readyState==4)
  {
  	document.getElementById("OrderList").innerHTML=xmlhttp.responseText;
  }
}


function CloseChangeQty()
{
document.getElementById('qtylight').style.display='none';
document.getElementById('fade').style.display='none';
}

//End Order Detail Delete & QTY








//Modifier Stuff


function modifyOrderDetail(MenuID, OrderDetailID)
{
xmlhttp=GetXmlHttpObject();
if (xmlhttp==null)
  {
  alert ("Your browser does not support AJAX!");
  return;
  }
var url="OrderMenuModifier.asp";
url=url+"?q1="+MenuID;
url=url+"&q2="+OrderDetailID;
url=url+"&sid="+Math.random();
xmlhttp.onreadystatechange=stateChangedModifyDetail;
xmlhttp.open("GET",url,true);
xmlhttp.send(null);
}

function stateChangedModifyDetail()
{
if (xmlhttp.readyState==4)
  {
  	document.getElementById("modifierlight").innerHTML=xmlhttp.responseText;
	document.getElementById('modifierlight').style.display='block';
	document.getElementById('fade').style.display='block'
  }
}


function updateModifiers(count, OrderDetailID) {
	var modlist = "";
	var modvalue = "";
    for (var i=1;i<(count + 1);i++) {
        if (eval("document.ModifierSelector.mod" + i + "[0].checked") == true)
		    {
				modvalue = eval("document.ModifierSelector.mod" + i + "[0].value");
				modlist += modvalue + "|";
			}
			
        if (eval("document.ModifierSelector.mod" + i + "[1].checked") == true)
			{
				modvalue = eval("document.ModifierSelector.mod" + i + "[1].value");
				modlist += modvalue + "|";
			}
			
		if (eval("document.ModifierSelector.mod" + i + "[2].checked") == true)
			{
		   		modvalue = eval("document.ModifierSelector.mod" + i + "[2].value");
				modlist += modvalue + "|";
			}
    }
	
	CloseMenuModifiers();
	processOrderDetail(OrderDetailID,modlist,"Y");
}


function CloseMenuModifiers()
{
document.getElementById('modifierlight').style.display='none';
document.getElementById('fade').style.display='none';
}

//End Modifier Stuff


//Check out stuff

function submitordertypeform(ordernumber,opt) 
{
	var sel = getSelected(opt);
	var strSel = "";
	for (var item in sel)       
		strSel += sel[item].value;
	
	
	if (strSel == "CO")
	{
		//for pingpong & wakamono only
		//cash only for CO CC only for DLV	
		//CheckOutFinal(ordernumber,strSel,0);
		
		//This is regular creditcard payment only
		CheckOutPayment(ordernumber,strSel);
	}
	
	if (strSel == "DL")
	{
		//This is regular creditcard payment only
		CheckOutPayment(ordernumber,strSel);
	}
}


function CheckOutOrderType(ordernumber)
{
xmlhttp=GetXmlHttpObject();
if (xmlhttp==null)
  {
  alert ("Your browser does not support AJAX!");
  return;
  }
var url="ordertype.asp";
url=url+"?q1="+ordernumber;
url=url+"&sid="+Math.random();
xmlhttp.onreadystatechange=stateChangedCheckOutOrderType;
xmlhttp.open("GET",url,true);
xmlhttp.send(null);
}

function stateChangedCheckOutOrderType()
{
if (xmlhttp.readyState==4)
  {
  	document.getElementById("ordertypelight").innerHTML=xmlhttp.responseText;
	document.getElementById('ordertypelight').style.display='block';
	document.getElementById('fade').style.display='block'
  }
}

function CheckOutPayType(ordernumber, ordertype)
{
xmlhttp=GetXmlHttpObject();
if (xmlhttp==null)
  {
  alert ("Your browser does not support AJAX!");
  return;
  }
var url="paymenttype.asp";
url=url+"?q1="+ordernumber;
url=url+"&q2="+ordertype;
url=url+"&sid="+Math.random();
xmlhttp.onreadystatechange=stateChangedCheckOutPayType;
xmlhttp.open("GET",url,true);
xmlhttp.send(null);
}

function stateChangedCheckOutPayType()
{
if (xmlhttp.readyState==4)
  {
  	document.getElementById("paytypelight").innerHTML=xmlhttp.responseText;
	document.getElementById('paytypelight').style.display='block';
	document.getElementById('ordertypelight').style.display='none';
	document.getElementById('paymentlight').style.display='none';
	document.getElementById('fade').style.display='block'
  }
}


function CheckOutFinal(ordernumber, ordertype, ccid)
{	
xmlhttp=GetXmlHttpObject();
if (xmlhttp==null)
  {
  alert ("Your browser does not support AJAX!");
  return;
  }
var url="setcheckout.asp";
url=url+"?q1="+ordernumber;
url=url+"&q2="+ordertype;
url=url+"&q3="+ccid;
url=url+"&sid="+Math.random();
xmlhttp.onreadystatechange=stateChangedCheckOutFinal;
xmlhttp.open("GET",url,true);
xmlhttp.send(null);
}

function stateChangedCheckOutFinal()
{
if (xmlhttp.readyState==4)
  {
	window.location.replace('waiting.asp');
  }
}


function CheckOutPayment(ordernumber, ordertype)
{
xmlhttp=GetXmlHttpObject();
if (xmlhttp==null)
  {
  alert ("Your browser does not support AJAX!");
  return;
  }
var url="ccpayment.asp";
url=url+"?q1="+ordernumber;
url=url+"&q2="+ordertype;
url=url+"&sid="+Math.random();
xmlhttp.onreadystatechange=stateChangedCheckOut;
xmlhttp.open("GET",url,true);
xmlhttp.send(null);
}

function stateChangedCheckOut()
{
if (xmlhttp.readyState==4)
  {
  	document.getElementById("paymentlight").innerHTML=xmlhttp.responseText;
	document.getElementById('paytypelight').style.display='none';
	document.getElementById('ordertypelight').style.display='none';
	document.getElementById('paymentlight').style.display='block';
	document.getElementById('fade').style.display='block'
  }
}

function processCreditCard(CCNum, CCName, CCmonth, CCyear, CCType, CVV, OrderType) {
xmlhttp=GetXmlHttpObject();
if (xmlhttp==null)
  {
  alert ("Your browser does not support AJAX!");
  return;
  }
var url="processCC.asp";
url=url+"?q1="+CCNum;
url=url+"&q2="+CCName;
url=url+"&q3="+CCmonth;
url=url+"&q4="+CCyear;
url=url+"&q5="+CCType;
url=url+"&q6="+CVV;
url=url+"&q7="+OrderType;
url=url+"&sid="+Math.random();
xmlhttp.onreadystatechange=stateChangedprocessCC;
xmlhttp.open("GET",url,true);
xmlhttp.send(null);
}

function stateChangedprocessCC()
{
if (xmlhttp.readyState==4)
  { 	
  	//document.getElementById("paymentlight").innerHTML=xmlhttp.responseText;
	window.location.replace('waiting.asp');
  }
}

//End Check Out Stuff





function CheckLogin(form)
{
xmlhttp=GetXmlHttpObject();
if (xmlhttp==null)
  {
  alert ("Your browser does not support AJAX!");
  return;
  }
var url="login.asp";
url=url+"?q1="+form.txtlogin.value;
url=url+"&q2="+form.txtpassword.value;
url=url+"&sid="+Math.random();
xmlhttp.onreadystatechange=stateChangedCheckLogin;
xmlhttp.open("GET",url,true);
xmlhttp.send(null);
}

function stateChangedCheckLogin()
{
if (xmlhttp.readyState==4)
  {
	document.getElementById("SiteContent2").innerHTML=xmlhttp.responseText;
	//alert(document.loginform.loggedin.value)
	if(document.loginform.loggedin.value=='Y')
	{
		window.location.replace('order.asp');
	}
  }
}


function DoLogOut(ID)
{
xmlhttp=GetXmlHttpObject();
if (xmlhttp==null)
  {
  alert ("Your browser does not support AJAX!");
  return;
  }
var url="logout.asp";
url=url+"?q1=1";
xmlhttp.onreadystatechange=stateChangedDoLogOut;
xmlhttp.open("GET",url,true);
xmlhttp.send(null);
}

function stateChangedDoLogOut()
{
if (xmlhttp.readyState==4)
  {
	window.location.replace('default.asp');
  }
}

function processAccountForm(email, password, firstname, lastname, phone, address1, address2, city, state, zip, question, answer)
{	
xmlhttp=GetXmlHttpObject();
if (xmlhttp==null)
  {
  alert ("Your browser does not support AJAX!");
  return;
  }
var url="updatecustomer.asp";
url=url+"?q1="+email;
url=url+"&q2="+password;
url=url+"&q3="+firstname;
url=url+"&q4="+lastname;
url=url+"&q5="+phone;
url=url+"&q6="+address1;
url=url+"&q7="+address2;
url=url+"&q8="+city;
url=url+"&q9="+state;
url=url+"&q10="+zip;
url=url+"&sid="+Math.random();
xmlhttp.onreadystatechange=stateUpdateupdateCustomer;
xmlhttp.open("GET",url,true);
xmlhttp.send(null);
}

function stateUpdateupdateCustomer()
{
if (xmlhttp.readyState==4)
  {
  	document.getElementById("AccountContent1").innerHTML=xmlhttp.responseText;
  }
}


function processSignUpForm(email, password, firstname, lastname, phone, address1, address2, city, state, zip, question, answer)
{	
xmlhttp=GetXmlHttpObject();
if (xmlhttp==null)
  {
  alert ("Your browser does not support AJAX!");
  return;
  }
var url="checkcustomer.asp";
url=url+"?q1="+email;
url=url+"&q2="+password;
url=url+"&q3="+firstname;
url=url+"&q4="+lastname;
url=url+"&q5="+phone;
url=url+"&q6="+address1;
url=url+"&q7="+address2;
url=url+"&q8="+city;
url=url+"&q9="+state;
url=url+"&q10="+zip;
url=url+"&q11="+question;
url=url+"&q12="+answer;
url=url+"&sid="+Math.random();
xmlhttp.onreadystatechange=stateUpdatePutCustomer;
xmlhttp.open("GET",url,true);
xmlhttp.send(null);
}

function stateUpdatePutCustomer()
{
if (xmlhttp.readyState==4)
  {
  	document.getElementById("signupmessage").innerHTML=xmlhttp.responseText;
  }
}


function processConfirm(email, code)
{	
xmlhttp=GetXmlHttpObject();
if (xmlhttp==null)
  {
  alert ("Your browser does not support AJAX!");
  return;
  }
var url="confirmcustomer.asp";
url=url+"?q1="+email;
url=url+"&q2="+code;
url=url+"&sid="+Math.random();
xmlhttp.onreadystatechange=stateUpdateConfirmCustomer;
xmlhttp.open("GET",url,true);
xmlhttp.send(null);
}

function stateUpdateConfirmCustomer()
{
if (xmlhttp.readyState==4)
  {
  	document.getElementById("ConfirmSiteContent2").innerHTML=xmlhttp.responseText;
  }
}

function processForgot(email, phone)
{	
xmlhttp=GetXmlHttpObject();
if (xmlhttp==null)
  {
  alert ("Your browser does not support AJAX!");
  return;
  }
var url="confirmcustomer.asp";
url=url+"?q1="+email;
url=url+"&q2="+phone;
url=url+"&sid="+Math.random();
xmlhttp.onreadystatechange=stateUpdateRemindCustomer;
xmlhttp.open("GET",url,true);
xmlhttp.send(null);
}

function stateUpdateRemindCustomer()
{
if (xmlhttp.readyState==4)
  {
  	document.getElementById("ConfirmSiteContent2").innerHTML=xmlhttp.responseText;
  }
}



//CC Validation
var Cards = new makeArray(8);
Cards[0] = new CardType("MasterCard", "51,52,53,54,55", "16");
var MasterCard = Cards[0];
Cards[1] = new CardType("VisaCard", "4", "13,16");
var VisaCard = Cards[1];
Cards[2] = new CardType("AmExCard", "34,37", "15");
var AmExCard = Cards[2];
Cards[3] = new CardType("DinersClubCard", "30,36,38", "14");
var DinersClubCard = Cards[3];
Cards[4] = new CardType("DiscoverCard", "6011", "16");
var DiscoverCard = Cards[4];
Cards[5] = new CardType("enRouteCard", "2014,2149", "15");
var enRouteCard = Cards[5];
Cards[6] = new CardType("JCBCard", "3088,3096,3112,3158,3337,3528", "16");
var JCBCard = Cards[6];
var LuhnCheckSum = Cards[7] = new CardType();

/*************************************************************************\
CheckCardNumber(form)
function called when users click the "check" button.
\*************************************************************************/
function CheckCardNumber(form, ordertype) {

var tmpyear;

	if (form.CardNumber.value.length == 0) {
		alert("Please enter a Card Number.");
		form.CardNumber.focus();
		return;
	}

	if (form.ExpYear.value.length == 0) {
		alert("Please enter the Expiration Year.");
		form.ExpYear.focus();
		return;
	}
	
	if (form.CVV.value.length == 0) {
		alert("Please enter the Card Verification Code.");
		form.CVV.focus();
		return;
	}
	
	if (form.CardHolder.value.length == 0) {
		alert("Please enter the Card Holder Name.");
		form.CardHolder.focus();
		return;
	}

	if (form.ExpYear.value > 10){
		tmpyear = "20" + form.ExpYear.value;
	}
	else if (form.ExpYear.value < 40){
		tmpyear = "20" + form.ExpYear.value;
	}
	else {
		alert("The Expiration Year is not valid.");
		return;
	}

	tmpmonth = form.ExpMon.options[form.ExpMon.selectedIndex].value;
	// The following line doesn't work in IE3, you need to change it
	// to something like "(new CardType())...".
	// if (!CardType().isExpiryDate(tmpyear, tmpmonth)) {
	if (!(new CardType()).isExpiryDate(tmpyear, tmpmonth)) {
		alert("This card has already expired.");
		return;
	}
	
	card = form.CardType.options[form.CardType.selectedIndex].value;
	var retval = eval(card + ".checkCardNumber(\"" + form.CardNumber.value +
	"\", " + tmpyear + ", " + tmpmonth + ");");
	cardname = "";
	
	if (retval){
	
	var CCNum = form.CardNumber.value;
	var CCType = form.CardType.options[form.CardType.selectedIndex].value;
	var CCMonth = form.ExpMon.options[form.ExpMon.selectedIndex].value;
	var CCyear = form.ExpYear.value;
	var CCHolder = form.CardHolder.value;
	var CCCvv = form.CVV.value;
	
	// comment this out if used on an order form
	processCreditCard(CCNum, CCHolder, CCMonth, CCyear, CCType, CCCvv, ordertype);
	
	}
	else {
	// The cardnumber has the valid luhn checksum, but we want to know which
	// cardtype it belongs to.
		for (var n = 0; n < Cards.size; n++) {
			if (Cards[n].checkCardNumber(form.CardNumber.value, tmpyear, tmpmonth)) {
				cardname = Cards[n].getCardType();
				break;
		   }
		}
		
		if (cardname.length > 0) {
			alert("Card Type is not correct.");
		}
		else {
			alert("This card number is not valid.");
			  }
	}
}//end function

/*************************************************************************\
Object CardType([String cardtype, String rules, String len, int year, 
                                        int month])
cardtype    : type of card, eg: MasterCard, Visa, etc.
rules       : rules of the cardnumber, eg: "4", "6011", "34,37".
len         : valid length of cardnumber, eg: "16,19", "13,16".
year        : year of expiry date.
month       : month of expiry date.
eg:
var VisaCard = new CardType("Visa", "4", "16");
var AmExCard = new CardType("AmEx", "34,37", "15");
\*************************************************************************/
function CardType() {
var n;
var argv = CardType.arguments;
var argc = CardType.arguments.length;

this.objname = "object CardType";

var tmpcardtype = (argc > 0) ? argv[0] : "CardObject";
var tmprules = (argc > 1) ? argv[1] : "0,1,2,3,4,5,6,7,8,9";
var tmplen = (argc > 2) ? argv[2] : "13,14,15,16,19";

this.setCardNumber = setCardNumber;  // set CardNumber method.
this.setCardType = setCardType;  // setCardType method.
this.setLen = setLen;  // setLen method.
this.setRules = setRules;  // setRules method.
this.setExpiryDate = setExpiryDate;  // setExpiryDate method.

this.setCardType(tmpcardtype);
this.setLen(tmplen);
this.setRules(tmprules);
if (argc > 4)
this.setExpiryDate(argv[3], argv[4]);

this.checkCardNumber = checkCardNumber;  // checkCardNumber method.
this.getExpiryDate = getExpiryDate;  // getExpiryDate method.
this.getCardType = getCardType;  // getCardType method.
this.isCardNumber = isCardNumber;  // isCardNumber method.
this.isExpiryDate = isExpiryDate;  // isExpiryDate method.
this.luhnCheck = luhnCheck;// luhnCheck method.
return this;
}

/*************************************************************************\
boolean checkCardNumber([String cardnumber, int year, int month])
return true if cardnumber pass the luhncheck and the expiry date is
valid, else return false.
\*************************************************************************/
function checkCardNumber() {
var argv = checkCardNumber.arguments;
var argc = checkCardNumber.arguments.length;
var cardnumber = (argc > 0) ? argv[0] : this.cardnumber;
var year = (argc > 1) ? argv[1] : this.year;
var month = (argc > 2) ? argv[2] : this.month;

this.setCardNumber(cardnumber);
this.setExpiryDate(year, month);

if (!this.isCardNumber())
return false;
if (!this.isExpiryDate())
return false;

return true;
}
/*************************************************************************\
String getCardType()
return the cardtype.
\*************************************************************************/
function getCardType() {
return this.cardtype;
}
/*************************************************************************\
String getExpiryDate()
return the expiry date.
\*************************************************************************/
function getExpiryDate() {
return this.month + "/" + this.year;
}
/*************************************************************************\
boolean isCardNumber([String cardnumber])
return true if cardnumber pass the luhncheck and the rules, else return
false.
\*************************************************************************/
function isCardNumber() {
var argv = isCardNumber.arguments;
var argc = isCardNumber.arguments.length;
var cardnumber = (argc > 0) ? argv[0] : this.cardnumber;
if (!this.luhnCheck())
return false;

for (var n = 0; n < this.len.size; n++)
if (cardnumber.toString().length == this.len[n]) {
for (var m = 0; m < this.rules.size; m++) {
var headdigit = cardnumber.substring(0, this.rules[m].toString().length);
if (headdigit == this.rules[m])
return true;
}
return false;
}
return false;
}

/*************************************************************************\
boolean isExpiryDate([int year, int month])
return true if the date is a valid expiry date,
else return false.
\*************************************************************************/
function isExpiryDate() {
var argv = isExpiryDate.arguments;
var argc = isExpiryDate.arguments.length;

year = argc > 0 ? argv[0] : this.year;
month = argc > 1 ? argv[1] : this.month;

if (!isNum(year+""))
return false;
if (!isNum(month+""))
return false;
today = new Date();
expiry = new Date(year, month);
if (today.getTime() > expiry.getTime())
return false;
else
return true;
}

/*************************************************************************\
boolean isNum(String argvalue)
return true if argvalue contains only numeric characters,
else return false.
\*************************************************************************/
function isNum(argvalue) {
argvalue = argvalue.toString();

if (argvalue.length == 0)
return false;

for (var n = 0; n < argvalue.length; n++)
if (argvalue.substring(n, n+1) < "0" || argvalue.substring(n, n+1) > "9")
return false;

return true;
}

/*************************************************************************\
boolean luhnCheck([String CardNumber])
return true if CardNumber pass the luhn check else return false.
Reference: http://www.ling.nwu.edu/~sburke/pub/luhn_lib.pl
\*************************************************************************/
function luhnCheck() {
var argv = luhnCheck.arguments;
var argc = luhnCheck.arguments.length;

var CardNumber = argc > 0 ? argv[0] : this.cardnumber;

if (! isNum(CardNumber)) {
return false;
  }

var no_digit = CardNumber.length;
var oddoeven = no_digit & 1;
var sum = 0;

for (var count = 0; count < no_digit; count++) {
var digit = parseInt(CardNumber.charAt(count));
if (!((count & 1) ^ oddoeven)) {
digit *= 2;
if (digit > 9)
digit -= 9;
}
sum += digit;
}
if (sum % 10 == 0)
return true;
else
return false;
}

/*************************************************************************\
ArrayObject makeArray(int size)
return the array object in the size specified.
\*************************************************************************/
function makeArray(size) {
this.size = size;
return this;
}

/*************************************************************************\
CardType setCardNumber(cardnumber)
return the CardType object.
\*************************************************************************/
function setCardNumber(cardnumber) {
this.cardnumber = cardnumber;
return this;
}

/*************************************************************************\
CardType setCardType(cardtype)
return the CardType object.
\*************************************************************************/
function setCardType(cardtype) {
this.cardtype = cardtype;
return this;
}

/*************************************************************************\
CardType setExpiryDate(year, month)
return the CardType object.
\*************************************************************************/
function setExpiryDate(year, month) {
this.year = year;
this.month = month;
return this;
}

/*************************************************************************\
CardType setLen(len)
return the CardType object.
\*************************************************************************/
function setLen(len) {
// Create the len array.
if (len.length == 0 || len == null)
len = "13,14,15,16,19";

var tmplen = len;
n = 1;
while (tmplen.indexOf(",") != -1) {
tmplen = tmplen.substring(tmplen.indexOf(",") + 1, tmplen.length);
n++;
}
this.len = new makeArray(n);
n = 0;
while (len.indexOf(",") != -1) {
var tmpstr = len.substring(0, len.indexOf(","));
this.len[n] = tmpstr;
len = len.substring(len.indexOf(",") + 1, len.length);
n++;
}
this.len[n] = len;
return this;
}

/*************************************************************************\
CardType setRules()
return the CardType object.
\*************************************************************************/
function setRules(rules) {
// Create the rules array.
if (rules.length == 0 || rules == null)
rules = "0,1,2,3,4,5,6,7,8,9";
  
var tmprules = rules;
n = 1;
while (tmprules.indexOf(",") != -1) {
tmprules = tmprules.substring(tmprules.indexOf(",") + 1, tmprules.length);
n++;
}
this.rules = new makeArray(n);
n = 0;
while (rules.indexOf(",") != -1) {
var tmpstr = rules.substring(0, rules.indexOf(","));
this.rules[n] = tmpstr;
rules = rules.substring(rules.indexOf(",") + 1, rules.length);
n++;
}
this.rules[n] = rules;
return this;
}
//CC VALidation






function CancelPayment()
{
document.getElementById('paytypelight').style.display='none';
document.getElementById('ordertypelight').style.display='none';
document.getElementById('paymentlight').style.display='none';
document.getElementById('fade').style.display='none';	
}

function CloseMenuItemDetail()
{
document.getElementById('infolight').style.display='none';
document.getElementById('fade').style.display='none';
}


function Closehelp()
{
document.getElementById('helplight').style.display='none';
document.getElementById('fade').style.display='none';
}

function CloseOrderType()
{
document.getElementById('ordertypelight').style.display='none';
document.getElementById('fade').style.display='none';
}

function ClosePayType()
{
document.getElementById('paytypelight').style.display='none';
document.getElementById('fade').style.display='none';
}


function GetXmlHttpObject()
{
if (window.XMLHttpRequest)
  {
  // code for IE7+, Firefox, Chrome, Opera, Safari
  return new XMLHttpRequest();
  }
if (window.ActiveXObject)
  {
  // code for IE6, IE5
  return new ActiveXObject("Microsoft.XMLHTTP");
  }
return null;
}






