jQuery.fn.nextUntil = function(expr) { 
   var match = []; 
   this.each(function(){ 
       for( var i = this.nextSibling; i; i = i.nextSibling ) { 
           if ( i.nodeType != 1 ) continue; 
           if ( jQuery.filter( expr, [i] ).length ) break; 
           match.push( i ); 
       } 
   }); 
   return this.pushStack( match, arguments ); 
}; 

var 
	listingDay = new Array(),
	listingMonth = new Array(),
	listingYear = new Array(),
	weekDay = new Array(),
	listingheights = new Array(),
	activecolumn = 0,
	selectedWeek = 0,
	highlightactive = 1,
	previoush,
	previouse,
	sildvalue,
	slidingTimer,
	planer = {
	loadnextweek : function() {
			selectedWeek++;
			planer.changeWeek(selectedWeek);
	},
	loadpreviousweek : function() {
			selectedWeek--;
			planer.changeWeek(selectedWeek);
	},
	init : function() {
		selectedWeek = $("#weekno").text()
		setTimeout("planer.highlightfader();",5000);
		planer.changeWeek(selectedWeek);
		$("#next-week-button").bind('click', function(){
			planer.loadnextweek();
		});
		$("#previous-week-button").bind('click', function(){
			planer.loadpreviousweek();
		});
		$("#overview-week").bind('click', function(){
			planer.weekview();
		});
		$("#previous-day-button").bind('click', function(){
			activecolumn--;
			if (activecolumn < 1) {
				planer.loadpreviousweek();
			} else {
				planer.dayview(activecolumn);
			}
		});
		$("#next-day-button").bind('click', function(){
			activecolumn++;
			if (activecolumn > 7) {
				planer.loadnextweek();
			} else {
				planer.dayview(activecolumn);
			}
		});
		$("#planer-scroller").slider({ 
			orientation: 'vertical',
			min: -24,
			max: 24,
			value: 0,
			slide: function(){
				sildvalue = $(this).slider('option', 'value');
				planer.slidingContent(sildvalue,true);
			},
			animate: true
		});
		$("#planer-content-listing, #planer-timeline").css("top", "-2700px");
	},
	slidingContent : function(value, stop) {
		clearTimeout(slidingTimer);
		value = $("#planer-scroller").slider('option', 'value');
		sliderval = parseInt((value+25)*1);
		topval = (90*sliderval)-5000;
		$("#planer-content-listing, #planer-timeline").css("top", topval+"px");
		if(stop){
		slidingTimer = setTimeout(function(){
			planer.slidingContent(value, false);
		},300);
		}
	},
	highlightfader : function() {
		highlightold = highlightactive;
		if (highlightactive === 3) { highlightactive = 1;}
		else { highlightactive++ }
		$("#block-views-highlightteasertriple-block_1 div.views-row-"+highlightold).animate({ opacity: "hide"}, 1000);
		$("#block-views-highlightteasertriple-block_1 div.views-row-"+highlightactive).animate({ opacity: "show"}, 1000,function(){
			setTimeout("planer.highlightfader();",7000);
		});
	},
	changeWeek : function(gweek) {
		$("#slider-wrapper .slider").slider("option","value",0);
		helper.getDateRangeOfWeek(gweek);
		planer.weekview();
		$(".planner-day-wrapper").html("");
		planer.loadListing(1);
	},
	loadListing : function(i) {
		if (i <= 7) {
		$("#planer-overlay").show();
		urlparam = "/listing/"+listingYear[i]+"-"+listingMonth[i]+"-"+listingDay[i]+"T04:00--P24H";
		$.ajax({
			type: "GET",
			url: urlparam,
			dataType: "html",
			success: function(html) {
				if (parseInt($(html).find(".view-content").size()) > 0) {
					$("#column"+i).html($(html).find(".view-content").html());
					planer.formatListing(i);
				} else {
					$("#column"+i).html('<div style="margin-top:300px;">Keine Programmdaten vorhanden.</div><div style="margin-top:300px;">Keine Programmdaten vorhanden.</div><div style="margin-top:300px;">Keine Programmdaten vorhanden.</div><div style="margin-top:300px;">Keine Programmdaten vorhanden.</div><div style="margin-top:300px;">Keine Programmdaten vorhanden.</div><div style="margin-top:300px;">Keine Programmdaten vorhanden.</div>');
				}
				i++;
				planer.loadListing(i);
			}
		});
		} else {
				$("#planer-overlay").hide();
		}
	},
	formatListing : function(columnindex) {
			$("#column"+columnindex+" .views-row").each(function(){
			newheight = parseInt($(this).find(".durationvalue").text()*3);
			$(this).css("height", newheight+"px");
			if (newheight < 40) {
				$(this).find(".views-field-field-titleeng-value").css("height","12px").css("overflow","hidden");
			}
			});
			var column = $("#column"+columnindex);
			var firstelem = column.find(".views-row").eq(0);
			var daystart = column.find(".views-row").eq(0).find(".date-display-single .date-display-start").text();
			var segments = daystart.split(":");
			var offset = parseInt((parseInt(segments[0]*60)+parseInt(segments[1]))*3);
			column.prepend('<div style="height:'+offset+'px;"></div>');
			planer.listingdetail(columnindex);
		$("#column"+columnindex+" .views-row").eq(0).html("");
		
	},
	dayview : function(columnid) {
		//elem.unbind("click");
		activecolumn = columnid;
		column = $("#column"+columnid);
		$(".planner-day-wrapper").not(column).animate({
			width: "0px",
			opacity: "hide"
		}, 600);
		column.animate({ 
        	width: "730px"
      	},600, function(){
      		planer.formatday();
      	});
		$("#title-week").hide();
		$("#title-day").show();
		$("#bottom-content").css("background", "url(/sites/default/themes/tnt-serie/gif/planer/programmbgday.png) no-repeat");
		$("#selected-day").html(weekDay[columnid]);
	},
	formatday : function() {
		$(".views-field-field-airtime-value-1, .views-field-title, .views-field-field-year-value").addClass("largerfont");
	},
	listingdetail : function(iterator){
		$("#column"+iterator+" .views-row").bind("click", function(){
			if($(this).hasClass('active-row')){
				$(this).removeClass('active-row');
				planer.weekview();
			} else {
			$(this).addClass('active-row');
		
			$("#planer-timeline").animate({opacity: "0.2"},600);
			activecolumn = $(this).parent().attr("id").substring(6,7);
			planer.dayview(iterator);
			oldheight = parseInt($("#previouselem").find(".durationvalue").text());
			$("#previouselem").css("height", oldheight+"px");
			$(this).attr("id","previouselem");
			$(".views-field-field-episodeseason-value, .views-field-field-episodenoint-value, #planer-content .views-field-field-episodeimage-fid, .views-field-field-episodedescription-value, .views-field-field-duration-value, .episodeimage, .date-display-separator, .date-display-end").hide();
			$(".views-field-field-directors-value, .views-field-field-airtime-value-1, .views-field-title, .views-field-field-year-value").removeAttr("style");
			$(this).find(".views-field-field-directors-value").css("background","#f9f9f9").css("color","#111").css("font-size","12px").hide();
			$(this).find(".views-field-field-airtime-value-1, .views-field-title, .views-field-field-year-value").css("float","left");
			activerow = $(this);
			var epimage = $(this).find(".views-field-field-episodeimage-fid");
			if (epimage.text().length > 20) {
			$(this).find(".episodeimage").remove();
			$(epimage).after('<img class="episodeimage" src="'+epimage.text()+'" />'); }
			$(".views-field-field-titleeng-value, .date-display-start").css("font-size","12px").css("padding-left","5px");
			$(this).find(".views-field-field-episodeseason-value, .views-field-field-episodenoint-value, .views-field-field-episodedescription-value, .views-field-field-duration-value, .episodeimage, .date-display-separator, .date-display-end").animate({ opacity: "show" }, 600, function(){
				activerow.removeAttr("style");
			});
			}
		});
	},
	weekview : function() {
			$(".views-field-field-airtime-value-1, .views-field-title, .views-field-field-year-value").removeClass("largerfont");
			oldheight = parseInt($("#previouselem").find(".durationvalue").text());
			$("#previouselem").css("height", oldheight+"px");
			$(".views-field-field-episodeseason-value, .views-field-field-episodenoint-value, #planer-content .views-field-field-episodeimage-fid, .views-field-field-episodedescription-value, .views-field-field-duration-value, .episodeimage, .date-display-separator, .date-display-end").hide();
			$(".views-field-field-titleeng-value, .date-display-start").removeAttr("style");
		$("#column"+activecolumn).animate({
			width: "102px"
		}, 600);
		$(".planner-day-wrapper").animate({
			width: "102px",
			opacity: "show"
		}, 600);
			$("#planer-timeline").animate({opacity: "1.0"},600);
		planer.weekviewheader();
	},
	weekviewheader : function() {
		$("#title-week").show();
		$("#title-day").hide();
		$("#bottom-content").css("background", "url(/sites/default/themes/tnt-serie/gif/planer/programmbgweek.png) no-repeat");
	}
	},
	helper = {
		getDateRangeOfWeek : function(weekNo){
			var d1 = new Date();
			numOfdaysPastSinceLastMonday = eval(d1.getDay()- 1);
			d1.setDate(d1.getDate() - numOfdaysPastSinceLastMonday);
			var weekNoToday = $("#weekno").text();
			var weeksInTheFuture = eval( weekNo - weekNoToday );
			d1.setDate(d1.getDate() + eval( 7 * weeksInTheFuture ));
			for (i=1;i<8;i++) {
				weekDay[i] =  d1.getDate()+"."+eval(d1.getMonth()+1)+ "."+d1.getFullYear();
				listingDay[i] = d1.getDate();
				listingMonth[i] = eval(d1.getMonth()+1);
				listingYear[i] = d1.getFullYear();
				d1.setDate(d1.getDate() + 1);
			}
			$("#selected-week").html('<span id="firstweekday">'+weekDay[1] + "</span> - "+weekDay[7]);
		}
};
