(function($) {
	/**
	 * Konstruktor ajaxoveho kosiku, bude se jednat o singletonni aplikaci
	 * @param node
	 */	 	
	function CartWindow(options) {
		var defaults = {
			posLeft: 500,
			posTop: 200,
			lang: 'cs',
			timeout: 1000,
			className: 'pridej_polozku'
		};

		this.timeOut = null;
		this.options = $.extend({}, defaults, options);
	}

	$.extend(CartWindow.prototype, {
		init: function() {
			var thisRef = this;
			var inner_html = $("<div>",{
				id: 'vrstva_kosik',
				'class': 'kosik_'+thisRef.options.lang
			});
			var inner_head = $("<div>",{
				id: 'vrstva_kosik_nadpis'
			});
			inner_head.append($("<a>",{
				id: 'zavrit_kosik'
			}));
			inner_html.append(inner_head);
			inner_html.append($("<div>",{
				id: 'vrstva_kosik_cekej'
			}));
			inner_html.append($("<div>",{
				id: 'vrstva_kosik_obsah'
			}));
			$("#pozadi").append(inner_html);

			//posouvani okna
			$("#vrstva_kosik").draggable( {
				zIndex  : 10000,
				ghosting: false,
				opacity : 0.7,
				handle  :  "#vrstva_kosik_nadpis",
				start   : function() {
					clearTimeout(thisRef.timeOut);
				}
			});

			$("#vrstva_kosik").hide();
		
			//automaticky posun pri scrollu
			$(window).scroll(function() {
				$("#vrstva_kosik").animate({
					top:$(window).scrollTop() + "px"
				}, {
					queue: false,
					duration: 350
				});
			});
		
			//zavreni okna
			$("#zavrit_kosik").click(function() {
				$("#vrstva_kosik").hide();
				$("#vrstva_kosik_obsah").hide();
				$("#vrstva_kosik_cekej").show();
				return false;
			});

			// definice eventu pro odeslani
			$("." + thisRef.options.className).each(function (){
				$(this).append($("<input>",{
					type: 'hidden',
					name:'ajax_view',
					value:'1'
				}));
			});
			
			$("." + thisRef.options.className).ajaxForm({
				dataType: 'xml',
				success: function(xml) {
					if ($(xml).find('status').text() == 'redirect') {
						document.location.href = $(xml).find('params param[name=url]').attr('value');
					} else {
						// aktualizuji cenu v boxu s kosikem
						$("#kosik .price").html($(xml).find('param[name=price]').attr('value'));
						$("#kosik .count_items").html($(xml).find('param[name=count_items]').attr('value'));
						
						// zobrazim data do kosiku (nazev a cenu)
						thisRef.showCart(this,$(xml).find('params'));
					}
				},
				error: function(a,b) {
					alert(a);
				}
			});
		},
		showCart: function(node,params) {
			var thisRef = this;
			// TODO nastaveni pozice okna
			var scrollTop = $(window).scrollTop();
			if (thisRef.options.posTop < scrollTop) 
				thisRef.options.posTop = scrollTop;
			$("#vrstva_kosik").css({
				top: thisRef.options.posTop + "px",
				left: thisRef.options.posLeft + "px"
			});

			// zpracuji parametry a zobrazim okno
			var paramArr = new Object();
			$(params).find('param').each(function(){
				paramArr[$(this).attr('name')] = $(this).attr('value');
			});

			$("#vrstva_kosik_cekej").show();
			$("#vrstva_kosik_obsah").load(web_root_lang + "scripts/ajax_kosik.php", paramArr, function() {
				$("#vrstva_kosik_obsah").show();
				$("#vrstva_kosik_cekej").hide();
				$("#vrstva_kosik").show();
				thisRef.timeOut = setTimeout(function(){
					$("#vrstva_kosik_obsah").hide();
					$("#vrstva_kosik_cekej").show();
					$("#vrstva_kosik").hide('slow');
				}, thisRef.options.timeout);
				
				//pokud hover, pak se okno NEzavira
				$("#vrstva_kosik").hover(
					function(){
						clearTimeout(thisRef.timeOut);
					},
					function(){
						thisRef.timeOut = setTimeout(function(){
							$("#vrstva_kosik_obsah").hide();
							$("#vrstva_kosik_cekej").show();
							$("#vrstva_kosik").hide('slow');
						}, thisRef.options.timeout)
					});
			});
		}
	});
	$.cartwindow = function(options) {
		var cartwindow = new CartWindow(options);
		cartwindow.init();
	}
})(jQuery);
