// trida kosik
function Basket(web){
	var basket = new Array();
	var basketPom = new Array();	//pomocne pole s kody a cenami vyrobku
	
	//private metody
    var save = save;
    var load = load;
    var savePom = savePom;
    var loadPom = loadPom;
    
    //public metody
    this.add = add;
    this.del = del; 
    this.update = update; 
    this.clear = clear; 
    this.drawSimple = drawSimple; 
    this.drawFull = drawFull; 
	
    //ulozeni dat do cookie
	function save(){
		if(!basket.length){
			$.cookie('basket', null, {path: '/'});
		} else {
			var value='';
			for(var key in basket){
				value += ','+key+'='+basket[key];
			}
			value = value.substr(1);
			$.cookie('basket', value, {path: '/'});
		}
	}
	
	//nacteni dat z cookie
	function load(){
		var values = $.cookie('basket');
		if(values == null){
			if(basket.length){
				basket = new Array();
			}
		} else {
			values = values.split(',');
			for(var i=0; i<values.length; ++i){
				values[i] = values[i].split('=');
				var count = parseInt(values[i][1]);
				if(isNaN(count)){
					continue;
				}
				basket[parseInt(values[i][0])] = count;
			}
		}
	}

	
    //ulozeni dat do pomocne cookie - kody a ceny vyrobku
	function savePom(){
		if(!basketPom.length){
			$.cookie('basketPom', null, {path: '/'});
		} else {
			var value='';
			for(var key in basketPom){
				value += '***'+key+'='+basketPom[key]['kod']+'|'+basketPom[key]['cena'];
			}
			value = value.substr(1);
			$.cookie('basketPom', value, {path: '/'});
		}
	}
	
	//nacteni dat z pomocne cookie cookie
	function loadPom(){
		var values = $.cookie('basketPom');
		if( ! values){
			if(basketPom.length){
				basketPom = new Array();
			}
		} else {
			values = values.split('***');
			for(var i=0; i<values.length; ++i){
				values[i] = values[i].split('=');
				var key = parseInt(values[i][0]);
				values[i][1] = values[i][1].split('|');
				basketPom[key] = new Array();
				basketPom[key]['kod'] = values[i][1][0];
				basketPom[key]['cena'] = parseInt(values[i][1][1]);
			}
		}
	}

	//vlozeni vyrobku
	function add(id,count){
		if(basket[id]==undefined){
			basket[id] = count;
		} else {
			basket[id] += count;
		}
		save();
	}
	
	//odstraneni vyrobku
	function del(id){
		delete basket[id];
		delete basketPom[id];
		$('#simple_basket_row_'+id).remove();
		save();
		savePom();
		if(web == 'romantik' && $('#action_basket_basket tr[id^=simple_basket_row_]').length < 1){
			$('#action_basket_basket').hide();
		}
		if($('#order_form').length){
		  drawFull();
    	}
	}
	
	//zmena poctu kusu vyrobku
	function update(id,count){
		basket[id] = count;
		if(count < 1 || isNaN(count) || count==''){
			del(id);
		}
		save();
		if($('#order_form').length){
		  $('#order_form #full_basket_row_'+id+' .order_count').val(count);
		  drawFull();
    	}
	}
	
	//smazani obsahu
	function clear(){
		for(var key in basket){
			$('#simple_basket_row_'+key).remove();
		}
		basket = new Array();
		basketPom = new Array();
		save();
		savePom();
		if($('#order_form').length>0){
			window.location.href = './';
		}
		drawSimple();
	}
	
	
	//smazani radku s vyrobky ktere nejsou v kosiku
	function deleteOldRows(table,rowId){
		$('table'+table+' tr').each(function(){
			var id = $(this).attr('id');
			if(id && id.indexOf(rowId+'_basket_row_')===0){
				id = parseInt(id.replace(rowId+'_basket_row_',''));
				if(!basket[id]){
					$('#'+rowId+'_basket_row_'+id).remove();
				}
			}
		});		
	}
		
	//vykresleni jednoducheho kosiku vlevo
	function drawSimple(){
		if(basket.length && $('#infonav .basket_not_logged').length < 1){
			if($('#action_basket_basket, #basket').length < 1){
				return;
			}
			$('#action_basket_sleva').hide();
			$('#action_basket_basket_empty').hide();
			$('#action_basket_basket, #basket').show();
			
			//smazani radku s vyrobky ktere nejsou v kosiku
			deleteOldRows('.basket_table','simple');
			
			priceAll = 0;
			for(var key in basket){
				//zmena existujiciho radku
				if($('#simple_basket_row_'+key).length){
					if(web == 'ima'){
						var count = parseInt( $('#simple_basket_row_'+key+' .prod_item').text() );
						$('#simple_basket_row_'+key+' .prod_item').text(basket[key]);
						var price = parseInt($('#simple_basket_row_'+key+' .prod_price').text()) / count;
						price *= basket[key];
						$('#simple_basket_row_'+key+' .prod_price').text(price);
					} else {
						var count = parseInt( $('#simple_basket_row_'+key+' .prod_item :text').val());
						$('#simple_basket_row_'+key+' .prod_item :text').val(basket[key]);
						var price = parseInt($('#simple_basket_row_'+key+' .prod_price span').text()) / count;
						price *= basket[key];
						$('#simple_basket_row_'+key+' .prod_price span').text(price);
					}
				//vlozeni noveho radku
				} else if(basket[key]) {
					if(basketPom[key] != undefined){
						var kod = basketPom[key]['kod'];
						var price = basketPom[key]['cena'];
					} else {
						var kod = '';
						var price = 0;
						if(web == 'ima'){
							kod = $('#prod_row_'+key+' .prod_ID').val();
							price = parseInt($('#prod_row_'+key+' .prod_price').val());
						} else {
							kod = $('#prod_row_'+key+' .prod_ID').text();
							price = parseInt($('#prod_row_'+key+' .prod_price span').text());
						}
						//ulozeni do pomocne cookie
						basketPom[key] = new Array();
						basketPom[key]['kod'] = kod;
						basketPom[key]['cena'] = price;
						savePom();
					}
					price *= basket[key];
					if(web == 'ima'){
						var odity = $('#action_basket_basket_bottom').hasClass('even') ? 'even' : 'odd';
						$('#basket .basketspecial').before('<span class="basketitem" id="simple_basket_row_'+key+'">'+
							'<span class="prod_item">'+basket[key]+'</span>'+
							'<span class="prod_ID">'+kod+'</span>'+
							'<span class="prod_price">'+price+'</span>'+
						'</span>');
					} else {
						$('#bask_toorder').before('<tr id="simple_basket_row_'+key+'">'+
							'<td class="prod_ID bask_name">'+kod+'</td>'+
							'<td class="prod_price"><span>'+price+'</span>,-</td>'+
							'<td class="prod_item bask_count"><input type="text" size="1" value="'+basket[key]+'" />ks</td>'+
							'<td class="bask_del"><a href="#" title="odebrat z košíku">X</a></td>'+
						'</tr>');
					}
				}
				priceAll += price;
			}
			$('.basket_suma span').text(priceAll);
		} else if(web != 'ima' || $('#left_nav').length != 1) {
			$('#action_basket_sleva').show();
			$('#action_basket_basket, #basket, #infonav .basket_not_logged').hide();
		}
	}
	
	
	//upraveni plneho zobrazeni kosiku - bude se jen upravovat existujici kod (prepocitavat hodnoty)
	function drawFull(){
		priceAll = 0;
		deleteOldRows('#order_form','full');
		for(var key in basket){
			if($('#full_basket_row_'+key).length){
				var tr = $('#full_basket_row_'+key);
				var price =  parseInt($('.prod_price_ks span', tr).text()) * basket[key];
				if(web == 'ima'){
					$('.prod_price input', tr).val(price);
					$('.prod_price_dph input', tr).val( Math.ceil( price * (parseFloat($('.dph_value', tr).text())/100 + 1) ) );
				} else {
					$('.prod_price span', tr).text(price);
				}
				priceAll += price;
			}
		}
		if(priceAll < 1){
			window.location.href = './';
		}
		var priceS = priceAll;
		if(web == 'ima'){
			priceS = Math.ceil( priceAll * (parseFloat($('.dph_value:first').text())/100 + 1) );
		}
		if(web == 'romantik'){
			if(priceAll >= 1000){
				transport = 0;
				$('.table_order .order_transport_price').each(function(){
					if($(this).text() != '0'){
						$(this).data('price', $(this).text());
						$(this).text('0');
					}
				});
			} else {
				$('.table_order .order_transport_price').each(function(){
					if($(this).data('price')){
						$(this).text($(this).data('price'));
					}
				});
				var transport = parseInt($('.table_order tr:has(.order_transport:checked) .order_transport_price').text());
				if(isNaN(transport)){
					transport = 0;
				}
			}
			priceAll += transport;
			priceS += transport;
		}
		if(web == 'ima'){
			$('.order_pricerow_bez').val(priceAll);
		} else {
			$('.order_pricerow_bez').text(priceAll);
		}
		$('.order_pricerow_s').val( priceS );
	}
	
	
	load();
	loadPom();
	drawSimple();
	
	
	//inicializace
	if(web == 'ima'){
		$('#action_basket_basket').scrollFollow({
			container: 'container',
			offset: 150,
			speed: 2000
		});
	}
	$('input.basket_reset').click(function(){
		clear();
		drawSimple();
	});
	
	
	
	//kosik na samostatne strance - objednavka
	if($('#order_form').length){
		$('#order_form .order_count').keyup(function(){
			if($(this).val() == ''){
				return;
			}
			val = parseInt($(this).val());
			if(val.length > 0 && val>0){
				update(parseInt(this.name.split(/\[|\]/)[1]), val);
			}
			drawFull();
			drawSimple();
			if(priceAll < 1){
				clear();
			}
		});
		$('#order_form .order_count').change(function(){
			update(parseInt(this.name.split(/\[|\]/)[1]), parseInt($(this).val()));
			drawFull();
			drawSimple();
			if(priceAll < 1){
				clear();
			}
		});
		if(web == 'romantik'){
			$('.table_order .order_transport').click(function(){
				drawFull();
			});
		}
		
		$('.order_delete').click(function(){
			del(parseInt(this.name.split(/\[|\]/)[1]));
			drawFull();
			drawSimple();
			return false;
		});

		$('.basket_change_col, .basket_change_col_td', '#order_form').remove();
		
		$('#register_reset').click(function(){
			clear();
			return false;
		});
		
		$('.order_aromas').click(function(){
			var width = 200;
			var height = 400
			window.open(this.href, '_blank', 'width='+width+',height='+400+',toolbar=no,scrollbars=yes,status=no,menubar=no,resizable=yes,left='+((screen.availWidth-width)/2)+',top='+((screen.availHeight-height)/2));
			return false;
		});
		
		drawFull();
	}
}

(function($){
	$.extend({
		basket: function(web){
			var priceAll = 0;
			var basket = new Basket(web);

			if(web == 'ima'){
				$('form.product_form').submit(function(){
					var inputs = $(':text', this);
					if(inputs.length > 0){
						$(inputs).each(function(i){
							var val = parseInt($(this).val());
							if(val>0){
								basket.add(parseInt(this.name.split(/\[|\]/)[1]), val);
							}
							$(this).val('1');
						});
					}
					basket.drawSimple();
					return false;
				});
			} else {
				$('form.product_form :submit:not(.order_delete)').click(function(){
					basket.add(parseInt( $('input:hidden[name=id]', $(this).closest('tr')).val() ), 1);
					basket.drawSimple();
					jqDialog.notify('zboží bylo přidáno do košíku', 3);
					return false;
				});
				$('#action_basket_basket .bask_del a').live('click', function(){
					basket.del(parseInt(  $(this).closest('tr').attr('id').replace('simple_basket_row_', '') ));
					return false;
				});
				$('#action_basket_basket .bask_count input').live('change', function(){
					basket.update(parseInt( $(this).closest('tr').attr('id').replace('simple_basket_row_', '') ), parseInt($(this).val()));
					return false;
				});
			}
			
			$('.prod_item input:text,.order_count').onlyInt();
		}
	});
})(jQuery)
