function MNTVPlayer(playlist_filename) {
  var id_name = "player-licensed1";
  var filename_xy = playlist_filename;
  var player = null;
  var item = null;
  var next_reload = null;
  var playlist_expires = null;
  var reset_position = null;
  var state = null;
  var ajax = null;
  var reload_interval = 60; // in s, 1 min
    
  this.create = function(error_html) {
    var flashvars = {
      file:           escape(filename_xy +"&"+Math.round(1000000*Math.random())),
      "bufferlength": "1",
      autostart:      "true",
      controlbar:     "bottom",
      backcolor:      "0f5173",
      frontcolor:     "FFFFFF",
      lightcolor:     "4298d0",
      screencolor:    "0f5173",
      repeat:         "always",
      wmode:          "transparent",
      abouttext:      "meteonews.TV",
      aboutlink:      "/",
/*    plugins:        "adtvideo", */
//    plugins:        "qualitymonitor-1",
/*    "adtvideo.config": "werbung.xml" */
      plugins:        "DART,gapro-1",
      "gapro.accountid":       "UA-6197948-4",
      "gapro.trackstarts":     "true",
      "gapro.trackpercentage": "true",
      "gapro.tracktime":       "true",
      
      
      "dart.scaled_ads":       "false",
      "dart.admessagedynamickey": "XX",
      "dart.admessagedynamic": "Diese Anzeige dauert noch XX Sekunden",
      "dart.ad.tag" : "http://ad.ch.doubleclick.net/pfadx/wilmaa.ch/DE_Startup_REC_C_300x250;sz=300x250;tile=1",
      "dart.ad.position" : "pre"      
    };
    var params = { allowfullscreen:"true", allowscriptaccess:"always", wmode:"transparent" };
    var attributes = { id: id_name, name: "player-licensed1" };
    var success = 0;
    function report_success(e) {
      success = e.success;
    }
    
    //console.log(flashvars);
     
    //swfobject.embedSWF("http://player.longtailvideo.com/player5.2.swf", "mn_player", "540", "304", "9.0.115", false, flashvars, params, attributes, report_success);
   
    swfobject.embedSWF("/player-licensed.swf", "mn_player", "540", "328", "9.0.115", false, flashvars, params, attributes, report_success);
    if (!success) {
      document.getElementById('mn_player').innerHTML = error_html;
    }
  }
  
  this.player_ready = function(player_obj) {
    player = document.getElementById(id_name);
    if (player) {
      // See http://developer.longtailvideo.com/trac/wiki/Player4Events#Controllerevents
      this.item = null;
      player.addControllerListener("ITEM", "on_item");
      player.addControllerListener("PLAYLIST", "on_playlist");
      player.addModelListener("STATE", "on_state");
    }
    else {
      setTimeout(playerReady,100);
    }
  }
  
  this.on_playlist = function(player_obj) {
    setAllProgrammLIInactive();
    var playlist = player_obj.playlist;
    for (var itemindex in playlist) {
      var itemtitle = playlist[itemindex]['title'];
      setProgrammLIActive(itemindex, itemtitle);
    }
    if ((this.reset_position != null)) {
      this.reset_position = null;
      this.play_item(this.item);
    //  if (this.time != null) {
    //    player.sendEvent('SEEK', this.time);
    //  }
    //  player.sendEvent('PLAY', false);
    }
    get_playlist_expire();
    //this.add_new_reload(reload_interval*1000);
  }
  
  this.on_item = function(obj) {
    if (obj.index != this.item) {
      this.item = obj.index;
      set_playlist_item_activ(this.item);
    }
  }
  
  this.on_state = function(player_obj) {
    //console.log(player_obj);
    this.state = player_obj.newstate;
    if ((this.state == 'IDLE')) { // COMPLETED is deprecated
      this.reload_playlist(false);
    }
  }
  
  this.play_item = function(item) {
    player.sendEvent('ITEM', item);
  }
  
  this.reload_playlist = function(bool) {
    this.next_reload = null;
    var d = new Date();
    var t = Math.round(d.getTime() / 1000);
    if ((this.playlist_expires != null) && (t > this.playlist_expires) && (this.state != undefined) && (this.state != "PLAYING")) {
      //alert("reload playlist: "+t+" > "+this.playlist_expires+" ("+this.state+")");
      this.playlist_expires = null;
      this.reset_position = true;
      player.sendEvent('LOAD', filename_xy +"&"+Math.round(1000000*Math.random()));
    }
  }
  
  function set_playlist_item_activ(index_xy) {
    var html_playlist = document.getElementById("playlist");
    if (html_playlist != null) {
      try {
        var playlist = player.getPlaylist();
        // Alte Playlist löschen
        var node = html_playlist.firstChild;
        while (node != null) {
          var next = node.nextSibling;
          html_playlist.removeChild(node);
          node = next;
        }
        // Neue Playlist schreiben
        if (playlist) {
          for (var i in playlist) {
            html_playlist.appendChild(create_playlist_li((i == index_xy),
                                                         i,
                                                         playlist[i].title,
                                                         get_date_str(playlist[i].date)));
          }
          html_playlist.innerHTML = html_playlist.innerHTML; // Hack für IE6/7
        }
      }
      catch (e) { // Fehler im Opera abfangen (in player.getPlayist())
        // Hervorhebung löschen, sonst nichts unternehmen
        var node = html_playlist.firstChild;
        while (node != null) {
          node.removeAttribute('class');
          node.removeAttribute('className');
          node = node.nextSibling;
        }
      }
    }
  }
  function create_playlist_li(is_current, nr, title, date_txt) {
    var li = document.createElement('li');
    if (is_current) {
      li.setAttribute('class', 'current');
      li.setAttribute('className', 'current');
    }
    var a = document.createElement('a');
    a.setAttribute('name', 'item-'+nr);
    a.setAttribute('onclick', 'meteonews_tv_player.play_item('+nr+'); return false;');
    a.appendChild(document.createTextNode(title));
    var span = document.createElement('span');
    span.setAttribute('class', 'time');
    span.setAttribute('className', 'time');
    span.appendChild(document.createTextNode(date_txt));
    li.appendChild(a);
    li.appendChild(span);
    return li;
  }
  
  function get_date_str(input_xy) {
    var date_txt = "";
    // Regular expression for RFC 822 Date-Time string
    var regexp = /^[ ]*(Mon|Tue|Wed|Thu|Fri|Sat|Sun)[ ]*,[ ]*([0-9]+)[ ]*(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)[ ]*([0-9]{2,4})[ ]*([0-9]{2}):([0-9]{2})/;
    if (regexp.exec(input_xy) != null) {
      var year = RegExp.$4;
      if (year.length > 2) {
        year = year.substr(year.length-2, 2);
      }
      var month = null;
      switch (RegExp.$3) {
        case "Jan": month = "01"; break;
        case "Feb": month = "02"; break;
        case "Mar": month = "03"; break;
        case "Apr": month = "04"; break;
        case "May": month = "05"; break;
        case "Jun": month = "06"; break;
        case "Jul": month = "07"; break;
        case "Aug": month = "08"; break;
        case "Sep": month = "09"; break;
        case "Oct": month = "10"; break;
        case "Nov": month = "11"; break;
        case "Dec": month = "12"; break;
      }
      var day = RegExp.$2;
      var hour = RegExp.$5;
      var min = RegExp.$6;
      var sec = RegExp.$8;
      //console.log(input+" -> "+year+", "+month+", "+day+", "+hour+", "+min+", "+sec);
      //if (day < 10) {
      //  date_txt += "0";
      //}
      date_txt += day+"."+month+"."+year+" "+hour+":"+min;
    }
    return date_txt;
  }

  function setProgrammLIActive(itemindex, itemtitle) {
    var li_nodes = getProgrammLI();
    var node = searchLI(li_nodes, itemtitle);
    if (node != null) {
      var node_a = node.firstChild;
      while (node_a != null) {
        if (node_a.nodeName == 'A') {
          if (isIE()) { // Hack da IE keine Anführungszeichen macht, wenn man setAttribute anwendet (funktioniert jedefalls)
          	var str = node_a.innerHTML;
          	str = str.replace(/<|>/g, '');
            node_a.innerHTML = '<' + str + ' onclick="meteonews_tv_player.play_item('+itemindex+'); return false;">';
          }
          else {
            node_a.setAttribute('onclick', 'meteonews_tv_player.play_item('+itemindex+'); return false;');
          }
          node_a.setAttribute('name', 'item-preview-'+itemindex);
          if (isIE()) {
          }
          else {
            var node_img = node_a.firstChild;
            while (node_img != null) {
              if (node_img.nodeName == 'IMG') {
                node_img.removeAttribute('class');
              }
              node_img = node_img.nextSibling;
            }
          }
        }
        node_a = node_a.nextSibling;
      }
    }
  }

  function setAllProgrammLIInactive() {
    var li_nodes = getProgrammLI();
    for (var i in li_nodes) {
      var node_a = li_nodes[i].firstChild;
      while (node_a != null) {
        if (node_a.nodeName == 'A') {
          node_a.removeAttribute('onclick');
          node_a.removeAttribute('href');
          if (isIE()) {
          }
          else {
            var node_img = node_a.firstChild;
            while (node_img != null) {
              if (node_img.nodeName == 'IMG') {
                node_img.setAttribute('class', 'inaktiv');
              }
              node_img = node_img.nextSibling;
            }
          }
        }
        node_a = node_a.nextSibling;
      }
    }
  }

  function searchLI(nodes, li_title) {
    for (var node in nodes) {
      var tit = nodes[node].getAttribute("title");
      if (li_title == tit) {
        return nodes[node];
      }
    }
    return null;
  }

  function getProgrammLI() {
    var result = new Array();
    var node_slider = document.getElementById("slider");
    var node_ul = node_slider.firstChild;
    while (node_ul != null) {
      if (node_ul.nodeName == 'UL') {
        var node_li = node_ul.firstChild;
        while (node_li != null) {
          if (node_li.nodeName == 'LI') {
            result.push(node_li);
          }
          node_li = node_li.nextSibling;
        }
      }
      node_ul = node_ul.nextSibling;
    }
    return result;
  }
  
  this.get_playlist_expire = function() {
    try {
      this.ajax = new AJAX();
      this.ajax.response  = 'head';
      this.ajax.url       = filename_xy;
      this.ajax.method    = "HEAD";
      this.ajax.onSuccess = playlist_head;
      this.ajax.onError   = playlist_error;
      this.ajax.doRequest();
    }
    catch (err) {
      setTimeout(get_playlist_expire, reload_interval*1000);
    }
  }
  
  this.playlist_head = function(request) {
    if ((request == undefined) || (request == null)) {
      setTimeout(get_playlist_expire, reload_interval*1000);
      return;
    }
    try {
      var http_headers = request.getResponseHeader("Cache-Control");
      var expr = /max-age=([0-9]+)/;
      if (expr.exec(http_headers) != null) {
        var d = new Date();
        var ms = d.getTime();
        var zahl = Math.round(RegExp.$1);
        var t = Math.round(ms / 1000 + zahl);
        this.playlist_expires = t;
      }
    }
    catch (err) {
      setTimeout(get_playlist_expire, reload_interval*1000);
      return;
    }
  }
}

var _toggle_status = 'hide';
   function toggle(txt_show, txt_hide)
  	{
  		var slider = document.getElementById('slider');
  		
  		var Knoten = slider.firstChild;
		while(Knoten != null)
		{
			if(Knoten.nodeName == 'UL')
			{
				var Knoten2 = Knoten.firstChild;
				while(Knoten2 != null)
				{			
					if(Knoten2.nodeName == 'LI')
					{
						var Knoten3 = Knoten2.firstChild;
						while(Knoten3 != null)
						{
							if(Knoten3.nodeName == 'P')
							{
								Knoten3.className = _toggle_status;
							}	
							Knoten3 = Knoten3.nextSibling;
						}
					}
					Knoten2 = Knoten2.nextSibling;
				}
			}
			Knoten = Knoten.nextSibling;				
		}
		
		var text;
		if(_toggle_status == 'hide')
		{
			text = document.createTextNode(txt_show);
			_toggle_status = 'show';
		}
		else
		{
			text = document.createTextNode(txt_hide);
			_toggle_status = 'hide';   	
  		}
  		
  		document.getElementById('slider_link').removeChild(document.getElementById('slider_link').firstChild);	
		document.getElementById('slider_link').appendChild(text);
  	}
   	
function isIE() {
  return /msie/i.test(navigator.userAgent) && !/opera/i.test(navigator.userAgent);
}
