﻿var _MAJOR_RETAILER_DATA_CTRL = null;

var LEVEL_ENTIRE_DATABASE = 0;
var LEVEL_GROUP = 1;
var LEVEL_CATEGORY = 2;
var LEVEL_CHAIN = 3;

var MAX_ITEMS_IN_CART_TO_SHOW = 10;

function MajorRetailerData(info, cart) {
    this.info = info;
    this.cart = cart;
    

    this.init = function() {
        _MAJOR_RETAILER_DATA_CTRL = this;
        this.render();
    }

    this.render = function() {
        this.fwnd = GetFloatingWindow('fwnd');

        var html = new Array();
        html[html.length] = '<div>Total price: <span id="fwnd_price"></span></div>';
        html[html.length] = '<br/>';
        html[html.length] = '<div id="fwnd_cart"></div>';


        this.fwnd.addRenderListener(function() {
            _MAJOR_RETAILER_DATA_CTRL.invalidateCart();
        });
        this.fwnd.setHTML('Toolbox', 1, html.join('\n'));

        
    }

    this.clearCart = function() {
        var proxy = new MajorRetailerDataAjax();
        proxy.ClearCart(this.info.Level, this.info.ParentID,
            function(data) { _MAJOR_RETAILER_DATA_CTRL.onCartChanged(data); },
            function() { showModalDialog('Internal server error', MD_OK, 'modal_dlg'); });
    }

    this.addRemoveCart = function(id, level) {
        var l = (level != undefined ? level : this.info.Level);
        var proxy = new MajorRetailerDataAjax();
        proxy.AddOrRemoveFromCart(l, id, this.info.Level, this.info.ParentID,
            function(data) { _MAJOR_RETAILER_DATA_CTRL.onCartChanged(data); },
            function() { showModalDialog('Internal server error', MD_OK, 'modal_dlg'); });
    }

    this.onCartChanged = function(cart) {
        if (cart) {
            this.cart = cart;
            this.invalidateCart();
        }
    }

    this.invalidateCart = function() {
        var cart = this.cart.Cart;

        var p = $('fwnd_price');
        if (p) p.innerHTML = '$' + addCommas(cart.TotalPrice.toString());

        p = $('fwnd_cart');
        if (p) {
            var html = new Array();
            var hasContent = false;

            if (this.cart.Messages && this.cart.Messages.length > 0) {
                html[html.length] = '<div class="messages">';
                for (var i = 0; i < this.cart.Messages.length; i++) {
                    html[html.length] = this.cart.Messages[i] + '<br/><br/>';
                }
                html[html.length] = '</div>';
            }

            if (cart.EntireDatabase) {
                if (hasContent) html[html.length] = '<br/>';
                hasContent = true;
                html[html.length] = '<strong>Entire Database</strong><br/>';
            }

            if (cart.Groups && cart.Groups.length > 0) {
                if (hasContent) html[html.length] = '<br/>';
                hasContent = true;
                html[html.length] = '<strong>Category Groups</strong><br/>';
                for (var i = 0; i < cart.Groups.length && i < MAX_ITEMS_IN_CART_TO_SHOW; i++)
                    html[html.length] = cart.Groups[i].Name + '<br/>';

                if (cart.Groups.length > MAX_ITEMS_IN_CART_TO_SHOW) {
                    var m = cart.Groups.length - MAX_ITEMS_IN_CART_TO_SHOW
                    html[html.length] = m + ' more group' + (m == 1 ? '' : 's') + '<br/>';
                }

            }

            if (cart.Categories && cart.Categories.length > 0) {
                if (hasContent) html[html.length] = '<br/>';
                hasContent = true;
                html[html.length] = '<strong>Categories</strong><br/>';
                for (var i = 0; i < cart.Categories.length && i < MAX_ITEMS_IN_CART_TO_SHOW; i++)
                    html[html.length] = cart.Categories[i].Name + '<br/>';

                if (cart.Categories.length > MAX_ITEMS_IN_CART_TO_SHOW) {
                    var m = cart.Categories.length - MAX_ITEMS_IN_CART_TO_SHOW
                    html[html.length] = m + ' more ' + (m == 1 ? 'category' : 'categories') + '<br/>';
                }
            }

            if (cart.Chains && cart.Chains.length > 0) {
                if (hasContent) html[html.length] = '<br/>';
                hasContent = true;
                html[html.length] = '<strong>Chains</strong><br/>';
                for (var i = 0; i < cart.Chains.length && i < MAX_ITEMS_IN_CART_TO_SHOW; i++)
                    html[html.length] = cart.Chains[i].Name + '<br/>';

                if (cart.Chains.length > MAX_ITEMS_IN_CART_TO_SHOW) {
                    var m = cart.Chains.length - MAX_ITEMS_IN_CART_TO_SHOW
                    html[html.length] = m + ' more chain' + (m == 1 ? '' : 's') + '<br/>';
                }
            }



            for (var i = 0; i < this.cart.InCart.length; i++) {
                var btn = $('btn' + this.cart.InCart[i]);
                if (btn) btn.innerHTML = 'remove';
            }

            for (var i = 0; i < this.cart.NotInCart.length; i++) {
                var btn = $('btn' + this.cart.NotInCart[i]);
                if (btn) btn.innerHTML = 'add to cart';
            }

            var h = null;
            if (hasContent) {
                html[html.length] = '<br/><button onclick="go(\'/MajorRetailerDataOrderForm.aspx\')">Checkout</button>&nbsp;<button onclick="clearCart()">Clear</button>';
                h = html.join('\n');
            } else {
                h = 'Cart is empty';
            }

            h += '<br/><br/><a href="/MajorRetailerListing.aspx">To Search / See Full Major Retailers Listing Click Here</a>';

            p.innerHTML = h;
        }
    }
    
    
    this.init();
}



function addRemoveCart(id) {
    if (_MAJOR_RETAILER_DATA_CTRL) _MAJOR_RETAILER_DATA_CTRL.addRemoveCart(id);
}

function clearCart() {
    if (_MAJOR_RETAILER_DATA_CTRL) _MAJOR_RETAILER_DATA_CTRL.clearCart();
}

function addRemoveGroup(id) {
    if (_MAJOR_RETAILER_DATA_CTRL) _MAJOR_RETAILER_DATA_CTRL.addRemoveCart(id, LEVEL_GROUP);
}

function addRemoveCategory(id) {
    if (_MAJOR_RETAILER_DATA_CTRL) _MAJOR_RETAILER_DATA_CTRL.addRemoveCart(id, LEVEL_CATEGORY);
}

function addRemoveEntire() {
    if (_MAJOR_RETAILER_DATA_CTRL) _MAJOR_RETAILER_DATA_CTRL.addRemoveCart(0, LEVEL_ENTIRE_DATABASE);
}

