var Compare = new Object;
Compare.maxCompareCount = 5;

Compare.compare = function (){
    var ids = Compare.getComparedProducts();
    if (ids) {
        var data = {
            Compare: ids.substring(0, ids.length - 1)
        };
        iModal.load(global.url.Compare, data, Compare.iModal_callback); //see jquery.extends.js
    } else {
        Compare.error();
    };
    return false;
};

Compare.iModal_callback = function (){
    Compare.current.init();
    Compare.current.action();
    price_view.generate();
};

Compare.add = function (compareid) {
    var comparedProducts = Compare.getComparedProducts();
    var i = comparedProducts.indexOf(compareid + ",");
    if ( i < 0 ){
        comparedProducts += compareid + ",";
        Compare.saveComparedProducts(comparedProducts);        
    }
};

Compare.remove = function (compareid) {
    var comparedProducts = Compare.getComparedProducts();
    var i = comparedProducts.indexOf(compareid + ",");
    if ( i >= 0 ){
    comparedProducts = comparedProducts.substring( 0, i ) + comparedProducts.substring( i + compareid.length + 1 );
        Compare.saveComparedProducts(comparedProducts);    
    }
};

Compare.removeByProductID = function (productid) {
    var comparedProducts = Compare.getComparedProducts();
    var i = comparedProducts.indexOf(productid + "$");
    if ( i >= 0 ){
        var j = comparedProducts.indexOf(",", i);    
        comparedProducts = comparedProducts.substring( 0, i ) + comparedProducts.substring( j+1 );
        Compare.saveComparedProducts(comparedProducts);
        
        var i = $.inArray( productid, Compare.current.checkedItems );
        if (i!=-1) {
            Compare.current.checkedItems.splice( i, 1 );
        };
        Compare.init(); // Clear checkboxes
    }
};

Compare.getComparedProducts = function () {
    var products = $.cookie("compareProducts"); 
    return  products ? products : ""; 
};

Compare.saveComparedProducts = function (comparedProducts) {
    var date = new Date();
    date.setTime(date.getTime() + (60 * 60 * 1000));
    $.cookie("compareProducts", comparedProducts, { expires: date , path: '/'});
};
    
Compare.reset = function (){
    Compare.init();
};

Compare.init = function (){
    var comparedProducts = Compare.getComparedProducts();
    var inputs = $('div.addcompare input');
    inputs.each(function (input) {
        var chk = $(inputs[input]);
        var compareid = chk.attr("compareid");       
        var i = comparedProducts.indexOf(compareid + ",");
        if ( i >= 0 ) chk.attr("checked", "checked");
        else chk.removeAttr("checked");
    });
};

Compare.error = function (){
    errors.open('/'+global.url.AreaName+'/ajax/errors/compare.aspx');
};

Compare.current = {
    checkedItems: [],
    maxCheckedCount: 3,
    desc_height: function(){
        $('.compare-item-common-data').each(function() {
            var h1 = $('.compare-item-title',$(this)).outerHeight(true);
            var h2 = 280;
            $('.compare-item-desc',$(this)).height(280-h1);
        })
    },
    init: function() {
        Compare.current.checkedItems = [];
        $('.compare-image-small').each(function(i){
            if (i < Compare.current.maxCheckedCount) {
                var productid = $(this).attr('prodid');    
                $(this).addClass('current');
                $('#compare-item' + productid).addClass("current");
                Compare.current.checkedItems.push(productid);
            };
        });
        Compare.current.desc_height();
    },
    action: function(){
        $('.compare-image-small').click(function(){
            var is_single = 0;
            if (Compare.current.checkedItems.length == 1 && $(this).hasClass('current')) {
                is_single = 1;
            };

            if (!is_single) {
                var productid = $(this).attr('prodid');    
                var i = $.inArray( productid, Compare.current.checkedItems );
                if ( i >= 0 ) {
                    Compare.current.checkedItems.splice( i, 1 );
                } else {
                    Compare.current.checkedItems.push(productid);
                    if ( Compare.current.checkedItems.length > Compare.current.maxCheckedCount ) {
                        var hidedId = Compare.current.checkedItems.shift();
                        Compare.current.toggleItem(hidedId);
                    }
                };
                Compare.current.toggleItem(productid);
            };
        });
        $('#compare-thumbs .delete').click(function(e){
            e.preventDefault();           
            var prodid = $(this).attr('prodid');
            Compare.current.toggleItem(prodid);
            Compare.removeByProductID(prodid);
            $('#compare-image-small'+prodid).remove();
            $('#compare-item'+prodid).remove();
            if (!$('.compare-item').size()) {
                iModal.destroy();
            };
            return false;
        });
    },
    toggleItem: function (productid){
        $('#compare-image-small' + productid).toggleClass("current");
        $('#compare-item' + productid).toggleClass("current");
        Compare.current.desc_height();
    }
};

function OnClickCompare(ctrl, compareid){
    if (ctrl.checked)
        Compare.add(compareid);
    else
        Compare.remove(compareid);
};
    
$(document).ready(function() {
    $('.add-compare').live('click',function(){
        Compare.compare();
        return false;
    });
});
