﻿function A( key )
{
    return MsgClass.get( key, 'basket' );
}

// обрабатывает клик на "добавить в корзину"
function orderGood( ids, idg, ddp, add )
{
    if (!Cookie.accept()) {
        alert( A('turn_on_cookie4order') );
        return;
    }
    var bid = Cookie.get(COOKIE_BID);
    var str = Cookie.get(COOKIE_STR);
    if (str && str.length)
        Cookie.erase(COOKIE_STR);
    bid = bid || -1;
    addGood( bid, ids, idg, 1, str );

    if (Element.visible(ddp.who) == false) {
        dropdownPopup(ddp, add);
    }
}
// ^^^ orderGood



// записывает в куки bid и изменённую str
function addGood( bid, ids, idg, qty, str )
{
    var content = unserialize( str );
    content = tool_appendGood( content, ids,idg,qty );
    str = serialize( content );
    wri2cookie( bid, str );
}
// ^^^ addGood



// записывает бид и стр вкуки
function wri2cookie( bid, str )
{
    if (typeof(bid) != "undefined") {
        Cookie.set(COOKIE_BID, bid);
    }
    if (typeof(str) != "undefined") {
        Cookie.set(COOKIE_STR, str);
    }
}
// ^^^ wri2cookie



// изменяет qty существующего, либо добавляет новый товар в массив content
function tool_appendGood( content, ids, idg, qty )
{
    for (var i=0; i<content.length; i++) {
        if (content[i][0] == ids && content[i][1] == idg) {
            content[i][2] = parseInt(content[i][2]) + qty;
            return content;
        }
    }
    content.push( [ids,idg,qty] );
    return content;
}
// ^^^ tool_appendGood



// вызывается при нажатии на + или - в корзине
// добавляет или удаляет товар
function count_tools( box, action )
{
    box = $(box);
    var str = Cookie.get( COOKIE_STR );

    switch (action) {

        case 'add':
            // обновляем куковскую строку
            str = tool_updateBasketStr( str, box, 1 );

            // добавляем новый узел
            var clone = box.cloneNode(true);
            box.parentNode.insertBefore( clone, box );

            // делаем пересчёт
            var divs = $('basketContent').childNodes;

            if (divs.length == 2) {
                Element.show('OrderTotal');
            }
            divs = $A(divs).findAll( function(div) {return div.id == box.id} );
            divs.each( function (div) {div.setAttribute( 'qty', parseInt(div.getAttribute('qty'))+1 )} );
        break;

        case 'remove':
            // если не последний, или если хотим удалить последний
            if (parseInt(box.getAttribute('qty')) > 1 || confirm( A('delete_last') )) {
                // обновляем куковскую строку
                str = tool_updateBasketStr( str, box, -1 );

                // удаляем
                box = box.parentNode.removeChild(box);

                // и делаем пересчёт
                var divs = $('basketContent').childNodes;

                if (divs.length == 1) {
                    Element.hide('OrderTotal');
                }

                divs = $A(divs).findAll( function(div) {return div.id == box.id} );
                divs.each( function (div) {div.setAttribute( 'qty', parseInt(div.getAttribute('qty'))-1 )} );
            }
        break;
    }
    Cookie.set( COOKIE_STR, str );

    if ($('basketContent').childNodes.length > 0) {
        updateTotal();
    } else {
        Element.hide('fullBasket');
        Element.show('emptyBasket');
    }
}
// ^^^ count_tools


function refresh()
{
/*
Т.к. предоплата в магазинах больше не нужна, логику расчёта предоплаты в магазинах отключили
09.02.2010 Бельский Илья


    if ($('prepayNeed')) {
        Element.show('prepay1');
        Element.hide('prepay0');
        if ($('prepayNotNeed')) {
            Element.show('prepay_different');
        } else {
            Element.hide('prepay_different');
        }
        
    } else {
        Element.show('prepay0');
        Element.hide('prepay1');
        Element.hide('prepay_different');
    }
*/

    var divs = $('basketContent').childNodes;
    var maxDelivTime = 0;
    var delivSome = true;
    for (var d=0; d<divs.length; d++) {
        var delivTime = parseInt(divs[d].getAttribute('deliv_time'));
        if (maxDelivTime != 0 && delivTime != maxDelivTime) {
            delivSome = false;
        }
        maxDelivTime = Math.max(maxDelivTime, delivTime)

    }

    $('totalDelivery').innerHTML = maxDelivTime;

    if (delivSome) {
        Element.show('delivery_some');
        Element.hide('delivery_different');
    } else {
        Element.hide('delivery_some');
        Element.show('delivery_different');
    }
}
// ^^^ refresh


// пересчитывает количество товаров и сумму
function updateTotal()
{
    var items = $A(document.getElementsByTagName('span'));
    items = items.findAll( function(item) {return item.id == 'itemPrice'} );

    var totalPrice = 0;
    for (var i = 0; i < items.length; i++) {
        totalPrice += parseFloat(items[i].innerHTML) * 100;
    }
    $('totalItems').innerHTML = items.length;
    $('totalPrice').innerHTML = totalPrice / 100;

    refresh();
}
// ^^^ updateTotal



// добавляет numb к qty товара box и прописывает эту инфу в str
function tool_updateBasketStr( str, box, numb )
{
    var qty = parseInt( box.getAttribute('qty') );
    var ids = box.id.substring(box.id.indexOf('_')+1);
    var idg = box.id.substring('entryBox'.length,box.id.indexOf('_') );

    var search  = [ids,idg,qty].join(',');
    var replace = [ids,idg,qty+numb].join(',');

    str = str.replace( search, replace );

    return str;
}
// ^^^ tool_updateBasketStr



// срабатывает при нажатии "оформить заказ"
function submitOrder( bid, ctrl )
{
    wri2cookie( bid );

    // пишем тип юзера для паши
    Cookie.set(COOKIE_UTYPE, 0);

    // если заказ из магазина, то редиректим на отдельную страничку
    //
    var url = '';
    if (document.getElementById('orderFromShopCode')) {
        //url = '/-/a/order/registration_shop/z/shopcode/' + document.getElementById('orderFromShopCode').value + '/city/' + document.getElementById('orderFromCity').value;
        //location.href = url;//'/-/a/order/registration';
        var BD = ';', DD = ',';
        var block2str = '';
        block2str += 0 + DD;
        block2str += document.getElementById('orderFromCity').value + DD;
        var address = '' + AD + '';
        block2str += address + DD;
        block2str += document.getElementById('orderFromShopCode').value + DD;
        block2str += 3 + DD;
        block2str += 2 + DD;
        block2str += 1 + BD;
        url = '/order/a/registration_shop/z/block2/' + block2str;
    } else {
        url = '/order/a/registration';
    }

    $('lightbox').className = 'loading';
    var lb = new lightbox(null);
    lb.content = url
    lb.activate();
    lb.actions();
    window.scroll(0,0);

}
// ^^^ submitOrder








// вход для зарегистрированных пользователей
//
function authorization( bid )
{
    if (bid && bid.length) wri2cookie( bid );

    // пишем тип юзера для паши
    Cookie.set(COOKIE_UTYPE, 2);

    var form = $('authForm');
//    form.action = '/-/a/order/check/z/user/old';

    if (form.login.value.length == 0) {
        alert( A('input_login') );
        form.login.focus();
        return;
    }
    if (form.password.value.length == 0) {
        alert( A('input_password') );
        form.password.focus();
        return;
    }
//    form.submit();
    
    $('lightbox').className = 'loading';
    var lb = new lightbox(null);
    lb.content = '/order/a/registration/z/user/old';
    lb.params = {};
    for (var i=0; i<form.elements.length; i++) {
        lb.params[ form.elements[i].name ] = form.elements[i].value;
    }

    lb.activate();
    lb.actions();
    window.scroll(0,0);
}
// ^^^ authorization



function changeLocation()
{
    var url = '/-/a/order/locations';

    var frameWidth=0,frameHeight=0;
    var frameLeft=0,frameTop=0;
    if (self.innerWidth) {
            frameWidth = self.innerWidth;
            frameHeight = self.innerHeight;
    } else if (document.documentElement && document.documentElement.clientWidth) {
            frameWidth = document.documentElement.clientWidth;
            frameHeight = document.documentElement.clientHeight;
    } else if (document.body) {
            frameWidth = document.body.clientWidth;
            frameHeight = document.body.clientHeight;
    }
    var width  = 400;
    var height = 400;
    var left = (frameWidth-width)/2;
    var top  = (frameHeight-height)/2;

    popitup(url,'choose_location','width='+width+',height='+height+',left='+left+',top='+top+',resizable,scrollbars');

}
// ^^^ changeLocation


