﻿/// <reference path="jquery-1.3.2-vsdoc.js" />
/// <reference path="vtex.common.js" />

var selectedForComparison = new Array(0);

$(document).ready(function() {
    getQueryStringCompareParameters();
    bindProductComparisonCheckBoxes();
    bindCompareButtons();
});

$(document).ajaxStop(function() {
    bindProductComparisonCheckBoxes();
});

//obtem da query string os ids dos produtos selecionados para comparação.
function getQueryStringCompareParameters() {
    var url = document.location.href;
    var paramArray = url.split('&');
    if (paramArray.length > 0) {
        var products = '';
        products = getParameterByName('ComparacaoProdutos', paramArray);
        if (products != '') {
            var productIds = products.split(',');
            if (productIds.length > 0) {
                for (var i = 0; i < productIds.length; i++) {
                    if (productIds[i] != '') {
                        selectedForComparison.add(productIds[i]);
                    }
                }
            }
        }
    }
}

function getParameterByName(nameParameter, paramArray) {
    for (i = 0; i < paramArray.length; i++) {
        parameterLine = paramArray[i].split('=');
        if (parameterLine[0] == nameParameter)
            return parameterLine[1];
    }
    return '';
}

function bindProductComparisonCheckBoxes() {
    //adicionado o tratamento para não registrar o click 2 vezes na mesma chamada
    if ($('.compare-product-checkbox').attr('addedClick') != 'yes') {
        $('.compare-product-checkbox').click(function() {
            onCompareCheckBoxClick(this);
        });
    }
    $('.compare-product-checkbox').attr('addedClick', 'yes');
    preCheckProductsSelectedForComparison();
}

function bindCompareButtons() {
    $('a.btn-comparar').click(function() {
        onCompareButtonClick(this);
    });
}

function onCompareButtonClick(sender) {

    if (selectedForComparison.toString().indexOf(',') == -1) {
        alert('Selecione pelo menos 2 produtos para comparação.');
        return;
    }
    else {
        var compareUrl = '/Site/ComparacaoProduto.aspx?ProdutosCompara=' + selectedForComparison.toString() + '&ReturnUrl=' + escape(document.location.href);
        document.location.href = compareUrl;
    }
}

function preCheckProductsSelectedForComparison() {
    var pid;
    $('.compare-product-checkbox').each(function(i, chk) {
        pid = $(chk).attr('rel');
        chk.checked = selectedForComparison.contains(pid);
    });
    updateComparisonSelectionCount();
}

function onCompareCheckBoxClick(sender) {
    var limit = 4;

    if (___isMobile === 1) {
        limit = 2;
    }

    var pid = $(sender).attr('rel');
    if (sender.checked) {
        if (selectedForComparison.length < limit) {
            selectedForComparison.add(pid);
        }
        else {
            sender.checked = false;
        }
    }
    else {
        selectedForComparison.remove(pid);
    }
    updateComparisonSelectionCount();

    if (selectedForComparison.length === limit) {
        $('.compare-product-checkbox:not(:checked)').attr('disabled', true);
    } else {
        $('.compare-product-checkbox').removeAttr('disabled');
    }
}

function updateComparisonSelectionCount() {
    $('.compare-selection-count').text(selectedForComparison.length);
}

