
var BasketCartObject = false;
var BasketBlockUICounter = 0;

// result catchers {{{

function BasketCartResult_get_good_cart_list(result){
	if(BasketCartObject) BasketCartObject.ParseCartData(result);
}
function BasketCartResult_add_good_cart_item(result){
	if(BasketCartObject) BasketCartObject.ParseAddResult(result);
//	alert(result);
}
function BasketCartResult_drop_good_cart_item(result){

	if(BasketCartObject) BasketCartObject.ParseDropResult(result);
//	alert(result);
}

function BasketCartResult_update_good_cart_item(result){
	if(BasketCartObject) BasketCartObject.ParseUpdateResult(result);
}

function BasketCartResult_update_good_cart_itemS(result){
//	if(BasketCartObject) BasketCartObject.ParseUpdateResult(result);
	if(BasketBlockUICounter >= 1) BasketBlockUICounter--;
	if(BasketBlockUICounter == 0) $.unblockUI();
}

function BasketResult_clear_cart_list(result){
	if(BasketCartObject) BasketCartObject.ParseClearAllResult(result);
}


// ~ result catchers }}}

function BasketCart(ajax_controller, paramlist){

	this.ajax_controller = ajax_controller;
	if(!this.ajax_controller) alert("Error: BasketCart can't find AjaxController");

	this.cur_id = 0;
	this.container_cache = new Array();
	this.paramlist = paramlist;

	this.result_callback_cache = {'add' : new Array, 'drop' : new Array, 'update' : new Array};

	BasketCartObject = this;


	this.Init = function(id, init_str){ // {{{

//alert(id);
		if(init_str){

			this.ParseCartData(init_str);
		}else{

		  var url = '/mod/api/basket/get_good_cart_list/index.htm';
		  var params = new Array;
		  params[params.length] = {'name' : 'id', 'value' : id};
		  var func = 'BasketCartResult_get_good_cart_list';

  //alert(params.length);
		  this.ajax_controller.AddTask(url, func, params);
		}

	} // }}}

	this.AddItem = function(id, callback_func){ // {{{

		var url = '/mod/api/basket/add_good_cart_item/index.htm';
		var func = 'BasketCartResult_add_good_cart_item';
		var params = new Array;
		params[params.length] = {'name' : 'id', 'value' : id};

		var plist = this.paramlist;

		for(var i=0; i<plist.length; i++){

			if(obj = document.getElementById('BasketCart_'+plist[i]+'_'+id)){
				params[params.length] = {'name' : plist[i], 'value' : obj.value};
			}
		}
		if(obj = document.getElementById('BasketCart_quant_'+id)){
			quant = parseInt(obj.value);
			if(isNaN(quant)) quant = 0;
			obj.value = quant;
			if(quant <= 0) return;
			params[params.length] = {'name' : 'quant', 'value' : obj.value};
		}
		if(obj = document.getElementById('BasketCart_price_field_'+id)){
			params[params.length] = {'name' : 'price_field', 'value' : obj.value};
		}

		this.MarkAsWorking(id);

		this.result_callback_cache['add'][id] = callback_func ? callback_func : false;

		this.ajax_controller.AddTask(url, func, params);

	} // }}}

	this.DropItem = function(id, key, callback_func){ // {{{

		var url = '/mod/api/basket/drop_good_cart_item/index.htm';
		var func = 'BasketCartResult_drop_good_cart_item';
		var params = [
								{'name' : 'id', 'value' : id},
								{'name' : 'key', 'value' : key}
								];
		this.MarkAsWorking(id);

		this.result_callback_cache['drop'][id] = callback_func ? callback_func : false;

		this.ajax_controller.AddTask(url, func, params);

	} // }}}

	this.UpdateItemQuant = function(id, key, quant, callback_func){ // {{{

		if(!quant){

			var data_tr = document.getElementById('tr_BasketCart_'+id+'_inner_data_'+key);
			var tds = data_tr.getElementsByTagName('TD');
			var old_quant = 0;
			for(var i = 0; i < tds.length; i++){
				if(tds[i].id == 'td_BasketCart_data_quant') old_quant = parseInt(tds[i].innerHTML);
			}

			quant = prompt('Укажите новое количество:', ''+old_quant);
//alert("!"+quant+"!");
			if(quant == old_quant || quant == null) return;
		}
		quant = parseInt(quant);
		if(isNaN(quant)){
			alert('Недопустимое значение количества товара!');
			return;
		}
		if(quant <= 0) return;

		var url = '/mod/api/basket/update_good_cart_item/index.htm';
		var func = 'BasketCartResult_update_good_cart_item';
		var params = [
								{'name' : 'id', 'value' : id},
								{'name' : 'key', 'value' : key},
								{'name' : 'quant', 'value' : quant}
								];

		this.MarkAsWorking(id);

		this.result_callback_cache['update'][id] = callback_func ? callback_func : false;

		this.ajax_controller.AddTask(url, func, params);
		
	} // }}}

	this.UpdateItemsQuants = function(request, callback_func){ // {{{
//		$.uiLock('<img src="/mod/files/basket/images/loading.gif" border="0">');
		if(BasketBlockUICounter == 0){
			$.blockUI({ message: '<h1><img src="/mod/files/basket/images/loading.gif" /> Пересчет заказа...</h1>' });
		}
		BasketBlockUICounter++;
		var url = request;
		var func = 'BasketCartResult_update_good_cart_itemS';
		var params = [];

//		this.MarkAsWorking();

		this.result_callback_cache['update_collacte'] = callback_func ? callback_func : false;
		this.ajax_controller.AddTask(url, func, params);
		
	} // }}}

	this.ClearCart = function(callback_func) // {{{
	{
		var url = '/mod/api/basket/clear_cart_list/index.htm';
		var func = 'BasketResult_clear_cart_list';
		var params = [];

		this.result_callback_cache['drop']['all'] = callback_func ? callback_func : false;

		this.ajax_controller.AddTask(url, func, params);

	} // }}}
	
	
	// visuals // {{{

	this.GetCartContainer = function(id){ // {{{

		if(this.container_cache[id]) return this.container_cache[id];

		var container = new Array;

		if(el = document.getElementById('dv_BasketCart_'+id)){
			container['main'] = el;
		}else{
			return false;
		}
		var fnames = this.paramlist;
//		fnames[fnames.length] = 'quant';
		container['fields'] = new Array;
		for(i = 0; i < fnames.length; i++){
			container['fields'][fnames[i]] = document.getElementById('BasketCart_'+fnames[i]+'_'+id);
		}
		container['fields']['quant'] = document.getElementById('BasketCart_quant_'+id);

//print_arr(container['fields']);

		if(el = document.getElementById('dv_BasketCart_'+id+'_inner')){

			container['inner'] = el;
			var trs = el.getElementsByTagName('TR');
			container['list'] = new Array;
			var item_prefix = 'tr_BasketCart_'+id+'_inner_';
			for(i=0; i<trs.length; i++){
				if(trs[i].id.indexOf(item_prefix) == 0){
					var item_key = trs[i].id.substring(item_prefix.length);
					container['list'][item_key] = trs[i];
				}
			}
		}
		this.container_cache[id] = container;
		return container;

	} // }}}

	this.ShowInner = function(id){ // {{{

		if(this.cur_id) this.HideInner(this.cur_id);
		
		var container = this.GetCartContainer(id);
		if(container['inner']){
			container['inner'].style.visibility = 'visible';
			this.cur_id = id;
		}

	} // }}}

	this.HideInner = function(id){ // {{{

		var container = this.GetCartContainer(id);
		if(container['inner']){
			container['inner'].style.visibility = 'hidden';
			this.cur_id = 0;
		}
	} // }}}

	this.ToggleInner = function(id){ // {{{

		if(this.cur_id == id) this.HideInner(id);
		else this.ShowInner(id);

	} // }}}

	this.MarkAsWorking = function(id){ // {{{

		var container = this.GetCartContainer(id);
		if(!container) return;

		for(var k in container['fields']){
			container['fields'][k].disabled = true;
		}


	} // }}}

	this.MarkAsFree = function(id){ // {{{

		var container = this.GetCartContainer(id);
		if(!container) return;

		for(var k in container['fields']){
			var obj = container['fields'][k];
			obj.disabled = false;
			if(obj.tagName == 'INPUT' && obj.type != 'hidden' && !obj.redOnly) obj.value = '';
			else if(obj.tagName == 'SELECT') obj.selectedIndex = 0;
		}

	} // }}}

	this.MarkAsFull = function(id){ // {{{

		if(obj = document.getElementById('BasKetCart_feindexer_'+id)){

			var ind = obj.src.lastIndexOf('/');
			var path = obj.src.substring(0, ind+1);
			var fname = obj.src.substring(ind+1);

//alert(path +"\n"+ fname);
			obj.src = path+'basket_full.gif';
		}else{
//			alert('not found marker');
		}

	} // }}}

	this.MarkAsEmpty = function(id){ // {{{

		if(obj = document.getElementById('BasKetCart_feindexer_'+id)){

			var ind = obj.src.lastIndexOf('/');
			var path = obj.src.substring(0, ind+1);
			var fname = obj.src.substring(ind+1);

//alert(path +"\n"+ fname);
			obj.src = path+'basket_empty.gif';
		}else{
//			alert('not found marker');
		}

	} // }}}

	this.StrInsertValue = function(str, param, value){ // {{{

//alert('in ('+param+' : '+value+'): '+str);
		var _str = '';

		while(str != _str){
			_str = str;
			str = _str.replace('#'+param+'#', value);
		}
//alert('out: '+str);
		return str;

	} // }}}

	this.ReDrawCart = function(id, data){ // {{{

		var main_dv = document.getElementById('dv_BasketCart_'+id);
		var inner_dv = document.getElementById('dv_BasketCart_'+id+'_inner');

		if(!main_dv || !inner_dv) return;

		var default_inner = document.getElementById('dv_BasketCart_0_inner');

		inner_dv.innerHTML = default_inner.innerHTML;

		var trs = inner_dv.getElementsByTagName('tr');
		var tbl = trs[0].parentNode;
		for(i=trs.length-1; i>=0; i--){
			tbl.removeChild(trs[i]);
		}
		var base_tr = document.getElementById('tr_BasketCart_0_inner_header');
		var new_tr = base_tr.cloneNode(true);
		new_tr.id = 'tr_BasketCart_'+id+'_inner_header';
		tbl.appendChild(new_tr);

		var cnt = 0;
		var base_tr = document.getElementById('tr_BasketCart_0_inner_data');		

		for(var key in data){
			cnt++;
			var item = data[key];

			this.AddInnerLine(id, key, item);
		}
		if(!cnt){

			var base_tr = document.getElementById('tr_BasketCart_0_inner_empty');
			var new_tr = base_tr.cloneNode(true);
			new_tr.id = 'tr_BasketCart_'+id+'_inner_empty';
			tbl.appendChild(new_tr);

			this.MarkAsEmpty(id);
		}else{
			this.MarkAsFull(id);
		}



	} // }}}

	this.AddInnerLine = function(id, key, item){ // {{{

		try{

			var main_dv = document.getElementById('dv_BasketCart_'+id);
			var inner_dv = document.getElementById('dv_BasketCart_'+id+'_inner');
			var head_tr = document.getElementById('tr_BasketCart_'+id+'_inner_header');

			var t = main_dv.id;
			t = inner_dv.id;
			t = head_tr.id;

		}catch(e){
//			this.Init(id);
			return;
		}

		if(empty_tr = document.getElementById('tr_BasketCart_'+id+'_inner_empty')){
			empty_tr.parentNode.removeChild(empty_tr);
		}
		item['id'] = id;
		item['key'] = key;

		var new_tr;
		var base_tr = document.getElementById('tr_BasketCart_0_inner_data');

		if(new_tr = document.getElementById('tr_BasketCart_'+id+'_inner_data_'+key)){
//			alert('found');
			var tds = new_tr.getElementsByTagName('TD');
			for(var i = tds.length -1; i >= 0; i--) new_tr.removeChild(tds[i]);
			var tds = base_tr.getElementsByTagName('TD');
			for(var i = 0; i < tds.length; i++) new_tr.appendChild(tds[i].cloneNode(true));
		}else{

			var tbl = head_tr.parentNode;

			new_tr = base_tr.cloneNode(true);
			new_tr.id = 'tr_BasketCart_'+id+'_inner_data_'+key;
			tbl.appendChild(new_tr);
		}

		var tds = new_tr.getElementsByTagName('TD');
		for(var i = 0; i < tds.length; i++){

			var tmpstr = tds[i].innerHTML;
//alert(tmpstr);
//print_arr(item);
			for(var k in item){
				tmpstr = this.StrInsertValue(tmpstr, k, item[k]);
			}
//alert(tmpstr);
			tds[i].innerHTML = tmpstr;
		}

		this.MarkAsFull(id);
		
	} // }}}

	this.RemoveInnerLine = function(id, key){ // {{{

		try{
			var main_dv = document.getElementById('dv_BasketCart_'+id);
			var inner_dv = document.getElementById('dv_BasketCart_'+id+'_inner');
			var inner_tr = document.getElementById('tr_BasketCart_'+id+'_inner_data_'+key);

			var t = main_dv.id;
			t = inner_dv.id;
			t = inner_tr.id;

		}catch(e){
			this.Init(id);
			return;
		}

		var tbl = inner_tr.parentNode;
		tbl.removeChild(inner_tr);

		var trs = tbl.getElementsByTagName('TR');
		var tbl_empty = true;
		for(i = 0; i < trs.length; i++){
			if(trs[i].id.indexOf('_inner_data_') > 0) tbl_empty = false;
		}
		if(tbl_empty){
			var base_tr = document.getElementById('tr_BasketCart_0_inner_empty');
			var new_tr = base_tr.cloneNode(true);
			new_tr.id = 'tr_BasketCart_'+id+'_inner_empty';
			tbl.appendChild(new_tr);

			this.MarkAsEmpty(id);
		}

	} // }}}

	// ~ visuals }}}

	 // result parsers {{{

	this.Str2Array = function(str){ // {{{

		var result = new Array();

		var parts = str.split("|");
		for(i=0; i<parts.length; i++){

			var p = parts[i].split(':');
			result[p[0]] = p[1];
		}
		return result;

	} // }}}

	this._parseResultData = function(str){ // {{{

		var data = new Array;
		var parts = str.split('#key:');

		for(var i=1; i<parts.length; i++){

			var subdata = this.Str2Array('key:'+parts[i]);
			data[subdata['key']] = subdata;
//print_arr(subdata);
		}
		return data;

	} // }}}

	this.ParseCartData = function(result){ // {{{

//		alert(result);


		if((result.indexOf("#id:") != 0) || (result.indexOf("#StartData") <= 0) || (result.indexOf("#EndData") <= 0)){
			alert("Произошла ошибка обмена данных с сервером\n Сервер вернул:\n "+result);
			return false;
		}

		var id = result.substring(4, result.indexOf('#StartData'));

		var data = new Array;
	
		var data_str = result.substring((result.indexOf('#StartData') + '#StartData'.length), result.indexOf('#EndData'));
//alert('data_str: '+data_str);
		if(data_str != ''){

			data = this._parseResultData(data_str);
		}

//		print_arr(data);

		this.ReDrawCart(id, data);

	} // }}}

	this.ParseDropResult = function(result){ // {{{

		if((result.indexOf("#id:") != 0) || (result.indexOf("#StartData") <= 0) || (result.indexOf("#EndData") <= 0)){
			alert("Произошла ошибка обмена данных с сервером\n Сервер вернул:\n "+result);
			return false;
		}

		var id = result.substring(4, result.indexOf('#StartData'));
		var data_str = result.substring((result.indexOf('#StartData') + '#StartData'.length), result.indexOf('#EndData'));
//alert(data_str);

		var data = this._parseResultData(data_str);
		
		for(var k in data){
//print_arr(data[k]);
				if(data[k]['result']){
					this.RemoveInnerLine(id, k);
				}else{
//					alert("Ошибка удаления: запись не найдена\n Сервер вернул: \n"+result);
				}
		}
		this.UpdateBasketViewer();
		this.MarkAsFree(id);
		this.CallBack('drop', id, data);

	} // }}}

	this.ParseAddResult = function(result){ // {{{

		if((result.indexOf("#id:") != 0) || (result.indexOf("#StartData") <= 0) || (result.indexOf("#EndData") <= 0)){
			alert("Произошла ошибка обмена данных с сервером\n Сервер вернул:\n "+result);
			return false;
		}

		var id = result.substring(4, result.indexOf('#StartData'));
		var data_str = result.substring((result.indexOf('#StartData') + '#StartData'.length), result.indexOf('#EndData'));

//alert(data_str);

		var data = this._parseResultData(data_str);

		for(var k in data){

//print_arr(data[k]);
			this.AddInnerLine(id, k, data[k]);
		}
		this.UpdateBasketViewer();
		this.MarkAsFree(id);
		this.CallBack('add', id, data);

	} // }}}

	this.ParseUpdateResult = function(result){ // {{{

//		alert(result);
		if((result.indexOf("#id:") != 0) || (result.indexOf("#StartData") <= 0) || (result.indexOf("#EndData") <= 0)){
			alert("Произошла ошибка обмена данных с сервером\n Сервер вернул:\n "+result);
			return false;
		}

		var id = result.substring(4, result.indexOf('#StartData'));
		var data_str = result.substring((result.indexOf('#StartData') + '#StartData'.length), result.indexOf('#EndData'));

//alert(data_str);

		var data = this._parseResultData(data_str);

		for(var k in data){

			data[k]['id'] = id;
//print_arr(data[k]);
			this.AddInnerLine(id, k, data[k]);
		}

		this.UpdateBasketViewer();
		this.MarkAsFree(id);
		this.CallBack('update', id, data);

		if(this.refresh_page){ // освежить страницу корзины, т.к. скидка может зависеть от суммы текущего заказа
//			setTimeout('location.reload(true);', 30000);
		}
		
	} // }}}

	this.ParseClearAllResult = function(result){ // {{{
		
//alert(result);
		this.CallBack('drop', 'all', result);
	} // }}}


	this.CallBack = function(action, id, data){ // {{{

		if(!this.result_callback_cache[action]) return;

		var callback_func = this.result_callback_cache[action][id];


		switch(typeof callback_func){
			case 'string':
				var _f;
				eval('try{_f = '+callback_func+'}catch(e){}');
				if(typeof _f == 'function') _f(data);
				break;
			case 'function':
				callback_func(data);
				break;
			default:
				break;
		}
			
		return;
	} // }}}

	// ~ result parsers }}}

	// order support {{{

		this.GetOrderFormElements = function(){ // {{{


			if(this.of_elements) return this.of_elements;

			var of_els = new Array();
			var key_fields = document.getElementsByName('selected[]');

			for(var i = 0; i < key_fields.length; i++){

				var gkey = key_fields[i].value;
				
				var ind = gkey.indexOf('_');
				var gid = gkey.substring(0, ind);
				var key = gkey.substring(ind + 1);

//				alert(gkey+' : '+gid+' : '+key);

				of_els[gkey] = new Array;
				of_els[gkey]['gid'] = gid;
				of_els[gkey]['key'] = key;
				of_els[gkey]['cquant'] = parseInt(document.getElementById('quant_'+gkey).value);
				of_els[gkey]['f_selected'] = key_fields[i];
				of_els[gkey]['f_quant'] = document.getElementById('quant_'+gkey);
				of_els[gkey]['f_price'] = document.getElementById('price_'+gkey);
				of_els[gkey]['f_weight'] = document.getElementById('weight_'+gkey);
			}
			this.of_elements = of_els;
			return this.of_elements;

		} // }}}

		this.GetCurrentQuant = function(gkey){ // {{{

//		alert('GetCurrentQuant('+gkey+')');

			var quant = 0;
			var of_els = this.GetOrderFormElements();
			quant = of_els[gkey].cquant;
			if(isNaN(quant) || quant <=0) quant = 0;

			return quant;

		} // }}}

		this.GetQuant = function(gkey){ // {{{

			var quant = 0;
			var of_els = this.GetOrderFormElements();
			var f_quant = of_els[gkey]['f_quant'];
			quant = parseInt(f_quant.value);
			if(isNaN(quant) || quant <=0) quant = 0;

			return quant;

		} // }}}

		this.GetItemsCount = function(){ // {{{

//	alert('GetItemsCount()');

			var cnt = 0;

			var of_els = this.GetOrderFormElements();
			for(var k in of_els){

				if(of_els[k]['f_selected'].checked){
					cnt += this.GetQuant(k);
				}
			}

			return cnt;

		} // }}}

		this.GetPrice = function(gkey){ // {{{
		
			var price = 0;
			var of_els = this.GetOrderFormElements();
			var f_price = of_els[gkey]['f_price'];
			price = parseFloat(f_price.value);
			if(isNaN(price)) price = 0;

			return price;

		} // }}}

		this.GetTotalPrice = function(){ // {{{

//	alert('GetTotalPrice()');

			var total = 0;
			var of_els = this.GetOrderFormElements();
			for(var k in of_els){
				if(of_els[k]['f_selected'].checked){
					total += (this.GetPrice(k) * this.GetQuant(k));
				}
			}
			return this.ToPriceFormat(total);
		} // }}}

		this.GetWeight = function(gkey){ // {{{

			var weight = 0;
			var of_els = this.GetOrderFormElements();
			var f_weight = of_els[gkey]['f_weight'];
			weight = parseFloat(f_weight.value);
			if(isNaN(weight)) weight = 0;
			return weight;

		} // }}}

		this.GetTotalWeight = function(){ // {{{

			var total = 0;
			var of_els = this.GetOrderFormElements();
			for(var k in of_els){
				if(of_els[k]['f_selected'].checked){
					total += (this.GetWeight(k) * this.GetQuant(k));
				}
			}
//			return this.ToPriceFormat(total);
			return total;

		} // }}}

		this.test = function(){ // {{{

//	alert('test()');

			var cnt = this.GetItemsCount();
			if(cnt){
				this.OnFull();
			}else{
				this.OnEmpty();
			}

		} // }}}

		this.Revert = function(gkey){ // {{{

//	alert('Revert('+gkey+')');
			
			this.ResetTotalCount();
			this.ResetTotalPrice();
			this.ResetTotalWeight();

			this.test();

			this.CartNeedSave(true);

		} // }}}

		this.OnEmpty = function(){ // {{{

//			alert('empty');
			try{
				document.shoppingcart.btnSubmit.disabled = true;
			}catch(e){

			}

		} // }}}

		this.OnFull = function(){ // {{{

//			alert('full');
			document.shoppingcart.btnSubmit.disabled = false;

		} // }}}

		this.OnQuantChange = function(gkey){ // {{{

			this.ResetTotalCount();
			this.ResetTotalPrice();
			this.ResetTotalWeight();

			this.CartNeedSave(true);

		} // }}}

		this.ResetTotalCount = function(){ // {{{

			var cnt = this.GetItemsCount();

			if(el = document.getElementById('totalcount')){
				el.value = cnt;
			}

		} // }}}

		this.ResetTotalPrice = function(){ // {{{

			var total = this.GetTotalPrice();
//			alert(total);
			if(el = document.getElementById('totalprice')){
				el.value = total;
			}

		} // }}}

		this.ResetTotalWeight = function(){ // {{{

			var total = this.GetTotalWeight();
			if(el = document.getElementById('totalweight')){
				el.value = total;
			}

		} // }}}

		this.ToPriceFormat = function(val){ // {{{

			return ToPriceFormat(val);
		} // }}}

		this.SaveOrder2Cart = function(refresh_page){ // {{{

			var of_els = this.GetOrderFormElements();
			request = '/mod/api/basket/update_good_cart_items/index.htm';
			goods = '';
//print_arr(of_els);
			i = 0;
			for(var gkey in of_els){
				if(of_els[gkey]['f_selected'].checked){ // изменить кол-во
					goods = goods + 'id|'+ of_els[gkey]['gid'] + ';q|' + of_els[gkey]['f_quant'].value + ';pf|price;key|'+of_els[gkey]['key']+'||';
				}else{	// удалить

					this.DropItem(of_els[gkey]['gid'], of_els[gkey]['key']);
					of_els[gkey]['f_selected'].disabled = true;
					var el = of_els[gkey]['f_selected'];
					while(el.tagName != 'TR') el = el.parentNode;
					el.style.display = 'none';
				}
			}

			if(BasketBlockUICounter == 0){
				$.blockUI({ message: '<h1><img src="/mod/files/basket/images/loading.gif" /> Пересчет заказа...</h1>' });
			}
			BasketBlockUICounter++;
			$.ajax({
				url: request,
				type: 'post',
				dataType: 'json',
				data: {goods: goods},
				success: function(data){
				  if(BasketBlockUICounter >= 1) BasketBlockUICounter--;
				  if(BasketBlockUICounter == 0) $.unblockUI();
				}
			});

//			setTimeout('location.reload(true);', 25000);
	
			this.refresh_page = refresh_page;

			this.CartNeedSave(false);
		} // }}}

		this.CartNeedSave = function(need){ // {{{

			if(!need) need = false;

			if(el = document.getElementById('tr_BasketSaveChanges')){
				el.style.display = need ? '' : 'none';
			}

		} // }}}

	// ~ order support }}}

	// basketviewer support {{{

	this.UpdateBasketViewer = function() // {{{
	{
		if(typeof UpdateBVInfo == 'function'){
			UpdateBVInfo();
		}
	} // }}}

	// ~ basketviewer support }}}

}	// ~ BasketCart


function ToPriceFormat(val){ // {{{

	val = parseFloat(val);
	if(isNaN(val)) val = 0;

	val = Math.ceil(val * 100 - 0.5) / 100;

	val = ''+val;
	ind = val.indexOf('.');
	if(ind > 0){

		a = val.substring(0, ind);
		b = val.substring(ind+1);
		b = b.substring(0,2);

		while(b.length < 2) b = b+'0';

		val = a+'.'+b;
	}else{
		val = val + '.00';
	}

//		return parseFloat(val);
	return val;

} // }}}

function print_arr(arr){ // {{{

	var i = 0;
	var total = 0;
	var str = "";

//alert(arr.length);

//	if(!arr.length) alert('empty');

	for(k in arr){

		str += k+' = '+arr[k]+"\n";
		i++;
		if(i > 20){
			alert(str);
			i = 0;
			str = '';
		}
		total++;
	}
	if(i != 0) alert(str);
	if(!total) alert('empty');

} // }}}

/* vim: set sw=2 ts=4 foldmethod=marker: */


