var goptions = {
	sliderTimeout: 5000,
	sliderSpeed: 300
};

function bindTopBar() {
	$("body").mousemove(function(e) {
		var targetId = $(e.target).attr("id");
		
		if (targetId == 'loginA' || targetId == "loginBox" 
				|| $(e.target).parents("#loginBox").size() || $(e.target).parents("#loginA").size()) {
			e.stopPropagation();
			return;
		}
		
		if (targetId == 'basketA' || targetId == "basketInfo" || $(e.target).parents("#basketInfo").size() 
				|| $(e.target).parents("#basketA").size()) {
			e.stopPropagation();
			return;
		}
		
		if ($(e.target).parents("li.mContainer").size() > 0 || $(e.target).attr("class") == "mContainer") {
			e.stopPropagation();
			return;
		}
		
		$("#cats li").removeClass("active").removeClass("leftActive").removeClass("rightActive");
		$(".cats-subcats").hide();
		$("#lb").removeClass("hoverLogin").removeClass("hoverBasket");
		$("#loginBox, #basketInfo").hide();
	});
	
	$("#loginA").hover(function() {
		$("#basketInfo").hide();
		$("#lb").removeClass("hoverBasket").addClass("hoverLogin");
		$("#loginBox").show();
	});
	
	$("#basketA").hover(function() {
		$("#loginBox").hide();
		$("#lb").removeClass("hoverLogin").addClass("hoverBasket");
		$("#basketInfo").show();
	});
	
	$("#lgnUsername").val("Váš přihlašovací e-mail").blur(function() {
		labelInInputBlur("#lgnUsername", "Váš přihlašovací e-mail");
	}).click(function() {
		labelInInputClick("#lgnUsername", "Váš přihlašovací e-mail");
	});
	
	$("#lgnPasswordHid").show(0).focus(function() {
		$(this).hide().next().show(0).focus();
	});
}

function bindTopCategoriesMenu() {
	$("#cats li.mContainer a").hover(function() {
		var $li = $(this).parents("li:first");
	//	$li.prev().addClass("leftHover").end().next().addClass("rightHover");
		$li.addClass("active").prev().addClass("leftActive").end().next().addClass("rightActive");
		
		$li.prevAll(".mContainer").each(function(i, li) {
			$(li).find(".cats-subcats").hide();
		});
		$li.nextAll(".mContainer").each(function(i, li) {
			$(li).find(".cats-subcats").hide();
		});
		$(this).next(".cats-subcats").show();
	}, function(event) {

	});
	
	$(".cats-subcats").hover(null, function(event) {
		if ($(event.target).parents("li.mContainer").size() == 0) {
			$(".cats-subcats").hide();
		} else {
			event.stopPropagation();
		}
	});
}

function bindBasket() {
	$(".quantDiv .raise").click(function() {
		$(this).siblings("input").val(parseInt($(this).siblings("input").val()) + 1);
		return false;
	});
	
	$(".quantDiv .reduce").click(function() {
		var value = parseInt($(this).siblings("input").val());
		if (value == 0) {
			return false;
		}
		$(this).siblings("input").val(value - 1);
		return false;
	});
	
	$(".basket-add").submit(function() {
		var $form = $(this);
		var targetUrl = $form.attr("action")+
			"/productId:"+$form.find("#BasketItemProductId").val()+
			"/quantity:1";
		$.fancybox({
			href: targetUrl,
			showCloseButton: false
		});
		return false;
	});
}

function slider(selector, width, perPage) {
	$(selector).each(function(i, box) {
		$(box).find(".inner").cycle({
			speed: goptions.sliderSpeed,
			pause: 1,
			next: $(box).find(".next"),
			prev: $(box).find(".prev"),
			fx: 'scrollHorz',
			pager: $(box).find(".bottomInner"),
			slideExpr: ".page",
			pagerAnchorBuilder: function(idx, slide) {
				return '<a href="#"></a>'; 
			},
			fit: 1,
			width: width,
			timeout: goptions.sliderTimeout
		}).css("width", width);

		var maxHeight = 0;
		$pages = $(box).find(".page");
		if ($pages.size() == 1) {
			sameHeight($pages.find(".name"), perPage);
			sameHeight($pages.find(".author"), perPage);
			$pages.find(".pr3").each(function(i, el) {
				if ($(el).height() > maxHeight) {
					maxHeight = $(el).height();
				}
			});
		} else {
			$pages.each(function(i, el) {
				sameHeight($(el).find(".name"), perPage);
				sameHeight($(el).find(".author"), perPage);
				if ($(el).height() > maxHeight) {
					maxHeight = $(el).height();
				}
			});
		}
		$(box).find(".inner").height(maxHeight);

		$(box).find(".bottomInner").css(
			"margin-left", -1 * ($(box).find(".bottomInner a").size() * $(box).find(".bottomInner a:first").width()));
	});
}

function bindSlider() {
	slider(".slider", 642, 6);
}

function bindHpSlider() {
	slider(".hpSlider", 597, 5);
}

function bindFullSlider() {
	slider(".fullSlider", 778, 7);
}

function bindAjaxWindow() {
	$(".ajax-window, a.availability").fancybox({
		hideOnContentClick: false,
		padding: 0,
		autoDimensions: true,
		transitionIn: 'none',
		transitionOut: 'none',
		type: 'ajax',
		titleShow: false,
		showCloseButton: false
	});
	
	$(".ajax-window-reload").fancybox({
		hideOnContentClick: false,
		padding: 0,
		autoDimensions: true,
		transitionIn: 'none',
		transitionOut: 'none',
		type: 'ajax',
		titleShow: false,
		onClosed: function() {
			document.location.reload();
		},
		showCloseButton: false
	});
}

function bindHomepage() {
	if ($(".hpHighlight").size()) {
		$(".hpHighlight").cycle({
			activePagerClass: 'active',
			speed: 300,
			pause: 1,
			pager: ".paging",
			slideExpr: ".tslide",
			pagerAnchorBuilder: function(idx, slide) {
				return '<a href="#">'+(idx + 1)+'</a>'; 
			}
		});
	}
}

function bindTooltip() {
	$(".tooltip").tipTip({
		delay: 200,
		content: function(el) {
			var parts = $(el).attr("title").split("\n");
			if (parts[1] == undefined) {
				return "<p>"+parts[0]+"</p>";
			}
			return "<h3>"+parts[0]+"</h3><p>"+parts[1]+"</p>";
		},
		defaultPosition: 'top'
	});	
}

function bindRater() {
	$(".rater:not(.readonly)").each(function(i, el) {
		var backup = [];
		$(this).find('.star').each(function(i, el) {
			backup[i] = $(el).attr('class');
		});
		$(this).data('backup', backup);
	});

	$(".rater:not(.readonly)").mouseleave(function() {
		var backup = $(this).data('backup');
		if (backup == undefined) {
			return;
		}

		$(this).find('.star').each(function(i, el) {
			$(el).attr('class', backup[i]);
		});
	});

	$(".rater:not(.readonly) .star").mouseenter(function() {
		$(this).attr('class', 'star full');
		$(this).prevAll(".star").attr('class', 'star full');
		$(this).nextAll(".star").attr('class', 'star empty');
	}).click(function() {
		var $rater = $(this).parents(".rater:first");
		$.ajax({
			dataType: 'json',
			url: $(this).attr("href"),
			beforeSend: function() {
				$rater.append("<div class='overlay'>Odesílám</div>");
			},
			error: function() {
				$rater.find(".overlay").remove();
				alert("Nastala chyba při ukládání hodnocení, zkuste to prosím později");
			},
			success: function(response) {
				if (response.status == 'ok') {
					$rater.find(".overlay").addClass('success').text('Ok');
					setTimeout(function() {
						$rater.find(".overlay").fadeOut(300, function() {
							$rater.find(".overlay").remove();
						});
					}, 1000);
				} else {
					$rater.find(".overlay").remove();
					if (response.message == undefined) {
						alert("Nastala neznámá chyba");
					} else {
						alert(response.message);
					}
				}
			}
		});
		return false;
	});
}

function bindProducts() {
	$("#ProductSortBy, #ProductLimit, #SearchSortBy, #SearchLimit, #FavoriteSortBy, #FavoriteLimit, "+
			"#OrderSortBy, #OrderLimit").change(function() {
		$(this).parents("form:first").submit();
	});
	
	$(".bestDelivery a:first").click(function() {
		$("#fakePopup").toggle();
		return false;
	});
	
	$("body").click(function(e) {
		if ($(e.target).parents("#fakePopup").size()) {
			return;
		}
		
		$("#fakePopup").hide();
	});
	
	$("a[href='#comments']").click(function() {
		$(".tabs a:eq(1)").click();
	});
}

$(document).ready(function() {
	bindTopBar();
	bindTopCategoriesMenu();
	bindBasket();
	bindSlider();
	bindHpSlider();
	bindAjaxWindow();
	bindHomepage();
	bindTooltip();
	bindRater();
	bindProducts();
	bindFullSlider();
	
	$("a.lightbox").fancybox({
		overlayOpacity: 0.6,
		speedIn: 100,
		speedOut: 100,
		type: "image",
		titleShow: false,
		titlePosition: "inside",
		// hack for flash in the background... Take a look at wmode transparent?
		onStart: function() {
			$("object").hide();
		},
		onClosed: function() {
			$("object").show();
		}
	});	
	
	$(".close-reload").live('click', function() {
		$.fancybox.close();
		document.location.reload();
		return false;
	});
});
