$(document).ready(function() {
	// Höhen-Korrektur:
	var upper_pairs = $('div.content_upper').children().not('div.content_box_10col').not('div.content_divider_10col');
	var upper_odds = $(upper_pairs).children(':odd');
	var upper_evens = $(upper_pairs).children(':even');
	var upper_pair = [[],[],[]];
	
	for (var i_upper = 0; i_upper < upper_pairs.length; i_upper++) {

		for (var i_upper_evens = 0; i_upper_evens < upper_evens.length; i_upper_evens++) {
			upper_pair[0][i_upper_evens] = upper_evens[i_upper_evens];
		};
		
		for (var i_upper_odds = 0; i_upper_odds < upper_odds.length; i_upper_odds++) {
			upper_pair[1][i_upper_odds] = upper_odds[i_upper_odds];
		};
		
		$(upper_pair[0][i_upper]).add(upper_pair[1][i_upper]).equalHeights();
	};
	

	var lower_pairs = $('div.content_lower').children().not('div.content_box_13col').not('div.content_divider_13col');
	var lower_odds = $(lower_pairs).children(':odd');
	var lower_evens = $(lower_pairs).children(':even');
	var lower_pair = [[],[],[]];
	
	for (var i_lower = 0; i_lower < lower_pairs.length; i_lower++) {

		for (var i_lower_evens = 0; i_lower_evens < lower_evens.length; i_lower_evens++) {
			lower_pair[0][i_lower_evens] = lower_evens[i_lower_evens];
		};
		
		for (var i_lower_odds = 0; i_lower_odds < lower_odds.length; i_lower_odds++) {
			lower_pair[1][i_lower_odds] = lower_odds[i_lower_odds];
		};
		
		$(lower_pair[0][i_lower]).add(lower_pair[1][i_lower]).equalHeights();
	};
	

	
	
	
	// Max. 10 Artikel gleichzeitig und den Rest erstmal ausblenden
	var displayedElementsCount = 10;
	var elementsCount = $('div.newselement').length;
	var displayedElements = $('div.newselement').slice(0, displayedElementsCount);
	var hiddenElements = $('div.newselement').slice(displayedElementsCount, elementsCount);
	var lastVisible = displayedElements.last();
	
	hiddenElements.hide();
	if( elementsCount > 10 ) {
		$('<div id="more_articles" class="more_content_bar left"><div>Noch mehr Rock? <small>Klicke hier um noch mehr zu lesen!</small></div></div>').appendTo('div.content_upper');
		$('div#more_articles').live('click', function() {
			displayedElementsCount = displayedElementsCount + 5;
			$(this).remove().appendTo('div.content_upper');
			$('div.newselement').slice(0, displayedElementsCount).fadeIn();
			if( displayedElementsCount >= elementsCount ) {
				$(this).remove();
			}
		});
	};
	
	
	// Artikel-Bild Zoom-Funktion
	$('img.zoomable').click(function () {
		var bigImage = $(this).parent('a').attr('rel');
		var bigImageAlt = $(this).attr('alt')+' (gro&szlig;)';
		var imagePosition = $(this).position();
		var caption = $(this).parent().siblings('small.caption').text();
		$('<div class="bigimage" style="width: 560px;"><img class="bigimage" src="' + bigImage + '" alt="' + bigImageAlt + '" /><p class="big_caption"></p></div>').hide().insertAfter(this);
	
		$(this).fadeTo("slow", 0.5, function() {
			$('<img class="load" src="/upload/s/831/homepage/images/ajax-loader.gif" alt="Lade..." width="16" height="16" style="position: absolute; top: ' + imagePosition.top + 'px; left: ' + imagePosition.left + 'px; padding: 10px;" />').insertAfter(this);
		});
		
		$('.bigimage').load( function() {
			$(this).click(function () {
				$(this).fadeTo("slow", 0, function() {
					$('.bigimage').hide().remove();
					$('img.zoomable, .caption').css('opacity',100).fadeIn('slow');
				});
			});
			$('.load, img.zoomable, .caption').fadeTo("slow", 0, function() {
				$('.load, img.zoomable, .caption').hide();
				$('.load').remove();
				$('.bigimage').fadeIn('slow');
				$('p.big_caption').html(caption);
			});
		});
	});
	
	
	// Externe Links in neuem Fenster öffnen
	$(document).ready(function(){
		$("a[rel='external']").attr('target', '_blank');
	});
	
	
	// Fix: Headline-border / media_tools intersection
	$('div.media_tools').next('h5').css('width','70%');
	
	
	// Twitter-API-Call
	var featureHeight = $('div#frontpage').innerHeight();
	var box1Height = $('div#agfradioBox').innerHeight();
	var box2Height = $('div#shortlinksBox').innerHeight();
	var box3Height = $('div#nextDatesBox').innerHeight();
	var boxesHeight = box1Height + box2Height + box3Height;
	var varHeight = featureHeight - boxesHeight - 35;
	$('div#twitterBox div.content_inner').height(varHeight);

	$.ajax({
		url: "http://twitter.com/statuses/user_timeline/dasrocktmagazin.json?callback=?",
		dataType: "json",
		timeout:15000,
		success: function(data) {
			/*for (i=0; i<data.length; i++) { // Alle Tweets
				$("#twitter_feed").append("<p>" + data[i].text) +"</p>";
				//$("#twitter_feed").append("<p>" + data[i].created_at +"</p>");
			}*/
			//$("#twitter_feed").empty().append('<div id="twitter_msg">' + data[0].text + '</div>'); // Aktueller Tweet
			$("#twitter_feed").empty().append('<div id="twitter_msg" style="visibility: hidden;">' + data[0].text + '</div>');
			var tweetMsgHeight = $("#twitter_feed").height();
			$('#twitter_feed').empty().append('<marquee behavior="scroll" direction="up" scrollamount="2" height="' + tweetMsgHeight + '">' + data[0].text + '</marquee>'); // Aktueller Tweet
			
			// Height-Fix Twitterbox FRONTPAGE
			var featureHeight = $('div#frontpagecontent').innerHeight();
			var box1Height = $('div#agfradioBox').innerHeight();
			var box2Height = $('div#shortlinksBox').innerHeight();
			var box3Height = $('div#nextDatesBox').innerHeight();
			var boxesHeight = box1Height + box2Height + box3Height;
			var varHeight = featureHeight - boxesHeight - 35;
			$('div#twitterBox div.content_inner').height(varHeight);
			//$("div#debug").text('DEBUG: featureHeight: ' + featureHeight + '  1: ' + box1Height + '  2: ' + box2Height + '  3: ' + box3Height + ' ALL: ' + boxesHeight + ' varHeight: ' + varHeight + ' tweetMsgHeight: ' +tweetMsgHeight).css('color','#fff');
			var scrollerHeight = varHeight - 15;
			
			if(tweetMsgHeight >= scrollerHeight ) {
				$('div#twitter_feed').height(scrollerHeight).css('overflow','hidden');
				$('div#twitter_feed marquee').css('height', scrollerHeight).css('overflow','hidden');
			} else {
				$("#twitter_feed").empty().append('<div id="twitter_msg">' + data[0].text + '</div>');
			}
		},
		error: function() {
			$("#twitter_feed").empty().append('<div id="twitter_msg">Twitter ist gerade etwas &uuml;berlastet.</div>');
		},
	});
	
	

	
	
	
	// AgF-Radio - aktuelle Song-Info holen:	
	/*var refreshId = setInterval( function() {
		 $('#agf_song').fadeOut("slow").load('http://www.agf-radio.de/dasrockt_radiostatus.php').fadeIn("slow");
	}, 10000);*/


	
	
	// Such-Feld Ticketshop
	$('#event_search').attr('value','Konzert- & Festival-Tickets finden...');
	$('#event_search').focusin( function() {
		$(this).attr('value','');
	})
	$('#event_search').focusout( function() {
		$(this).attr('value','Konzert- & Festival-Tickets finden...');
	})
	
	
	// /document.ready
});


$.fn.equalHeights = function(px) {
	var currentTallest = 0;
	$(this).each(function(i){
		if ($(this).height() > currentTallest) { currentTallest = $(this).height(); }
	});
	if (!px || !Number.prototype.pxToEm) currentTallest = currentTallest.pxToEm();
	if ($.browser.msie && $.browser.version == 6.0) { $(this).css({'height': currentTallest}); }
	$(this).css({'min-height': currentTallest}); 
	return this;
};


Number.prototype.pxToEm = String.prototype.pxToEm = function(settings){
	//set defaults
	settings = jQuery.extend({
		scope: 'body',
		reverse: false
	}, settings);
	
	var pxVal = (this == '') ? 0 : parseFloat(this);
	var scopeVal;
	var getWindowWidth = function(){
		var de = document.documentElement;
		return self.innerWidth || (de && de.clientWidth) || document.body.clientWidth;
	};		
				
	if (settings.scope == 'body' && $.browser.msie && (parseFloat($('body').css('font-size')) / getWindowWidth()).toFixed(1) > 0.0) {
		var calcFontSize = function(){		
			return (parseFloat($('body').css('font-size'))/getWindowWidth()).toFixed(3) * 16;
		};
		scopeVal = calcFontSize();
	}
	else { scopeVal = parseFloat(jQuery(settings.scope).css("font-size")); };
			
	var result = (settings.reverse == true) ? (pxVal * scopeVal).toFixed(2) + 'px' : (pxVal / scopeVal).toFixed(2) + 'em';
	return result;
};

function autoScroller(contentDiv, speed)
{
    contentDiv = "#"+contentDiv;
    var scrollSpeed = (speed==null) ? 5 : parseInt(speed);
    
    // double make sure the autoScroller-container has the correct css position and overflow property
    $(contentDiv).parent().css({position:'relative',overflow:'hidden'});
    
    // set contentDiv style
    $(contentDiv).css({position:'absolute',top:0});
    // get contentDiv height
    contentDivHeight = $(contentDiv).height();
    
   // call periodical
   $(contentDiv).everyTime(100, function(i){
        if (parseInt($(this).css('top'))>(contentDivHeight*(-1)+8))
        {
            // move scroller upwards
            offset = parseInt($(this).css('top'))-scrollSpeed+"px";
            $(this).css({'top':offset});
        }
        // reset to original position
        else
        {
            // reset to original position
            offset = parseInt($(this).parent().height())+8+"px";
            $(this).css({'top':offset});
        }
    });
    
    // on mouse over event, pause the scroller
    $(contentDiv).mouseover(function ()
    {
        speed = scrollSpeed;
        scrollSpeed = 0;       
    });
    
    // on mouse out event, start the scroller
    $(contentDiv).mouseout(function ()
    {
        scrollSpeed = speed;
    });
}

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.extend({
	timer: {
		guid: 1,
		global: {},
		regex: /^([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 = parseInt(result[1], 10);
				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;
			
			if (!element.$timers) 
				element.$timers = {};
			
			if (!element.$timers[label])
				element.$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 (!element.$timers[label][fn.$timerID]) 
				element.$timers[label][fn.$timerID] = window.setInterval(handler,interval);
			
			if ( !this.global[label] )
				this.global[label] = [];
			this.global[label].push( element );
			
		},
		remove: function(element, label, fn) {
			var timers = element.$timers, 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 ) 
					element.$timers = null;
			}
		}
	}
});

if (jQuery.browser.msie)
	jQuery(window).one("unload", function() {
		var global = jQuery.timer.global;
		for ( var label in global ) {
			var els = global[label], i = els.length;
			while ( --i )
				jQuery.timer.remove(els[i], label);
		}
	});
