﻿var orderService="/services/order";
var confirmDetail=false;
var isReset=false;
var cart={total:0,formatTotal:0,items:[]};
var expressCart={total:0,formatTotal:0,items:[]};
var tempCartlastIndex={};
var quotime=30;
var showComboLayer='yes';

function stripTime(d){
	   return d.getFullYear()*10000 + d.getMonth()*100 + d.getDate();  
	}
   
function estimatedTime(){
	var d=info.systemTime;
	var t=d.getTime();

	t+=quotime*60*1000;
	var newDate=new Date(t);
	
	var label=format2D(newDate.getHours());
	label+=":";
			
	label+=format2D(newDate.getMinutes());
	//label+="("Starting from "+format2D(d.getHours())+":"+format2D(d.getMinutes())+")";
	return label;
}
	
function format2D(num,d){
	if(num<10)return "0"+num.toString();
	return num.toString();
}

function checkFreeOffer()
{
    var validOrder = true;
    cart.items.each(function(item)
    {
	    var _freeofferMin = sysFreeoffer.find(function(s){return s.key.startsWith('pizzahut.order.freeoffer.minamount.'+item.itemType);});
	    if(_freeofferMin != undefined)
	    {
	        if(_freeofferMin.value > cart.total)
	        {
	            alert(label["order.js.shoppingCart.Freeoffer.errormsg."+info.region+"."+item.itemType]);
	            validOrder = false;
	             throw $break;
	        }
	    }
    });
    if(validOrder)
    {
        var target_address="/"+info.lang+"/checkout/order_type.html";
	    afterCartCallBack=window.open(target_address,"_self");
    }
}
	
function checkCartEmpty(homePath){
    if(cart.items.length>0 | expressCart.items.length>0){
       var r=confirm(label["order.js.shoppingCart.clear.alert"]);
       if (r==true)
        {
            callOrderService("reset","",function(){window.open(homePath,"_self")});
        }
        else
        {
            return;
        }
    }
    else
    {
        callOrderService("reset","",function(){window.open(homePath,"_self")});
        window.open(homePath,"_self");
    }
}

function goHome(homePath)
{
    window.open(homePath,"_self");
}

function checkDynamicAvailableDays(transpot) {
    //var checkItem = ('/*-secure-\n' + transpot.responseText + '\n*/').evalJSON();
}

function checkAvailableDays(id) {
    var item = getMenuItem(id);
    if(item==null)
    {
        var url=menuService.root+"/"+info.version+"/"+info.region+"/"+info.lang+"/"+id+".js";
	    new Ajax.Request( url, {
		    onSuccess:checkDynamicAvailableDays,
		    onFailure:function(transpot){writeDebug("menu init> menu not found");},
		    method: 'get'
	    });
    }
    
    var currentTime=info.systemTimeFormattedHour;
    var currentDay=info.systemTime.getDay();
    var currentDate=info.systemTimeFormattedDate;
    if(cart.advOrder)
    {
        currentTime = cart.advOrderHour+":"+cart.advOrderMinutes+":00";
        var tempd = new Date();
        tempd.setFullYear(cart.advOrderDate.split("-")[0],cart.advOrderDate.split("-")[1] -1 ,cart.advOrderDate.split("-")[2]);
        currentDay = tempd.getDay();
        currentDate = cart.advOrderDate;
    }
    //checkExcludingDays Start
      if(item.excludingDays.length!=0){
        for(var i=0;i<item.excludingDays.length;i++){
            var d=item.excludingDays[i];
            if(currentDate==d.date){
                //alert(item.msg);
                if(item.type == "redeem")
                {
                    alert(label["order.js.excludingDays.redeem"]);
                }else
                if(item.type == "freeoffer")
                {
                    alert(label["order.js.excludingDays.freeoffer"]);
                }else
                {
                    alert(label["order.js.excludingDays"]);
                }
                return false;
            }
        }
    }
    //checkExcludingDays End
  
    if(item.availableDays.length==0){
        return true;
    }
    else {    
        for(var i=0;i<item.availableDays.length;i++){
            var d=item.availableDays[i];
//   Add time exist control Start
            //            if(currentDay==d.day){
            if (currentDay == d.day && d.from != '' && d.to != '') {
                    //   Add time exist control End
                if(d.from+":00" <= currentTime &&  d.to+":00" >= currentTime){
                    return true;
                }else{    
                    alert(item.msg);
                    return false;
                }
            }
        }        
        alert(item.msg);
        return false;
    }
}

function buyProduct(item,qty){
    if(checkAvailableDays(item)==false)return;
	var cartData=item+":"+qty;
	callOrderService('add',cartData,orderCallBack);	
}

function removeProduct(item,index){
	callOrderService('remove',item,orderCallBack,{index:index});
}

function copyProduct(item,index){
	var itemType = cart.items.find(function(_item){return _item.id == item;}).itemType;
	var _freeofferItem = sysFreeoffer.find(function(s){return s.key.startsWith('pizzahut.order.freeoffer.minamount.'+itemType);});
	if(_freeofferItem != undefined)
	{
	    alert(label["order.js.shoppingCart.Freeoffer.Limit.Msg."+info.region]);
	}
	else callOrderService('copy',item,orderCallBack,{index:index}); 
}

function buyExpressCombo(item,choice){
    if(checkAvailableDays(item)==false)return;
    var combo=getMenuItem(item);
    if(combo==null){
        writeDebug("combo not found");
    }
    var c=combo.default_choice[choice-1];
    var data="package="+combo.id+":"+(choice)+";product=";
    for(var i=0;i<c.options.length;i++){
        var o=c.options[i];
        if(i>0)data+=",";
        data+=o.product.id+":"+o.qty;
    }
    callOrderService('add',data,expressCallBack);	
}

function buyExpressItem(item){
    if(checkAvailableDays(item)==false)return;
    callOrderService("add",item+":1",expressCallBack);
}

function expressCallBack(transpot) {
    var result = ('/*-secure-\n' + transpot.responseText + '\n*/').evalJSON();
    if (result.msg != undefined) {
        if (result.msg != "") {
            alert(label[result.msg]);
        }
    }
    updateExpressCart();
}

function removeExpressCombo(item,choice){
    callOrderService("remove",item+":"+(choice),expressCallBack);
}

function removeExpressItem(item){
    callOrderService("remove",item,expressCallBack);
}

function updateExpressCart() {
    callOrderService("detail","",updateExpressCartCallBack);
}

function updateExpressCartCallBack(transpot) {
    /*if (!menuItems) {
        var tempObj = { responseText: transpot.responseText };
        //alert(tempObj.responseText)
        setTimeout('updateExpressCartCallBack(' + { responseText: transpot.responseText} + ')', 20);
        return;
    }*/
    try {
        cart = ('/*-secure-\n' + transpot.responseText + '\n*/').evalJSON();
        
        if (cart.sp != undefined) initSystemParam(cart.sp);
        if (cart.member != undefined && info.category != 'register') {
            currentMember = cart.member;
            updateMemberCallBack();
        }
        
    } catch (e) {}
    isShowMid = true;
    if ($("confirmDetail")) {
    try {
		    cart.info=info;
		    cart.label=label;
		    cart.confirmCheckoutRow=info.category=="finish"?"notShow":"show";
		    var itemsHtml="";
		    cart.items.each(function(item)
			    {
				    item.info=info;
				    item.label=label;
				    if(item.products){
					    item.displaySubItems="";
					    var cartSubItemsHtml=""
					    item.products.each(function(p,index){
						    p.info=info;
						    p.label=label;
						    if(p.price==0)p.displayPrice="none";
						    cartSubItemsHtml+=templates.expressConfirmSubItem.evaluate(p);
					    });
					    item.cartSubItemsHtml=cartSubItemsHtml;
				    }else{
					    item.displaySubItems="none";
				    }
				    itemsHtml+=templates.expressConfirmProductItem.evaluate(item);
			    }
		    );
		    cart.cartItemsHtml=itemsHtml;
		    var cartHtml=templates.expressConfirmTable.evaluate(cart);

		    $('confirmDetail').update(cartHtml);
		    if (currentMember.isLogin) {
		        showFreeOffer();
		    }
    		
	    }catch(e){
		    alert("shopping cart call> update fail "+e);
		    return;
	    }
}else{
try {
        expressCart=('/*-secure-\n'+transpot.responseText+'\n*/').evalJSON();
        //expressCart = cart;
        var tempCart={};
        expressCart.items.each(function(item,index){
            var num=getComboChoiceNumber(item);
            
            var key=num<1?item.id:item.id+"_"+num;
            
            if(tempCart[key]!=null){
                tempCart[key]+=parseInt(item.qty,10);
                
            }else{
                tempCart[key]=parseInt(item.qty,10);
            }
            tempCartlastIndex[key]=index;
        });
        }catch(e){
            writeDebug(e.message);
        }
        menuItems.each(function(item) {
        //writeDebug('express item type: '+item.expressType);
            if(item.expressType=="package"){
                for(var c=1;c<=3;c++){
                    var key=item.id+"_"+c;
                    var qty=tempCart[key]?tempCart[key]:0;
                    if($(key+"_qty") != null)   //15092009
                        $(key+"_qty").update(qty);
                }
            }else{
                var qty=tempCart[item.id]?tempCart[item.id]:0;
                if($(item.id+"_qty") != null)   //15092009
                    $(item.id+"_qty").update(qty);
            }
        });
    }
	if(isReset){
	    callOrderService("reset","",function(){writeDebug("reset cart")});
	    menuItems.each(function(item){
            if(item.expressType=="package"){
                for(var c=1;c<=3;c++){
                    var key=item.id+"_"+c;
                    var qty=tempCart[key]?tempCart[key]:0;

                    $(key+"_qty").update(0);
                }
            }else{
                var qty=tempCart[item.id]?tempCart[item.id]:0;
                $(item.id+"_qty").update(0);
            }
        });
    }
}

function express_checkout(){
    if(expressCart.total==0){
        alert(label["order.js.shoppingCart.makeSelectionFirst"]);
    }else if(expressCart.total>info.maxAmount){
        alert(label["order.js.checkout.max."+info.region]);
    }
    else
        window.open("confirm.html","_self");
}

function getComboChoiceNumber(item){
    var combo=getMenuItem(item.id);
    if(combo==null)return 0;
    for(var i=0;i<combo.default_choice.length;i++){
        var c=combo.default_choice[i];    
        var result=true;
        for(var j=0;j<c.options.length;j++){
            //writeDebug(c.options[j].product.id+"="+item.products[j].id);
            if(c.options[j].product.id!=item.products[j].id){
                result=false;
                break;
            }
        }
        if(result==true)return i+1;
    }    
    return 0;
}

function buyPizza(item){
    if(checkAvailableDays(item)==false)return;
    buyCombo(item);
}

function buyFreeOffer(item) {
    if (checkAvailableDays(item) == false) return;
    var freeoffercount = 1;
    // freeoffercount = 1 because of include the adding item
    var itemType = menuItems.find(function(_item) { return _item.id == item; }).type;
    var _freeofferMin = sysFreeoffer.find(function(s) { return s.key.startsWith('pizzahut.order.freeoffer.minamount.' + itemType); });
    if (cart.items.find(function(_item) { return _item.itemType == itemType })) {
        alert(label["order.js.shoppingCart.Freeoffer.Limit.Msg." + info.region]);
    } else if (_freeofferMin.value > cart.total) {
        alert(label["order.js.shoppingCart.Freeoffer.errormsg." + info.region + "." + itemType]);
    } else {
        loadPackage(item, showCombo);
    } 
}

function buyCoupon(item) {
    if (checkAvailableDays(item) == false) return;
    loadPackage(item, showCombo);    
}

function buyCombo(item) {
    if(checkAvailableDays(item)==false)return;
	loadPackage(item,showCombo);
}

function buyRedeem(item){	
    if(checkAvailableDays(item)==false)return;
	loadPackage(item,showCombo);
}

function buyUpgrade(item){	
    if(checkAvailableDays(item)==false)return;
	loadPackage(item,showCombo);
}

var currentCombo;
function showCombo(transpot) {
	try{
	    var combo=('/*-secure-\n'+transpot.responseText+'\n*/').evalJSON();
	}catch(e){
	   writeDebug("parse combo JSON error");
	   return ;
	}
	try {
	    currentCombo = combo;
	    try {
	        $('packageDesc').update(combo.name);
	        $('packagePrice').update(label["order.js.currency." + info.region] + ' ' + combo.price);

	    } catch (e) { }
	    var packageOptionHtml = "";
	    var optionRowsHtml = "";

	    combo.info = info;

	    combo.options.each(function(option, index) {
	        option.info = info;
	        option.label = label;
	        var optionHtml = "";
	        if (option.products.length == 1) {
	            var prd = option.products[0];
	            prd.info = info;
	            prd.label = label;
	            prd.option = option;
	            optionHtml = templates.singleOption.evaluate(prd);
	            if (option.more.length > 0) optionHtml += templates.moreOption.evaluate();
	            if (combo.category == "special") showComboLayer = 'no';

	        } else {
	            var optionLength = option.products.length;
	            var i = 0;
	            option.products.each(function(prd) {
	                i += 1;
	                if (!prd.posOnly) {
	                    prd.info = info;
	                    prd.label = label;
	                    prd.option = option;
	                    if (combo.type == "pizza") {
	                        optionHtml += templates.multiPizzaOption.evaluate(prd);
	                    }
	                    else optionHtml += templates.multiOption.evaluate(prd);
	                }
	                if (i == optionLength) {
	                    var moreprd = {
	                        index: index + 1,
	                        id: combo.id,
	                        type: 'package'
	                    };
	                    if (option.more.length > 0) optionHtml += templates.moreOption.evaluate(moreprd);
	                };
	            });
	            showComboLayer = 'yes'
	        }
	        option.optionHtml = optionHtml
	        optionRowsHtml += templates.optionRow.evaluate(option);
	    });

	    disableScreen();
	    try {
	        packageOptionHtml = templates.optionTable.evaluate({ optionRowsHtml: optionRowsHtml, label: label });
	        $('packageOptionDiv').update(packageOptionHtml);

	        var wH = window.innerHeight ? window.innerHeight : document.body.clientHeight;
	        var wW = window.innerWidth ? window.innerWidth : document.body.clientWidth;

	        var st = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop;
	        $('packageLayer').style.top = st;
	        $('packageLayer').t = st;

	        $('packageLayer').style.display = "inline";
	        lastLayer = $('packageLayer');
	    } catch (e) { }
	    if (showComboLayer == 'yes') {
	        var left = $('body').positionedOffset().left + 20;
	        $('packageLayer').show().setStyle({ left: left + "px" });
	    }
	    else {
	        submitCombo();
	    }
	    updateLocation('packageLayer');
	} catch (e) {
	    //alert(e);
	    return;
	}
}


function online_payment(){
    var form=document.forms.confirmForm;
    form.action="online_payment.html";
    form.submit();
}

function refreshPrice(){
    var total=currentCombo.type=="pizza"?0:currentCombo.price;
    var form=document.packageForm;
     currentCombo.options.each(function(option,index){
		var f=form['p'+option.position];
		if(f.length>0){
			for(var i=0;i<f.length;i++){
				var item=f[i];
				if(item.checked){
					total+=option.products[i].price;
				}
			}
		}
	});
	$("packagePrice").update(label["order.js.currency."+info.region]+' '+total);
}

function submitCombo(){
    var cartData="package="+currentCombo.id+";product=";
   
	var form=document.packageForm;
    var checking=true;
    var lastValue="";
    currentCombo.options.each(function(option,index){
		var f=form['p'+option.position];
		if(f.length>0){
			for(var i=0;i<f.length;i++){
				var item=f[i];
				if(item.checked){
				    lastValue=item.value;
					return;
				}
			}
			checking=false;
		}
	});
	
	if(checking==false)return;
	
	currentCombo.options.each(function(option,index){
		var f=form['p'+option.position];
		if(index>0)cartData+=",";
		if(f.length>0){
			for(var i=0;i<f.length;i++){
				var item=f[i];
				if(item.checked){
					cartData+=item.value;
					writeDebug("Combo >>"+item.value);
					break;
				}
			}
		}else{
			cartData+=f.value;
		}
	});
	cancelLayer();
	callOrderService('add',cartData,orderCallBack);	
}

function updateLocation(layerName){
    
	 var layer=$(layerName);
	
	if(layer.style.display=="none")
	{
	    return;
	}
	var wH=window.innerHeight?window.innerHeight:document.documentElement.clientHeight;
	var st=document.documentElement.scrollTop?document.documentElement.scrollTop:document.body.scrollTop;
	var lt=layer.t;
	var h=layer.clientHeight;
	var d=st-lt;
	var target=st;
	if(d<=0){
		target=st;	
		layer.t+=(target-layer.t)*0.3;	
		layer.setStyle({top:layer.t+'px'});
	}	
	else if(d>1 && lt+h< st+wH){
		target=(st+wH) -h;
		layer.t+=(target-layer.t)*0.3;	
		layer.setStyle({top:layer.t+'px'});
	}
	setTimeout('updateLocation("'+layerName+'")',20);		
}

function cancelLayer(){
	$('packageLayer').hide();
	enableScreen();
}


function orderCallBack(transpot){
    updateCart(transpot);
}

function initCart(transpot) {
   updateCart({}, 'init');
}

function updateCart(transpot) {
    try {
        var result = ('/*-secure-\n' + transpot.responseText + '\n*/').evalJSON();
        if (result.msg != undefined) {
            if (result.msg != "") {
                alert(label[result.msg]);
            }
        }
        if (result.autoChangeMsg != undefined) {
            if (result.autoChangeMsg != "") {
                if ($('autoChangeMsg')) {
                    $('autoChangeMsg').update(result.autoChangeMsg);
                    $('autoChangeMsg').show();
                    $('autoChangeMsgTR').show();
                 }
            }
        }
    } catch (e) { }
    var currentPage=window.location.pathname;
    if(info.category == "pizzacard" || info.category=='pizzacard_existing' || info.category=='pizzacard_new' || info.category=='reward')
    {
        if($('top_menu'))$('top_menu').hide();
    }else
     if ((info.mode == "normal") && info.category != "pizzacard" && info.category != 'register') {
        if(info.category != "login")
        {
            if($('right_member_login'))$('right_member_login').show();
        }
        if($('top_menu'))$('top_menu').show();
   }else{
        if (info.category != 'confirm')
        {
            if($('right_member_login'))$('right_member_login').show();
        }
        if(info.category == 'pizzacard')
        {
            $('rightHomeButton').show();
        }
        if($('top_menu'))$('top_menu').hide();
    }
   if ((info.category == 'confirm' && info.mode == 'normal')) $('right_member_login').hide();
   var action = arguments[1] == undefined ? "detail" : arguments[1];

   //update by daniel for hide cart details in register page
    if(info.category != 'register' && info.category != 'reward' && info.category != 'finish') {
       if(info.UI=="normal"){
           if (action == "init") {
               if ($('bodyMid')) $('bodyMid').hide();
               if ($('right')) $('right').hide();
           }
            callOrderService(action, "", updateCartCallBack);
        } else {
        if (!(action == "init" && info.category == "express_menu")) {
            callOrderService(action, "", updateExpressCartCallBack);
        }
       }
   } else {
        $("shoppingCartTable").hide();
        showMid();
    }
    
}
var isShowMid = false;
function showRight()
{
    if ($('right') != null && info.category != 'unsubcribe' && info.category != 'pizzacard' && info.category != 'reward' 
    && info.category!='login' && info.category!='pizzacard_existing' && info.category!='pizzacard_new')$('right').show();
}
function showMid()
{
    if(info.category != "special")
    {
        $('mid').show(); $('mid2').hide(); showRight(); isShowMid = true;
    }
}
function hideMid()
{
$('mid').hide();$('mid2').show()
}

function showConfirmTable() {
    if(info.category == 'finish')
    {
        $('confirmTable').style.borderCollapse="collapse";
        $('shoppingCartTable').hide();
        return;
    }
    var itemsHtml = "";
    cart.items.each(function(item,index)
	    {
		    item.info=info;
		    item.label=label;
		    item.index=index;
		    if(item.products){		    
			     if (item.category=='special') item.displaySubItems="none";
			        else  item.displaySubItems="";
			    var cartSubItemsHtml=""
			    item.products.each(function(p,index){
				    p.info=info;
				    p.label=label;
				    if(p.price==0 || item.category=='pizza') p.displayPrice="none";
				    
				    cartSubItemsHtml+=cart.discount?templates.confirmDiscountSubItem.evaluate(p):templates.confirmSubItem.evaluate(p);
			    });
			    item.cartSubItemsHtml=cartSubItemsHtml;
		    }else{
			    item.displaySubItems="none";
		    }
		    
		    if(item.bp>0)item.displayPoints="";
		    else item.displayPoints="none";
		    if(item.totalPrice != item.discountPrice)item.discountClientDesc = '<br>'+cart.discountClientDesc;
		    itemsHtml+=cart.discount?templates.confirmDiscountProductItem.evaluate(item):templates.confirmProductItem.evaluate(item);
	    }
    );

	    cart.coupons.each(function(item, index) {
	        if (item.isRedeem) {
	            item.info = info;
	            item.label = label;
	            item.index = index;
	            if (item.products) {

	                if (item.category == 'special') item.displaySubItems = "none";
	                else item.displaySubItems = "";

	                var cartSubItemsHtml = ""
	                item.products.each(function(p, index) {
	                    p.info = info;
	                    p.label = label;
	                    if (p.price == 0 || item.category == 'pizza') p.displayPrice = "none";

	                    cartSubItemsHtml += cart.discount ? templates.confirmDiscountSubItem.evaluate(p) : templates.confirmSubItem.evaluate(p);
	                });
	                item.cartSubItemsHtml = cartSubItemsHtml;
	            } else {
	                item.displaySubItems = "none";
	            }
	            if (item.bp > 0) item.displayPoints = "";
	            else item.displayPoints = "none";
	            if (item.totalPrice != item.discountPrice) item.discountClientDesc = '<br>' + cart.discountClientDesc;
	            itemsHtml += cart.discount ? templates.confirmDiscountProductItem.evaluate(item) : templates.confirmProductItem.evaluate(item);
	        }
	    }
    );
	    if ((cart.total < info.minAmount && document.confirmForm.delivery_type.value == "delivery" && info.deliveryChargeMode.toLowerCase() == 'on')) {
	        var item = new Object;
	        item.description = menuItems[0].name;
	        item.displaySubItems = "none";
	        item.qty = 1;
	        item.totalPrice = menuItems[0].price;
	        item.discountPrice = menuItems[0].price;
	        cart.realTotal += item.totalPrice;
	        if (cart.realTotal < 0) cart.realTotal = 0;
	        cart.formatTotal = cart.realTotal.toFixed(2);
	        itemsHtml += cart.discount ? templates.confirmDiscountProductItem.evaluate(item) : templates.confirmProductItem.evaluate(item);
	    }    
    cart.cartItemsHtml=itemsHtml;
    cart.displayPointsRow = cart.points != 0 ? "" : "none";

    if (cart.realTotal < 0) {
        cart.excessAmount = cart.realTotal;
        cart.displayExcessAmount = "";
    } else {
        cart.displayExcessAmount = "none";
    }

    var cartHtml = cart.discount ? templates.confirmDiscountTable.evaluate(cart) : templates.confirmTable.evaluate(cart);
    $('confirmDetail').update(cartHtml);
    $('confirmTable').style.borderCollapse="collapse";
    $('shoppingCartTable').hide();
}

function initSystemParam(sp) {
    systemParams=sp;
    systemParams.systemParam.each(function(systemParam) {
        if (systemParam.key.indexOf('pizzahut.order.public.holidays.date.' + info.region) != -1) {
            info.publicHolidays = systemParam.value.split(',');
        }
        if (systemParam.key.indexOf('pizzahut.order.public.holidays.days.' + info.region) != -1) {
            info.publicHolidaysDays = systemParam.value.split(',');
        }
        if (systemParam.key == 'serverID') {
            document.title += systemParam.value;
        }
        if (systemParam.key == 'systemTime') {
            info.systemTime = systemParam.value;
        }
        if (systemParam.key == 'systemTimeFormattedFullDate') {
            info.systemTimeFormattedFullDate = systemParam.value;
        }
        if (systemParam.key == 'systemTimeFormattedDate') {
            info.systemTimeFormattedDate = systemParam.value;
        }
        if (systemParam.key == 'systemTimeFormattedHour') {
            info.systemTimeFormattedHour = systemParam.value;
        }
    });
    systemParams.systemParam.each(function(systemParam) {
        if (systemParam.key == 'pizzahut.order.online.payment.show.' + info.region) {
            if (systemParam.value == 'false') {
                if ($('advanceHTML')) $('advanceHTML').hide();
            } else {
                if ($('_payment') && info.mode == 'normal') {
                    if ($('_payment').options[$('_payment').options.length - 1].value != "online") {
                        $('_payment').options.add(new Option(label["order.js.confirm.paymentMethod.online"], 'online'));
                    }
                    $('online_payment_statement').show();
                    $('online_payment_creditcard_statement').show();
                }
            }
            if ($('advanceHTML')) $('advanceHTML').show();
        }
        if (systemParam.key == 'pizzahut.order.delivery_unavailable'
    && info.path.indexOf('services') == -1) {
            if (systemParam.value.indexOf(info.region) > -1) {
                if (info.category != 'startup') window.open('/default.html', '_self');
                else {
                    $('startupDIV').update('<img src="' + info.imgPath + '/express/alert.jpg" border="0"/>');
                    if ($('advanceHTML')) $('advanceHTML').hide();
                }
            }
        }
        //alert(1)
        /*if (info.UI == "express" && info.category != "startup") {
            if (systemParam.key == 'pizzahut.order.express.day.' + info.systemTime.getDay() + '.start.time.' + info.region) {
                if ((info.systemTimeFormattedHour.substring(0, 2) < systemParam.value.substring(0, 2))
                || ((info.systemTimeFormattedHour.substring(0, 2) == systemParam.value.substring(0, 2))
                && (info.systemTimeFormattedHour.substring(3, 5) < systemParam.value.substring(3, 5)))) {
                    alert();
                }
            }
        }*/
    })
}

function updateCartCallBack(transpot) {
    if (!$("shoppingCartTable")) return;
	if(info.mode == "normal" && info.category == "special")
	{
	    menuInit();
	}
	
	if (info.category == "advance")
	{
	    $("shoppingCartTable").hide();
	}
	
	cart = ('/*-secure-\n' + transpot.responseText + '\n*/').evalJSON();
	if (cart.sp != undefined) initSystemParam(cart.sp); 

	if (info.category == 'register') {
	    if ($('bodyRightShoppingCart')) $('bodyRightShoppingCart').hide();
	}
	
	if (cart.member != undefined && info.category != 'register') {
	    currentMember = cart.member;
	    updateMemberCallBack();
	}
	if (confirmDetail) {
	    try{
	        /*$("shoppingCartTable").hide();
		    info.cartCallBack = true;
		    cart.info=info;
		    cart.confirmCheckoutRow=info.category=="finish"?"notShow":"show";
		    showConfirmTable();*/
    		
	    }catch(e){
		    return;
	    }
	}else{
	try {
	       var checkTime = cart.advOrder ? cart.advOrderHour : info.systemTimeFormattedHour.substring(0, 2);
	       if (info.category == 'special' && checkTime < 11) {
	           window.location = "/" + info.lang + "/checkout/order_type.html";
	           return;
	       }
	       
	       if (info.category == "special") {
	           $('mid').show(); $('mid2').hide(); showRight(); isShowMid = true;
	       }

	       info.cartCallBack = true;
	       
	       if (cart.coupons.length != 0) {
	           if ($('memberLoginDivFooter')) $('memberLoginDivFooter').hide();
	           if ($('ecouponTag')) $('ecouponTag').show();
	       }

	       if (cart.items.length > 0 || cart.coupons.find(function(c) { return c.isRedeem; }) != null) {
	           if (info.checkoutSkip == "none") {
	               info.checkoutShow = "notShow";
	               $("checkoutAtAmount").hide();
	           }
	           else {
	               info.checkoutShow = "show";
	               $("checkoutAtAmount").show();
	           }
	           cart.info = info;
	           cart.label = label;
	           var itemsHtml = "";
	           cart.items.each(function(item, index) {
	               item.info = info;
	               item.label = label;
	               item.index = index;

	               if (item.products) {
	                   if (item.category == 'special') {
	                       item.displaySubItems = "none";
	                       item.displaySubItemsShow = "notShow";
	                   }
	                   else {
	                       item.displaySubItems = "";
	                       item.displaySubItemsShow = "show";
	                   }

	                   var cartSubItemsHtml = ""
	                   item.products.each(function(p, index) {
	                       p.info = info;
	                       p.label = label;
	                       if (p.price == 0 || item.category == 'pizza') p.displayPrice = "none";
	                       cartSubItemsHtml += templates.cartSubItem.evaluate(p);

	                   });
	                   item.cartSubItemsHtml = cartSubItemsHtml;
	               } else {
	                   item.displaySubItems = "none";
	               }

	               if (item.bp > 0) item.displayPoints = "";
	               else item.displayPoints = "none";

	               itemsHtml += templates.cartProductItem.evaluate(item);
	           }
		        );

	           cart.coupons.each(function(item, index) {
	               if (item.isRedeem) {
	                   item.info = info;
	                   item.label = label;
	                   item.index = index;

	                   if (item.products) {
	                       if (item.category == 'special') {
	                           item.displaySubItems = "none";
	                           item.displaySubItemsShow = "notShow";
	                       }
	                       else {
	                           item.displaySubItems = "";
	                           item.displaySubItemsShow = "show";
	                       }

	                       var cartSubItemsHtml = ""
	                       item.products.each(function(p, index) {
	                           p.info = info;
	                           p.label = label;
	                           if (p.price == 0 || item.category == 'pizza') p.displayPrice = "none";
	                           cartSubItemsHtml += templates.cartSubItem.evaluate(p);

	                       });
	                       item.cartSubItemsHtml = cartSubItemsHtml;
	                   } else {
	                       item.displaySubItems = "none";
	                   }

	                   if (item.bp > 0) item.displayPoints = "";
	                   else item.displayPoints = "none";

	                   itemsHtml += templates.cartCouponItem.evaluate(item);
	               }
	           }
		        );
	           cart.cartItemsHtml = itemsHtml;
	           var cartHtml = templates.cartTable.evaluate(cart);
	           $('cart_div').update(cartHtml);
	           $('amount_label').update(cart.formatTotal);

	          
	           if (!sysPizzacardShow['pizzahut.order.pizzacard.show.' + info.region]) {
	               if ($('points_div')) $('points_div').hide()
	           }

	           if ($('points_label')) $('points_label').update(cart.points);
	           $('shoppingCartTotalTable').show();
	           if (cart.advOrder) {
	               $('advanceOrderTime').update(cart.advOrderDate + " " + cart.advOrderHour + ":" + cart.advOrderMinutes);
	               $('advanceOrder_div').show();
	           } else {
	               $('advanceOrderTime').update("");
	               $('advanceOrder_div').hide();
	           }

	           $('right_express_button').hide();
	           if ($('mobileLogin_button')) $('mobileLogin_button').hide();

	           $('shoppingCartTotalTable0Item').hide();
	           if (info.mode == "normal" && info.category == "special") {
	               showFreeOffer();
	           }
	       } else {
	           $('shoppingCartTotalTable').hide();
	           $('right_express_button').show();
	           if (info.activateMobileLogin && $('mobileLogin_button')) showActivateMobileLogin();
	           $('cart_div').update(label["order.js.shoppingCart.makeSelectionFirst"]);
	           $('shoppingCartTotalTable0Item').hide();
	           if (cart.advOrder) {
	               $('advanceOrderTime0Item').update(cart.advOrderDate + " " + cart.advOrderHour + ":" + cart.advOrderMinutes);
	               $('shoppingCartTotalTable0Item').show();
	               $('right_express_button').hide();
	               if ($('mobileLogin_button')) $('mobileLogin_button').hide();
	           }
	       }
	        } catch (e) {
	        //alert(e)
		    return;
	    }
	}
	if(isReset){
	    callOrderService("reset","",function(){writeDebug("reset cart")});
	}
	
if ($('bodyMid')) {
	    if (!$('bodyMid').visible()) {
	        $('bodyMid').show();
	    }
	}
	showMid();
	if(afterCartCallBack)afterCartCallBack();
	closeInfo();
}

function showActivateMobileLogin()
{
    if(currentMember == undefined)
    {
        window.setTimeout(showActivateMobileLogin,500);
    }else if(currentMember.isLogin)
    {
        $('mobileLogin_button').show();
    }
}

function showFreeOffer() {
    var currentTime=info.systemTimeFormattedHour;
    var currentDay=info.systemTime.getDay();
    var currentDate = info.systemTimeFormattedDate;
    var blshowfreeoffer = true;
    if(cart.advOrder)
    {
        currentTime = cart.advOrderHour+":"+cart.advOrderMinutes+":00";
        var tempd = new Date();
        tempd.setFullYear(cart.advOrderDate.split("-")[0],cart.advOrderDate.split("-")[1] -1 ,cart.advOrderDate.split("-")[2]);
        currentDay = tempd.getDay();
        currentDate = cart.advOrderDate;
    }
    if(!sysFreeoffer.find(function(s){return s.key=='pizzahut.order.freeoffer.public.holidays.show.'+info.region;}).value)
    {  
        if(info.publicHolidays.length != 0){
            for(var i=0;i<info.publicHolidays.length;i++){
                var d=info.publicHolidays[i];
                if(currentDate==d){
                    blshowfreeoffer = false;
                }
            }
        }
        
        if(info.publicHolidaysDays.length!=0){
            for(var i=0;i<info.publicHolidaysDays.length;i++){
                var d=info.publicHolidaysDays[i];
                if(currentDay==d){
                    blshowfreeoffer = false;
                }
            }        
        }
    }
    
    if (sysFreeoffer.find(function(s) { return s.key == 'pizzahut.order.freeoffer.' + info.region; }).value == "false") {
        blshowfreeoffer = false;
    }
    if(menuItems == undefined || !isShowMid)
    {
        window.setTimeout(showFreeOffer,500);
    }
    else
    {
        var menuFreeofferHtml = "";
        var menuFreeofferLayerHtml = [];
        var menuCouponHtml = "";
        var freeofferCount = 0;
        if (blshowfreeoffer) {
            menuItems.each(
	            function(item) {
	                item.info = info;
	                item.label = label;
	                var _freeofferMin = sysFreeoffer.find(function(s) { return s.key.startsWith('pizzahut.order.freeoffer.minamount.' + item.type); });
	                var _freeofferDisplay = sysFreeoffer.find(function(s) { return s.key.startsWith('pizzahut.order.freeoffer.displayamount.' + item.type); });
	                if (_freeofferMin != undefined && _freeofferDisplay != undefined) {
	                    if (cart.total >= _freeofferMin.value) {
	                        menuFreeofferHtml += templates.menufreeOfferHighlightItem.evaluate(item);
	                        if (cart.items.find(function(_item) { return _item.itemType == item.type }) == undefined && freeOfferReject.find(function(r) { return r == item.type }) == undefined) {
	                            var tempObj = {};
	                            tempObj.key = item.type;
	                            tempObj.value = templates.menufreeOfferHighlightLayerItem.evaluate(item);
	                            menuFreeofferLayerHtml[menuFreeofferLayerHtml.length] = tempObj;
	                        }
	                    }
	                    else if (cart.total >= _freeofferDisplay.value) {
	                        item.msg = label["order.js.shoppingCart.Freeoffer.Msg." + info.region + "." + item.type];
	                        menuFreeofferHtml += templates.menufreeOfferDisplayItem.evaluate(item);
	                    }
	                }
	            }
            );
	       if (menuFreeofferHtml != "") {
	           try {
	               $('menu_freeoffer_items').update(menuFreeofferHtml);
	               $('menu_freeoffer_items').show();
	           } catch (e) {}
                if (menuFreeofferLayerHtml.length != 0) {
                    disableScreen();
                    $$('table.freeOfferLayerItemTable').each(function(_tableObj) {
                        var htmlObj = menuFreeofferLayerHtml.findAll(function(_htmlObj) { return 'freeOfferLayerItemTable' + _htmlObj.key == _tableObj.id; });
                        if (htmlObj.length > 0) {
                            var tempHtmlObjValue = "";
                            htmlObj.each(function(tho) {
                                tempHtmlObjValue += tho.value;
                            });
                            $('freeOfferLayerItem' + htmlObj[0].key).update(tempHtmlObjValue);
                            _tableObj.show();
                        } else {
                            _tableObj.hide();
                        }
                    });
                    var left = $('body').positionedOffset().left + 20;
                    var top = $('body').positionedOffset().top;
                    $('freeOfferLayer').show().setStyle({ left: left + "px", top: top + "px" });
                } else {
                    $('freeOfferLayer').hide();
                }
            } else {
            try {
                $('menu_freeoffer_items').update('');
                $('menu_freeoffer_items').hide();} catch (e) {}
            }
        }
        if (menuFreeofferLayerHtml.length == 0) {
            showSpecialPageCouponLayer();
         }
    }
}

function showSpecialPageCouponLayer() {
    if (info.mode == "express") return;
    var loadEcoupon = true;
    cart.coupons.each(
            function(c, index) {
                if (c.isRedeem) { loadEcoupon = false; $break; }
            });
    if (loadEcoupon) { showCouponLayer(); }
 }

function hideFreeOfferLayer(categoryCode)
{
    var closeLayer = true;
     $$('table.freeOfferLayerItemTable').each(function(_tableObj)
     {
        if(_tableObj.id == 'freeOfferLayerItemTable'+categoryCode)
        {
            _tableObj.hide();
        }else
        {
            if(_tableObj.visible())closeLayer = false;
        }
    });
    if(closeLayer)
    {
        enableScreen();
        $('freeOfferLayer').hide()
        showSpecialPageCouponLayer();
    }
}

function closeInfo(){
	//setTimeout(closeInfoCallBack,500);
}

function closeInfoCallBack(){
    //Dialog.closeInfo();
}

function showDetail(id,index,type){
    if (type == 'package') {
        if (id != "cyop") {
            var url = "/" + info.lang + "/menu/detail.html?id=" + id + "&index=" + index + "&seed=" + Math.floor(Math.random() * 10000000);
            window.open(url, "_self");
        } else {
            var url = "/" + info.lang + "/menu/cyop.html?id=" + id + "&index=" + index + "&seed=" + Math.floor(Math.random() * 10000000);
            window.open(url, "_self");
         }
    }
}

function callOrderService(cartAction,cartData,callback){
    var  url=orderService+".html";
	var seed=Math.floor(Math.random()* 100000000);
	var tempIndex;
	
	var params= Object.extend({ 
		    lang:info.lang,
			output:'json',
			cartData: cartData,
			cartAction:cartAction,
			seed:seed
		},arguments[3] || { }
		);

	new Ajax.Request( url, {
		onSuccess:callback,
		onFailure:function(transpot){
			writeDebug('order service error');
			writeDebug(transpot.responseText);
		},
		method: 'post',
		parameters: params
	});
}

function checkout(){
    window.open("/"+info.lang+"/menu/special.html","_self");
}

function checkDeliveryUnavailable()
{
    var check = false;
    systemParams.systemParam.each(function(systemParam){
        if(systemParam.value != 0 && systemParam.key == 'pizzahut.order.delivery_unavailable.index.' +info.region)
        {
           alert(label["order.js.unavailable.delivery.msg."+systemParam.value+"."+info.region]);
           check =  true;
        }
    });
    return check;
}

function goDelivery(){
    if(!info.cartCallBack)
    {
        disableScreen();
        return;

    }
    if (cart.total == 0) {
        if (cart.items.length == 0) {
            if (!(cart.coupons.find(function(c) { return c.isRedeem && c.price > 0 }))) {
                alert(label["order.js.shoppingCart.makeSelectionFirst"]);
                return;
            }
        }
    }
     if (!checkDeliveryUnavailable()) {

         if (cart.total < info.minAmount) {
             if (info.deliveryChargeMode.toLowerCase() == 'on') {
                 if (confirm(label["order.js.order.type.delivery.charge." + info.region])) {
                     enableScreen();
                     if (info.mode == 'express') window.open("/" + info.lang + "/checkout/select_address.html?mode=express", "_self");
                     else window.open("/" + info.lang + "/checkout/select_address.html", "_self");
                 } else { return; }
             } else {
                 alert(label["order.js.checkout.min." + info.region]);
                 return;
             }
         }
         if (cart.points > currentMember.points) {
             alert(label["order.js.checkout.notEnoughPoints"]);
             return;
         }
         if (cart.total > info.maxAmount) {
             alert(label["order.js.checkout.max." + info.region]);
             return;
         }
         
         enableScreen();
         if (info.mode=='express') window.open("/"+info.lang+"/checkout/select_address.html?mode=express","_self");
         else window.open("/"+info.lang+"/checkout/select_address.html","_self");
    }
}

function goTakeOut() {
    
    if(!info.cartCallBack)
    {
        alert(label["order.js.notYetCallBack"]);
        return;
    }
    if(cart.points>currentMember.points){
        alert(label["order.js.points.notEnoughPoints"]);
        return;
    }
    if (cart.total == 0) {
        if (cart.items.length == 0) {
            if (!(cart.coupons.find(function(c) { return c.isRedeem && c.price > 0 }))) {
                alert(label["order.js.shoppingCart.makeSelectionFirst"]);
                return;
             }
         }
    }
    if(cart.total>info.maxAmount){
        alert(label["order.js.checkout.max." + info.region]);
        return;
    }
    if (info.mode=='express') window.open("/"+info.lang+"/checkout/select_shop.html?mode=express","_self");
         else window.open("/"+info.lang+"/checkout/select_shop.html","_self");         
    
}

function backSpecial()
{
    if (info.mode=='express') window.open("/"+info.lang+"/express/confirm.html","_self");
    else window.open("/"+info.lang+"/menu/special.html","_self");
}

function logout(path)
{
   path+="?seed="+Math.floor(Math.random()*10000000);
   if(cart.items.length>0 | expressCart.items.length>0)
   {
       var r=confirm(label["order.js.shoppingCart.clear.alert"]);
       if (r==true)
        {
            callOrderService("reset","",function(){window.open(path,"_self")});
        }
        else
        {
            return;    
        }
    }
    else
    {
        callOrderService("reset","",function(){window.open(path,"_self")});
    }
}
//not use?
function hiddenExpressCart()
{
    if(info.mode == 'express')
    {
        //$('right_member_login').hide();
        //$('bodyRightShoppingCart').hide();
    }
}

function clearCart()
{
    if (info.category=='startup'){	
       callOrderService("reset","",function(){window.open(homePath,"_self")});
    }
}

function disableScreen(){
    WindowUtilities.disableScreen('__invisible__', '__invisible__', 50);
}

function enableScreen(){
   WindowUtilities.enableScreen('__invisible__');
}

function changeHeader()
{
    if(info.category == "pizzacard" || info.category=='pizzacard_existing' || info.category=='pizzacard_new' || info.category=='reward')
    {
        $('header').setStyle('background-image:url(/templates/olos/'+info.lang+'/images/'+info.region+'/2009pizzacard/partysite_header.jpg)');
        if($('top_menu'))$('top_menu').hide();
    }
}

var tempRedirectPath;
function forceLogout(p)
{
    var url = "/"+info.lang+"/member/logout.html";
    tempRedirectPath = p;
    new Ajax.Request( url, {
		onComplete:function(transport)
		{
		    window.open("http://"+info.serverHost+tempRedirectPath,"_self");
		},
		method: 'post'
	});
}

function loadCouponItems(transport) {
    couponMenuItems = ('/*-secure-\n' + transport.responseText + '\n*/').evalJSON();
    updateCouponLayer()
}

function updateCouponLayer() {
    //var couponItems = ('/*-secure-\n' + transport.responseText + '\n*/').evalJSON();
    var menuFreeofferHtml = "";
    var menuFreeofferLayerHtml = [];
    var menuCouponHtml = "";
    var freeofferCount = 0;
    var top = 110;
    var canShowItem = 0;
    try {
        //couponMenuItems.each(function(s) { alert(s.id)})
        cart.coupons.each(
        function(c, index) {
            var citem = couponMenuItems.find(function(s) { return s.id == c.id });
            if (citem) {
                citem.info = info;
                citem.label = label;
                citem.index = index;
                citem.top = top + (canShowItem * 195);
                citem.left = 150;
                citem.isUseShow = c.isRedeem ? 'show' : 'notShow';
                citem.redeemShow = !c.isRedeem ? 'show' : 'notShow';
                citem.expiryDate = c.expiryDate
                menuFreeofferHtml += templates.menuCouponHighlightLayerItem.evaluate(citem);
                canShowItem++;
            }
        }
    );
    } catch (e) {
        //alert(e) 
    }
    if(menuFreeofferHtml != ""){
        disableScreen();
        $('__invisible__').setStyle("z-index:1001");
        $('couponItem').update(menuFreeofferHtml);
        var left = $('body').positionedOffset().left + 8;
        $('couponLayer').setStyle({ left: left + "px" }).setStyle("z-index:1002");
        $('couponLayer').show();
    }
}

function hideCouponLayer() {
    $('couponLayer').hide();
    enableScreen();
}

function showCouponLayer() {
    if (couponMenuItems != null) {
        updateCouponLayer()
    } else {
    var url = menuService.root + "/" + info.version + "/" + info.region + "/" + info.lang + "/couponPackage.js"
        new Ajax.Request(url, {
            onSuccess: loadCouponItems,
            onFailure: function(transpot) { },
            method: 'get'
        });
    }
}

function showCouponDetail(id, index, type) {
    if (type == "combo") {
        var url = "/" + info.lang + "/menu/detail.html?id=" + id + "&index=" + index + "&seed=" + Math.floor(Math.random() * 10000000)+"&type=coupon";
        window.open(url, "_self");
    }
}

function redeemCoupon(id, index, type) {
    try {
        if (!checkAvailableDays(id)) return;
        if (type == "combo") {
            showCouponDetail(id, index, type);
        } else {
            callOrderService('redeemCoupon', index, orderCallBack);
            $('couponLayer').hide();
            enableScreen();
        }
    } catch (e) {// alert(e)
    }
 }

 function removeRedeemCoupon(index) {
     callOrderService('removeRedeemCoupon', index, orderCallBack);
 }
 function cancelCouponTransactionLayer() {
     $('couponTransactionLayer').hide();
     enableScreen();
 }
 function showCouponTransactionItemRecord(transpot) {
     var tempItem = ('/*-secure-\n' + transpot.responseText + '\n*/').evalJSON();
     var tempHtml = "<tr><td colspan='4'>" + label["order.js.member.your.coupon.transaction.msg"] + "</td></tr>"
     + "<tr><td>" + label["order.js.member.your.coupon.transaction.item"] + "</td>" 
     +"<td>" + label["order.js.member.your.coupon.transaction.coupon"] + "</td><td>" + label["order.js.member.your.coupon.transaction.status"]
     + "</td><td>" + label["order.js.member.your.coupon.transaction.date"] + "</td></tr>";
     cart.couponTransaction.each(function(item) {
         tempItem.each(function(ti) {
             if (ti.id.trim() == item.couponItem.trim()) {
                 var tempStatus = item.status == "Redeemed" ? label["order.js.member.your.coupon.transaction.status.redeemed"] : label["order.js.member.your.coupon.transaction.status.expired"];
                 tempHtml += "<tr><td>"+ti.description + "</td><td>" + item.couponNo+"</td>"
                 +"<td>"+tempStatus+"</td><td>"+item.redeemDate+"</td></tr>";
             }
         })
     })
     $('yourCouponTransactionRecord').update(tempHtml);
     disableScreen();
     $('__invisible__').setStyle("z-index:1001");
     var left = $('body').positionedOffset().left + 8;
     $('couponTransactionLayer').setStyle({ left: left + "px" }).setStyle("z-index:1002");
     $('couponTransactionLayer').show();
  }
  
 function showCouponTransactionRecord() {
     var url = menuService.root + "/" + info.version + "/" + info.region + "/" + info.lang + "/couponPackage.js";
     new Ajax.Request(url, {
     onSuccess: showCouponTransactionItemRecord,
         onFailure: function(transpot) { writeDebug("menu init> menu not found"); },
         method: 'get'
     });
  }

//Event.observe(window, "load", updateCart);
Event.observe(window, "load", initCart);
//Event.observe(window, "load", hiddenExpressCart); 
Event.observe(window, "load", clearCart);
Event.observe(window, "load", changeHeader);