﻿//Global Variables
var modcount = 0;
var CartItemID = 0;
var currentsubcatid = 0;
var currentcatid = 0;

//Utility functions
function secureFromXSS(input) {
    input.replace(/[\"\'][\s]*javascript:(.*)[\"\']/g, "\"\"");
    //input = input.replace(/script(.*)/g, "");
    input = input.replace(/eval\((.*)\)/g, "");
    return input;
}
function printf(S, L) {
    var nS = "";
    var tS = S.split("%s");
    if (tS.length != L.length + 1) throw "Input error";

    for (var i = 0; i < L.length; i++)
        nS += tS[i] + L[i];
    return nS + tS[tS.length - 1];
}
function setupHistory() {
    $.ajaxHistory.initialize();
}

function highlightCategories() {
    $('#categories ul li a').click(function () {
        $('#categories ul li a').removeClass("selected");
        $(this).addClass("selected");
        var catid = $(this).attr("id"); catid = catid.substring(3);
        if (currentcatid != catid) {
            Service.FetchSubCategories(catid, displaySubCategories);
            currentcatid = catid;
        }
    });
    var selectedcount = $("#categories ul li a.selected").length;
    if (selectedcount == 0) { $("#categories ul li a:first").click(); }
}

function showOpeningHours() {
    $.colorbox({ html: $('#divhours').html(), width:'280px' });
}

function highlightSubCategories() {
    $('#subcategories ul li a').click(function () {
        $('#subcategories ul li a').removeClass("selected");
        $(this).addClass("selected");

        var subcatid = $(this).attr("id"); subcatid = subcatid.substring(6);
        if (currentsubcatid != subcatid) {
            Service.FetchMenuItems(subcatid, displayItems);
            currentsubcatid = subcatid;
        }
    });
    var selectedcount = $("#subcategories ul li a.selected").length;
    if (selectedcount == 0) { $("#subcategories ul li a:first").click(); }
}

function showHideDetails() {
    if ($('#lnkShowHide').text() == "Show") { $('#lnkShowHide').text("Hide"); } else { $('#lnkShowHide').text("Show"); }
    $('#cartinfo').slideToggle('slow');
}

function SelectedModifiers() {
    var allInputs = $("input[@type=checkbox][@checked]");
    var selectemod = "";
    var unselectemod = "";
    $("input[@type=checkbox]").each(function () {
        if (this.checked == true) {
            selectemod += "{" + $(this).attr("value");
        }
        else {
            unselectemod += "{" + $(this).attr("value");
        }
    });
    Service.AddModifiers(selectemod, unselectemod, CartItemID, addModifiers);
    getcart();
}

function addModifiers(result) {
    //$("#info").text(result);
    $('#dialog').jqmHide();
}

function displayModifierCategories(result) {
    var output = eval("(" + result + ")");
    if (output.rows != null) {
        for (var x = 0; x < output.rows.length; x++) {
            Service.FetchModifiers(output.rows[x].ModifierCatID, displayModifiers);
            $('#modifiers ul').tabsAdd('#mod' + x, output.rows[x].ModifierCategory1);
        }
    }
}

function displayModifiers(result) {

    var output = eval("(" + result + ")");
    if (output.rows != null) {
        var count = 0;

        var html_string = "<table width=100%><tr>";
        var checked = "";

        for (var x = 0; x < output.rows.length; x++) {
            var mname = output.rows[x].ModifierName;
            var mid = output.rows[x].ModifierID;
            if (x % 5 == 0 && x > 0) {
                html_string += "</tr><tr>";
            }
            html_string += "<td><input type='checkbox'  value='" + mid + "' >" + mname + "</td>";
        }
        $('#mod' + modcount).append(html_string + "</tr></table>");

        modcount++;
    }
}

function checkModifier() {
    var allInputs = $("input[@type=checkbox][@checked]");
    var selectemod = "";
    var unselectemod = "";
    $("input[@type=checkbox]").each(function () {
        //isAdded
        var res = "";
        // res = alert(Service.isAdded(CartItemID,this.value));
        if (res != '') {
            this.checked = true;
        }
        else {
            this.checked = false;
        }
    });
}
function gModifiers(result) {
    return result;
}

function displayCategories(result) {
    $get("categories").innerHTML = secureFromXSS(result);
    highlightCategories();
}

function displaySubCategories(result) {
    $get("subcategories").innerHTML = secureFromXSS(result);
    highlightSubCategories();
}

function GetPostCodes(postcode,flatno) {
    Service.FetchAddresses(postcode,flatno, displayPostcodes);
}

function fetchpostcodes() {
    var postcode = $('#ctl00_main_RegisterCtrl_txtPostCode').length === 1 ? $('#ctl00_main_RegisterCtrl_txtPostCode').val() : $('#ctl00_main_txtPostCode').val();
    var housenumber = $('#ctl00_main_RegisterCtrl_txtHouseNumber').length===1?$('#ctl00_main_RegisterCtrl_txtHouseNumber').val():$('#ctl00_main_txtHouseNumber').val();
    GetPostCodes(postcode, housenumber);
}

var addresses = null;
function displayPostcodes(result) {
    var output = eval("(" + result + ")");
    
    if (output == null) {
        //$.colorbox({ html: "<p>Invalid Postcode</p>" });
        return 0;
    }

    if (output.rows != null) {
        addresses = output.rows;
        var html_string = "<div style='height:200px;'><select onclick='selectpostcode(this.selectedIndex);' style='width:500px;font-family:Tahoma;font-size:8pt;' size=10 id='droppostcode'>";
        for (var x = 0; x < output.rows.length; x++) {
            var organisation = (!isEmpty(output.rows[x].Organisa)) ? output.rows[x].Organisa + ", " : "";
            var number = (!isEmpty(output.rows[x].Number)) ? output.rows[x].Number + ", " : "";
            var subbname = (!isEmpty(output.rows[x].SubBName)) ? output.rows[x].SubBName + ", " : "";
            var street = (!isEmpty(output.rows[x].Street)) ? output.rows[x].Street + ", " : "";
            var town = (!isEmpty(output.rows[x].Town)) ? output.rows[x].Town + ", " : "";
            var postcode = (!isEmpty(output.rows[x].Postcode)) ? output.rows[x].Postcode : "";
            html_string += "<option>" + organisation + number + subbname + street + town + postcode + "</option>";
        }
        $('#postcodes').html(html_string + "</select></div>");
        $.colorbox({ html: $('#postcodes').html() });
    }
}

function isEmpty(str) {
    return (!str || 0 === str.length);
}

function selectpostcode(counter) {
    var prefix = $('#ctl00_main_RegisterCtrl_txtPostCode').length === 1 ? "ctl00_main_RegisterCtrl_" : "ctl00_main_";
    var address = addresses[counter];
    var organisation = (!isEmpty(address.Organisa)) ? address.Organisa + " " : "";
    var number = (!isEmpty(address.Number)) ? address.Number + " " : "";
    var subbname = (!isEmpty(address.SubBName)) ? address.SubBName + " " : "";
    var street = (!isEmpty(address.Street)) ? address.Street + " " : "";
    var town = (!isEmpty(address.Town)) ? address.Town + " " : "";
    var postcode = (!isEmpty(address.Postcode)) ? address.Postcode : "";

    $("#" + prefix + "txtHouseNumber").val(organisation + number + subbname);
    $("#" + prefix + "txtStreet1").val(street);
    $("#" + prefix + "txtStreet2").val(town);
    $("#" + prefix + "txtPostCode").val(postcode);
    $.colorbox.close();
}

function getcart() {
    return Service.GetCart(showCart);
}

function getSideCart() {
    Service.GetCart(showSideCart);
}

function showCart(result) {
    var output = eval("(" + result + ")");
    var itemcount = 0;
    var items = "<table width='100%'>";
    items += "<tr><th width='500px'>Item</th><th>Line Total</th><th>Quantity</th><th>Change</th></tr>";
    var price = 0;
    if (output.rows != null) {
        for (var x = 0; x < output.rows.length; x++) {
            var itemmodifiers = output.rows[x].Extra;
            if (itemmodifiers == null) { itemmodifiers = "<nobr>"; }
            else { itemmodifiers = "<p class='shoppingcartmodifiers'>" + itemmodifiers + "</p>"; }

            items += "<tr><td>";
            items += output.rows[x].ProductName + itemmodifiers + "</td><td>" + output.rows[x].Total + "</td><td><table><tr><td width=20>" + output.rows[x].Quantity;
            items += "</td><td><img style='cursor:pointer'  onclick=\"JavaScript:Service.ChangeQty(" + (x) + ",-1,showCart);return false; \" src='src/css/images/minus_icon.gif'>";

            items += "<img style='cursor:pointer'  onclick=\"JavaScript:Service.ChangeQty(" + (x) + ",1,showCart);return false; \" src='src/css/images/plus_icon.gif'></td></tr></table>";
            items += "</td><td><a href='' onclick=\"$('#dialog').jqm().jqmShow();CartItemID =" + x + ";return false;\">Modify</a>";
            items += "&nbsp;<a href='' onclick=\"JavaScript:Service.RemoveItemFromCart(" + (x) + ",showCart);return false;\">Remove</a>";
            items += "</td></tr>";
            itemcount += parseInt(output.rows[x].Quantity);
            price += parseFloat(output.rows[x].Total);
        }
    }
    items += "</table>";
    $get("maintotalinfo").innerHTML = secureFromXSS(itemcount + "&nbsp;Items&nbsp;&#163;" + Math.round(price * 1000) / 1000);
    $get("maincart").innerHTML = secureFromXSS(items);
    $("#maincart").corner("3px");
    $("#maintotalinfo").corner("3px");
}

function addItem(itemid) {
    var quantity = "";
    $("#s" + itemid + " option:selected").each(function () {
        quantity += $(this).text() + " ";
    });
    var options = $("input[@name=" + itemid + "]:checked").val();
    Service.AddItemtoCart(itemid, quantity, options, showSideCart);
}

function showProductInfo(itemid, info) {
    var demoimage = "<img src='PictureHandler.ashx?ItemID=" + itemid + "'/><br>";
    $get("productInfo").innerHTML = secureFromXSS(demoimage + info);
    $('#productInfo').jqm().jqmShow();
}

function displayItems(result) {
    var output = eval("(" + result + ")");
    var items = "<table id='menulist'>";
    var header = "<tr><th>Item</th><th>Quantity</th><th>Price</th><th>&nbsp;</th>";
    items += header;
    if (output.rows != null) {
        for (var x = 0; x < output.rows.length; x++) {
            if (output.rows[x].OnlinePrice != null) {
                var rowclass = "";
                if (x % 2 == 0) { rowclass = "class=\"even\"" };
                var itemid = output.rows[x].ItemID;
                var picitemdescription = output.rows[x].ItemNameSecLanguage;
                var options = new Array();
                var optioncounter = 0;
                var additembutton = "<div herf='#' class='add-button' onClick='addItem(" + itemid + ")'></div>";
                var allergiescounter = 0;
                var allergies = "";
                if (output.rows[x].Spice === 1) { allergies += "<img style='padding-left:5px;' src='/images/chili_1.png' />"; allergiescounter++; }
                if (output.rows[x].Spice === 2) { allergies += "<img style='padding-left:5px;' src='/images/chili_2.png' />"; allergiescounter++; }
                if (output.rows[x].Spice === 3) { allergies += "<img style='padding-left:5px;' src='/images/chili_3.png' />"; allergiescounter++; }
                if (output.rows[x].Halal === true) { allergies += "<img style='padding-left:5px;' src='/images/h.png' />"; allergiescounter++; }
                if (output.rows[x].Nuts === true) { allergies += "<img style='padding-left:5px;' src='/images/n.png' />"; allergiescounter++; }
                if (output.rows[x].Vegetarian === true) { allergies += "<img style='padding-left:5px;' src='/images/v.png' />"; allergiescounter++; }

                if (allergiescounter > 0) {
                    //items += "<tr><td colspan='4'>" + allergies + "</td></tr>";
                }


                var demoimage = "<img height='65px' src='PictureHandler.ashx?ItemID=" + itemid + "'/>";
                var onlinedescription = (output.rows[x].OnlineDescription != null) ? "<br>" + output.rows[x].OnlineDescription : "";
                var itemdescription = "<big><b>" + output.rows[x].ItemNameDescription + "</b></big>" + allergies + onlinedescription + "";
                var itemquantity = "<select id='s" + itemid + "'><option value =\"1\" selected=\"selected\">1</option><option value =\"2\">2</option><option value =\"3\">3</option><option value =\"4\">4</option><option value =\"5\">5</option><option value =\"6\">6</option><option value =\"7\">7</option><option value =\"8\">8</option></select>";
                var itemprice = output.rows[x].OnlinePrice; itemprice = itemprice.toFixed(2);
                items += "<tr " + rowclass + " ><td>" + itemdescription  + "</td><td>" + itemquantity + "</td><td>&pound;" + itemprice + "</td><td>" + additembutton + "</td></tr>";


            }
        }
    }
    items += "</table>";
    $get("items").innerHTML = secureFromXSS(items);
    $('#items a').tooltip({ showURL: false, showBody: " - ", fixPNG: false });
}

function clearCart() {
    // Service.EmptyCart(addOrderID);
    // cash pay false
    Service.EmptyCart(false);
}
function cashPay() {
    // cash pay true
    Service.EmptyCart(true);
}
function addOrderID(result) {
    var frm = document.getElementById("fmBuy");
    frm.custom.value = result;
    frm.submit();
}
