function addLoadEvent(func) {
    var oldonload = window.onload;
    if (typeof window.onload != 'function') {
        window.onload = func;
    } else {
        window.onload = function() {
            if (oldonload) {
                oldonload();
            }
            func();
        }
    }
}

function feedback(type, message) {
    var cls = 'success-msg';
    switch (type) {
        case('WARN'):
            cls = 'warning-msg';
            break;
        case('ERROR'):
            cls = 'error-msg';
            break;
        case('INFO'):
            cls = 'info-msg';
            break;
    }
    var feedbackDiv = document.getElementById('feedback-messages');
    if (feedbackDiv) {
        var html = '<ul class="feedback-messages">';
        html += '<li class="' + cls + '">' + message;
        html += '</li>';
        html += '</ul>';
        feedbackDiv.innerHTML = html;
    }
}

function clearFeedback() {
    var feedbackDiv = document.getElementById('feedback-messages');
    if (feedbackDiv) {
        feedbackDiv.innerHTML = '';
    }
}

function openWindow(location) {
    var extWin = window.open(location, "", 'left=20,top=20,width=1000,height=600,toolbar=1, scrollbars=1, resizable=1');
}

(function($) {
    $.fn.vCenter = function(options) {
        var pos = {
            sTop : function() {
                return window.pageYOffset
                        || document.documentElement && document.documentElement.scrollTop
                        || document.body.scrollTop;
            },
            wHeight : function() {
                return window.innerHeight
                        || document.documentElement && document.documentElement.clientHeight
                        || document.body.clientHeight;
            },
            windowWidth : function () {
                return window.innerWidth
                        || document.documentElement && document.documentElement.clientWidth
                        || document.body.clientWidth;
            }
        };

        return this.each(function(index) {
            if (index == 0) {
                // get the pos
                var $this = $(this);
                var elOffset = $this.offset();
                var elHeight = $this.height() / 2;
                var elTop = pos.sTop() - 200 + (pos.wHeight() / 2) - (elHeight / 2);
                var elLeft = pos.windowWidth() / 2 - $this.width() / 2;
                var leftOffset = elLeft - elOffset.left;
                $this.css({
                    position: 'relative',
                    marginTop: '0',
                    top: elTop,
                    //                    marginLeft: '0',
                    left: leftOffset
                });
            }
        });
    };
})(jQuery);

/*******compare cart **********/
function showMiniBasket(url) {
    $("#miniCart").load(url, function () {
        $("#miniCart").fadeIn("fast");
        $("#miniCartBox").addClass("expanded");
        return false;
    });
    return false;
}

function toggleMiniBasket(contextPath) {
    var url = contextPath + '/cart/minicart.html';
    if ($("#miniCartBox").hasClass("expanded")) {
        $("#miniCart").fadeOut("fast");
        $("#miniCartBox").removeClass("expanded");
    } else {
        showMiniBasket(url);
    }
    return false;
}

function deleteMiniCartItem(deleteitem, contextPath) {
    var url = contextPath + "/cart/minicart.html?deleteitem=" + deleteitem;
    showMiniBasket(url);
    return false;
}

function closeMiniCart() {
    $("#miniCart").fadeOut("fast");
    $("#miniCartBox").removeClass("expanded");
    return false;
}

function showCompareCart(basket) {
    var basketElement = $("#" + basket);
    var box = $(basketElement).closest('.expandable_top_box');
    $('.hidden_box', box).fadeIn('fast');
    $(box).addClass('expanded');
}

$(document).ready(function() {
    $('#compareCartBox .toggle_link').click(function() {
        var box = $(this).closest('.expandable_top_box');
        // remove cloned  compare cart
        removeCompareClone();

        if ($(box).hasClass('expanded')) {
            $('.hidden_box', box).fadeOut('fast');
            $(box).removeClass('expanded');
        } else {
            $('.hidden_box', box).fadeIn('fast');
            $(box).addClass('expanded');
            SHOW_COMPARE_CART_CLONE = false;
        }

        return false;
    });

    $('#compareCartBox .box_close').click(function() {
        var box = $(this).closest('.expandable_top_box');

        $('.hidden_box', box).fadeOut('fast');
        $(box).removeClass('expanded')

        return false;
    });
});

jQuery(document).ready(function() {
    $(".store_finder").hover(finderIn, finderOut);
    $(".store_finder_flyer").hover(finderIn, finderOut);
});

function finderIn() {
    $(".store_finder_flyer").show();
}

function finderOut() {
    $(".store_finder_flyer").hide();
}


function hideMainCompareCart() {
    var box = $("#" + "compareCartBox").closest('.expandable_top_box');
    $('.hidden_box', box).fadeOut('fast');
    $(box).removeClass('expanded');
}

function hideCompareCartClone() {
    var box = $("#" + "compareCartClone").closest('.expandable_top_box');
    $('.hidden_box', box).fadeOut('fast');
    $(box).removeClass('expanded');
}

function processCompareResponse(response, contextPath, showComparePanel, showTime) {
    var removeProdGifUrl = contextPath + "/mantiki/images/design/header_box_list_close.gif";
    var countStr = "0 items";
    var sb = "";
    var errorMsg = "";
    var styles = null;

    if (response == null || response['styles'] == null) {
        sb = sb + "<li> No items to compare </li>";
    } else {
        errorMsg = response['error'];
        styles = response['styles'];

        for (i = 0; i < styles.length; i++) {
            sb = sb + "<li>";
            sb = sb + styles[i].description;
            sb = sb + "<a href=\"javascript:removeFromCompare('" + styles[i].styleCode + "','" + contextPath + "'," + showTime + ")\"><img src='" +
                 removeProdGifUrl + " ' border='0' alt='Remove item' title='Remove item' class='close_icon'/></a>";
            sb = sb + ("</li>\n");
        }
        if (styles.length == 1) {
            countStr = styles.length + " item";
        } else {
            countStr = styles.length + " items";
        }
    }
    sb = sb + ("\n");

    $(".compareList").html(sb);
    $('.compareCount').html(countStr);
    if (showComparePanel) {
        // close main compare basket
        hideMainCompareCart();
        // remove the floating compare basket
        $("#compareCartClone").remove();

        var tmpCompare = $("#compareCartBox").clone();
        $(tmpCompare).attr("id", "compareCartClone");
        tmpCompare.insertAfter($("#compareCartBox"));

        $(tmpCompare).vCenter();

        // add close fn
        $('#compareCartClone .box_close').click(function() {
            var box = $(this).closest('.expandable_top_box');
            $('.hidden_box', box).fadeOut('fast');
            $(box).removeClass('expanded');
            removeCompareClone();

        });

        SHOW_COMPARE_CART_CLONE = true;

        if (typeof  COMPARE_CLONE_TIMER_HANDLE != "undefined" && COMPARE_CLONE_TIMER_HANDLE != '') {
            clearTimeout(COMPARE_CLONE_TIMER_HANDLE);
        }

        showCompareCart("compareCartClone");

        COMPARE_CLONE_TIMER_HANDLE = setTimeout(removeCompareClone, showTime);
    }

    if (errorMsg != '' && errorMsg != null) {
        alert(errorMsg);
    }
}

function removeCompareClone() {
    $("#compareCartClone").remove();
}

function addToCompare(styleCode, contextPath, showTime) {
    var showComparePanel = true;
    var callbackProxy = function(response) {
        processCompareResponse(response, contextPath, showComparePanel, showTime);
    }

    var callMetaData = { callback:callbackProxy };
    CompareService.add(styleCode, callMetaData);
}

function removeFromCompare(styleCode, contextPath, showTime) {
    var showComparePanel = false;

    if (typeof  SHOW_COMPARE_CART_CLONE != "undefined" && SHOW_COMPARE_CART_CLONE) {
        showComparePanel = true;
    }

    var callbackProxy = function(response) {
        processCompareResponse(response, contextPath, showComparePanel, showTime);
    }

    var callMetaData = { callback:callbackProxy };
    CompareService.remove(styleCode, callMetaData);
}

function clearCompare(contextPath, showTime) {
    var showComparePanel = false;

    if (typeof  SHOW_COMPARE_CART_CLONE != "undefined" && SHOW_COMPARE_CART_CLONE) {
        showComparePanel = true;
    }

    var callbackProxy = function(response) {
        processCompareResponse(response, contextPath, showComparePanel, showTime);
    }

    var callMetaData = { callback:callbackProxy };
    CompareService.clear(callMetaData);
}

function back() {
    window.history.back();
}


function checkoutTrackBack(form, index, trackerId){

    switch (index) {
    case 0:   _gaq.push(['_trackPageview','/virtual/checkout/account_details.html']);
        break;

    case 1:  _gaq.push(['_trackPageview','/virtual/checkout/billing_address.html']);
        break;

    case 2:  _gaq.push(['_trackPageview','/virtual/checkout/delivery_address.html']);
        break;

    }

}

function paymentTrackBack(form, trackerId){
    _gaq.push(['_trackPageview','/virtual/checkout/payment_started.html']);
}

function openPopUp(location){
    var extWin = window.open( location, "", 'left=20,top=20,width=1000,height=600,toolbar=0, scrollbars=1, resizable=0,' +
                                            'menubar=0, location=0, directories=0, status=0');
}


function openPopUpSmall(location){
    var extWin = window.open( location, "", 'left=30,top=30,width=616,height=300,toolbar=0, scrollbars=1, resizable=0,' +
                                            'menubar=0, location=0, directories=0, status=0');
}

if(typeof String.prototype.trim !== 'function') {
  String.prototype.trim = function() {
    return this.replace(/^\s+|\s+$/g, '');
  }
}

function isEmpty(str) {
    return (!str || 0 === str.length);
}

