/**
 * Funktionen zum WebTV
 * @author Mark Worthmann
 * @copyright Euro1 AG 2008
 *
 */
 var playerurl   = "";
 var stopped     = false; //ob fading gestoppt ist
 var artistfreigabe = false;
 var webTVClosed = 0;
 var asset_id    = 0;
 var default_artist_link = "/star-suche.htm";
 var default_artist_image= '/styleimages/Box_m-042_Default_ArtInfo.gif';
 var first_request = 1;//**
 var deltaVideo  = 0;//**
 var timeout     = "";
 var donotopen   = false; //temp. bei openopenerwebtv, damit waerend neuladen des popups nicht webtv geoeffnet wird
 var stopped     = false;
 var changeIntervalVar = false;
 var step         = 0;//Anzahl gespielter Clips, um changeInfo des letzten Clips beenden zu koennen
 var nextId      = 0;
 var star_archiv_link        = "";
 var next_star_archiv_link   = "";
 var artist_image    = "";
 var nextArtistimage = "";
 /******* fuer alle formate, die einen weißen broder um die playbuttons haben, hier die format_id eintragen *********/
 var format_ids_with_playbutton_borders = new Array( "21", "37" ); 
 /*******************************************************************************************************************/

        /**
         * Prüft, ob ein neues Video geladen werden muss und tut dies ggf.
         */
        function handleVideos(){
            try {
                if( !handlingFlag ){
                    loadNextVideoData();
                }
            } catch(e){}
        }

        //laedt das naechste Video und die Kuenstlerdaten per Ajax als XML
        function loadNextVideoData(){
            //wenn bereits ein sendeplatz vorhanden, das nächste Video laden
            var afterSendeplatz = "";
            //sicherstellen, dass naechstes Video das folgevideo ist
            if( sendeplatz_id!="" )
                 afterSendeplatz = "&afterSendeplatz=" + sendeplatz_id;
            
            if( isDocked )
                deltaVideo=0; //nur im nicht gedockten Zustand mit Delta rechnen
            try {
                 $.ajax({
                   type: "POST",
                   dataType: "xml",
                   url: "/scripts/WebTVPlaylistAjax.xml",
                   data: "action=getTrack&type=" + isDocked + "&first_request=" + first_request + "&deltaVideo=" + deltaVideo + "&isDocked=" + isDocked,
                   success: loadNextVideoDataResponse,
                   error: errorfunc
                 }); 
                 first_request = 0;                     
            } catch(e){}
        }

        //handles the answer of load NextVideoData
        function loadNextVideoDataResponse(data, textStatus){
            //Change-Interval stoppen
            //clearInterval(changeIntervalVar);
            
                //Alle Clip-Daten aus XML laden
                var counter         = 0;
                var comingSoonIsSet = false;
                star_archiv_link = default_artist_link;
                artist_image = default_artist_image;
                $(data).find("clip").each( function(item){
                    //wenn aktuelles Item...
                    if(counter == 0){
                        //...dann variablen befuellen
                        try {
                        title           = decodeURIComponent( $(this).find("title").text() );
                        } catch(e) {}
                        try {
                        artist          = decodeURIComponent( $(this).find("artist").text() );
                        } catch(e) {}
                        try {
                        artist_id       = $(this).find("artistid").text();
                        sendeplatz_id   = $(this).find("sendeplatzid").text();
                        duration        = $(this).find("duration").text();
                        format_id       = $(this).find("programblockid").text();
                        artistfreigabe  = $(this).find("artistfreigabe").text();
                        asset_id        = $(this).find("assetid").text();
                        skin_image      = decodeURIComponent( $(this).find("skinimage").text() );
                        } catch(e){}

                        if( isDocked && !artistfreigabe ){
                            star_archiv_link = default_artist_link;
                        } else if( isDocked ){
                            star_archiv_link = "/artist.htm?title="+ encodeURI(artist) + "&id=" + artist_id;
                        }

                        //wenn image vorhanden, dann anzeigen, sonst default-image
                        if( asset_id && asset_id!=0)
                           artist_image = '/show_asset.htm?id='+asset_id;
                        else 
                           artist_image = default_artist_image;

                        //xml_clip_zaehler erhoehen
                        counter++;
                    } else {
                        //wenn coming soon noch nicht gesetzt
                        if( !comingSoonIsSet ){
                            nextTitle  = "";
                            nextArtist = "";
                            next_star_archiv_link = default_artist_link;
                            nextArtistimage = default_artist_image;

                            try {
                                nextTitle     = decodeURIComponent( $(this).find("title").text() );
                            } catch(e){}
                            try {
                                nextArtist    = decodeURIComponent( $(this).find("artist").text() );
                            } catch(e){}
                            try {
                                nextArtist_id = $(this).find("artistid").text();
                                nextArtistfreigabe  = $(this).find("artistfreigabe").text();
                                nextAssetId  = $(this).find("assetid").text();
                            } catch(e){}
                            //...sonst Coming Soon füllen, wenn artist_id vorhanden (sonst ist es evt. kein Track)
                            if( isDocked && nextArtist_id!="" && nextArtist!="" && nextArtist!="Station-IDs" && nextArtist!="Commercial"){ 
                                $("#Box_m-042_ContComingSoonArtist").html( nextArtist );
                                $("#Box_m-042_ContComingSoonTrack").html( nextTitle );

                                if( isDocked && !nextArtistfreigabe ){
                                    next_star_archiv_link = default_artist_link;
                                } else if( isDocked ){
                                    next_star_archiv_link = "/artist.htm?title="+ encodeURI(nextArtist) + "&id=" + nextArtist_id;
                                }

                                if( nextAssetId && nextAssetId!=0)
                                   nextArtistimage = '/show_asset.htm?id='+nextAssetId;
                                else 
                                   nextArtistimage = default_artist_image;


                                step++;//Anzahl gespielter clips an erhoehen
                                setTimeout("m042_changeInfo("+step+")",5000);
                                comingSoonIsSet = true;
                            }
                            counter++;
    
                        }
                    }
    
                });
            try {      
               //Infos austauschen
                  setArtistInfo( title, artist_id, artist, artistfreigabe );    
                  //Skin austauschen
                  setSkinImage( skin_image, format_id );
                  //Timeout bis zum nächsten Request setzen
               if( duration > 5000 )
                 timeout = setTimeout( "fadeOutMarquee()", duration );//fadeout der infos nach orginal duration
               else
                 fadeOutMarquee();
           } catch(e){}
        }
        //for errors
        function errorfunc(XMLHttpRequest, textStatus, errorThrown) {
            //loadNextVideoDataResponse(XMLHttpRequest, textStatus);
            //alert("Error:"+XMLHttpRequest + " " + textStatus + " " + errorThrown );
            return false;
        }

        /**
         * Wechselt die Infoanzeige des RC-Moduls auf Now Playing, Info oder Coming Soon
         * Wird per Interval angesteuert und wechselt regelmäßig die Anzeige
         */
        function m042_changeInfo(mystep){ 
            //clearInterval(changeIntervalVar);
            var changeItems = new Array();
            changeItems[0] = new Object();
            changeItems[0]["ID"] = "Box_m-042_ContNowPlaying";
            changeItems[0]["ShowClass"] = "Box_m-042_ContNowPlaying";
            changeItems[0]["HideClass"] = "Box_m-042_ContNowPlayingHide";
            changeItems[0]["ShowTime"]  = "5000";
            changeItems[0]["Box_m-042_PopUpButton"]= "Box_m-042_PopUpButton";
            changeItems[0]["MoreInfoLink"] = star_archiv_link;
            changeItems[0]["Image"] = artist_image;
            changeItems[1] = new Object();
            changeItems[1]["ID"] = "Box_m-042_ContYavidoInfo";
            changeItems[1]["ShowClass"] = "Box_m-042_ContYavidoInfo";
            changeItems[1]["HideClass"] = "Box_m-042_ContYavidoInfoHide";
            changeItems[1]["ShowTime"]  = "2000";
            changeItems[1]["Box_m-042_PopUpButton"]= "Box_m-042_PopUpButtonActive";
            changeItems[1]["MoreInfoLink"] = star_archiv_link;
            changeItems[1]["Image"] = artist_image;
            changeItems[2] = new Object();
            changeItems[2]["ID"] = "Box_m-042_ContComingSoon";
            changeItems[2]["ShowClass"] = "Box_m-042_ContComingSoon";
            changeItems[2]["HideClass"] = "Box_m-042_ContComingSoonHide";
            changeItems[2]["ShowTime"]  = "5000";
            changeItems[2]["Box_m-042_PopUpButton"]= "Box_m-042_PopUpButton";
            changeItems[2]["MoreInfoLink"] = next_star_archiv_link;
            changeItems[2]["Image"] = nextArtistimage;
            changeItems[3] = new Object();
            changeItems[3]["ID"] = "Box_m-042_ContYavidoInfo";
            changeItems[3]["ShowClass"] = "Box_m-042_ContYavidoInfo";
            changeItems[3]["HideClass"] = "Box_m-042_ContYavidoInfoHide";
            changeItems[3]["ShowTime"]  = "2000";
            changeItems[3]["Box_m-042_PopUpButton"]= "Box_m-042_PopUpButtonActive";
            changeItems[3]["MoreInfoLink"] = star_archiv_link;
            changeItems[3]["Image"] = nextArtistimage;

            //Alle zu wechselnden Items durchgehen, bis aktuelles gefunden, dann ausblenden und naechstes einblenden 
            for( i=0; i<changeItems.length; i++ ){
            //alert("#"+changeItems[i]["ID"]);
                //wenn Item aktuelle angezeigt wird (also die Class fuers anzeigen verwendet...
                if( document.getElementById(changeItems[i]["ID"]).className == changeItems[i]["ShowClass"]  ){
                    //nur wenn nicht gestoppt bei angezeigtem InfoButton weiterlaufen
                    if( !(stopped && changeItems[i]["ShowClass"]=="Box_m-042_ContYavidoInfo") ){

                        //...dann ausblenden...
                        $("#"+changeItems[i]["ID"]).fadeOut(1000, function(){
                            try {
                                //$("#"+changeItems[i]["ID"]).attr("CLASS",changeItems[i]["HideClass"]);//HideClass des Elements setzen
                                document.getElementById( changeItems[i]["ID"] ).className = changeItems[i]["HideClass"];//ShowClass des Elements setzen
                                //und naechstes Elemenmt herausfinden (naechstes in der Liste oder wenn letztes erreicht, dann erstes)
                                if( nextId+1 > changeItems.length-1 )
                                    nextId = 0;
                                else
                                    nextId++;
                                //erst naechstes Element schnell ausblenden, um mit effekt einblenden zu koennen
                                $("#"+changeItems[nextId]["ID"]).hide("fast", function(){
                                    //ShowClass einstellen
                                    //$("#"+changeItems[nextId]["ID"]).attr("CLASS",changeItems[nextId]["ShowClass"]);//ShowClass des Elements setzen
                                    document.getElementById( changeItems[nextId]["ID"] ).className = changeItems[nextId]["ShowClass"];//ShowClass des Elements setzen
        
                                    //artist_image setzen
                                    document.getElementById('Box_m-042_BildSRC').src = changeItems[nextId]["Image"];
        
                                    //einblenden
                                    $("#"+changeItems[nextId]["ID"]).fadeIn(400, function(){
                                        //Einstellen der PlayButton Class
                                        //$("#Box_m-042_PopUpButton").attr("CLASS",changeItems[nextId]["Box_m-042_PopUpButton"]);
                                        document.getElementById( "Box_m-042_PopUpButton" ).className = changeItems[nextId]["Box_m-042_PopUpButton"];//ShowClass des Elements setzen
        
                                        //More_Info_Link setzen
                                        document.getElementById("Box_m-042_StarArchivButton_href").href = changeItems[nextId]["MoreInfoLink"];
        
                                    });
                                    //wenn naechster Clip bereits geladen, dann nicht mehr weiter, da bereits neuer Prozess angestossen wurde
                                    if(mystep == step)
                                        setTimeout("m042_changeInfo("+mystep+")",changeItems[nextId]["ShowTime"]);
                                });                            
                            } catch(e){}
                        });
                        break; 
                    }//if(!(stopped                   
                    else {
                       document.getElementById('Box_m-042_BildSRC').src = '/styleimages/Box_m-042_Default_ArtInfo.gif';//img auf default
                       document.getElementById("Box_m-042_StarArchivButton_href").href = default_artist_link;//more_info auf default
                    }                 
                }//if
            }//for
        }

        /**
         * Setzt die ArtistInfo
         */
        function setArtistInfo( title, artist_id, artist, hasArtistInfo ){
            var artistname   = artist;
            var playingtitle = title;
            //wenn erlaubt, dann link setzen
            if( hasArtistInfo && !stopped)
                artist = "<A HREF='' onclick=\"return openArtistPage();\">" + artist + "</A>";
            if( isDocked && (!hasArtistInfo || stopped) ){
                document.getElementById("Box_m-042_StarArchivButton_href").href = default_artist_link;
            } else if( isDocked ){
                document.getElementById("Box_m-042_StarArchivButton_href").href = "/artist.htm?title="+ encodeURI(artistname) + "&id=" + artist_id;
            }
            try {
                //marquee im popup setzen, nur bei PopUp (isDocked == false)
                if( !isDocked && (artist.toLowerCase()).indexOf('station-id')==-1 && (artist.toLowerCase()).indexOf('commercial')==-1 && (artist.toLowerCase()).indexOf('warning')==-1 && (artist!="" )){
                    var string = artist;
                    if( title != "" )
                        string+= " - " + title;
                    var leerstring = "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
                    $("#yMarquee").html(string + leerstring + string);
                } else $("#yMarquee").html("YAVIDO - Urban Music Network");

                //infos im kleinen Modul setzen
                if( isDocked ){
                    //Artist und title
                    $("#Box_m-042_ConTextArtist").html(artistname);
                    $("#Box_m-042_ConTextTrack").html(playingtitle);
             
                    //wenn image vorhanden, dann anzeigen, sonst default-image
                    if( asset_id && asset_id!=0 && !stopped)
                       document.getElementById('Box_m-042_BildSRC').src = '/show_asset.htm?id='+asset_id;
                    else 
                       document.getElementById('Box_m-042_BildSRC').src = '/styleimages/Box_m-042_Default_ArtInfo.gif';
                }//if 
            } catch(e){}
        }

        /**
         * Setzt das Skinning-Background-Image
         */
        function setSkinImage( skin_image, format_id ){
            try {
                //Skin nur im PopUp (isDocked==false) setzen
                if( !isDocked ){
                    //css im popup austauschen
                    document.getElementById("skinTemplate").href = "http://interface.yavido.de/prod/gadget/skin.php?fid="+format_id;
                    //Background nur im PopUp austauschen
                    document.getElementById("Box_m-043_WebTV").style.backgroundImage = "url("+ skin_image +")";
                     //falls Design mit weißem rahmen um playbuttons, diese setzen 
                     //( ids fuer diese skins sind ganz oben in array eintragbar )
                     for( i=0; i<format_ids_with_playbutton_borders.length; i++ ){
                        if( format_ids_with_playbutton_borders[i] == format_id ){
                            if( document.all )
                                    document.getElementById("muteButton").style.borderLeft = "1px solid #FFFFFF";
                           else {
                                    document.getElementById("sendAFriend").style.borderLeft = "1px solid #FFFFFF";
                            }
                         }
                    } 
                    //playcontrols.png
                    document.getElementById("marqueeOverlay").style.backgroundImage = "url(http://interface.yavido.de/prod/gadget/getimage.php?id=888&file=gadget/skins/" + format_id + "/marquee_bg_undocked.png" +")";
                    //marquee_overlay_undocked.png            
                }//if
            } catch(e){}
            
        }        


    /**
     * Blendet den Marquee aus, wartet 10 sec und startet handleVideos
     */
     function fadeOutMarquee(){
         if(!stopped){     
             //im PopUp den Marquee ausblenden
             if( !isDocked )
                $("#yMarquee").html("YAVIDO - Urban Music Network");
            //timeout bis zu den nächsten Clipdaten festlegen und dann handleVideos aufrufen
            var timeout = 20000;//Zeit bis Einblenden der neuen Artistinfo in ms
            //Auf Grund der Zeitverzögerung des Streams (ca. 10-15 sek) im rc-modul anderes Timeout
            if( isDocked )
                timeout = timeout/2; //im rc-modul bereits nach der hälfte (also ca. pushplaylistzeit)
            setTimeout("handleVideos()",timeout);
        }
     }

        
        /**
         * Schaltet den Ton des Player je nach vorherigem Status an oder aus
         */
        function mutePlayer() {
            var webTVPlayerObj = document.getElementById( "webTVPlayerObj" );
            //lautstärke umdrehen (an/aus), alten wert in variable speichern
            if( webTVPlayerObj.settings.volume == 0 ){
                webTVPlayerObj.settings.volume = myvolume;
            } else {
                myvolume = webTVPlayerObj.settings.volume;
                webTVPlayerObj.settings.volume = 0;
            }
            //image austauschen
            $("#muteButton").toggleClass("chosen");
        }

        /**
         * Oeffnet die Artistpage mit dem aktuellen Kuenstler (star-archiv-button im kleinen webTV)
         */
        function openArtistPage(){
            try {
                if( isDocked && artistfreigabe  )
                    document.location.href = "/artist.htm?title=" + encodeURI(artist) + "&id=" + artist_id;
                else if( !isDocked && artistfreigabe ){
                    try {
                        opener.location.href = "/artist.htm?title=" + encodeURI(artist) + "&id=" + artist_id;
                    } catch (e){
                        MeinFenster = window.open("/artist.htm?title=" + encodeURI(artist) + "&id=" + artist_id, "_blank", "");
                        MeinFenster.focus();
                    }
                } else {
                    document.location.href = default_artist_link;
                }
            } catch(e){}
            return false;
        }
        /**
         * Oeffnet die Artistpage mit dem aktuellen Kuenstler (star-archiv-button im kleinen webTV aus dem Flash Player heraus)
         */
        function flashOpenArtistPage(artist_id) {
            try {
                if( isDocked) {
                    document.location.href = "/artist.htm?title=" + encodeURI(artist) + "&id=" + artist_id;
                } else {
                    try {
                        opener.location.href = "/artist.htm?title=" + encodeURI(artist) + "&id=" + artist_id;
                    } catch (e){
                        MeinFenster = window.open("/artist.htm?title=" + encodeURI(artist) + "&id=" + artist_id, "_blank", "");
                        MeinFenster.focus();
                    }
                }
            } catch(e){}
            return false;
        }   
        /**
         * Oeffnet die Send a Friend-Seite im Opener
         */
        function openSendaFriend(url) {
            try {
                if( opener ){
                    opener.document.location.href = url;
                    opener.focus();
                } else {
                  MeinFenster = window.open(url, "_blank", "");
                  MeinFenster.focus();                 
                }
            } catch(e){
                MeinFenster = window.open(url, "_blank", "");
                MeinFenster.focus();            
            }
            return false;
        }
 
 
        /**
         * Stoppt das Fading des WebTV nach Oeffnen des PopUps
         */ 
        function stopWebTVRC(){
            try {
                stopped = true;
            }catch(e){
            }
        }
 
        /**
         * WebTV Reporting
         * Startet das Ajax-Script, um das Streaming-Log zu befüllen
         */
        function reportWebTV( clipId ){
               //Reporting per Ajax aufrufen            
               $.ajax({
                 type: "POST",
                 dataType: "text",
                 url: "/scripts/reportWebTVAjax.php",
                 data: "clip_id=" + clipId
               }); 
        }
