/**
 * jQuery.timers - Timer abstractions for jQuery
 * Written by Blair Mitchelmore (blair DOT mitchelmore AT gmail DOT com)
 * Licensed under the WTFPL (http://sam.zoy.org/wtfpl/).
 * Date: 2009/02/08
 *
 * @author Blair Mitchelmore
 * @version 1.1.2
 *
 **/

jQuery.fn.extend({
	everyTime: function(interval, label, fn, times, belay) {
		return this.each(function() {
			jQuery.timer.add(this, interval, label, fn, times, belay);
		});
	},
	oneTime: function(interval, label, fn) {
		return this.each(function() {
			jQuery.timer.add(this, interval, label, fn, 1);
		});
	},
	stopTime: function(label, fn) {
		return this.each(function() {
			jQuery.timer.remove(this, label, fn);
		});
	}
});

jQuery.event.special

jQuery.extend({
	timer: {
		global: [],
		guid: 1,
		dataKey: "jQuery.timer",
		regex: /^([0-9]+(?:\.[0-9]*)?)\s*(.*s)?$/,
		powers: {
			// Yeah this is major overkill...
			'ms': 1,
			'cs': 10,
			'ds': 100,
			's': 1000,
			'das': 10000,
			'hs': 100000,
			'ks': 1000000
		},
		timeParse: function(value) {
			if (value == undefined || value == null)
				return null;
			var result = this.regex.exec(jQuery.trim(value.toString()));
			if (result[2]) {
				var num = parseFloat(result[1]);
				var mult = this.powers[result[2]] || 1;
				return num * mult;
			} else {
				return value;
			}
		},
		add: function(element, interval, label, fn, times, belay) {
			var counter = 0;
			
			if (jQuery.isFunction(label)) {
				if (!times) 
					times = fn;
				fn = label;
				label = interval;
			}
			
			interval = jQuery.timer.timeParse(interval);

			if (typeof interval != 'number' || isNaN(interval) || interval <= 0)
				return;

			if (times && times.constructor != Number) {
				belay = !!times;
				times = 0;
			}
			
			times = times || 0;
			belay = belay || false;
			
			var timers = jQuery.data(element, this.dataKey) || jQuery.data(element, this.dataKey, {});
			
			if (!timers[label])
				timers[label] = {};
			
			fn.timerID = fn.timerID || this.guid++;
			
			var handler = function() {
				if (belay && this.inProgress) 
					return;
				this.inProgress = true;
				if ((++counter > times && times !== 0) || fn.call(element, counter) === false)
					jQuery.timer.remove(element, label, fn);
				this.inProgress = false;
			};
			
			handler.timerID = fn.timerID;
			
			if (!timers[label][fn.timerID])
				timers[label][fn.timerID] = window.setInterval(handler,interval);
			
			this.global.push( element );
			
		},
		remove: function(element, label, fn) {
			var timers = jQuery.data(element, this.dataKey), ret;
			
			if ( timers ) {
				
				if (!label) {
					for ( label in timers )
						this.remove(element, label, fn);
				} else if ( timers[label] ) {
					if ( fn ) {
						if ( fn.timerID ) {
							window.clearInterval(timers[label][fn.timerID]);
							delete timers[label][fn.timerID];
						}
					} else {
						for ( var fn in timers[label] ) {
							window.clearInterval(timers[label][fn]);
							delete timers[label][fn];
						}
					}
					
					for ( ret in timers[label] ) break;
					if ( !ret ) {
						ret = null;
						delete timers[label];
					}
				}
				
				for ( ret in timers ) break;
				if ( !ret ) 
					jQuery.removeData(element, this.dataKey);
			}
		}
	}
});

jQuery(window).bind("unload", function() {
	jQuery.each(jQuery.timer.global, function(index, item) {
		jQuery.timer.remove(item);
	});
});

Array.prototype.max = function(){
	return Math.max.apply({},this);
};

function loadGallery(el, url, selector) {
	$(el).load(url + " " + selector,null, function() {
		$(el).find('a').css('display', 'block').each( function() {
				this.href = url;
		}).find("img").each(
				function() {
					this.src = this.src.replace("?q=gallery", "?q=default");
				}
		);
		$(el).find('.element').css('float','left').css('padding','0px 10px 10px 0px');
		$(el).find('a.title').hide();
	});
}



jQuery.fn.extend({

	showAd: function() {
		this.siblings().hide(300);
		this.show(300);
	},
	
	setSuperHoverOn: function(interval, fn, fnoff) {
		this.parent().find(".superhoveron").setSuperHoverOff(fnoff);
		this.addClass("superhoveron");
		fn.call(this.get(0));
	},
	
	setSuperHoverOff: function(fn) {
		this.removeClass("superhoveron");
		this.stopTime('superhover');
		fn.call(this.get(0));
	},
	
	superHoverTimerOn: function(interval, fnon, fnoff) {
		//alert('shton ' + interval + this);
		$(this).setSuperHoverOn(interval, fnon, fnoff);
		$(this).oneTime(interval, 'superhover', function() {
			//alert('xxx' + this);
			$(this).setSuperHoverOff(fnoff);
			var n = $(this).next(".superhover");
			if( n.length == 0) 
				n = $(this).parent().children(":first");
			n.setSuperHoverOn(interval, fnon, fnoff);
			n.superHoverTimerOn(interval, fnon, fnoff);
		});
	},
	
	superhover: function(interval, fnon, fnoff) {
		this.addClass('superhover');
		this.hover( function() {
			$(this).setSuperHoverOn(interval, fnon, fnoff);
		}, function() {
			$(this).superHoverTimerOn(interval, fnon, fnoff);
		});
		var sh = this.parent().children(":first");
		sh.superHoverTimerOn(interval, fnon, fnoff);
	},
	
	addVertScroller: function() {
	
	this.wrapInner("<div class='vertscrollcontainer'><div class='vertscrollcontainerinner'></div>");
	
	x = this;
	x.prepend("<a href='#' class='vertscroll up' onclick='return false;'></a>");
	x.append("<a href='#'  class='vertscroll down' onclick='return false;'></a>");
	
	this.each(
			function() {
				var h = $(this).innerHeight();
				//$(this).parent().css("border", "1px dotted red");
				//$(this).parent().text(h);
				var ih = h;
				var ah =0;
				$(this).children("a.vertscroll").each(
					function() {
						ah += $(this).outerHeight();
						h -= $(this).outerHeight();
					}
				);
				//alert("Inner height-1: " + ih + " AH:" + ah + " RH:" + h);
				$(this).children("div.vertscrollcontainer").height(h);
				//$(this).css('overflow','hidden');
				$(this).children("div.vertscrollcontainer").css("overflow", "hidden");
			}
	);
	
	$('a.vertscroll').hover( function() {
			var el = $(this).parent().find("div.vertscrollcontainerinner");
			var h = el.height() - $(this).parent().find("div.vertscrollcontainer").innerHeight();
			if( h < 0) return;
			var vci = $(this).parent().find("div.vertscrollcontainerinner");
			var top = Math.round(vci.css("top").replace("px",""));
			if( isNaN(top)) top = 0;
			top = -top;
			if( $(this).hasClass("down") ) {
				vci.animate({"top": "" + (-h) + "px"},20*(h-top), "swing");
			} else {
				vci.animate({"top": "0px"}, 20*top, "swing");
			}
			
		}, function() {
			$(this).parent().find("div.vertscrollcontainerinner").stop();
		}).bind("click", function() { 
			var el = $(this).parent().find("div.vertscrollcontainerinner");
			var h = el.height() - $(this).parent().find("div.vertscrollcontainer").innerHeight();
			var vci = $(this).parent().find("div.vertscrollcontainerinner");
			var top = Math.round(vci.css("top").replace("px",""));
			var skok = 40;
			if( $(this).hasClass("down") ) {
				if( (h+top) > skok) {
					top = top-skok;
				} else {
					top = -h;
				}
			} else {
				if( top < -skok ) {
					top = top+skok;
				} else {
					top = 0;
				}
			}
			$(this).parent().find("div.vertscrollcontainerinner").stop();
			vci.animate({"top": top},300);
		});
		
	}
	
});

$(document).ready(function(){
	
	// newsrelated 
	$("#newspreview").show();
	$("#newslist").css("width", "240px");
	$("#newslist .title").css( "width", "155");
	$("#newslist .date").css( "width", "60");
	
	$("#newslist a").hover(
			function() {
				var story = $(this).parent().parent();
				//$("#newspreview").stop();
				var t = $(this);
				$("#newspreview").fadeOut("fast", function() {
				$("#newspreviewtitle").html( t.parent().html());
				$("#newspreviewtitle").children("a").css("color", "");
				$("#newspreviewteaser").html(
						story.children(".teaser").html()
					);
				$("#newspreviewdate").html(
						story.children(".date").html()
					);
				$("#newspreview").fadeIn("fast");
				} );
				t.css("color", "#128");

			},
			function() {
				$(this).css("color", "");
			}
	
	);
	
	//copy first article
	var x = $("#newslist a:first");
	$("#newspreviewtitle").html( x.parent().html());
	$("#newspreviewteaser").html(
			x.parent().parent().children(".teaser").html()
		);
	$("#newspreviewdate").html(
			x.parent().parent().children(".date").html()
		);
	
	$('div.vertscroll').addVertScroller();
	
	$('#fotolist').css("overflow", "hidden");
	$('#fotopreview').show();	
	$('#fotolist .title, #fotolist div.p').hide();
	$('#fotolist .img').css('margin-left','10px');
	$('#fotolist').css({'text-align': 'center', 'width' : '90px'});
	$('#fotolist .fotostory').hover(
			function() {
				$('#fotopreview').html( $(this).html());
				$('#fotopreview *').show();
				$('#fotopreview .img').css('margin-left','0px');
	}, function() {
	}).css('margin: 1px auto');
	$('#fotopreview').html( $("#fotolist .fotostory:first").html());
	$('#fotopreview *').show();
	$('#fotopreview .img').css('margin-left','0px');
	$('#gallerypreview').each( function() {
		$(this).show();
		var href = $('#gallerylist .gallery a').get(0).href;
		loadGallery("#gallerypreview", href, "#gallerysingle .gallery");
	});
	$('#gallerylist .gallery a').bind( "click", function() {
		loadGallery("#gallerypreview", this.href, "#gallerysingle .gallery");
		return false;
	});
	
	var av = $('#adoverlay');
	var i=1;
	$('#adcontent .ad').each(
			function() {
				this.id = "adcontent" + i +"tgt";
				$(this).css("position","absolute");
				var url = $(this).find("h1 a").get(0).href;
				av.append("<a class='adbt' id='adcontent" + i + "' href='"+ url +"'></a>");
				i++;
			}
	);
	$('#adcontent .ad :first').css('z-index', '65');
	av.wrapInner("<div class='adbtcontainer'></div>");
	av.find(".adbt").superhover(
			"4s",
			function() {
				//alert('dui' + this);
				$(this).css('background-color', 'orange');
				//.css("z-index","65").background('white');
				//alert("#" + this.id + "tgt");
				$("#" + this.id + "tgt").showAd();
				var href= this.href;
				$("#adoverlay").bind("click", function() {
					document.location = href;
				});
			},
			function() {
				$(this).css('background-color', '');
				//$("#" + this.id + "tgt").css("z-index","");
			}
	);
	
	x = $("#menu").children(":last").addClass('last-child');
	
	$("div.chapter").each( function() {
		$(this).hide();
		$(this).find('.chapterphotos').addClass('chapterphotospos');
		$(this).find('.body').addClass('chapterbodypos');
	});
	
	$(".chapter:first").each( function() {
		var l =  $(this).parent().children(".chapter").length;
		var x = "";
		if( l > 1) {
			for( i=1; i<=l; i++) {
				x += "<a href='#' class='c" + i + "'></a>";
			}
			$(this).before("<div class='chaptersel'><span>Strona:</span>"+x+"</div>");
		}
		$(this).show();
	});
	
	$(".chaptersel a").bind( "click", function() {
		$(this).parent().parent().find('.chapter').hide("medium");
		var i = $(this).parent().children("a").index(this);
		$($(this).parent().parent().find('.chapter').get(i)).show("medium", function() {
			$(".chapterbodypos").each( function() {
				if( $(this).innerHeight() > 300)
					$(this).css('overflow', 'auto');
			});
		});
		return false;
	});
	
	$(".chapterbodypos").each( function() {
		if( $(this).innerHeight() > 300)
			$(this).css('overflow', 'auto');
	});
	
	$(".description p").each( function() { 
		if( $(this).text().trim().length < 2)
			$(this).remove();
	});
	$(".teaser p").each( function() { 
		if( $(this).text().trim().length < 2)
			$(this).remove();
	});
	
});
