var Koszyk = new Class({
		Implements: Options,
		options: {
			produkt_selector:'produkt',
			dodaj_div:'produkt-dodaj',
			links_selector:'a.add',
			koszyk_id:'koszyk',
			koszyk_mesg:'koszyk_messages',
			koszyk_lista:'koszyk-lista',
			pre_id:'produkt_',
			pre_wersja:'wersja_',
			parent_element:'div.produkt_parent',
			cena_element:'.cena',
			url_add_produkt:'/add_product',
			url_remove_produkt:'/remove_product',
			url_set_count:'/set_count',
			url_get_all:'/get_koszyk',
			url_reset:'/clean_koszyk',
			url_zamowienie:'/zamowienie',
			kwota_przesylki:'',
			lang:'pl',
			pokaz_link_zamowienia:true
		},
		initialize: function( options )	{
			
			this.value = 0;
			this.count = 0;
			this.produkty = [];
			this.lang = options.lang;

			/*this.waiter = new Element('img', {
					id:'imworking',
					style:'padding-left:15px',
					src:'/images/koszyk-pusty.gif'
			});*/
			
			this.icon = new Element('div');
			
			$(this.options.koszyk_id).getParent('div.grid_3').getElement('p.sidebox_header').grab( this.icon );
			$(this.options.koszyk_id).getParent('div.grid_3').getElement('p.sidebox_header').setStyle('position', 'relative');
			this.icon.setStyles({
				'position':'absolute',
				'bottom':'5px',
				'right':'0px',
				'width':'30px',
				'height':'30px',
				'background-image':"url('/images/koszyk.gif')",
				'background-position':'right 0px',
				'background-repeat':'no-repeat'
			});
			
			
			this.setOptions(options);
			
			$$('.'+this.options.dodaj_div).each( function(l) {
				l.fade('hide');
			});
			
			this.syncProdukts();
		},
		syncProdukts: function()	{

			// wczytanie koszyka
			this.koszykSession = new Request.JSON({
				url:this.options.url_get_all,
				data:'sklep=1',
				onRequest:this.imworking.bind(this),
				onSuccess:function(responseJSON)	{
					this.updateKoszyk(responseJSON);
					this.imfinished();
					this.setLinks();
				}.bind(this),
				onFailure:this.imfinished.bind(this)
			}).send();
			
		},
		setLinks: function()	{
			
			var addlinks = $$(this.options.links_selector);
			addlinks.each( function(l,i) {
					l.addEvent('click', this.addProdukt.bind(this));
			}.bind(this) );
			
			var adddivs  = $$('.'+this.options.produkt_selector);
			adddivs.each(function(l,i) {
				var adddiv = l.getElement('div.'+this.options.dodaj_div);
				var sd = adddiv.getChildren('div.select_wrap');
				var select = sd.getElement('select');

				adddiv.setStyle('display', 'block');
				adddiv.setStyle('opacity', 0.85);
				if ( sd != undefined && sd != null && sd != '' )  {
					var selectsize = sd.getSize();
					adddiv.store("hide_width", - 15 - selectsize[0].x );
					adddiv.store("show_width", 0 );
				} else {
					adddiv.store("hide_width", - 30 );
					adddiv.store("show_width", 10 );
				}

				adddiv.setStyle('right', adddiv.retrieve("hide_width") );

				adddiv.set( 'tween', {duration: 'short', transition:'quad:out'} );

				if ( select != undefined && select != null && select != '' ) {
					select.addEvent('focus', function(e) {
						adddiv.store('sfocus', 'true');
					} );
					select.addEvent('blur', function(e){
						adddiv.store('sfocus', 'false');
					} );
				}
				adddiv.store('sfocus', 'false');

				l.addEvent('mouseover', function(e) {
					adddiv.tween('right', adddiv.retrieve("show_width") );
				}.bind(this) );
				
				l.addEvent('mouseout', function(e) {
					var s = adddiv.retrieve('sfocus');
					if ( s == 'false' ) {
						adddiv.tween('right', adddiv.retrieve("hide_width") );
					}
				}.bind(this) );
			}.bind(this));
			
		},
		
		addProdukt: function(e) {
			e.stop();
			var l = $(e.target);
			var p = l.getParent(this.options.parent_element);
			var ch = p.getElement('select');

			var pid = l.id.substring(8);
			var wersja = (ch) ? ch.options[ch.selectedIndex].value : '';

			new Request.JSON({
					url:this.options.url_add_produkt,
					data:{
						produkt_id:pid,
						wersja:wersja
					},
					onRequest:this.imworking.bind(this),
					onSuccess:function(responseJSON)	{
						this.updateKoszyk(responseJSON);
						this.imfinished();
					}.bind(this),
					onFailure:this.imfinished.bind(this)
			}).send();
			
			// albo wyrzucenie danych w zwrocie zapisanie synchronizacji
			
		},
		
		removeProdukt:function(e)	{
			e.stop();
			var dane = e.target.retrieve('dane');
			new Request.JSON({
					url:this.options.url_remove_produkt,
					data:dane,
					onRequest:this.imworking.bind(this),
					onSuccess:function(responseJSON)	{
						this.updateKoszyk(responseJSON);
						this.imfinished();
					}.bind(this),
					onFailure:this.imfinished.bind(this)
			}).send();
			
		},
		
		
		imworking:function()	{
			$$('body')[0].addClass('wait');
			this.icon.setStyle('background-image',"url('/images/koszyk.gif')");
/*			if ( !$('imworking') ) {
				var p = $(this.options.koszyk_id).getParent('div.red-border').getElement('p.bigger');
				p.grab(this.waiter);
			}*/
		},
		
		imfinished:function()	{
			$$('body')[0].removeClass('wait');
			if ( this.count > 0 )
				this.icon.setStyle('background-position',"right -30px");
			else {
				this.icon.setStyle('background-position',"right 0px");
			}
			/*if ( $('imworking') ) {
				$('imworking').dispose();
			}*/
		},

		resetKoszyk:function(e)	{
			e.stop();
			
			new Request.JSON({
					url:this.options.url_reset,
					data:'sklep=1',
					onRequest:this.imworking.bind(this),
					onSuccess:function(responseJSON)	{
						this.updateKoszyk(responseJSON);
						this.imfinished();
					}.bind(this),
					onFailure:this.imfinished.bind(this)
			}).send();
			
		},
		
		updateKoszyk:function(json)	{
			if ( json == null )
				return false;

			this.count = json.koszyk.count;
			this.value = json.koszyk.value;
			this.produkty = json.koszyk.produkty;
			if ( json.koszyk.count > 0  ) { // pełen koszyk

				//lista produktów
				var ps = $H(json.koszyk.produkty);
				var list = $(this.options.koszyk_lista);
				
				// wyczyszczenie listy?
				list.empty();
				var table = new Element('table',{
					'class':'koszyk'
				});
				var tb = new Element('tbody');
/*				var th = new Element('tr');
				var th1 = new Element('td', {
						'class':'td-nazwa',
						html:'Nazwa'
				});
				var th2 = new Element('td', {
						'class':'td-ilosc',
						html:'Ilość'
				});
				var th3 = new Element('td', {
						'class':'td-usun',
						html:'Cena'
				});
				th.adopt( th1, th2, th3 );
				tb.grab( th );*/
				table.grab( tb );
				
				var tr;
				// zagłowek tabelki

				ps.each( function(group, pid) {
					group.each( function(item) {
						
						var a = new Element('a', {
								href:'#',
								html:'usuń',
								events:{
									click:this.removeProdukt.bind(this)
								}
						});
						a.setStyle('display','none');
						a.store('dane', item);
						
						var cena = new Number(item.cena*item.ilosc);
						cena = cena.toFixed(2);

						var span = new Element('span', {
								html:cena + ' zł'
						});

						//alert( item.wersja );
						
						var td1 = new Element('td', {
								'class':'td-nazwa',
								html:'<a href="'+( ( this.lang == 'pl' ) ? '' : '/en' )+'/produkty/'+item.produkt_id+'" title="'+item.nazwa+( item.wersja.id ? ' ('+item.wersja.rozmiar+')':'')+'"><div class="produkt_koszyk_img" style="background-image:url(\'http://www.tuliluli.eu/files/images/60x45/'+item.file+'\')"></div></a>'
						});
						var td2 = new Element('td', {
								'class':'td-ilosc',
								html:'<span>x'+item.ilosc+'</span>'
						});
						var td3 = new Element('td',{
								'class':'koszyk_price'
						});

						tr = new Element('tr',{
							events:{
								mouseover:function()	{
									a.setStyle('display','inline');
									span.setStyle('display','none');
								},
								mouseout:function()	{
									a.setStyle('display','none');
									span.setStyle('display','inline');
								}
							}
						});
						
						td3.adopt(span, a);
						
						tr.adopt( td1, td2, td3 );
						
						tb.grab(tr);
						
					}.bind(this));
				}.bind(this) );
				
				list.grab(table);
				
				// informacje o koszyku
				$(this.options.koszyk_mesg).empty();

				var info = new Element('p',{'class':'koszyk-suma'});
				if ( this.options.pokaz_link_zamowienia ) {
					info.set('html','<a href="#">wyczyść</a><span>suma <b>'+this.value.toFixed(2)+' zł</b></span>'+( (this.value < 175 ) ? '<span style="text-align:right;"> + 23zł przesyłka<br /><br /><i>Przy zakupach za > 175 zł przesyłka 0 zł.</i></span>' : '<span style="text-align:right;"><br /><i>przesyłka gratis</span>' ) );
					info.getElement('a').addEvent('click', this.resetKoszyk.bind(this));
				} else {
					info.set('html','<span>suma <b>'+this.value.toFixed(2)+' zł</b></span>');
				}
				$(this.options.koszyk_mesg).grab(info);
				
				
				
				// link do złożenia zamówienia
				if ( this.options.pokaz_link_zamowienia ) {
					var zam = new Element('p', {
						html:'<a href="'+this.options.url_zamowienie+'" class="zamowienie"><span>złóż zamówienie</span></a>'+( (this.value < 175 ) ? '<br /><i>Przy zakupach za >175 zł przesyłka 0 zł.</i>' : '' )
					});
					$(this.options.koszyk_mesg).grab(zam);
				}

			} else { // koszyk pusty
				$(this.options.koszyk_lista).empty();
				$(this.options.koszyk_mesg).set('html', '<p><b>Koszyk jest pusty</b></p>');
			}
		}
		
		
});
