$.fn.shcart = function(o) {
    o = jQuery.extend({

        mInputId: 'shcartCount',
        miniCartId: 'shcart_minicart',
        initCallback: function(){},
        clickAfter: function(){},
        clickBefore: function(){},
        backendProc: '/ajax/shcart.ajax.php'
    }, o);

    var mObj = $(this);
    var iObjId = 0;
    var mInputObj = 0;
    mObj.unbind('click').bind('click', function(){mObjClick($(this))});

    function _init() {

        mObj.each(function(){
            o.initCallback($(this));

            // get available count for each object
        });
    }// func

    function refreshCart() {
        
        var requestObj    = new Object;
        requestObj.cmd    = 'getMiniCart';
        $.post(o.backendProc, requestObj, function(sResponse){
            $('.'+o.miniCartId+' .cart1').html(sResponse);
        });
        
    }// func

    function mObjClick(e) {
        
		iObjId = e.attr('ItemId');
		
        mInputObj = $('.'+o.mInputId+'[ItemId='+iObjId+']');
        //console.log('.'+o.mInputId+'[ItemId='+iObjId+']');

        o.clickBefore(e);

        // send command for add new item in stack
        var requestObj    = new Object;
        requestObj.cmd    = 'setItem';
        requestObj.count  = mInputObj.val()*1;
        if(!requestObj.count) {
            alert('Введенные данные неверны!');
            return;
        }
        requestObj.itemId = iObjId;
        $.post(o.backendProc, requestObj, function(sResponse){
            // get response
            refreshCart();
            o.clickAfter(e, sResponse);
        });
    }// func

    _init();

}// root


function Order() {

    this.backendProc = '/ajax/shcart.ajax.php';

    this.recountItem = function (iItemId, iCount) {
        iCount = iCount*1;
        
        if(!iCount || iCount<0) {
            alert('Количество должно быть целым положительным числом!');
            return false;
        }

        var requestObj    = new Object;
        requestObj.cmd    = 'setItem';
        requestObj.count  = iCount;
        requestObj.itemId = iItemId;
        $.post(this.backendProc, requestObj, function(sResponse){

            var oResponse = eval('('+sResponse+')');

            /*цена измененной единицы*/
            for (var oItem in oResponse.items)
                if(oResponse.items[oItem].item_id == iItemId)
                    $('.countPrice[rel='+iItemId+']').html(oResponse.items[oItem].price);

            /*общая цена*/
            $('#total_price').html(oResponse.price);

        });
    }// func

    this.delItem = function (iItemId) {

        if(!confirm('Вы действительно хотите удалить товар из корзины!')) return false;
        
        var requestObj    = new Object;
        requestObj.cmd    = 'delItem';
        requestObj.itemId = iItemId;
        $.post(this.backendProc, requestObj, function(sResponse){

            var oResponse = eval('('+sResponse+')');

            if(sResponse) {
                $('.cartObject[rel='+iItemId+']').empty();
                $('#total_price').html(oResponse.price);

                /*товаров не осталось - прячем корзину*/
                if(!oResponse.count) {
                    $('.m-basket').hide();
                    $('.m-basket-empty').show();
                }
            } else {
                alert('В процессе удаления позиции произошла ошибка! Попробуйте еще раз.');
            }
        });
    }// func

    this.delItemAll = function() {

        if(!confirm('Вы действительно хотите удалить все товары!')) return false;

        var requestObj    = new Object;
        requestObj.cmd    = 'delItemAll';

        $.post(this.backendProc, requestObj, function(sResponse) {
            if(sResponse) {
                $('.m-basket').hide();
                $('.m-basket-empty').show();
            }
        });
    }// func

    this.fillOrder = function() {
        window.location = '?cmd=fillOrder&showform=1';
    }// func
} //class

var oOrder = null;

$(function(){

    oOrder = new Order();
    
    $('.shcartBtn').shcart({

        clickAfter: function(){
            alert('Товар успешно добавлен в корзину!');
        }
    });// shcart

    //$('.')
});


