﻿
/* $.toJSON */
(function($) { function toIntegersAtLease(n) { return n < 10 ? '0' + n : n; } Date.prototype.toJSON = function(date) { return this.getUTCFullYear() + '-' + toIntegersAtLease(this.getUTCMonth()) + '-' + toIntegersAtLease(this.getUTCDate()); }; var escapeable = /["\\\x00-\x1f\x7f-\x9f]/g; var meta = { '\b': '\\b', '\t': '\\t', '\n': '\\n', '\f': '\\f', '\r': '\\r', '"': '\\"', '\\': '\\\\' }; $.quoteString = function(string) { if (escapeable.test(string)) { return '"' + string.replace(escapeable, function(a) { var c = meta[a]; if (typeof c === 'string') { return c; } c = a.charCodeAt(); return '\\u00' + Math.floor(c / 16).toString(16) + (c % 16).toString(16); }) + '"'; } return '"' + string + '"'; }; $.toJSON = function(o, compact) { var type = typeof (o); if (type == "undefined") return "undefined"; else if (type == "number" || type == "boolean") return o + ""; else if (o === null) return "null"; if (type == "string") { return $.quoteString(o); } if (type == "object" && typeof o.toJSON == "function") return o.toJSON(compact); if (type != "function" && typeof (o.length) == "number") { var ret = []; for (var i = 0; i < o.length; i++) { ret.push($.toJSON(o[i], compact)); } if (compact) return "[" + ret.join(",") + "]"; else return "[" + ret.join(", ") + "]"; } if (type == "function") { throw new TypeError("Unable to convert object of type 'function' to json."); } var ret = []; for (var k in o) { var name; type = typeof (k); if (type == "number") name = '"' + k + '"'; else if (type == "string") name = $.quoteString(k); else continue; var val = $.toJSON(o[k], compact); if (typeof (val) != "string") { continue; } if (compact) ret.push(name + ":" + val); else ret.push(name + ": " + val); } return "{" + ret.join(", ") + "}"; }; $.compactJSON = function(o) { return $.toJSON(o, true); }; $.evalJSON = function(src) { return eval("(" + src + ")"); }; $.secureEvalJSON = function(src) { var filtered = src; filtered = filtered.replace(/\\["\\\/bfnrtu]/g, '@'); filtered = filtered.replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']'); filtered = filtered.replace(/(?:^|:|,)(?:\s*\[)+/g, ''); if (/^[\],:{}\s]*$/.test(filtered)) return eval("(" + src + ")"); else throw new SyntaxError("Error parsing JSON, source is not valid."); }; })(jQuery);


$(shopStart);
$(UpdateClip);

var buyService = new $.jsonAsmxService('/Services/BuyItem.asmx');

function shopStart() {
    $('.BuyButton').click(function() {
        var cart;
        var cartHolder = $("#CartHolder");
        var itemCode = $(this).attr("item_code");
        var quantity = $('#Quantity');
        cart = buyService.call('BuyItem', { 'ItemNo': itemCode, Qty: parseInt(quantity.length == 1 ? quantity.val() : 1) });

        $("#emptyCart", "#CartHolder").hide();
        $("#cart", "#CartHolder").show();
        $("#Sum", "#CartHolder").html(cart.Sum);
        $("#LineCount", "#CartHolder").html(cart.Items.length);
        cartHolder.effect("highlight", { color: '#ffe659' }, 500, function() { window.location.href = 'Basket.aspx'; });
    })
}

function UpdateItem(id, quantity) {
    buyService.call('UpdateItem', { itemID: id, quantity: quantity }, UpdateItemComplete);
}

function UpdateItemComplete(data) {
    $('#CartViewContainer').html(data.d.ShopCartHTML);
    if (data.d.ShopCart.Items.length > 0) {
        $("#Sum", "#CartHolder").html(data.d.ShopCart.Sum);
        $("#LineCount", "#CartHolder").html(data.d.ShopCart.Items.length);
    }
    else {
        $("#emptyCart", "#CartHolder").show();
        $("#cart", "#CartHolder").hide();
    }
}

function AddToClip(id) {
    var cookie = $.readCookie('clip');
    var clipCount = 1;
    if (cookie) {
        cookie += '|' + id;
        clipCount = cookie.split('|').length;
    }
    else
        cookie = id;
    $.setCookie('clip', cookie, { duration: 30 });
    $('#ClipCount').text(clipCount);
    $('#ClipCount').parent().effect("highlight", {}, 3000);
}

function ClearAllClips() {
    $.delCookie('clip');
}

function UpdateClip() {
    $clipCount = $('#ClipCount');
    if ($clipCount.length > 0) {
        var cookie = $.readCookie('clip');
        if(cookie)
            $('#ClipCount').text(cookie.split('|').length);
    }
}

function RemoveClip(id) {
    var cookie = $.readCookie('clip');
    var newCookie = '';
    var clipItems = cookie.split('|');

    for (var i = 0; i < clipItems.length; i++) {
        if (id != clipItems[i])
            newCookie += (newCookie == '' ? '' : '|') + clipItems[i];
    }
    $('.ClipItem' + id).hide();    
    $.setCookie('clip', newCookie, { duration: 30 });
}