var animations = {};

function cartPack( cart ) {
    var out = "";
    var bFirst = true;
    for ( var k in cart ) {
        if ( bFirst ) {
            bFirst = false;
        }
        else {
            out += "|";
        }
        out += k + ":" + cart[k]["quantity"] + ":" + cart[k]["added"];
    }

    return out;
}
function cartUnpack( packedData ) {

    bufGoods = packedData.split("|");

    var cartData = {};
    var iLen     = bufGoods.length;

    for ( i=0; i<iLen; i++ ) {
        bufGood = bufGoods[i].split(":");
        cartData[bufGood[0]] = {
            quantity: bufGood[1],
            added:    bufGood[2]
        };
    }

    return cartData;

}

function cartRedrawBlock() {

    flag = false;


    html = '<table class="cart">';

    total = 0;

    order = [];
    for ( k in cartGoods ) {
        order[order.length] = [k, cartGoods[k]["added"]];
    }

    order.sort(function(a, b) { return a[1] - b[1] } );



    for ( i=0; i<order.length; i++ ) {

        k = order[i][0];

        flag   = true;
        total += cartGoods[k]["quantity"] * cartGoods[k]["price"];

        html  += '<tr id="cart-good-'+ cartGoods[k]["id"] +'">';
        html  += '<td>';
        html  += '<a href="' + htmlescape(cartGoods[k]["url"]) + '">' + htmlescape(cartGoods[k]["title"]) + '</a><br />';

        if ( cartGoods[k]["quantity"] > 1 ) {
            html += cartGoods[k]["quantity"] + '&nbsp;шт&nbsp;x&nbsp;';
        }

        html  += number_format(cartGoods[k]["price"], 2, ",", "") + '&nbsp;грн';
        html  += '</td>'
        html  += '<td class="right" valign="bottom"><a href="javascript:;" onclick="cartDel(' + cartGoods[k]["id"] + ')"><img src="/media/images/elements/delete.gif" width="17" height="17" alt="удалить"></a></td>';
        html  += '</tr>';
    }

    html += '</table>';

    if ( !flag ) {
        html   = '<p class="warning">Ваша корзина пуста</p>';
        html  += '<p>Чтобы добавить товар к заказу, нажмите на кнопку с надписью &laquo;в&nbsp;корзину&raquo;.</p>';
    }
    else {

        html  += '<table class="cart last-child">';
        html  += '<tr>';
        html  += '<td><a href="/cart/"><strong>Оформить покупку</strong></a></td>';
        html  += '<td class="right bottom">Сумма:<br /><span id="cart-amount">' + number_format(total, 2, ",", "") + '</span>&nbsp;грн</td>';
        html  += '</tr>';
        html  += '</table>';

    }

    document.getElementById('cart').innerHTML = html;
}

function cartRedrawOrder() {

    flag = false;


    html  = '<table class="cart">';
    html += '<tr>';
    html += '<td class="first-child">&nbsp;</td>';
    html += '<td colspan="4" class="comment">Цены расчитаны по курсу для частных лиц: 1$=' + rateValue + ' грн</td>';
    html += '</tr>';

    total = 0;

    order = [];
    for ( k in cartGoods ) {
        order[order.length] = [k, cartGoods[k]["added"]];
    }
    order.sort(function(a, b) { return a[1] - b[1] } );


    for ( i=0; i<order.length; i++ ) {

        k = order[i][0];

        flag   = true;
        total += cartGoods[k]["quantity"] * cartGoods[k]["price"];

        html  += '<tr>';
        if ( cartGoods[k]['photo'] ) {
            html += '<td class="first-child"><a href="'+  htmlescape(cartGoods[k]["url"]) +'"><img src="' + htmlescape(cartGoods[k]["photo"]) + '" width="' + cartGoods[k]["photo_width"] + '" height="' + cartGoods[k]["photo_height"] + '" alt="' + htmlescape(cartGoods[k]["title"]) + '" /></a></td>';
        }
        else {
            html += '<td class="first-child"><a href="'+  htmlescape(cartGoods[k]["url"]) +'"><img src="/media/images/elements/no-photo.50x45.gif" width="50" height="45" alt="' + htmlescape(cartGoods[k]["title"]) + '" /></a></td>';
        }

        html  += '<td width="50%">';
        html  += '<p class="title"><a href="' + htmlescape(cartGoods[k]["url"]) + '">' + htmlescape(cartGoods[k]["title"]) + '</a></p>';
        html  += '<p class="good-price">' + number_format(cartGoods[k]["price"], 2, ",", "") + '&nbsp;грн</p>';
        html  += '</td>';
        html  += '<td nowrap="nowrap"><input id="cart-qnt-' + cartGoods[k]['id'] + '" type="text" size="2" value="' + cartGoods[k]["quantity"] + '" maxlength="2" onchange="cartChangeQnt(' + cartGoods[k]['id'] + ', this.value);" onkeyup="cartChangeQnt(' + cartGoods[k]['id'] + ', this.value);" onblur="qntBlur(this)" /> шт</td>';
        html  += '<td class="price"><span id="cart-amount-' + cartGoods[k]['id'] + '">' + number_format(cartGoods[k]["price"] * cartGoods[k]["quantity"], 2, ",", "") + '</span>&nbsp;грн</td>';
        html  += '<td><a href="javascript:;" onclick="cartChangeQnt(' + cartGoods[k]['id'] + ', 0, true);"><img src="/media/images/elements/cart-delete.gif" width="20" height="20" alt="удалить"></a></td>';
        html  += '</tr>';
    }


    if ( !flag ) {
        html   = 'Ваш заказ пуст.';
    }
    else {
        html  += '<tr class="last-child">';
        html  += '<td>&nbsp;</td>';
        html  += '<td class="total-sum">Общая сумма</td>';
        html  += '<td>&nbsp;</td>';
        html  += '<td class="price"><span id="cart-total">' + number_format(total, 2, ",", "") + '</span>&nbsp;грн</td>';
        html  += '<td>&nbsp;</td>';
        html  += '</tr>';
        html  += '</table>';
    }

    document.getElementById('good-filters').innerHTML = html;
    document.getElementById('frm_order').style.display = '';
    document.getElementById('bt_submit').disabled = false;
}

function cartRedraw() {

    if ( cartTemplate == 'order' ) {
        cartRedrawOrder();
    }
    else if ( cartTemplate == 'none' ) {
        return true;
    }
    else {
        cartRedrawBlock();
    }
}

function cartCheckUnsavedGoods() {

    var dataCookie = getCookie("cart");
    if ( !dataCookie ) {
        dataCookie = "";
    }
    var cartCookie = cartUnpack(dataCookie);


    var bChanged = false;
    for ( k in cartCookie ) {
        if ( k == "" ) {
            continue;
        }
        if ( (!cartGoods[k]) ||
             cartGoods[k]["quantity"] != cartCookie[k]["quantity"] ||
             cartGoods[k]["added"] != cartCookie[k]["added"] ) {

            bChanged = true;
        }
    }

    if ( bChanged ) {
        cartGoods = cartCookie;
        return false;
    }
    else {
        return true;
    }

}

function cartSave() {

    expires = new Date();
    expires.setTime(expires.getTime() + 86400000000);
    setCookie("cart", cartPack(cartGoods), expires, "/");

    return true;

}

function cartAdd(el, goodId, price, title, url, img_url, img_width, img_height) {

    if ( !checkCookie("Для работы с корзиной должны\nбыть включены Cookie.") ) {
        return false;
    }


    var bUnsaved = cartCheckUnsavedGoods();


    if ( cartGoods[goodId] ) {
        cartGoods[goodId]["quantity"]++;
    }
    else {
        Today = new Date();
        cartGoods[goodId] = {
            id: goodId,
            title: title,
            price: price,
            quantity: 1,
            url: url,
            added: Today.getTime(),
            photo: (img_url) ? img_url : undefined,
            photo_width: (img_width) ? img_width : 0,
            photo_height: (img_height) ? img_height : 0
        };
    }


    if ( !cartSave() ) {
        return false;
    }
    
    /*
    if ( cartLoad ) {
        location.href = "/cart/";
        return true;
    }*/

    if ( !bUnsaved ) {
        location.reload();
    }

    // changing style
    el.className = "toCart2";

    ind = 0;

    while ( animations[ind] ) {
        ind++;
    }

    animations[ind] = el;

    setTimeout("cartAnim1("+ind+")", 1000);

    return true;
}

function cartAnim1(ind) {
    animations[ind].className='toCart3';
    cartRedraw();
    setTimeout("cartAnim2("+ind+")", 750);
}

function cartAnim2(ind) {
    animations[ind].className='toCart1';
    animations[ind] = undefined;
}

function cartDel(goodid, zero) {

    zero = (zero ? 0 : zero);

    if ( !checkCookie("Для работы с корзиной должны\nбыть включены Cookie.") ) {
        return false;
    }

    var bUnsaved = cartCheckUnsavedGoods();

    if ( !cartGoods[goodid] ) {
        return false;
    }

    if ( zero ) {
        cartGoods[goodid]["quantity"] = 0;
    }
    else {
        if ( cartGoods[goodid]["quantity"] == 1 ) {
            delete cartGoods[goodid];
        }
        else {
            cartGoods[goodid]["quantity"]--;
        }
    }

    if ( !cartSave() ) {
        return false;
    }

    if ( !bUnsaved ) {
        location.reload();
    }
    else {
        cartRedraw();
    }

    return true;

}

function setActive(tdNode) {
    if (active_tab == 'tab-first-child') {
        tdNode.innerHTML = '<div class="corner-tl"><div class="corner-tr"><div class="corner-br"><div class="corner-bl">Юридическим лицам</div></div></div></div>';
        document.getElementById(active_tab).innerHTML = '<span onclick="setActive(this.parentNode);">Частным лицам</span>';
        active_tab = 'tab-second-child';

        document.getElementById('jur_hide_01').style.display = '';
        document.getElementById('jur_hide_02').style.display = '';
        document.getElementById('jur_hide_03').style.display = '';
        document.getElementById('jur_hide_04').style.display = '';
    } else {
        tdNode.innerHTML = '<div class="corner-tl"><div class="corner-tr"><div class="corner-br"><div class="corner-bl">Частным лицам</div></div></div></div>';
        document.getElementById(active_tab).innerHTML = '<span onclick="setActive(this.parentNode);">Юридическим лицам</span>';
        active_tab = 'tab-first-child';

        document.getElementById('jur_hide_01').style.display = 'none';
        document.getElementById('jur_hide_02').style.display = 'none';
        document.getElementById('jur_hide_03').style.display = 'none';
        document.getElementById('jur_hide_04').style.display = 'none';
    }
}