/* Class PlayingItemDescription
   renders descriptions and links for playing item
*/
 function PlayingItemDescription() {
    
    this.titleSelector = "[id$=h4ItemTitle]"; 
    this.imageSelector = "[id$=imgProgram]"; 
    this.textSelector = "[id$=pItemDesc]";
    this.descLinksSelector = "#addToPlaylistLink";
    this.htmlDecodeHelperSelector = "#playlist_html_decode_helper";
    this.mediaLivetrackControlSelector = "[id$=ltcLivetrack]";
    this.mediaLivetrackControlId = "ltcLivetrack";
    this.audioLinksSelector = "#flash_audio";
    this.dateSelector = "[id$=spaDate]";
    
    this.data=null; //jquery data of playing item
   
    var isSafari = navigator.userAgent.toLowerCase().indexOf('safari') != -1 && navigator.userAgent.toLowerCase().indexOf('chrome') ==-1;
 
    
    this.renderAll= function (data) {
        if (data==null) return false;
        this.data = data;
        
        this.renderPlaylistItemDesc();
        this.modifyPlayingItemDesc();
        this.renderAudioLinks();
        this.renderLivetrack();
        this.renderDate();
        
    }
    
    this.renderPlaylistItemDesc = function() 
    {
        if (this.data==null) return false;
        var data = this.data;
        
        //title
        var h4ItemTitle = $(this.titleSelector);
        var decoded = $(this.htmlDecodeHelperSelector).html(data.name).val();
        h4ItemTitle.text(decoded);
        h4ItemTitle.css("display",(data.name==null || data.name=="") ? "none" : "inline" );
                     
        //image
        $(this.imageSelector).attr("alt",data.name);
        $(this.imageSelector).attr("title",data.name);
        $(this.imageSelector).attr("src",data.imageUrl);
                     
        //text
        $(this.textSelector).html(data.description);
                     
        //desc playlist link
        $(this.descLinksSelector).html(data.descLinksHtml);
                     
        //if(data.broadcastDate != null){
        //   h4ItemTitle.append(" ").append($("<span class='broadcast-date'>").text(data.broadcastDate));
        //}
    }
    
    
    this.renderLivetrack = function() 
    {
        if (this.data==null) return false;
        var data = this.data;
        
        if ($(this.mediaLivetrackControlSelector).length>0 && data.livetrackUrl!="") {
            $(this.mediaLivetrackControlSelector).attr("src", data.livetrackUrl);
        }
              
         if ($(this.mediaLivetrackControlSelector).length==0 && data.livetrackUrl!="") {
             var livetrackImg = '<img height="1" width="1" style="border: medium none;" id="'+this.mediaLivetrackControlId+'" alt="" src="'+data.livetrackUrl+'">';
             $("#liveaudio_help").after(livetrackImg);
        }
    }
    
    
    this.renderDate = function() 
    {
        if (this.data==null) return false;
        var data = this.data;
        
        $(this.dateSelector).html(data.broadcastDate);  
    }
    
    
    this.renderAudioLinks = function() 
    {
        if (this.data==null) return false;
        var data = this.data;
        
        $(this.audioLinksSelector).html(data.linksHtml); 
    }
    
    
    this.modifyPlayingItemDesc = function () 
    {
        this.hideEmptyImages(this.imageSelector);
        this.modifyTextLinks(this.textSelector);
        this.modifyDescPlaylistLink();
    }
    
    
    this.hideEmptyImages = function (jquerySelector) 
    {
        for ( var i=0, len=$(jquerySelector).length; i<len; ++i ){
          var image = $(jquerySelector)[i];
          if (!$(image).attr("src") || $(image).attr("src")=="null") {
            $(image).css("display", "none" );
          } else {
            $(image).css("display", "inline" );
          }
        }
    }
    
    
    this.modifyTextLinks = function(jquerySelector) 
    {
        //changes playing item description text links to open in window.opener
        var as = $(jquerySelector).find('a');
        for ( var i=0, len=as.length; i<len; ++i ){
            if ($(as[i]).attr("target")!="_blank") {
                if (isSafari) {
                    //safari fix. safari has buggy window.open handling when all other windows except pop-up has been closed
                    //no js links handling here, simple putting target="_blank" to each link
                    $(as[i]).attr("target","_blank");
                } else {
                    $(as[i]).bind('click',{oldHref: $(as[i]).attr("href")}, descTextLinkClick);
                    $(as[i]).attr("href", "#");
                }
             }
        }    
    }
    
    
    var descTextLinkClick = function(event) 
    {
        if (window.opener && !window.opener.closed) {
            //opener is set
            window.opener.location.href=event.data.oldHref;
            winFocus(window.opener);
        } else if (window.newOpenerByDescLink && !window.newOpenerByDescLink.closed) {
            //opener is closed but newly opened window is already set
            window.newOpenerByDescLink.location.href=event.data.oldHref;
            winFocus(window.newOpenerByDescLink);
        } else {
            var nwin = window.open(event.data.oldHref, '_blank');
            winFocus(nwin);
            window.newOpenerByDescLink=nwin;
        }
        return false;
    }
    
    
    this.modifyDescPlaylistLink = function() 
    {
        var link = $('#addToPlaylistLink a');
        if (link.length>0) {
            //remove previous actions
            if (link.attr("href")) link.attr("href", "#");
            if (link.attr("onclick")) link.attr("onclick", "");
            link.unbind('click');
            link.css("display","none");
            
            link.bind('click', this.descPlaylistLinkClick);
        }
    }
    
    
    this.hideDescPlaylistLink = function() 
    {
        var link = $('#addToPlaylistLink a');
        if (link.length>0) {
            link.css("display","none");
        }
    }
    
    
    this.unhideDescPlaylistLink = function() 
    {
        var link = $('#addToPlaylistLink a');
        if (link.length>0) {
            link.addClass('plusico');
            link.removeClass('loaderico');
            link.css("display","inline-block");
        }
    }
    
    
    this.descPlaylistLinkClick = function (event) 
    {
        if (nowPlaying!=null) {
            $(event.currentTarget).removeClass('plusico');
            $(event.currentTarget).addClass('loaderico');
            addToPlaylist(nowPlaying.type,nowPlaying.contentId,false);
        }
        return false;
    }

}