var basket = new basketObject("naubasket");

function addToBasket(id,noEcho)
{
    var count = document.getElementById("count"+id).value;
    var price = document.getElementById("price"+id).innerHTML;
    if(checkInteger(count))
    {
        basket.addItem(id,count,price);
        if(count > 0)
        {
            animateBasket(id,1);
            redrawBasket();
        }
    }
    else
        if(!noEcho)
            alert("Количество товара задано неверно!");
}

function delFromBasket(id,noEcho)
{
    basket.delItem(id);
    redrawBasket();
}

function redrawBasket()
{
    basket.count();
    var sumStrSpan = document.getElementById("sumStrSpan");

    if(sumStrSpan)
    {
        var priceUnit = document.getElementById("priceUnit");
        var namesObj = document.getElementById("basketProductQuantity");
        var subObj = document.getElementById("basketPrice");
        var breakSpan = document.getElementById("breakSpan");

        sumStrSpan.className =
        priceUnit.className =
        (basket.productsCounter)? 'visSpan' : 'hiddenSpan';
        namesObj.innerHTML = (basket.productsCounter==0)?
            "нет товаров" :
            basket.productsCounter + ' ' +
                getNumeral(basket.productsCounter,["товар","товара","товаров"]);
        subObj.innerHTML = String(addZeroes(basket.priceCounter));
        breakSpan.className =
        (basket.productsCounter)? 'hiddenSpan' : 'visSpan';
    }
}

function addZeroes(number)
{
    if(number > Math.floor(number))
    {    number = Number(number).toFixed(2); }
    return number;
}

function checkInteger(number)
{
    return (number.search("^\\d+$") != -1)? true : false;
}

function showProducts()
{
    var items = basket.items;
    for(var i=0; i < items.length; i++)
    {
        var pr = document.getElementById("count" + items[i].id);
        if(pr)
            pr.value = items[i].count;
    }
}

function changeQuality(id,value,update)
{
    var countEl  = document.getElementById("count"+id);
    var countOld = parseFloat(countEl.value);
    var countNew;

    if( value > 0 || countOld > 0 )
    {
        // изменяем количество товара
        countNew = (update)? value : Number(countOld + value).toFixed(0);
        if( value == 1 || value == -1 ) {
            countNew = Number(countNew).toFixed(0);
            countNew = Number(countNew).toFixed(0);
        }
        countEl.value = countNew;
        var price = parseFloat(document.getElementById("price"+id).innerHTML);
        var tPrice = document.getElementById("tp"+id);

        // пересчитываем общую стоимость товаров этого вида
        tPrice.innerHTML =
            Number(price * countNew).toFixed(2);

        // изменяем глобальные параметры формы
        showTotal(
            Number(
                parseFloat(document.getElementById("totalQuantity").innerHTML) + value
            ).toFixed(0),
            Number(
                parseFloat(document.getElementById("totalPrice").innerHTML) + price*value
            ).toFixed(2)
        );

        // добавляем в корзину
        basket.addItem(id,value,price);
    }

    // при необходимости отключаем декремент
    var decImgClass,decDisabledImgClass;
    if(countNew == 0)
    {
       decImgClass = "disabledDec";
       decDisabledImgClass = "enabledDec";
    }
    else
    {
       decImgClass = "enabledDec";
       decDisabledImgClass = "disabledDec";
    }
    document.getElementById("dec"+id).className=decImgClass;
    document.getElementById("decdisabled"+id).className=decDisabledImgClass;
}

function synchronizeBasket()
{
    for(var i=0; i < basket.items.length; i++)
    {
        var countEl = document.getElementById("count"+basket.items[i].id);
        var countNew = parseFloat(countEl.value);
        if( countNew >= 0 )
        {
            countNew = Number(countNew).toFixed(0);
            countEl.value = countNew;

            // изменяем количество товаров этого вида
            basket.items[i].count = countNew;
            // пересчитываем общую стоимость товаров этого вида
            var tPrice = document.getElementById("tp"+basket.items[i].id);
            tPrice.innerHTML =
                Number(
                    parseFloat(basket.items[i].count) *
                    parseFloat(basket.items[i].price)
                ).toFixed(2);

        }
    }
    // пересчитываем корзину
    basket.count();
    // выводим общее количество товаров
    showTotal(basket.productsCounter,basket.priceCounter);
    basket.save();
    redrawBasket();
}

function changeInteractive(id)
{
    var countEl = document.getElementById("count"+id);
    var countNew = parseFloat(countEl.value);
    if( countNew >= 0 )
    {
        countNew = Number(countNew).toFixed(0);
        countEl.value = countNew;

        // синхронизируем корзину
        synchronizeBasket();
        // изменяем стрелочки для товара если нужно
        initOrderPage();
    }

}

function selectValue(id)
{
    var count = document.getElementById("count"+id);
    count.select();
}

function initOrderPage()
{
    // в зависимости от количества товаров
    // выводим стрелочку "минус один товар"
    for(var i = 0; i < basket.items.length; i++)
    {
        var countEl = document.getElementById("count"+basket.items[i].id);
        var countNew = parseFloat(countEl.value);
        if(countNew >= 0)
        {
            var decImage = document.getElementById("dec"+basket.items[i].id);
            var decDisabledImage =
                document.getElementById("decdisabled"+basket.items[i].id);
            if(countNew > 0)
            {
                decImage.className = "enabledDec";
                decDisabledImage.className = "disabledDec";
            }
            else
            {
                decImage.className = "disabledDec";
                decDisabledImage.className = "enabledDec";
            }
            document.getElementById("inc"+basket.items[i].id).className =
                "enabledInc";
        }

    }
}

// проверка формы заказа
function checkOrder(forma)
{
    with(forma)
    {
        if( customer.value &&
            phone.value && street.value && house.value &&
            deliveryTime.value)
            return true;
        else
        {
            var str = "Необходимо заполнить поля:";

            if(!customer.value) str+= "\nИмя";
            if(!phone.value) str+= "\nТелефон";
            if(!street.value || !house.value) str += "\nАдрес доставки";
            if(!deliveryTime.value) str += "\nЖелаемое время доставки";
            alert(str);
            return false;
        }
    }
}


//подбор числительного
//на входе:
//1) число
//2) массив форм слова:
//'ящик','ящика','ящиков'
//на выходе: числительное
function getNumeral(num, words)
{
	num = String(num);
	var last = Number(num.substring(num.length-2,num.length));
	var res;
	if(last >= 5 && last <= 20)
		res = words[2];
	else
    {
        last = Number(num.substring(num.length-1,num.length));
        if(last == 1)
            res = words[0];
        else if(last>1 && last<=4 )
            res = words[1];
        else
            res = words[2];
	}
	return res;
}

// данные для анимации корзины
var bimages = ["/static/images/design/buy_this.gif","/static/images/design/buy_ok.gif"];
var waitAdd = 500;

function animateBasket(id,state)
{
    var imgObj = document.getElementById('sb'+id);
    imgObj.src = (state)? bimages[1] : bimages[0];
    imgObj.alt = "добавить еще один";
    imgObj.title = "добавить еще один";    

    if( imgObj2 = document.getElementById('sb_mini'+id) ) {
        // если функция вызывается из мини-окна с товаром
        imgObj2.src = (state)? bimages[1] : bimages[0];
        imgObj2.alt = "добавить еще один";
        imgObj2.title = "добавить еще один";
    }

    if(state) {
        setTimeout("animateBasket('"+id+"',0)", waitAdd);
    }
}


//расчет скидок
// на входе - общая сумма товаров и флаг вывода сообщения о скидке
// на выходе - сумма за вычетом скидки
//
function getDiscont(cost,msg,getDiscontPerc)
{
    var perc = 0;
    var msgBox;
    var message;
    var msgFlag=0;

    if(cost >= 1000 && cost < 3000)
        perc=0;
    else if(cost >= 3000)
        perc=0;

    if(getDiscontPerc)
        return perc;
    else
        return (cost - (cost/100*perc) + getDeliveryCost(cost)).toFixed(2);
}

// расчет стоимости доставки
function getDeliveryCost(cost)
{ return (cost >= 1000)? 0 : ((cost!=0)? 150 : 0); }

//вывод на форму общего количества товаров
//и цены
//на входе:
//- количество
//- цена
function showTotal(quantity,cost)
{
    // общее кол-во товаров
    var totalQuantity = document.getElementById("totalQuantity");
    totalQuantity.innerHTML = quantity;

    // выводим общую стоимость всех товаров
    var totalPrice = document.getElementById("totalPrice");
    totalPrice.innerHTML = Number(cost).toFixed(2);
    // выводим стоимость доставки
    var deliveryCost = document.getElementById("deliveryCost");
    deliveryCost.innerHTML = Number(getDeliveryCost(cost)).toFixed(2);
    // выводим цену к оплате
    var finalCost = document.getElementById("finalCost");
    finalCost.innerHTML = Number(getDiscont(cost,1)).toFixed(2);
    // выводим процент скидки
    var discontPerc = document.getElementById("discontPerc");
    discontPerc.innerHTML = getDiscont(cost,null,1)+"%";
}

