tvtickergestartet = 0;

function create_tvticker () {
	ensureUploadScriptIsLoaded('xljetzt','http://www.ppstvticker.de/html/tvdaten/xljetzt_json.js'); 
	ensureUploadScriptIsLoaded('xl2015','http://www.ppstvticker.de/html/tvdaten/xl2015_json.js'); 
	ensureUploadScriptIsLoaded('xl2200','http://www.ppstvticker.de/html/tvdaten/xl2200_json.js'); 

	document.write('  <div class="ppstickerbox">');
	document.write('	  <div class="ppstickerboxcontent">');
	document.write('		  <div class="ppstickerboxheader">TV Ticker</div>');
	document.write('		  <div class="ppstickerboxmenu">');
	document.write('			  <div id="tab1" class="ppsmenutab" onclick="waehleTab(\'tab1\')">Now</div>');
	document.write('			  <div id="tab2" class="ppsmenutab" onclick="waehleTab(\'tab2\')">20.15</div>');
	document.write('			  <div id="tab3" class="ppsmenutab" onclick="waehleTab(\'tab3\')">22.00</div>');
	document.write('		  </div>');
	document.write('		  <div id="ppstickercontent"></div>');
	document.write('	  </div>');
	document.write('  </div>');
	start_tvticker();
}

function start_tvticker () {
	tvtickergestartet++;
	if (tvtickergestartet < 4) { // erst wenn alle Scripte geladen sind starten
	  return;
	}

	var myxljetzt = xljetzt();
	var myxl2015  = xl2015();
	var myxl2200  = xl2200();

    urls = new Hash();
    urls.set('tab1',myxljetzt);
    urls.set('tab2',myxl2015);
    urls.set('tab3',myxl2200);
    $('tab1').className = 'ppsmenutabselected';
	
	myPPSTicker = new ppsTicker('ppstickercontent', urls.get('tab1'), { method:'get', asynchronous:false, frequency:120, decay:2 } );
}

function waehleTab (tabid) {
	$('tab1').className = 'ppsmenutab';
	$('tab2').className = 'ppsmenutab';
	$('tab3').className = 'ppsmenutab';
	$(tabid).className = 'ppsmenutabselected';
	myPPSTicker.scroller.stop();
	myPPSTicker.initialize('ppstickercontent', urls.get(tabid), { method:'get', asynchronous:false, frequency:120, decay:2 } );
	//myPPSTicker.scroller.start();
}

function IncludeJavaScript(jsFile) {
  document.write('<script type="text/javascript" src="' + jsFile + '"></scr' + 'ipt>'); 
}

/*-------------------------*
 * ppsTicker
 * ------------------------*/

var ppsTicker = Class.create();
ppsTicker.prototype = {
	initialize: function (container, array, options) {
		this.container = container;
		this.json =  array;
		this.options = options;
		this.generate(this.container, this.json);
		this.scroller = new PeriodicalExecuter(this.scrollEvent.bind(this), 5 );
	},

	start: function() {
		this.timer = setInterval(this.generate.bind(this), this.options.frequency * 1000);
	},

	scrollEvent: function () {
		var element = $(this.container).cleanWhitespace().firstChild;
		if (element) {
			if (element.nodeType == 1 /* Node.ELEMENT_NODE */ && element.tagName.toLowerCase() == 'div') {
				if (!Element.visible(element)) {
					element.parentNode.appendChild(element);
					element.show();
				}
				Effect.SlideUp(element.parentNode.firstChild);
			} else {
				element.parentNode.removeChild(element);
			}
		}
	},
	
	generate: function (container, json) {
		var content = "";
		var myTemplate = new Template('<div id="#{aid}" class="#{class}" onclick="return ppsticker_details(\'#{aid}\');"><span><span class="ppsticker_sendeplatz">#{zeit} #{sender}</span><br /><span class="ppsticker_titel">#{titel30}</span><br /><span class="ppsticker_titel">#{charakter} #{land} #{jahr}</span><br /></span></div>');
		for (var index = 0, len = json.length; index < Math.min(len, 12); ++index) {
			var item = json[index];
			item['class'] = index % 2 == 0 ? 'ppstickerslotdunkel' : 'ppstickerslothell';
			item['titel30'] = item['titel'].truncate(30);
			content += myTemplate.evaluate(item);
		}
		//$(container).update(content);
		var div = document.getElementById(container);
		div.innerHTML = content;
	}
};

//----------------------------- Detailfenster ----------------------------

function ppsticker_details (aid) {
	ppsticker_details_hintergrund();
	ppsticker_details_container();
	ppsticker_details_getdata('ppsdetails_container', aid);
	return;
}
    
function ppsticker_details_hintergrund () {
    var objBody = document.getElementsByTagName("body").item(0);
    //var bg_height = 0;
    if(!$('hintergrund_layer')) {
		var objOverlay = document.createElement("div");
		objOverlay.setAttribute('id','hintergrund_layer');
		objOverlay.style.display = 'none';
		objOverlay.style.position = 'absolute';
		objOverlay.style.top = '0px';
		objOverlay.style.left = '0px';
		objOverlay.style.backgroundColor = '#000000';
		objOverlay.style.zIndex = '99';
		objBody.appendChild(objOverlay);
    }
    arrayPageSize = getPageSize();
    $('hintergrund_layer').style.width = arrayPageSize[0] + 'px';
    $('hintergrund_layer').style.height = arrayPageSize[1] + 'px';
    $('hintergrund_layer').appear({ duration: 0.2, from: 0.0, to: 0.3 });
    return;
}

function ppsticker_details_container () {
    var objBody = document.getElementsByTagName("body").item(0);
    if(!$('ppsdetails_container')) {
		var containerBreite = 600;
		var containerHoehe = 400;
		var objOverlay = document.createElement("div");
		objOverlay.setAttribute('id','ppsdetails_container');
		//objOverlay.style.display = 'none';
		objOverlay.style.width = containerBreite+'px';
		//objOverlay.style.height = containerHoehe+'px';
		objOverlay.style.height = 'auto';
		objOverlay.style.position = 'fixed';
		//objOverlay.style.top = ($('hintergrund_layer').getHeight() - containerHoehe) / 3 +'px';
        objOverlay.style.top = 150 +'px';
		objOverlay.style.left = ($('hintergrund_layer').getWidth() - containerBreite) / 3 +'px';
		objOverlay.style.zIndex = '199';
		objBody.appendChild(objOverlay);
    }
	$("ppsdetails_container").innerHTML = "<br /><br /><br /><img src=\"http://www.ppstvticker.de/html/img/ticker-wait.gif\" style=\"margin-left:92px;\"><br /><br /><br />";
    $("ppsdetails_container").show();
    return;
}

function ppsticker_details_getdata (container, aid) {
	var json = myPPSTicker.json;
	var content = "";
	var myTemplate = new Template('<div><span class="ppsdetails_sendeplatz">#{sender}, #{datum}, #{zeit} - #{biszeit} Uhr</span><span class="ppsdetails_close" onclick="return ppsticker_closedetails();">[x] schlie&szlig;en</span><br /><div class="ppsdetails_titel">#{titel}</div>#{utx}<div class="ppsdetails_text">#{charakter} #{land} #{jahr}</div><br /><br />#{themenx}<div class="ppsdetails_text">#{bildx} #{archivtext1500}<br /><br />#{credits}</div></div>');
	for (var index = 0, len = json.length; index < Math.min(len, 12); ++index) {
		if (json[index]['aid'] == aid) {
			var item = json[index];
			item['titel30'] = item['titel'].truncate(30);
            item['archivtext1500'] = item['archivtext'].truncate(1500);
			if (item['ut']) {
				item['utx'] = '<div class="ppsdetails_titel2">&quot;'+item['ut']+'&quot;</div>';
			}
			if (item['themen']) {
				item['themenx'] = '<div class="ppsdetails_themen">Themen: '+item['themen']+'</div><br />';
			}
			if (item['bild']) {
				item['bildx'] = '<img src="http:\/\/www.ppstvticker.de\/html\/tvdaten\/img\/'+item['bild']+'\" style=\"float:left\; margin-right:5px\; margin-top:3px\;\">';
			}
			item['credits'] = '';
			var trenner = '';
			if (item['mod1']) {
				item['credits'] += trenner+'<b>Moderation: </b>'+item['mod1'];
				trenner = ' ';
			}
			if (item['reg']) {
				item['credits'] += trenner+'<b>Regie: </b>'+item['reg'];
				trenner = ' ';
			}
			if (item['darsteller']) {
				item['credits'] += trenner+'<b>Darsteller: </b>'+item['darsteller'];
				trenner = ' ';
			}
			content += myTemplate.evaluate(item);
		}
	}
	$(container).update(content);
	//$(container).innerHTML = content;
	return;
}

function ppsticker_closedetails () {
    if($('ppsdetails_container')) {
        $('ppsdetails_container').remove();
    }
    if($('hintergrund_layer')) {
        $('hintergrund_layer').remove();
    }
    return;
}

function getPageSize () {
	var xScroll, yScroll;
	if (window.innerHeight && window.scrollMaxY) {
		xScroll = window.innerWidth + window.scrollMaxX;
		yScroll = window.innerHeight + window.scrollMaxY;
	} else if (document.body.scrollHeight > document.body.offsetHeight){ /* all but Explorer Mac */
		xScroll = document.body.scrollWidth;
		yScroll = document.body.scrollHeight;
	} else { /* Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari */
		xScroll = document.body.offsetWidth;
		yScroll = document.body.offsetHeight;
	}

	var windowWidth, windowHeight;
	if (self.innerHeight) {	/* all except Explorer */
		if(document.documentElement.clientWidth){
			windowWidth = document.documentElement.clientWidth;
		} else {
			windowWidth = self.innerWidth;
		}
		windowHeight = self.innerHeight;
	} else if (document.documentElement && document.documentElement.clientHeight) { /* Explorer 6 Strict Mode */
		windowWidth = document.documentElement.clientWidth;
		windowHeight = document.documentElement.clientHeight;
	} else if (document.body) { /* other Explorers */
		windowWidth = document.body.clientWidth;
		windowHeight = document.body.clientHeight;
	}

	/* for small pages with total height less then height of the viewport */
	if(yScroll < windowHeight){
		pageHeight = windowHeight;
	} else {
		pageHeight = yScroll;
	}

	/* for small pages with total width less then width of the viewport */
	if(xScroll < windowWidth){
		pageWidth = xScroll;
	} else {
		pageWidth = windowWidth;
	}

	arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight) ;
	return arrayPageSize;
}

/*-------------------------*
 * ppsPeriodicalUpdater
 * ------------------------*/

Ajax.ppsPeriodicalUpdater = Class.create(Ajax.Base, {
  initialize: function($super, container, url, options) {
    $super(options);
		this.container = {
			success: (container.success || container),
			failure: (container.failure || (container.success ? null : container))
		}
		this.url = url;

		this.frequency = (this.options.frequency || 2);
		this.decay = (this.options.decay || 1);

		if (!this.options.manually) this.start();
	},

	start: function() {
		var onComplete = this.options.onComplete || Prototype.emptyFunction;
		this.options.onComplete = (function(transport, param) {
			onComplete(transport, param);
			this.updateComplete(transport);
		}).bind(this);

		this.onTimerEvent();
	},

	stop: function() {
		this.requester.options.onComplete = undefined;
		clearTimeout(this.timer);
		(this.onComplete || Prototype.emptyFunction).apply(this, arguments);
	},

	updateComplete: function(request) {
		if (this.options.decay) {
			this.decay = (request.responseText == this.lastText ? this.decay * this.options.decay : 1);
			this.lastText = request.responseText;
		}
		this.timer = setTimeout(this.onTimerEvent.bind(this), this.decay * this.frequency * 1000);
	},

	onTimerEvent: function() {
	    this.requester = new Ajax.Request(this.url, this.options);
	}
});

function ensureUploadScriptIsLoaded(id, src) {
  if (document.getElementById(id) != null) { // Already exists
	return;
  }
  var head = document.getElementsByTagName("head")[0];
  script = document.createElement('script');
  script.id = id;
  script.charset = "utf-8";
  script.type = 'text/javascript';
  script.src = src;
  head.appendChild(script);
}

ensureUploadScriptIsLoaded('xljetzt','http://www.ppstvticker.de/html/tvdaten/xljetzt_json.js'); 
ensureUploadScriptIsLoaded('xl2015','http://www.ppstvticker.de/html/tvdaten/xl2015_json.js'); 
ensureUploadScriptIsLoaded('xl2200','http://www.ppstvticker.de/html/tvdaten/xl2200_json.js'); 

