﻿
var cart = {
      name: 'CART.INGALIATOR'
    , emptyCart: 'Вы пока ничего не&nbsp;заказали'
    , one_model: 'Вы #hrefзаказали #qty&nbsp;#model на&nbsp;сумму #total&nbsp;руб.'
    , several_models: 'Вы #hrefзаказали #qty&nbsp;товар@ на&nbsp;сумму #total&nbsp;руб.'
    , base_url: '/Cart/'

      //add a new itme to cart
    , add: function (id, name, price, num) {
        var name1 = name;
        var total_num = 0;
        var total_price = 0;
        var items;
        
        price = parseFloat(price.replace(',','.'));
        
        var cart_cookie = $.cookie(cart.name);
        if( cart_cookie ) {
            items = cart_cookie.split('#')[3];
        }
//        debugger;
        
        if( !items || items == '' ) {
            found = false;
            items = '';
        }
        else {
            var all_itmes = items.split(';');
            var triplet = [];
            var couple = [];
            var numi;
            var found = false;;
            items = '';
            //id>number$price;
            for( var i = 0; i < all_itmes.length-1; i++ ) {
                triplet = all_itmes[i].split('>');
                couple = triplet[1].split('$');
                numi = parseInt(couple[0]);
                total_num += numi;
                total_price += numi*parseFloat(couple[1]);
                if( triplet[0] == id ) {
                    total_num += num;
                    total_price += num*price;
                    triplet[1] = (numi+num).toString() +'$'+ couple[1];
                    found = true;
                }
                else
                    name1 = '';
                items += triplet[0]+'>'+triplet[1] +';';
            }

        }
        if(!found) {
            total_num += num;
            total_price += price;
            items += id.toString()+'>'+num.toString()+'$'+price.toString()+';';
        }        
        //single name#total_num#total_price#all_items;
        $.cookie(cart.name, name1+'#'+total_num+'#'+total_price+'#'+items, {expires: 14, path: '/'});
        recalc();
    }
    
      //removes all items from the cart
    , clear: function () {
        $.cookie(cart.name, null, {path:'/'});
    }
    
    , get: function () {
        var cart_cookie = $.cookie(cart.name);
        if(!cart_cookie)
            return cart.emptyCart;
        var items = cart_cookie.split('#');
        var q = parseInt(items[1]);
        if(q == 0)
            return cart.emptyCart;
        
//        debugger;
        
        var rx = /#href([A-Z,a-z,А-Я,а-я]+)/;
        if(items[0] && items[0]!='')
            return cart.one_model.replace('#qty', q==1?'':q.toString())
                                 .replace('#model', items[0])
                                 .replace('#total', round(parseFloat(items[2])))
                                 .replace(rx,"<a href='"+cart.base_url+"'>$1</a>");
        else {
            var ending = '';
            if(q>20) q=q-parseInt(q/10)*10;
            if(q==0) q=10;
			if( q == 1 )		ending = '';
			else if( q <= 4 )	ending = 'а';
			else				ending = 'ов';
            return cart.several_models.replace('#qty', items[1]=='1'?'':items[1]).replace('#total', round(parseFloat(items[2])))
                                                                                 .replace('@', ending)
                                                                                 .replace(rx,"<a href='"+cart.base_url+"'>$1</a>");
        }
    }
    
    , remove: function (id) {
        var cart_cookie = $.cookie(cart.name);
        if(!cart_cookie)
            return;
        var items = cart_cookie.split('#')[3];
        if(!items)
            return;
        
        var name1 = ''; //TODO: придумть механизм восстановления
        var all_itmes = items.split(';');
        var total_num = 0;
        var total_price = 0;
        var triplet = [];
        var couple = [];
        var numi = '';
        items = '';
        //id>number$price;
        for( var i = 0; i < all_itmes.length-1; i++ ) {
            triplet = all_itmes[i].split('>');
            if( triplet[0] != id ) {
                couple = triplet[1].split('$');
                numi = parseInt(couple[0]);
                total_num += numi;
                total_price += numi*parseFloat(couple[1]);
                triplet[1] = numi.toString() +'$'+ couple[1];
                items += triplet[0]+'>'+triplet[1] +';';
            }
        }
        
        $.cookie(cart.name, name1+'#'+total_num+'#'+total_price+'#'+items, {expires: 14, path: '/'});
        recalc();
    }
    , set: function (id, qty) {
        var cart_cookie = $.cookie(cart.name);
        if(!cart_cookie)
            return;
        var o = cart_cookie.split('#');
        var items = o[3];
        if(!items)
            return;
        var name1 = o[0]; //TODO: придумть механизм восстановления
        var all_itmes = items.split(';');
        var total_num = 0;
        var total_price = 0;
        var triplet = [];
        var couple = [];
        var numi = '';
        items = '';
        //id>number$price;
        for( var i = 0; i < all_itmes.length-1; i++ ) {
            triplet = all_itmes[i].split('>');
            couple = triplet[1].split('$');
            if( triplet[0] != id )
                numi = parseInt(couple[0]);
            else
                numi = parseInt(qty);
            total_num += numi;
            total_price += numi*parseFloat(couple[1]);
            triplet[1] = numi.toString() +'$'+ couple[1];
            items += triplet[0]+'>'+triplet[1] +';';
        }
        
        $.cookie(cart.name, name1+'#'+total_num+'#'+total_price+'#'+items, {expires: 14, path: '/'});
        recalc();    }
};

function curt_info() {
//    var cart_cookie = $.cookie(cart.name);
};

/*
 *	returns a string expression, rounded to two signs
 ************************************************************************/
function round( x, displayNilsAfterPoint ) {
//	return x.toLocaleString();
	var ch;
	var str= (Math.round(x*100)/100).toLocaleString();
	var index = 0;
	ch = str.charAt(index);
	str = ( ch == '.' || ch == ',' ) ? '0' + str : str;
	
	var point = str.indexOf('.');
	if(point==-1) point = str.indexOf(',');
	if(point>=0){
	    if(displayNilsAfterPoint){
	        str+='00';
	        return str.substring(0, point+3);
		}
	    else{
	        return str.substring(0, point);
	    }
	}
	else{
	    if(displayNilsAfterPoint){  
	        return str+',00';
	    }
	    else{
	        return str;
	    }
	}
}
