
// Richard: pro predvybrani polozek v asynchronich selectech
var do_select_items = false;


$(document).ready(function() {

	$.ajaxSetup({
		url: location.href,
		type: "POST",
		dataType: "json",
		success: function (r) {
			for ( var i in r ) {
				$("#" + i).html(r[i]);
			};
		}
	});

	$.datepicker.setDefaults(
		$.extend({
			showMonthAfterYear: false,
			showOn: 'both',
			showAnim: false,
			dateFormat: 'yy-mm-dd'
		},
		$.datepicker.regional['cs']
	));

	$(".datepicker").datepicker($.datepicker.regional['cs']);

	$(".autofocus").focus();
	  
	  /* click na adresu uzivatele vyvola v mape bublinu */
	  $(".found-user").click(function(){
	  	  	var id = $(this).attr("id");
			GEvent.trigger(marks[id], 'click');
	  })
	
	
	//doplneni kodu produktu
	//doplneni druhe casti
	  $("select.kod_1").change(function(){
		
	  	var kod = $(this).attr("id");
		selector3 = kod.replace("kod_1", "kod_3");
		// vymazani 3. selectu pri zmene hodnoty v prvnim selectu
		$("#" + selector3).removeOption(/./);
		
		if (do_select_items !== false) {
		  $(this).selectOptions(do_select_items[0]); 
		}
		else
		{
			$("#" + selector3).hide();
		}
		  
	  	var selector;
	    $.getJSON("/ajax/product/code/second_part",{code_1: $(this).val(), ajax: 'true'}, function(j){
	      selector = kod.replace("kod_1", "kod_2");
	      $("#" + selector).removeOption(/./);
	      $("#" + selector).addOption(j, false);
			if (do_select_items !== false) {
				$("#" + selector).selectOptions(do_select_items[1]); 
				$("#" + selector).trigger('change');
			}	
			else
			{
				setVybrat(selector);
			}
	    })
	  })
	  //doplneni posledni casti
	$("select.kod_2").change(function(){
		var kod = $(this).attr("id");
		var selector = kod.replace("kod_2", "kod_1");
		var selector3 = kod.replace("kod_2", "kod_3");
		$("#" + selector3).show();
		
		$.getJSON("/ajax/product/code/third_part",{code_1: $("select#" + selector).val(), code_2: $(this).val(), ajax: 'true'}, function(j){
		$("#" + selector3).removeOption(/./);
			$("#" + selector3).addOption(j, false);
			if (do_select_items !== false) {
				$("#" + selector3).selectOptions(do_select_items[2]); 
				do_select_items = false;
				$("#" + selector3).parent('form').show();
				var wrap = $("#" + selector3).parent().parent().find('span.wrap');
				//wrap.find("img.loading").remove();
				wrap.hide();
			}
			else
			{
				setVybrat(selector3);
			}
		})
	})
	
	function setVybrat(selector)
	{
		$("#" + selector).find("option:first").text('vybrat');				
		$("#" + selector).addClass('red');
		$("#" + selector).find("option:gt(0)").attr('style', "color: black;");
		$("#" + selector).find("option:first").addClass('red');
	}
	
	$("select.kod_1").change(function(){
		$(this).removeClass('red');
	});
	$("select.kod_2").change(function(){
		$(this).removeClass('red');
	});
	$("select.kod_3").change(function(){
		$(this).removeClass('red');
	});
	

	/*
	$("form.validate").validate();
	 */

	/**
	 * Automaticke vyplneni a odeslani formulare po kliknuti..
	 */
	$(".auto-fill").click(function() {
		var m = $(this).metadata();
		if (m.msg) {
			var c = $(this).closest("tr").css("background-color");
			$(this).closest("tr").css("background-color", "#ffbebc");
			if (!confirm(m.msg)) {
				$(this).closest("tr").css("background-color", c);
				return false;
			}
		}
		for (var id in m) {
			if ("msg" == id) continue;
			var e = $("#" + id);
			if (null != m[id]) e.val(m[id])
			e.insertBefore(this);
		}
		e.click();
	});

	$("a.selector-link").click(function() {
		$("select.auto-submit:last").val($(this).attr("href"));
		$("select.auto-submit:last").parents("form").submit();
		return false;
	});



	/**
	 * Styl radku :hover (kvuli IE6)
	 */
	$("table.dnd tr.item").hover(function() {
		$(this).addClass("item-hover");
	}, function() {
		$(this).removeClass("item-hover");
	});


	if ( $("#gmap").length > 0 ) {
		fillMap();
	}

	/**
	 * Automaticke odeslani formulare po zmene regionu nebo okresu
	 */
	$("#region").change(function() {
		setCenter($("#region option:selected").html(), 'kraj');
		$("#district").val(0);
		$(this).closest("form").submit();
	});

	function chDistr() {
		setCenter($("#district option:selected").html(), 'okres');
		$(this).closest("form").submit();
	}
	
	$("#district").change(chDistr);
	
	//alert(showAllMarkers);

	if ( typeof(showAllMarkers) != 'undefined' )
	if ( showAllMarkers )
	{
		$("#district").live("change", chDistr);
	}
	else
	{
		//$("#district").change(chDistr);
	}

	$(".categories").click(function() {
		$(this).closest("form").submit();
	});
	
	$("#cig").change(function() {
		$(this).closest("form").submit();
	});


	$("#recipsFilterForm").submit(function() {
		if ( showAllMarkers )
		{
			$("#foundUsers").text("Náhrávám data...");
			var p = $(this).serialize() + "&actSearchRecips=1&ajax=1";
			$.ajax({data: p});
			return false;
			/*
			var d = Object();
			d.ajax = 1;
			d.cig = $("#cig").val();
			d.region = $("#region").val();
			d.district = $("#district").val();
			d.search = $("#search").val();

			var c = {};
			var i = 0;
			$(".categories").each(function() {
				if ( $(this).get(0).checked ) {
					c[i] = $(this).val();
					i++;
				}
			});
			d.categories = JSON.stringify(c);
			alert(d.categories);
			
			d.actSearchRecips = 1;
			$.ajax({data: d});
			return false;
			*/
		}
		else
		{
			return true;
		}
	});


	/**
	 * Pridavani prijemcu poptavky
	 */
	function addReceiver() {
		var recipsData = $("#receivers").metadata();
		var d = $(this).metadata();
		d.add = $(this).attr("checked") ? 1 : 0;
		if ( d.add ) {
			if ($("#receivers input").length >= recipsData.max) {
				$(this).removeAttr("checked");
				alert(recipsData.msg);
				return false;
			}
			$(".rec-id-" + d.id).attr("checked", "checked");
			$("#_continue").removeClass("disabled").addClass("enabled");
		} else {
			$(".rec-id-" + d.id).removeAttr("checked");
			if ($("#receivers input").length <= 1) {
				$("#_continue").removeClass("enabled").addClass("disabled");
			}
		}
		$.ajax({data: d});
	}
	$(".add-receiver").live("click", addReceiver);


	/**
	 * Detekce vyplneni kontaktnich udaju
	 */
	/*
	$(".contact input").change(function() {
		if ( $("#jmeno").val() && $("#prijmeni").val() && $("#email").val() && $("#mobil").val() && $("#mesto").val() )
		{
			$("#_continue").removeClass("disabled").addClass("enabled");
		}
		else
		{
			$("#_continue").removeClass("enabled").addClass("disabled");
		}
	});
	*/

	$(".contact #_continue").click(function() {
		if ( $("#accept").attr("checked") )
		{
			return true;
		}
		else
		{
			alert($(this).metadata().acceptance);
			return false;
		}
	});
	
	$(".address #_save_address").click(function() {
		if ( $("#accept").attr("checked") )
		{
			return true;
		}
		else
		{
			alert($(this).metadata().acceptance);
			return false;
		}
	});

	$(".auto-submit").not("select").click(function() {
		$(this).parents("form").submit();
	});

	$("select.auto-submit").change(function() {
		$(this).parents("form").submit();
	});





	/**
	 * Popup obrazky (funguje samostatne, bez potreby dalsiho css)
	 */
	$("a[href$='.jpg']").click(function() {
		$("html").css("overflow", "hidden");
		// Skryti select-boxu pro IE6
		if (typeof document.body.style.maxHeight === "undefined") {
			$("select").css("visibility", "hidden");
		}
		// Prekryti stranky
		$("<div id=\"overlay_div\"></div>").css({
			'position':'absolute','z-index':'50','left':'0px','top':'0px',
			'width':'100%','height':'100%',
			'background-color':'#000000','filter':'alpha(opacity=50)',
			'-moz-opacity':'0.5','-khtml-opacity':'0.5','opacity':'0.5'
		}).appendTo("body");
		// Zobrazeni obrazku
		var i = $("<img id=\"overlay_img\" />");
		i.attr("src", $(this).attr("href")).appendTo("body").css({
			'position':'absolute','display':'block',
			'z-index':'100','left':'0px','top':'0px',
			'left':(($(window).width()-i.width())/2)+'px',
			'top':((($(window).height()-i.height())/2)+$(window).scrollTop())+'px',
			'border':'1px solid #ff0000','cursor':'pointer'
		});
		// Skryti popup obrazku po kliknuti
		$("#overlay_div, #overlay_img").click(function() {
			$("#overlay_div, #overlay_img").remove();
			$("html").css("overflow", "scroll");
			if (typeof document.body.style.maxHeight === "undefined") {
				$("select").css("visibility", "visible");
			}
		});
		return false;
	});


	/**
	 * Automaticke odeslani formulare po vyberu v roletce filtru
	 */
	//$('form.filter select,form.filter input[type="text"]').change(function() {
	$('form.filter select').change(function() {
		$("#s").val($(this).attr("name").substr(1));
		$(this).parents("form:first").submit();
	});

	/**
	 * Automaticke odeslani formulare po vyberu velikosti sloupce nebo radku sestavy,
	 * nebo vyberu lemovani sestavy
	 */
	 
	function submitWinset( sel )
	{
		$('.content').after('<div style="position: absolute; top: 50%; left: 50%;"><img src="/img/icons/loading-big.gif" /></div');
		$('.content').css('opacity', '0.2');
		form = $(sel).parents('form:first');
		data = form.serialize();
		$.post(document.location.href, data, function(result){
			$(location).attr('href',document.location.href);
		});
		return false;
	};
	$('.winset-submit').click( function()
	{
		submitWinset(this);
		return false;
	});
	$('select#lemovani_material,select#lemovani_typ_strechy,select#width,select#height,select#type,select#rows_distance').change( function(){
		submitWinset(this);
	} );
	$("select#cols_distance").change( function(){
		if ( $("select#cols_distance").val() != '...' )
		{
			submitWinset(this);
		}
	});
	
	$(".winset select").change(function() {
		if ( '...' == $(this).val() )
		{
			$(this).parent().next('span').hide();
			$(this).next().show().focus();
		}
	/*	else
		{
			$(this).parents("form:first").submit();
		}*/
	});

	$(".winset span.distance").click(function() {
		$(this).hide();
		$(this).prev().find('input.distance').show().focus();
		$(this).prev().find('select').val('...');
	});

	$(".winset input.distance").keypress(function(k) {
		if ( 27 == k.keyCode ) {
			$(this).hide().parent().next().show();;
			$(this).parent()[0].reset();
		}
	});
	$(".winset input.distance").blur(function() {
		$(this).hide().parent().next().show();;
		$(this).parent()[0].reset();
	});

	$(".winset #show-help-icon").click(function() {
		$("#winset").hide();
		$("#help").show();
	});

	$(".winset #help").click(function() {
		$(this).hide();
		$("#winset").show();
	});
	
	$(".winset select").focus(function() {
		if ($.browser.msie && $.browser.version.substr(0,1) < 8) {
	    	$(this)
        		.data("origWidth", $(this).css("width"))
        		.css("width", "auto");
       }
    });

    $(".winset select").blur(function(){
	    if ($.browser.msie && $.browser.version.substr(0,1) < 8) {
	    	$(this).css("width", $(this).data("origWidth"));
	    }
	});

	/**
	 * Zobrazovani napovedy po najeti mysi
	 */
	$(".shower").mouseenter(function() {
		$(".showed").removeClass("showed").hide();
		$(".auto-hide").hide();
		$("#" + $(this).metadata().id).show().addClass("showed");
	});
	$(".shower").parent().mouseleave(function() {
		var ah = $(".auto-hide");
		if ( 0 < ah.size() ) {
			$(".showed").removeClass("showed").hide();
			ah.show();
		}
	});


	/**
	 * Vyskakovaci okna
	 */
	$("a.open").click(function() {
		var p = $(this).metadata();
		if (!p.w) p.w = 840;
		if (!p.h) p.h = 600;
		if (!p.l) p.l = (screen.width/2)-(p.w/2);
		if (!p.t) p.t = (screen.height/2)-(p.h/2);
		window.open($(this).attr("href"), '', 'left='+p.l+',top='+p.t+',width='+p.w+',height='+p.h+',scrollbars=yes');
		return false;
	});

	$("a.close").click(function() {
		window.close();
	});

	$("button.open").click(function() {
		var p = $(this).metadata();
		if (!p.w) p.w = 840;
		if (!p.h) p.h = 600;
		if (!p.l) p.l = (screen.width/2)-(p.w/2);
		if (!p.t) p.t = (screen.height/2)-(p.h/2);
		window.open($(this).attr("rel"), '', 'left='+p.l+',top='+p.t+',width='+p.w+',height='+p.h);
		return false;
	});
	
	$("button.open-list").click(function() {
		var p = $(this).metadata();
		if (!p.w) p.w = 840;
		if (!p.h) p.h = 700;
		if (!p.l) p.l = (screen.width/2)-(p.w/2);
		if (!p.t) p.t = (screen.height/2)-(p.h/2);
		window.open($(this).attr("rel"), '', 'left='+p.l+',top='+p.t+',width='+p.w+',height='+p.h+',scrollbars=yes');
		return false;
	});


	/**
	 * Zobrazovani potvrzovaciho dialogu
	 */
	$(".confirm").click(function() {
		return confirm($(this).metadata().msg);
	});

	/**
	 * Zobrazovani informacniho dialogu 
	 */
	$(".inform").click(function() {
		if ( !$(this).hasClass("enabled") )
		{
			alert($(this).metadata().msg);
		}
		return !$(this).hasClass("disabled");
	});


	/**
	 * Rizeni zobrazovani mini-editoru
	 */
	/*
	// Zobrazovani editacni ikony az po najeti kurzorem mysi
	$(".mini-editor .wrap").mouseenter(function() {
		$(this).find("img").show();
	}).mouseleave(function() {
		$(this).find("img").hide();
	});
	*/

	// Naprava pozice editacni ikonky ve FF
	if ("Netscape" == navigator.appName) {
		$(".mini-editor img").css("right", "-20px");
	}

	$(".mini-editor .wrap").click(function() {
		var e = $(this).parents(".mini-editor");
		if ($(this).parent().parent().is('td.item-name'))
		{
			e.find(".wrap").find('img').attr('src', '/img/icons/loading.gif');
			// Richard 29.6.2011
			// Pokud dame editaci predvolime v selected hodnoty
			var text = e.find(".wrap").text();
			do_select_items = text.split(' ');
			e.find("form").find(".kod_1").trigger('change');					
		}
		else
		{
			e.find(".wrap").hide(); //.find("img").hide();
			e.find("form").show();
		}
		e.find(".field").focus()
			.one("blur", function() { e.find(".reset").click(); })
			.keypress(function(k) { if (27 == k.keyCode) e.find(".reset").click(); } )
			.one("change", function() { $(this).unbind("blur"); });
	});

	$(".mini-editor .reset").click(function() {
		var e = $(this).parents(".mini-editor");
		e.find("form").hide()[0].reset();
		e.find(".wrap").show();
		e.find(".wrap").find('img').attr('src', '/img/actions/edit.png');
		return false;
	});


	/**
	 * Oznacovani skupin objednavky
	 */
	$(".sel").click(function() {
		$(".it-sel").removeClass("it-sel");
		$(".gr-sel").removeClass("gr-sel");
		var g = $(this).hasClass(".group") ? $(this) : $(this).prevAll(".group:first");
		g.find(".move").html($("#select_mark"));
		var i = g.addClass("gr-sel").next();
		while (i.hasClass("item")) {
			i.addClass("it-sel");
			i = i.next();
		}
		$.cookie(config.groupCookie, g.metadata().id, { path: '/' });
	});


	/**
	 * Presouvani polozek mezi skupinami objednavky
	 */
	$("table.order").tableDnD({
		dragHandle: "dnd",
		onDragStart: function(table, cell) {
			$(cell.parentNode).addClass("drag");
		},
		onAllowDrop: function(row, target, movingDown) {
			var t = movingDown ? $(target) : $(target).prev();
			return (t.size() && !t.hasClass("nodrop"));
		},
		onMove: function(row) {
			var level = $(row).prevAll(".group:first").metadata().level;
			$(row).find("td.item-name").css("padding-left", (level * 20 + 4) + "px");
		},
		onDrop: function(table, row) {
			var p = new Object();
			p._table = config.itemTable;
			p._action = "move";
			p.id = $(row).metadata().id;
			var g = $(row).prevAll(".group:first");
			p.group = g.click().metadata().id;
			p.pos = $(row).prevAll().length - g.prevAll().length - 1;
			$.post(location.href, p, function() {
				$(row).removeClass("drag");
			}, "text");
		}
	});


	/**
	 * Potvrzovani mazani polozek objednavky
	 */
	$(".delete-item").click(function() {
		var tr = $(this).closest("tr").addClass("mark");
		var r = confirm($(this).metadata().msg);
		tr.removeClass("mark");
		return r;
	});

	/**
	 * Potvrzovani mazani skupin objednavky
	 */
	$(".delete-group").click(function() {
		var tr = $(this).closest("tr").addClass("mark");
		var l = tr.metadata().level;
		var i = tr.next();
		while ( i.size() && (i.hasClass("item") || i.metadata().level > l) ) {
			i.addClass("mark");
			i = i.next();
		}
		var r = confirm($(this).metadata().msg);
		$("tr").removeClass("mark");
		return r;
	});

	/**
	 * Zavirani okna kliknutim na tlacitko (sestavy oken)
	 */
	$(".close-window").click(function() {
		window.close();
	});

	$("#uzivatel_polozka_id").change(function() {
		var m = $(this).metadata();
		$("#cena").val(m.prices[$(this).val()]);
	});
});


//vraci pole, ktere vznikne tak, ze z pole all odstranime vsechny prvky,
//ktere se nenachazi ve vsech polich v arrayOfArrays
function intersection(all, arrayOfArrays) {
	var result = all.slice(0);
	for (var aa = 0; aa < arrayOfArrays.length; aa++) {
		for (var i = result.length; i >= 0; i--) {
			if (!inArray(result[i], arrayOfArrays[aa])) {
				result.splice(i, 1);
			}
		}
	}

	return result;
}


//nachazi se prvek elem v poli arr ?
function inArray(elem, arr) {
	var found = false;
	for (var i = 0; i < arr.length; i++) {
		if (arr[i] == elem) {
			found = true;
			break;
		}
	}
	return found;
}



