
function basketObject(cookieName)
{
    this.items = new Array();
    this.productsCounter;
    this.priceCounter;
    
    this.basketCookie = new cookieObject(cookieName, 30, "/", "products");
    if (this.basketCookie.found)
    {
        var products=this.basketCookie.get("products");
        if(products)
        {
            var pTmpArray = products.split('_');
            for(var i=0,j=0;i<pTmpArray.length;i+=3,j++)
            {
                this.items[j] = new Object();
                this.items[j].id = pTmpArray[i];
                this.items[j].count = pTmpArray[i+1];
                this.items[j].price = pTmpArray[i+2];
            }
        }
    }
    this.count();
}

basketObject.prototype.count = function()
{
    this.productsCounter=this.priceCounter=0;
    for(var i=0; i < this.items.length; i++)
    {
        this.productsCounter = Number(
            parseFloat(this.items[i].count) + parseFloat(this.productsCounter)
        ).toFixed(0);
        this.priceCounter = Number(
            parseFloat(this.priceCounter) +
            parseFloat(this.items[i].count) * parseFloat(this.items[i].price)
        ).toFixed(2);
    }
    this.priceCounter = Math.round(this.priceCounter*100)/100;
}

basketObject.prototype.save = function()
{
    var cookieStr = "";
    for(var i = 0; i < this.items.length; i++)
    {
         cookieStr += this.items[i].id + '_' +
             this.items[i].count + '_'+
                this.items[i].price;
         if(i<this.items.length-1)
             cookieStr += '_';
    }
    this.basketCookie.put("products",cookieStr);
    this.basketCookie.write();
}

basketObject.prototype.addItem = function(id,count,price,update)
{
    var tmpObj = new Object();
    tmpObj.id = id;
    tmpObj.count = Number( parseFloat(count) ).toFixed(0);
    tmpObj.price = price;
    var idx;
    idx = this.findItem(id);
    if(idx > -1)
    {
        if(count == 0)
        {
            //this.deleteItem(id);
            return;
        }
        else
        {
            if(update)
                this.items[idx] = tmpObj;
            else
            {
                tmpObj.count = Number(
                    parseFloat(tmpObj.count)+parseFloat(this.items[idx].count)
                ).toFixed(0);
                this.items[idx] = tmpObj;
            }
        }
    }
    else {
        this.items[this.items.length] = tmpObj;
    }

    this.save();
}

basketObject.prototype.delItem = function(id)
{
    // удаление из корзины посредством обнуления кол-ва товаров и скрытия строки
    var countEl  = document.getElementById("count"+id);
    var countOld = parseFloat(countEl.value);
    countOld = Number(countOld);
    var countNew;
    var value = (Number(0) - Number(countOld)).toFixed(0);
    value = Number(value);
    
    // изменяем количество товара
    countNew = Number(countOld + value).toFixed(0);
    countNew = Number(countNew);

    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);

    // скрываем строку или всю таблицу
    if ( Number(parseFloat(document.getElementById("totalQuantity").innerHTML)) > 0 ) {
        document.getElementById('tr'+id).style.display = 'none';
    } 
    else {
        document.getElementById('order_form').style.display = 'none'; 
        document.getElementById('no_order_form').style.display = 'block'; 
    }         
}

basketObject.prototype.deleteItem = function(id)
{
    for(var i = 0;i<this.items.length;i++)
    {
        if(this.items[i].id == id)
        {
            this.items.splice(i,1);
            break;
        }
    }
}

basketObject.prototype.findItem = function(id)
{
    for(var i=0; i < this.items.length; i++)
    {
        if(this.items[i].id == id)
            return i;
    }
    return -1;
}

