//var preload = new Array();

$(document).ready(function(){
	titleResize($("#mainpromoblock span.promotitle"));
	initGenreMenu(); // genremenu initialization
	initPromoPreview();
	titleResize($("#promoitems span.promotitle"));
	
});
// end of dom load functions

/*
function preloadImages() {
	for (var i=0; i<this.arguments.length; i++) {
		var img = new Image();
		img.src = this.arguments[i];

	}
}
*/

function titleResize(t) {
	$(t).each(function(){
		var t = $(this);
		var title = $("span", t).text();
		var need = false;
		// test full length
		if (title.length > 25) need = true;
		if (!need) {
			var tmp = title.split(" ");
			for (var i=0; i<tmp.length; i++) {
				if (tmp[i].length >= 12) {
					need = true;
					break;
				}
			}
		}
		if (need) {
			t.removeClass("promotitle").addClass("promotitlesmall");
		}
	});	
}

var timerSU;
function initGenreMenu() { // genremenu open/close
	var genremenu = $("#genremenu").addClass("hide");
	if (genremenu.length > 0) {
		var ul = $("ul",genremenu);
		var opener = $("div.genremenuopener", genremenu);
		opener.click(function(){
			var opener = $(this);
			$(ul).stop(); // remove all animation
			if (opener.hasClass("closed")) { // closed? open it!
				$(ul).slideDown(300,function(){
					opener.removeClass("closed");
				});
			} else {
				$(ul).slideUp(300,function(){ // open? close it!
					opener.addClass("closed");
				});
			} // $(opener).hasClass("closed")
		}); // click function
		// smart slideUp
		var t = 5000;
		$('<img src="i/bg_genremenu.png" width="1" height="1" alt="" />').load(function(){
//		alert('show genremenu');
			genremenu.removeClass("hide");
			timerSU = window.setTimeout(function(){
				window.clearTimeout(timerSU);
				if (!opener.hasClass("closed")) {
					$(ul).slideUp(300,function(){ // open? close it!
						opener.addClass("closed");
					});
				}
			}, t);
			$(this).remove();
		});
		$(window).load(function () { // fix previous img.load if not event is sent
			if (genremenu.hasClass("hide")) genremenu.removeClass("hide");		
			timerSU = window.setTimeout(function(){
				window.clearTimeout(timerSU);
				if (!opener.hasClass("closed")) {
					$(ul).slideUp(300,function(){ // open? close it!
						opener.addClass("closed");
					});
				}
			}, t);
		});
		$(ul).bind("mouseenter.smartslideup",function(){
			if(typeof timerSU == "number") clearTimeout(timerSU);
		});
		$(ul).bind("mouseleave.smartslideup",function(){
			if(typeof timerSU == "number") clearTimeout(timerSU);
			timerSU = window.setTimeout(function(){
				window.clearTimeout(timerSU);
				if (!opener.hasClass("closed")) {
					$(ul).slideUp(300,function(){ // open? close it!
						opener.addClass("closed");
					});
				}
			}, t);
		});
	}// if genremenu.length
} // initGenreMenu()


function initPromoPreview() { // preview line functional
	var promopreview = $("#promopreview");
	var mainpromoblock = $("#mainpromoblock");
	var promodescr = $("#mainpromoblock div.promodescr");
	promodescr.addClass("hide");
		$('<img src="i/bg_promodescr.png" width="1" height="1" alt="" />').load(function(){
			promodescr.removeClass("hide");
			$(this).remove();
		});
		$(window).load(function () {
			if (promodescr.hasClass("hide")) promodescr.removeClass("hide");		
		});

	if (promopreview.length > 0 && mainpromoblock.length > 0) {
		var ul = $("ul",promopreview);

		$(ul).bind("mouseenter.smartslideup",function(){
			if(typeof timerSU == "number") clearTimeout(timerSU);
			var genremenu = $("#genremenu");
			if (genremenu.length > 0) {
				var gmul = $("ul",genremenu);
				var opener = $("div.genremenuopener", genremenu);
				if (!opener.hasClass("closed")) {
					$(gmul).slideUp(300,function(){ // open? close it!
						opener.addClass("closed");
					});
				}
			}
		});
		
		var wrapper = $('#promopreview .promowrapper'); 
		if(wrapper.length==0){
			wrapper = $('<div class="promowrapper"></div>');
			ul.wrap(wrapper); // wrap ul with wrapper
		}
		var offsetUL = $(ul).position();
		var leftButton = $('<img src="i/1.gif" class="promo2left hide" width="15" height="15" alt="&laquo;" />').appendTo(promopreview);
		var rightButton = $('<img src="i/1.gif" class="promo2right hide" width="15" height="15" alt="&raquo;" />').appendTo(promopreview);
		$(leftButton).css({opacity:'0.5'});
		var w = 0; // ul width
		$("li:first",ul).addClass('first'); // add class for FIRST LI for scrolling
		$("li:last",ul).addClass('last'); // add class for LAST LI for scrolling
		$("li",ul).each(function(){
			var li = $(this);
			var img = $("img",li); // get preview image
			// create bubble title from img ALT-attribute
			var alt = cutWordsInLongText($(img).attr("alt"),4,'...');
			var title = $('<span class="promoprevtitle"><b></b><em>'+alt+'</em><i></i></span>');
			$(img).attr("alt",""); // fix IE, remove ALT
			$(title).appendTo(promopreview); // insert bubble to DOM
			// create mask for current preview
			$('<span class="promoprevcurr"></span>').insertBefore(img);
			// preview hover action
			$(li).hover(function(){
				// mouse over
				if (!$(this).hasClass("current")) {
					var offsetUL = $(ul).position(); // check ul position
					var offsetLI = $(this).position(); // check hovered li position
					var pleft = offsetLI.left + offsetUL.left + 26; // set title bubble left position
					pleft = (pleft < 9) ? 9 : pleft; // fix left partial visible
					pleft = (pleft > 943) ? 943 : pleft; // fix right partial visible
					$(this).addClass("hover");
					// show title bubble
					$(title).css({display:'block',left:pleft+'px',top:(offsetLI.top + 25) +'px'});
				}
			},function(){
				$(this).removeClass("hover"); // mouse out
				// hide title bubble
				$(title).css({display:'none'});
			});
			var ml = $(li).css("marginLeft"); ml = ml.replace("px","") * 1;
			var mr = $(li).css("marginRight"); mr = mr.replace("px","") * 1;
			this.ml = ml; this.mr = mr; // write margin to the LI
			this.w = $(li).outerWidth(); // write width to the LI
			w = w + this.w + ml + mr;
		});

		$(ul).width(w+5);

		var animate = scrollable = false;
		var leftBord = 0 ; // promoblock left border
		var rightBord = $('div.promowrapper').width(); // promoblock right border
		var intrvl = 10; // repeat interval
		var dx = 7; // move by dx pixels
		var ulwidth = ul.width() - 5;
		if (ulwidth > rightBord) { 
			$(leftButton).removeClass('hide');
			$(rightButton).removeClass('hide');
			$(rightButton).bind("mouseenter.bright", function() {
				scrollable = window.setInterval(function() {
					var offul = $(ul).position();
					$(leftButton).css({opacity:'1'});
					if (Math.abs(offul.left - dx) + rightBord >= ulwidth) {
						window.clearInterval(scrollable);
						ul.css({left: rightBord - ulwidth});
						$(rightButton).css({opacity:'0.5'});
					} else {
						ul.css({left: offul.left - dx});
					}
				}, intrvl);
			});
			$(rightButton).bind("mouseleave.bright", function() {
				if (typeof scrollable == 'number') {
					window.clearInterval(scrollable);
				}
			});
			$(leftButton).bind("mouseenter.bright", function() {
				scrollable = window.setInterval(function() {
					var offul = $(ul).position();
					$(rightButton).css({opacity:'1'});
					if (offul.left >= 0) {
						window.clearInterval(scrollable);
						ul.css({left: 0});
						$(leftButton).css({opacity:'0.5'});
					} else {
						ul.css({left: offul.left + dx});
					}
				}, intrvl);
			});
			$(leftButton).bind("mouseleave.bright", function() {
				if (typeof scrollable == 'number') {
					window.clearInterval(scrollable);
				}
			});
		}
		var liCount = $("li",ul).length;
		$("li",ul).click(function(){ // CLICK on LI
			if ($(this).hasClass("madbanner")) {
				$("#mainpromoblock").fadeOut();
				$("#p"+$("li.current").attr("id")).fadeOut( function() {
					$(this).addClass("hidden");
				});
				
				$("#p"+$(this).attr("id")).fadeIn( function() {
					$(this).removeClass("hidden");
				});
				$("#madbannerlist").fadeIn();
				$("li.current").removeClass("current");
				$(this).removeClass("hover").addClass("current");
			} else {
				$("#mainpromoblock").show();
				
				var li = $(this);
				if (!$(li).hasClass("current")) { // ignore current preview

					var id = $(li).attr("id").replace("pp_","");
					
					// Добавляем картинку в блок
					// if ((!($(li).hasClass("flash"))) && (!($("#pb_"+id+" div.promopic").hasClass("loaded")))) {
					if (!$(li).hasClass("flash") && !$(li).hasClass("madbanner"))
						if (!$("#pb_"+id+" div.promopic").hasClass("loaded"))
							$("#pb_"+id+" div.promopic").html("<img src='"+$("#pb_"+id+" div.promopic").attr('src')+"' alt='' width='998' height='558'/>");
					

					var newhtml = $("#pb_"+id).html();
					if (newhtml) { // new block
						var isFlash = ($("li.current",ul).hasClass('flash') || $(li).hasClass('flash')) ? true : false;
						// prepare main promo block
						if (!animate) {
							animate = true; // animate started
							$(mainpromoblock).wrapInner('<div class="oldpromoblock"></div>');
							if($("li.current").hasClass("madbanner")) {
								$(".oldpromoblock").html("");
							}
							var newblock = $('<div class="newpromoblock"></div>').appendTo(mainpromoblock);
								$(newblock).animate({opacity:0},1,function(){
									$(this).html(newhtml);
									//$("#mainpromoblock").html(newhtml);
								});
						} else {
							$("#mainpromoblock div.oldpromoblock,#mainpromoblock div.newpromoblock").stop();
							$("#mainpromoblock div.newpromoblock").html(newhtml)
						}
						$("li.current",ul).removeClass("current");
						$(li).removeClass("hover").addClass("current");
						// check li position 
						var ulPos = ul.position();
						var liPos = li.position();
						if ((liPos.left + ulPos.left) < 0 || (liPos.left - (li.width() + 8) + ulPos.left) < 0) { // first partial visible li 
							if (typeof scrollable == 'number') window.clearInterval(scrollable); // stop scroll
							$('span.promoprevtitle',promopreview).css({display:'none'});
							if (li.hasClass('first') || li.index() == 1) {
								$(ul).animate({left: ulPos.left + Math.abs(liPos.left + ulPos.left)},150);
							} else {
								$(ul).animate({left: ulPos.left + li.outerWidth() + 7},250);
							}
						
						} 

						if ((liPos.left + ulPos.left)+li.width() > rightBord || (liPos.left + ulPos.left + 8)+ 2 * li.width() > rightBord) { // last partial visible li 
							if (typeof scrollable == 'number') window.clearInterval(scrollable); // stop scroll
							$('span.promoprevtitle',promopreview).css({display:'none'});
							if (li.hasClass('last') || li.index()+2 == liCount) {
								$(ul).animate({left: rightBord - ul.width()  + 5},150);
							} else {
								$(ul).animate({left: ulPos.left - li.outerWidth() - 8},250);
							}
						} 

						// replace old promo block with new
						if (isFlash) { // do not use opacity animation if old or new block with flash content
							if($(li).hasClass('flash') || $("#pb_"+id+" div.promopic").hasClass('loaded')) {
								$("#madbannerlist").addClass("hidden");
                        $("#madbannerlist").hide();
								$("#mainpromoblock div.oldpromoblock").animate({opacity:0},1).hide(1,function(){
									$(this).remove();
								});
								$("#mainpromoblock div.newpromoblock").animate({opacity:1},1).show(1,function(){
									var rem = $(this);
									$(mainpromoblock).html($(rem).html());
									$(rem).remove();
									$("li.current",ul).removeClass("current");
									$(li).removeClass("hover").addClass("current");
									animate = false;
								});
							} else {
								$("#ajax-loader").show();
								$("#pb_"+id+" div.promopic img").load( function() {
									$("#madbannerlist").addClass("hidden");
									$("#ajax-loader").hide();
									$("#mainpromoblock div.oldpromoblock").animate({opacity:0},1).hide(1,function(){
										$(this).remove();
									});
									$("#mainpromoblock div.newpromoblock").animate({opacity:1},1).show(1,function(){
										var rem = $(this);
										$(mainpromoblock).html($(rem).html());
										$(rem).remove();
										$("li.current",ul).removeClass("current");
										$(li).removeClass("hover").addClass("current");
										animate = false;
									});
								});
							}
						} else { // no flash content in old and new blocks
							if($("#pb_"+id+" div.promopic").hasClass('loaded')) {
								$("#madbannerlist").addClass("hidden");
								$("#mainpromoblock div.oldpromoblock").animate({opacity:0},600,'linear',function(){
									$(this).remove();
								});
								$("#mainpromoblock div.newpromoblock").animate({opacity:1},800,'linear',function(){
									var rem = $(this);
									$(mainpromoblock).html($(rem).html());
									$(rem).remove();
									$("li.current",ul).removeClass("current");
									$(li).removeClass("hover").addClass("current");
									animate = false;
								});
							} else {
								$("#ajax-loader").show();
								$("#pb_"+id+" div.promopic img").load( function() {
									$("#madbannerlist").addClass("hidden");                           
									$("#ajax-loader").hide();
									$("#mainpromoblock div.oldpromoblock").animate({opacity:0},600,'linear',function(){
										$(this).remove();
									});
									$("#mainpromoblock div.newpromoblock").animate({opacity:1},800,'linear',function(){
										var rem = $(this);
										$(mainpromoblock).html($(rem).html());
										$(rem).remove();
										$("li.current",ul).removeClass("current");
										$(li).removeClass("hover").addClass("current");
										animate = false;
									});
									$("#pb_"+id+" div.promopic").addClass('loaded');
								});
							}
						}
					} // $(newblock).length > 0
				} // !$(li).hasClass("current")
			}
		}); // $("li",ul).click(function()
		
		
		
		
	} // promopreview.length > 0
} // initPromoPreview()

function showCategory(obj){
	obj = $(obj);
	
	var promopreview = $("#promopreview");
	var mainpromoblock = $("#mainpromoblock");
	
	$('#genremenu').find('.current').removeClass('current');
	var curr = $('#promolist li.current');
	
	var id = obj.attr('rel');
	$('#promolist').html($('#category' + id + ' li').clone());
	$('#promolist').css({left:'0px'});
	promopreview.find('.promo2left').remove();
	promopreview.find('.promo2right').remove();
	
	initPromoPreview();
	
	var ul = $("ul",promopreview);
	var li = $('#promolist li:first');
	var animate = false;
	var liId = li.attr("id").replace("pp_","");
	
	if (!$(li).hasClass("flash"))
		if (!$("#pb_"+liId+" div.promopic").hasClass("loaded"))
			$("#pb_"+liId+" div.promopic").html("<img src='"+$("#pb_"+liId+" div.promopic").attr('src')+"' alt='' width='998' height='558'/>");
	
	var newhtml = $("#pb_"+liId).html();
	if (newhtml) { // new block
		if (!animate) {
			animate = true; // animate started
			$(mainpromoblock).wrapInner('<div class="oldpromoblock"></div>');
			var newblock = $('<div class="newpromoblock"></div>').appendTo(mainpromoblock);
			$(newblock).animate({opacity:0},1,function(){
				$(this).html(newhtml);
			});
		} else {
			$("#mainpromoblock div.oldpromoblock,#mainpromoblock div.newpromoblock").stop();
			$("#mainpromoblock div.newpromoblock").html(newhtml)
		}
		
		var flash = (curr.hasClass('flash') || $(li).hasClass('flash')) ? true : false;
		//alert(flash);
		$("li.current",ul).removeClass("current");
		$(li).removeClass("hover").addClass("current");
		if (flash) {
			if($(li).hasClass('flash') || $("#pb_"+liId+" div.promopic").hasClass('loaded')) {
				$("#mainpromoblock div.oldpromoblock").hide(1,function(){
					$(this).remove();
				});
				$("#mainpromoblock div.newpromoblock").show(1,function(){
					var rem = $(this);
					$(mainpromoblock).html($(rem).html());
					$(rem).remove();
					$("li.current",ul).removeClass("current");
					$(li).removeClass("hover").addClass("current");
					animate = false;
				});
			} else {
				$("#ajax-loader").show();
				$("#pb_"+liId+" div.promopic img").load( function() {
					$("#ajax-loader").hide();
					$("#mainpromoblock div.oldpromoblock").hide(1,function(){
						$(this).remove();
					});
					$("#mainpromoblock div.newpromoblock").show(1,function(){
						var rem = $(this);
						$(mainpromoblock).html($(rem).html());
						$(rem).remove();
						$("li.current",ul).removeClass("current");
						$(li).removeClass("hover").addClass("current");
						animate = false;
					});
				});
			}
		} else {
			if($("#pb_"+liId+" div.promopic").hasClass('loaded')) {
				$("#mainpromoblock div.oldpromoblock").animate({opacity:0},600,'linear',function(){
					$(this).remove();
				});
				$("#mainpromoblock div.newpromoblock").animate({opacity:1},800,'linear',function(){
					var rem = $(this);
					$(mainpromoblock).html($(rem).html());
					$(rem).remove();
					$("li.current",ul).removeClass("current");
					$(li).removeClass("hover").addClass("current");
					animate = false;
				});
			} else {
				$("#ajax-loader").show();
				$("#pb_"+liId+" div.promopic img").load( function() {
					$("#ajax-loader").hide();
					$("#mainpromoblock div.oldpromoblock").animate({opacity:0},600,'linear',function(){
						$(this).remove();
					});
					$("#mainpromoblock div.newpromoblock").animate({opacity:1},800,'linear',function(){
						var rem = $(this);
						$(mainpromoblock).html($(rem).html());
						$(rem).remove();
						$("li.current",ul).removeClass("current");
						$(li).removeClass("hover").addClass("current");
						animate = false;
					});
				});
			}
		}
		
	} // $(newblock).length > 0
	
	obj.addClass('current');
}

function goTo(){
	if($('#mainpromoblock').find('.promopic').attr('target') == "blank")
		window.open($('#mainpromoblock').find('.promopic').attr('href')); 
	else
		window.location = $('#mainpromoblock').find('.promopic').attr('href'); 
}



















