var ProductAlerts = (function() {

    var globalAlertCount = 0;

    var initDropdown = function(json) {
		var alertCount = json.data.count;
        var alertLeftPos = $("#header-content").contents().find("#alert-number").position();
        var $alertsDropdown = $('#alerts-dropdown');
        var newAlertsmsg = (alertCount === 0) ? "<h3>You have 0 alerts</h3>" : (alertCount > 1) ? "<h3>You have " + alertCount + " alerts!</h3>" : "<h3>You have 1 alert!</h3>";

        globalAlertCount = alertCount;

        alertLeftPos = alertLeftPos.left - 97.5;

        $alertsDropdown.find('h3').remove();
        $alertsDropdown.find('#alerts-content').before(newAlertsmsg);

        if(globalAlertCount > 0) {      // there are new alerts to display
            getAlertProducts();
        } else {
            $('#alerts-dropdown').addClass("no-alerts");
            $('#alerts-content').html("We will alert you here as soon as items are low in stock, back in stock or on sale so you don't miss out!");
        }

        $('#alerts-dropdown').css('left', alertLeftPos);
        $('#alerts-dropdown').slideToggle('fast');
    };

    var insertAlertProducts = function(json) {
        var $alertsDropdown = $('#alerts-dropdown');
        var $alertsContent = $('#alerts-content');
        var slug = '', pid = '', alertProduct = '';

        $alertsDropdown.removeClass('no-alerts');
        $alertsContent.html('<ul></ul>');

        for (k=0; k <= json.data.listItems.length; k++) {
            if(!json.data.listItems[k].viewed) {
                slug = '';
                pid = json.data.listItems[k].productId;
                if(json.data.listItems[k].itemSlug == 'BACK') {
                    slug = '<img src="/outnet/build/2011.17.00/images/slugs/back_in_stock.png" alt="Back in stock" />';
                }
                if(json.data.listItems[k].itemSlug == 'LOW_STOCK') {
                    slug = '<img src="/outnet/build/2011.17.00/images/slugs/just_1_left.png" alt="Low stock" />';
                }
                if(json.data.listItems[k].itemSlug == 'ON_SALE') {
                    slug = '<img src="/outnet/build/2011.17.00/images/slugs/clearance.png" alt="Clearance" />';
                }
                if (json.data.listItems[k].itemSlug == 'IN_POPUP_SALE') {
                    var discountValue = json.data.listItems[k].discountPercentage;

                    switch(discountValue) {
                        case null:
                            slug = '<img src="/outnet/build/2011.17.00/images/slugs/clearance.png" alt="Clearance" />'
                        break;
                        case 80:
                            slug = '<img src="/outnet/build/2011.17.00/images/slugs/clearance_80_off.png" alt="Clearance 80% off" />'
                        break;
                        case 85:
                            slug = '<img src="/outnet/build/2011.17.00/images/slugs/clearance_85_off.png" alt="Clearance 85% off" />'
                        break;
                    }
                }
                if (json.data.listItems[k].itemSlug == 'IN_DISCOUNT_PROMOTION') {
                    var discountValue = json.data.listItems[k].discountPercentage;

                    switch(discountValue) {
                        case null:
                            slug = '<img src="/outnet/build/2011.17.00/images/slugs/extra_discount.png" alt="Extra discount" />'
                        break;
                        case 20:
                            slug = '<img src="/outnet/build/2011.17.00/images/slugs/extra_20_off.png" alt="Extra 20% off" />'
                        break;
                        case 25:
                            slug = '<img src="/outnet/build/2011.17.00/images/slugs/extra_25_off.png" alt="Extra 25% off" />'
                        break;
                        case 30:
                            slug = '<img src="/outnet/build/2011.17.00/images/slugs/extra_30_off.png" alt="Extra 30% off" />'
                        break;
                        case 40:
                            slug = '<img src="/outnet/build/2011.17.00/images/slugs/extra_40_off.png" alt="Extra 40% off" />'
                        break;
                        case 50:
                            slug = '<img src="/outnet/build/2011.17.00/images/slugs/extra_50_off.png" alt="Extra 50% off" />'
                        break;
                    }
                }
                alertProduct = '<li><a href="/product/' + pid + '"><img src="/images/products/' + pid + '/' + pid + '_in_xs.jpg" alt="" class="product-image" />' + slug + '<span class="designer">' + json.data.listItems[k].designerName + '</span><span class="product-title">' + json.data.listItems[k].productTitle + '</span></a></li>'

                $("#alerts-dropdown ul").append(alertProduct);
            }
        }

//        var item = json.data.listItems;
//        $(item).each(function() {
//            console.log("item: ", this);
//        })

    };

    var getUnreadAlertCount = function() {
        var jsonUrl = "/webapi/account/alert/unviewedAlertsCount.json";
        $.getJSON(jsonUrl, function(json) {
            //callback
            initDropdown(json);
        });
    };

    var getAlertProducts = function() {
        var jsonUrl = "/webapi/account/alert/userAlerts.json";

        $.getJSON(jsonUrl, function(json) {
            //callback
            insertAlertProducts(json);
        });
    };

    var insertAlertsHtml = function() {
        var wishlist_link = '/' + channel + '/catwishlist.chic';
        var alertDropdownHtml = [
            '<div id="alerts-dropdown">',
                '<div id="alerts-dropdown-inner">',
                    '<div id="alerts-content">',
                        '<div id="ajax-loader-container"><img src="/outnet/build/2011.17.00/images/global/ajax-loader.gif" /></div>',
                    '</div>',
                    '<a href="' + wishlist_link + '" class="view-wishlist">View my Most Wanted list</a>',
                '</div>',
            '</div>'
        ].join('');

        $(alertDropdownHtml).appendTo('#header');

        $('#alerts-dropdown').click(function(event) {
            event.stopPropagation();
        });
    };

    return {
        getAlertProducts: getAlertProducts,
        getUnreadAlertCount: getUnreadAlertCount,
        insertAlertsHtml: insertAlertsHtml
    };
}());

/*****************************************
loadlist
*****************************************/
$(window).load(function() {
    if(typeof ProductAlerts.insertAlertsHtml === 'function') { ProductAlerts.insertAlertsHtml(); }
});
