if (Array.prototype.removeValue == null) Array.prototype.removeValue = function(value){ 
	var i = 0;
	while (i < this.length) 
		if (this[i] == value || this[i] == (value + '')) this.splice(i, 1);
		else i++;	
	return this;
}
Array.prototype.unique =
  function() {
    var a = [];
    var l = this.length;
    for(var i=0; i<l; i++) {
      for(var j=i+1; j<l; j++) {
        // If this[i] is found later in the array
        if (this[i] === this[j])
          j = ++i;
      }
      a.push(this[i]);
    }
    return a;
  };
Array.prototype.diff =
  function() {
    var a1 = this;
    var a = a2 = null;
    var n = 0;
    while(n < arguments.length) {
      a = [];
      a2 = arguments[n];
      var l = a1.length;
      var l2 = a2.length;
      var diff = true;
      for(var i=0; i<l; i++) {
        for(var j=0; j<l2; j++) {
          if (a1[i] === a2[j]) {
            diff = false;
            break;
          }
        }
        diff ? a.push(a1[i]) : diff = true;
      }
      a1 = a;
      n++;
    }
    return a.unique();
  };
  
String.prototype.trim = function() {
	return this.replace(/^\s+|\s+$/g,"");
}

$(function() {
//	defineClick();
	$(".jq-new-window").click(function(event) {
		window.open($(this).attr("href"));
		event.preventDefault();
	});
	$.preloadImages(
		"/images/progressbar/progressbar.gif",
		"/images/progressbar/progressbg_black.gif",
		"/images/progressbar/progressbg_green.gif",
		"/images/progressbar/progressbg_orange.gif",
		"/images/progressbar/progressbg_red.gif",
		"/images/progressbar/progressbg_yellow.gif"
	);
});

jQuery.preloadImages = function() {
	for(var i = 0; i<arguments.length; i++) $("<img />").attr("src", arguments[i]);
}

function defineClick() {
	$("a").click(function(event) {
		var newUrl = $(this).attr("href");
		if (newUrl != "#") $.get(newUrl, function(data) {
			var containerHtml = $(data).filter("#page-container").html();
			$("#page-container").fadeOut(function() {
				$("#page-container").html(containerHtml);
				$("#page-container").fadeIn(function() {
					defineClick();
				});
			});
		});
		event.preventDefault();
	});
}

// ========================= MAPS start =======================================
//$(document).ready(function() {
//	initMapInteractionsWhenLoaded();
//});

function initMapInteractionsWhenLoaded() {
	try {
		var mapsIframe = $("iframe").contents()[0];
	} catch(e) { // odstranuje chybu v Opere
		setTimeout('initMapInteractionsWhenLoaded()', 100);
		return;
	}
	if (mapsIframe) {
		if(!mapsIframe.loaded) {
			setTimeout('initMapInteractionsWhenLoaded()', 100);
			return;
		}
	} else return;
	// MAPS FINALLY LOADED!!! continue ->>
	loadMapInteractionFunctions();
//	alert("MAPS loaded indeed")
	if(typeof mapReady == 'function') { 
		try {
			mapReady();
		} catch(e) {
			setTimeout('initMapInteractionsWhenLoaded()', 100);
			return;
		}
	}
}

function loadMapInteractionFunctions() {
	var mapsIframe = $("iframe").contents()[0];
//	$("#home-icon").click(function() {
//		mapsIframe.traverseAddHomeMarkerToCenter(true);
//	});
	mapsIframe.traverseEventCoords = function(x, y) {
//		alert('PREPSANO traversing values ' + x + ' ' + y);
		$('#gpsX').val(x);
		$('#gpsY').val(y);
	}
	$(".find-location").click(function() {
		mapsIframe.traverseFindAndShowLocation($("#city").val(), $("#street").val(), $("#zip").val());
	});
}
// ========================= MAPS end   =======================================

$(function() {
	$("#search-form").submit(function(event) {
		switch ($("#search-tabs .ui-tabs-selected").attr("id")) {
			case "search-tabs-forum":
				window.location.href = '/forum/search.php?keywords=' + $("#search-text").val();
				break;
			case "search-tabs-vse":
				window.location.href = '/search?search_type=all&top_search=' + $("#search-text").val();
				break;
			case "search-tabs-firma":
				window.location.href = '/search?search_type=company&from_url=' + $('#actual_url').val() + '&top_search=' + $("#search-text").val();
				break;
			case "search-tabs-clanky":
				window.location.href = '/search?search_type=article&top_search=' + $("#search-text").val();
				break;
			default:
				window.location.href = '/search?top_search=' + $("#search-text").val();
		}
		event.preventDefault();
	});
	
	var navDuration = 150; //time in miliseconds
	var navJumpHeight = "4px";
	
	$("#menu > li:not(.active) a").hover(function() {
		$(this).animate({ top : "-=" + navJumpHeight, height : "+=" + navJumpHeight }, navDuration);
	}, function() {
		$(this).animate({ top : "0", height: "20px" }, navDuration);
	});
	
	initLoginSubmitHandler();
	
	$("#admin-link-list a.highlight").each(function() {
		var $temp = $(this).clone().css({position: "absolute", zIndex: 10}).addClass("hover");
		var offset = $(this).position();
		$temp.css({
			top: offset.top,
			left: offset.left
		});
		$(this).after($temp);
		setInterval(function() {
			if ($temp.is(":visible")) $temp.fadeOut();
			else $temp.fadeIn();
		}, 1000);
	});
	
	$(".dealer-back-login").click(function(event) {
		$.get("/admin/obchodnik/dealer-back-login", { dealerBackLogin : '' }, function() {
			window.location.href = "/admin/obchodnik/company-list";
		});
		
		event.preventDefault();
	});
});

var submitted = false;
function initLoginSubmitHandler() {
	$("#login-form").submit(function(event) { //alert("initLoginSubmitHandler();")
		if (!submitted) {
			$("#login-notify").html("<strong>1</strong>");
			$(".progressbar").hide();
			$(".progressbar-label").text("přihlašuji...").addClass('green').removeClass('red');
			
			var iamFirst = true;
			$("#login-block-links").fadeOut(60, function() {
				$(".progressbar-label").fadeIn("fast");
				if (iamFirst) {
					$(".progressbar").progressBar(10, {showText: false}).fadeIn("fast");
					iamFirst = false;
				}
			});
			
			submitted = true;
			$.get('/ajax/email2username', {email: $("#login-username").val()}, function(username) {
				if (!username) {
					submitted = false;
					$(".progressbar-label").text("Špatně zadaný e-mail.").addClass('red').removeClass('green');
				}
				else {
					$("#login-notify").html("<strong>2</strong>");
					if (iamFirst) {
						$(".progressbar").progressBar(40, {showText: false}).fadeIn("fast");
						iamFirst = false;
						 alert(1)
					} else {
						$(".progressbar").progressBar(40, {showText: false});
					}
					
					var loginData = {
						username: username,
						password: $("#login-password").val(),
						login: 'prosim pekne'
					};
					if ($(":checkbox[name=remember]").is(":checked")) {
						loginData.autologin = 'on';
					}
					
					$.post('/forum/ucp.php?mode=login', loginData, function(data) {
						$("#login-notify").html("<strong>3</strong> loggin in");
						
//						var neco = $(data).find("#wrapfooter a").attr("href");
//						if (neco) {
//							var pole = neco.split('=');
//							var sid = pole[pole.length - 1];
//							$("#forum-sid").val(sid);
//						}
						var sid = $(data).find("input[name=sid]").val();
						$.get('/ajax/is-admin', {email: $("#login-username").val()}, function(isAdmin) {
							if (!isAdmin) {
								$(".progressbar").progressBar(100);
								setTimeout(function() {
									$(".progressbar-label").text("uživatel přihlášen");
									$('<input />')
										.attr({
											type: 'hidden',
											name: 'top_password'
										})
										.appendTo($('#login-form'))
										.val($('#login-password').val())
									;
									setTimeout(function() { $("#login-form").submit(); }, 200);
								}, 400);

							} else {
								$("#login-notify").html("<strong>4</strong> superadmin!");
								$(".progressbar").progressBar(60);
								
								$.post('/forum/adm/index.php?sid=' + sid, function(data) {
									$("#login-notify").html("<strong>5</strong>");
									$(".progressbar").progressBar(80);
									//----------------------------------------
									
//									<form action="index.php?sid=3860df8dba3404ce0aae63a83557b6d5" method="post">
//									username	admin
//									password_c9bb44823e45a7422fe46c2f6a0dcaab
//									credential	c9bb44823e45a7422fe46c2f6a0dcaab
//									
//									login	Přihlásit se
									
									function addObjectValue(object, variable, value) {
										eval("object." + variable + " = '" + value + "'");
									}
									
									var credential = $(data).find("form input[name=credential]").val();
									
									var struct = new Object();
									addObjectValue(struct, 'username', username);
									addObjectValue(struct, 'password_' + credential, $("#login-password").val());
									addObjectValue(struct, 'credential', credential);
									addObjectValue(struct, 'sid', sid);
									addObjectValue(struct, 'login', 'dekuji');
									if ($(":checkbox[name=remember]").is(":checked")) {
										addObjectValue(struct, 'autologin', 'on');
									}
									
									$.post('/forum/adm/index.php?sid=' + sid, struct, function(data) {
										$("#login-notify").html("<strong>6</strong> superadmin forum administration logged");
										$(".progressbar").progressBar(100);
										setTimeout(function() {
											$(".progressbar-label").text("administrátor přihlášen");
											setTimeout(function() { $("#login-form").submit(); }, 200);
										}, 400);
									});
									//----------------------------------------
								});
							}
						});
					});
				}
			});
			event.preventDefault();
		} else {
//			$("#login-notify").html("loggin in");
//			event.preventDefault();
//			alert('now submitting..')
		}
	});
}

function snow() {
	var snowsrc="/images/snow.gif";
	var no = 150;
	var hidesnowtime = 0;
	
	var dx, xp, yp;    // coordinate and position variables
	var am, stx, sty;  // amplitude and step variables
	var i, doc_width = 800, doc_height = 600; 
	
	doc_width = $("body").width();
	doc_height = $("body").height();
	
	setTimeout(function() {
		doc_width = $("body").width();
		doc_height = $("body").height();
	}, 1000);
	
	dx = new Array();
	xp = new Array();
	yp = new Array();
	am = new Array();
	stx = new Array();
	sty = new Array();
	var k = 0;
	
	for (var i = 0; i < no; i++) {  
		dx[i] = 0;                        // set coordinate variables
		xp[i] = Math.random()*(doc_width-50);  // set position variables
		yp[i] = Math.random()*doc_height;
		am[i] = (i / no)*20;         // set amplitude variables
		stx[i] = 0.02 + (i / no)/10; // set step variables
		sty[i] = 0.7 + (i / no) * (i / no) * (i / no);     // set step variables
		$('\
			<div id="dot' + i + '" style="position: absolute; z-index: ' + i + '; visibility: visible; top: 15px; left: 15px;">\
				<img src="' + snowsrc + '" border="0" width="' + (i / no * 25) + '" height="' + (i / no * 28) + '">\
			</div>\
		').fadeTo(0, i / no / 2).appendTo("body");
	}
	
	var snowingInterval = setInterval(function() {
		for (i = 0; i < no; ++i) {  // iterate for every dot
			yp[i] += sty[i];
			if (yp[i] > doc_height - 50) {
				xp[i] = Math.random() * (doc_width - am[i] - 30);
				yp[i] = 0;
				stx[i] = 0.02 + (i / no)/10;
				sty[i] = 0.7 + (i / no) * (i / no) * (i / no);
			}
			dx[i] += stx[i];
			document.getElementById("dot" + i).style.top = yp[i] + "px";
			document.getElementById("dot" + i).style.left = xp[i] + am[i] * Math.sin(dx[i]) + "px";  
		}
	}, 40);
	
	var tempTimeout = 200;
	var hideAfter = 10000;
	var fadeOutTime = 3000;
	
	setTimeout(function() {
		for (i = 0; i < no; ++i) {  // iterate for every dot
			setTimeout(function() {
				$("#dot" + (k++)).fadeOut(fadeOutTime);
			}, i * tempTimeout);
		}
	}, hideAfter); // hide snowing after 10s
	
	setTimeout(function() {
		clearInterval(snowingInterval);
	}, tempTimeout * no + hideAfter + fadeOutTime + 10000);
}


//MAPOVE funkce
function mapaRegiony(gpsX, gpsY){
	$('.selected-regions li.nodipslay').remove(); //odebere prazdny li
	//mapa
	$('#tabs-idx').tabs({
		select: function(event, ui) {
			if (ui.panel.id == "fragment-2x") {
				$("#fragment-2x #map-content2:empty").html('<iframe id="map" src="/Maps/Maps.php?drag=yesplease!&amp;x=' + gpsX + '&amp;y=' + gpsY + '&amp;default=true" scrolling="no" frameborder="0"></iframe>');
				initMapInteractionsWhenLoaded();
			}
			if (ui.panel.id == "fragment-1x") {
				$("#tab-flash").html('<object id="mapaRegionu" type="application/x-shockwave-flash" data="/flash/mapa.swf?clickable=true&amp;kraje=' + regions.join(',') + '" width="228" height="132"><param name="movie" value="/flash/mapa.swf?kraje=' + regions.join(',') + '" /><param name="wmode" value="transparent" /><img src="/images/regions/mapa-regionu-background.gif" alt="" /></object>');
//				initDistrictIconClick();
			}
	    },
	    show: ieBodyHeightFixer
	});
	//regiony
	$("#form-regiony").submit(function(event) {
		$.get("/admin/firma/regiony-pusobnosti-mapa?regions[]=", {'regions[]': regions}, function() {
			window.location.href = "/admin/firma/regiony-pusobnosti-mapa";
		});
		event.preventDefault();
	});
	
	$('.selected-regions .nodipslay').hide();
}

function mapaKatalog(gpsX, gpsY){
	$('.selected-regions li.nodipslay').remove();
	//mapa
	$('#tabs-map-two').tabs({
		select: function(event, ui) {
			if (ui.panel.id == "fragment-2") {
				$("#fragment-2 #map-content:empty").html('<iframe id="map" src="/Maps/Maps.php?drag=yesplease!&amp;x=' + gpsX + '&amp;y=' + gpsY + '&amp;default=true" scrolling="no" frameborder="0"></iframe>');
				initMapInteractionsWhenLoaded();
			}
			if (ui.panel.id == "fragment-1") {
				$("#tab-flash").html('<object id="mapaRegionu" type="application/x-shockwave-flash" data="/flash/mapa.swf?clickable=true&amp;kraje=' + regions.join(',') + '" width="228" height="132"><param name="movie" value="/flash/mapa.swf?kraje=' + regions.join(',') + '" /><param name="wmode" value="transparent" /><img src="/images/regions/mapa-regionu-background.gif" alt="" /></object>');
//				initDistrictIconClick();
			}
	    },
	    show: ieBodyHeightFixer
	});
	
	$('.selected-regions .nodipslay').hide();
}



function initDistrictIconClick() {
	$(".selected-regions .icon").css('cursor', 'pointer').unbind("click").click(function() {
		var regionId = parseInt($(this).parents("li").attr("id").replace(/region/, ''));
		document.getElementById("mapaRegionu").SetVariable("novyRegion", regionId); // smaze region z flashe
		addRemoveDistrictFlashCallback(regionId); //smaze ikonu
	});
}

function showRegionName(id, name, displ, spd){
	if (displ == true) var clsdispl = '';
	else var clsdispl = 'nodisplay';
	var region='<li id="region' + id + '" class="' + clsdispl + '"><span class="icon-link size-01 gray-back-white"><span class="icon i-x-red-back-white">&nbsp;</span>' + name + '</span></li>';
	
	setTimeout(function() {	append2ul(region); }, spd);
}

function append2ul(li){
	var ulSelector = $(".selected-regions li:visible").length < 7 ? ".selected-regions ul:first" : ".selected-regions ul:last";
	$li = $(li);
	$li.appendTo(ulSelector);
	if (!$li.hasClass("nodisplay")) {
		$li.hide().show("slow", function() {
			initDistrictIconClick();
		});
	}
}

var regionsSpeed = "fast";

function addRemoveDistrictFlashCallback(regionId) {
	var regg="#region"+regionId;
	if ($.inArray(regionId, regions) >= 0) {
		$(regg).hide(regionsSpeed, function() {
			var removeCount = 7 - $(".selected-regions ul:first li:visible").length;
			if (removeCount > 0) {
				$(".selected-regions ul:last li:visible:first").hide(regionsSpeed, function() {
					$(this).appendTo(".selected-regions ul:first").show(regionsSpeed, function() {
						initDistrictIconClick();
					});
				});
			}
		});
		regions.removeValue(regionId);
//		alert(regionId);
	}
	else {
		var ulSelector = $(".selected-regions ul:first li:visible").length < 7 ? ".selected-regions ul:first" : ".selected-regions ul:last";
		$(regg).remove().appendTo(ulSelector);
		$(regg).show(regionsSpeed, function() {
			initDistrictIconClick();
		});
		regions.push(regionId);
	}
}


(function($) {
	jQuery.fn.hideSpecial = function(speed, callBack) {
		if (typeof speed == 'function') {
			var callBack = speed;
			speed = "normal";
		}
		this.each(function() {
			$(this).animate({
				'height': "hide",
				'opacity': "hide",
				'paddingTop': 0,
				'paddingBottom': 0,
				'border': 0,
				'lineHeight': 0
			}, speed, function() {
				if (typeof callBack == 'function') callBack();
			});
		});
		
		return this;
	}
})(jQuery);