// -------------------------------------------------------------------------------------------------
// Title:	Online-Mediaplayer "Podcasts"
// File:	podcasts.js
// Author:	Eric Kuhnert, Agencis Werbung, www.agencis.de
// Date:	2009-09-02
// -------------------------------------------------------------------------------------------------

// constants
var podcast_xml = "http://www.fraport.de/cms/jobs_karriere/rubrik/27/27651.xml";			// url of xml-based podcast data file
var podcast_swf = "http://www.fraport.de/include/fraport.de/jsp/static/podcast/podcast.swf";			// url of podcast swf file
var podcast_dl_html = "http://www.fraport.de/include/fraport.de/jsp/static/podcast/podcast_dl.html";	// url of podcast swf file
var podcast_table_type = 1;					// 1: podcast table; 2: video table
var podcast_language = "de";				// language (flash): currently "de" and "en"

// -------------------------------------------------------------------------------------------------

// variables
var podcasts = 0;
var podcasts_current = -1;
var xmlobject = null;
var podcast_bandwidth = 0;
var podcast_row_height = 0;

// DOMParser or Pseudo-DOMParser
if(typeof(DOMParser) == 'undefined') {
	DOMParser = function() {}
	DOMParser.prototype.parseFromString = function(str, contentType) {
		if(typeof(ActiveXObject) != 'undefined') {
			var xmldata = new ActiveXObject('MSXML.DomDocument');
			xmldata.async = false;
			xmldata.loadXML(str);
			return xmldata.documentElement;
		} else if(typeof(XMLHttpRequest) != 'undefined') {
			var xmldata = new XMLHttpRequest;
			if(!contentType) {
				contentType = 'application/xml';
			}
			xmldata.open('GET', 'data:' + contentType + ';charset=utf-8,' + encodeURIComponent(str), false);
			if(xmldata.overrideMimeType) {
				xmldata.overrideMimeType(contentType);
			}
			xmldata.send(null);
			return xmldata.responseXML;
		}
	}
}
      
      
function createPodcastRoot(_tableType, _language) {
	podcast_language = _language;
	podcast_table_type = _tableType;	
	podcast_row_height = (podcast_table_type == 1) ? 24 : 72;
	document.write('<div class="podcasts_loading" id="podcasts"></div>');
}


// load xml data an generate podcst list inside div "podcasts"
function createPodcastList(_xml_file) {
		podcast_xml = _xml_file;

		function RequestStatus() {	
			if (http.readyState == 4) {
				var RequestText = http.responseText;
				var parser = new DOMParser();
				xmlobject = parser.parseFromString(RequestText, "text/xml");
				var podcasts_div = document.getElementById("podcasts");	
				podcasts_div.className = "podcasts";
				parseXML();
			}
		}
		
		var http;	
		if (window.XMLHttpRequest) {
		   http = new XMLHttpRequest();
		} else if (window.ActiveXObject) {
		   http = new ActiveXObject("Microsoft.XMLHTTP");
		}
		if (http != null) {
			http.open("GET", podcast_xml, true);	
			http.onreadystatechange = RequestStatus;
	   		http.send(null);
	   		
	   	} else {
			alert('Die Formularinhalte können nicht geladen werden \n(Ihr Browser unterstützt XMLHttpRequest nicht).');  	
	   	}	
}

// open podcast-player (flash)
function playPodcast(file, pid) {

	function getAudioHTML(mp3_file, mp3_length) {		
		var podcast_url = podcast_swf + "?podcast=" + mp3_file + "&podcast_length=" + mp3_length;
		var html_text = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" width="595" height="15" id="podcast" align="middle"><param name="allowScriptAccess" value="sameDomain" /><param name="movie" value="' + podcast_url + '" /><param name="quality" value="high" /><param name="bgcolor" value="#F3F4FA" /><embed swliveconnect="true" name="podcast_swf" src="' + podcast_url + '" quality="high" bgcolor="#F3F4FA" width="595" height="15" name="podcast" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" /></object>';			
		return html_text;
	}
	
	function getVideoHTML(flv_file, flv_length, flv_height, flv_interval, flv_crop) {		
		var podcast_url = podcast_swf + "?podcast=" + flv_file + "&podcast_length=" + flv_length + "&podcast_height=" + flv_height + "&podcast_interval=" + flv_interval + "&podcast_crop=" + flv_crop + "&podcast_bandwidth=" + podcast_bandwidth + "&podcast_language=" + podcast_language;
		var html_text = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" width="595" height="' + (flv_height + 15) + '" id="podcast" align="middle" wmode="window"><param name="allowScriptAccess" value="sameDomain" /><param name="movie" value="' + podcast_url + '" /><param name="quality" value="high" /><param name="bgcolor" value="#F3F4FA" /><embed swliveconnect="true" name="podcast_swf" src="' + podcast_url + '" quality="high" bgcolor="#F3F4FA" width="595" height="' + (flv_height + 15) + '" name="podcast" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" /></object>';			
		return html_text;
	}	

	var cid = Number(pid.split("_")[1]);
	if (podcasts_current != cid) {
		if (podcasts_current != -1) {
			var row_old = document.getElementById("podcast_" + podcasts_current);
			if (row_old != null) {
				row_old.className = "podcast_row row_bg_0" + row_old.ext;
				var player_div_old = document.getElementById("obj_player_" + podcasts_current);
				player_div_old.innerHTML = "";
				player_div_old.parentNode.style.height = "";
				row_old.style.height = podcast_row_height + "px";
				row_old.sensor2.style.height = "";				
				if (podcast_table_type != 1) {
					var thumb_old = document.getElementById("podcast_caption_thumb_" + podcasts_current);
					thumb_old.className = "podcast_thumb";
					var player_old = document.getElementById("obj_player_" + podcasts_current);					
					player_old.style.borderTop = "0px";					
				}
			}
		}
		var row = document.getElementById(pid);
		
		row.style.height = "";	
		row.className = "podcast_row_current_0" + row.ext + " row_bg_0" + row.ext;
		row.sensor2.style.height = "1px";
		podcasts_current = cid;
		mouseOutPodcast(pid);

		var player_div = document.getElementById("obj_player_" + cid);
		
		if (podcast_table_type != 1) {
			var thumb = document.getElementById("podcast_caption_thumb_" + podcasts_current);
			thumb.className = "podcast_thumb_hidden";			
			player_div.style.borderTop = "1px solid white";
		}
		
		if (row.podcast_height > 0) {
			// video
			player_div.innerHTML = getVideoHTML(file, row.podcast_length, row.podcast_height, row.podcast_interval, row.podcast_crop);
			player_div.parentNode.style.height = (row.podcast_height + 38) + "px";
		} else {
			// audio
			player_div.innerHTML = getAudioHTML(file, row.podcast_length);	
			player_div.style.backgroundColor = "#ffffff";
		}
		
		// center player (scroll page)
		var podcast_top = 0;	
		var pObj = row;
		while (pObj) {
			podcast_top += pObj.offsetTop;
			pObj = pObj.offsetParent;
		}		
		var IE = document.all?true:false;
		if (IE) {
			var window_height = document.body.clientHeight;
		} else {			
			var window_height = window.innerHeight;
		}
		var new_top = podcast_top - Math.floor((window_height - row.podcast_height) / 2) + 15;		
		window.scrollTo(0, new_top);	
	}
}


// open podcast download dialog
function downloadPodcast(file, pid) {
	var row = document.getElementById(pid);
	openPodcastPopup(file, row.caption);
}


// mouse event "mouseOver" for "caption"
function mouseOverPodcast(pid) {
	var cid = Number(pid.split("_")[1]);
	var row = document.getElementById(pid);
	var btn = document.getElementById("podcast_caption_btn_" + cid);
	var txt = document.getElementById("podcast_caption_txt_" + cid);
	txt.className = "podcast_row_link_hover";
}


// mouse event "mouseOut" for "caption"
function mouseOutPodcast(pid) {
	var cid = Number(pid.split("_")[1]);
	var row = document.getElementById(pid);
	var btn = document.getElementById("podcast_caption_btn_" + cid);
	var txt = document.getElementById("podcast_caption_txt_" + cid);
	txt.className = "podcast_row_link";
}


// add potcast row
function addPodcast(xml_node) {
	// firefox vs. MSIE bugfix
	var IE = document.all?true:false;
	var podcasts_div = document.getElementById("podcasts");

	// row
	var ext = (podcasts % 2) + 1;
	var row = document.createElement("div");
	podcasts_div.appendChild(row);
	row.className = "podcast_row row_bg_0" + ext;
	row.style.height = podcast_row_height + "px";	
	
	row.id = "podcast_" + podcasts;
	row.ext = new String(ext);
	row.podcast_height = new Number(0);
	row.podcast_interval = new Number(0);
	row.podcast_crop = new Number(0);
	
	// caption
	var obj_caption = document.createElement("div");
	row.appendChild(obj_caption);
	obj_caption.className = "podcast_row_caption";
	
	//podcast_thumb
	if (podcast_table_type != 1) {
		var caption_thumb = document.createElement("div");
		obj_caption.appendChild(caption_thumb);
		caption_thumb.className = "podcast_thumb";		
		caption_thumb.id = "podcast_caption_thumb_" + podcasts;		
		
		//podcast_video_text
		var caption_video_text = document.createElement("div");
		caption_thumb.appendChild(caption_video_text);
		caption_video_text.className = "podcast_video_text";		
		caption_video_text.id = "podcast_caption_video_text_" + podcasts;		
		
		var caption_video_text_p = document.createElement("p");
		caption_video_text.appendChild(caption_video_text_p);
		caption_video_text_p.className = "podcast_video_text";	
	}
	
	var btn_caption = document.createElement("div");
	obj_caption.appendChild(btn_caption);
	btn_caption.className = "podcast_row_caption_btn_0" + ext;
	btn_caption.id = "podcast_caption_btn_" + podcasts;
	
	var p_caption = document.createElement("p");
	obj_caption.appendChild(p_caption);
	p_caption.className = "podcast_row_link";
	p_caption.id = "podcast_caption_txt_" + podcasts;

	//podcast_icon_video
	var icon_caption = document.createElement("div");
	row.appendChild(icon_caption);
	icon_caption.className = "podcast_icon_audio_0" + ext;
	icon_caption.id = "podcast_caption_icon_" + podcasts;

	// download
	var obj_download = document.createElement("div");
	row.appendChild(obj_download);
	obj_download.className = "podcast_row_download";
	var btn_download = document.createElement("div");
	obj_download.appendChild(btn_download);
	btn_download.className = "podcast_row_download_btn";
	btn_download["onmouseover"] = new Function("this.className = 'podcast_row_download_btn_hover';"); 
	btn_download["onmouseout"] = new Function("this.className = 'podcast_row_download_btn';"); 

	// date	
	var obj_date = document.createElement("div");
	row.appendChild(obj_date);
	obj_date.className = "podcast_row_date";
	var p_date = document.createElement("p");
	obj_date.appendChild(p_date);
	p_date.className = "podcast_row_text";

	// length
	var obj_length = document.createElement("div");
	row.appendChild(obj_length);
	obj_length.className = "podcast_row_length";
	var p_length = document.createElement("p");
	obj_length.appendChild(p_length);
	p_length.className = "podcast_row_text";

	var obj_player = document.createElement("div");
	row.appendChild(obj_player);
	obj_player.className = "podcast_player_div";
	if (podcast_table_type != 1) {
		obj_player.style.borderTop = "0px";
	}
	obj_player.id = "obj_player_" + podcasts;	

	var podcast_ienonsense = document.createElement("div");
	row.appendChild(podcast_ienonsense);
	podcast_ienonsense.className = "podcast_ienonsense";

	// sensor
	var obj_sensor = document.createElement("div");
	row.appendChild(obj_sensor);
	obj_sensor.className = "podcast_sensor";
	obj_sensor.id = "podcast_sensor_" + podcasts;
	obj_sensor["onmouseover"] = new Function("mouseOverPodcast('" + row.id + "');");
	obj_sensor["onmouseout"] = new Function("mouseOutPodcast('" + row.id + "');");

	var obj_sensor2 = document.createElement("div");
	row.appendChild(obj_sensor2);
	row.sensor2 = obj_sensor2;
	obj_sensor2.className = "podcast_sensor2";
	obj_sensor2.id = "podcast_sensor2_" + podcasts;
	obj_sensor2["onmouseover"] = new Function("mouseOverPodcast('" + row.id + "');");
	obj_sensor2["onmouseout"] = new Function("mouseOutPodcast('" + row.id + "');");

	var obj_sensor3 = document.createElement("div");
	row.appendChild(obj_sensor3);
	obj_sensor3.className = "podcast_sensor3";
	obj_sensor3.id = "podcast_sensor3_" + podcasts;
	obj_sensor3["onmouseover"] = new Function("mouseOverPodcast('" + row.id + "');");
	obj_sensor3["onmouseout"] = new Function("mouseOutPodcast('" + row.id + "');");
	
	
	podcasts = podcasts + 1;	
		
	// fill objects with data
	for (var i = 0; i < xml_node.childNodes.length; i++) {
		if (xml_node.childNodes[i].nodeType == 1) {
			if (xml_node.childNodes[i].nodeName == "caption") {				
				row.caption = new String(xml_node.childNodes[i].childNodes[0].nodeValue);
				p_caption.innerHTML = xml_node.childNodes[i].childNodes[0].nodeValue;
			}
			if (xml_node.childNodes[i].nodeName == "length") {
				p_length.innerHTML = xml_node.childNodes[i].childNodes[0].nodeValue + " min";
				row.podcast_length = new String(xml_node.childNodes[i].childNodes[0].nodeValue);
			}
			if (xml_node.childNodes[i].nodeName == "date") {
				p_date.innerHTML = xml_node.childNodes[i].childNodes[0].nodeValue;
			}
			if (xml_node.childNodes[i].nodeName == "file") {
				obj_sensor["onclick"] = new Function("playPodcast('" + xml_node.childNodes[i].childNodes[0].nodeValue + "', '" + row.id + "');");	
				obj_sensor2["onclick"] = new Function("playPodcast('" + xml_node.childNodes[i].childNodes[0].nodeValue + "', '" + row.id + "');");	
				obj_sensor3["onclick"] = new Function("playPodcast('" + xml_node.childNodes[i].childNodes[0].nodeValue + "', '" + row.id + "');");	
				obj_download["onclick"] = new Function("downloadPodcast('" + xml_node.childNodes[i].childNodes[0].nodeValue + "', '" + row.id + "');");	
			}
			if (xml_node.childNodes[i].nodeName == "thumb") {
				if (podcast_table_type != 1) {
					caption_thumb.filename = new String(xml_node.childNodes[i].childNodes[0].nodeValue);
					caption_thumb.style.backgroundImage = "url(" + caption_thumb.filename + ")";	
				}
			}
			if (xml_node.childNodes[i].nodeName == "height") {
				row.podcast_height = Number(xml_node.childNodes[i].childNodes[0].nodeValue);
				if (xml_node.childNodes[i].childNodes[0].nodeValue != "0") { icon_caption.className = "podcast_icon_video_0" + ext;	}
			}			
			if (xml_node.childNodes[i].nodeName == "interval") {
				row.podcast_interval = Number(xml_node.childNodes[i].childNodes[0].nodeValue);
			}			
			if (xml_node.childNodes[i].nodeName == "crop") {
				row.podcast_crop = Number(xml_node.childNodes[i].childNodes[0].nodeValue);
			}			
			if (podcast_table_type != 1) {
				if (xml_node.childNodes[i].nodeName == "text1") {
					caption_video_text_p.innerHTML = String(xml_node.childNodes[i].childNodes[0].nodeValue);
				}
				if (xml_node.childNodes[i].nodeName == "text2") {
					caption_video_text_p.innerHTML += "<br>" + String(xml_node.childNodes[i].childNodes[0].nodeValue);
				}
			}
		}	
	}
}


function parseXML() {
	var IE = document.all?true:false;
	if (IE) {
	} else {
		xmlobject = xmlobject.childNodes[0];
	}
	for (var i = 0; i < xmlobject.childNodes.length; i++) {
		if (xmlobject.childNodes[i].nodeType == 1) {
			addPodcast(xmlobject.childNodes[i]);
		}
	}
	var podcasts_div = document.getElementById("podcasts_message");	
}


function getFlashMovieObject(movie_name) {
  if (window.document[movie_name]) {
      return window.document[movie_name];
  }
  if (navigator.appName.indexOf("Microsoft Internet") == -1) {
    if (document.embeds && document.embeds[movie_name])
      return document.embeds[movie_name]; 
  } else {
    return document.getElementById(movie_name);
  }
}


function openPodcastPopup(file, fname) {
   	myWindow = window.open("http://www.fraport.de/include/fraport.de/jsp/static/podcast/podcast_dl.html?podcast=" + escape(file) + "&name=" + escape(fname), 'podcastDlPopup', 'width=400,height=200,left=20,top=20,resizable=no,status=no,scrollbars=no');
    myWindow.focus();
}


function getPodcastDownloadFile() {
	var file = unescape(location.href.split("?podcast=")[1].split("&name=")[0]);
	return file;
}


function getPodcastName() {
	var name = unescape(location.href.split("?podcast=")[1].split("&name=")[1]);
	return name;
}


function createPodcastLink(_text) {
	document.write("<a href=" + getPodcastDownloadFile() + " class='podcast_download'>" + _text + "</a>");
}


function createPodcastNameInfo() {
	document.write("<p class='podcast_download'><b>Podcast &#8222;" + getPodcastName() + "&#8220;</b></p>");
}

function setBandwidth(_bandwidth) {
	podcast_bandwidth = _bandwidth;
}