/*-------------------------------------------------------------------
Player javascript API
-------------------------------------------------------------------*/

/*** Initialize embedded player stuff ***/

jQuery(document).ready(function() {
jQuery(".np_content input, .np_content textarea").focus(function() {
        jQuery(this).addClass("curr_focus")
    });
    jQuery(".np_content input, .np_content textarea").blur(function() {
        jQuery(this).removeClass("curr_focus")
    });

    jQuery.updnWatermark.attachAll();



});

function playerReady(obj) {
    if (obj.id == "miniautomat") {
        var tag = GetCookie("EmbeddedPlayerLastTrack");
        j = JSON.parse(tag);
        loadTheFile("miniautomat", j, false);
    }
};





var currentPosition;
var currentRemaining;
var currentVolume;
var currentItem = -1;
var currentState;
var currentLoad;
var currentIdType;

/* for animation */
var embeddedPlayerInfoHidden = false;


function sendEvent(swf,typ,prm) { 
	var obj = thisTheMovie(swf);
	if( obj && obj.sendEvent)
	    obj.sendEvent(typ,prm); 
};


function updateItem(player) {
        
    var p = thisTheMovie(player.id);
    var pl = p.getPlaylist();

    var tags = pl[player.index].tags;
    var file = pl[player.index].file;
    var author = pl[player.index].author;

    if (currentItem == player.index)
        return;
    
    currentItem = player.index;

    // Update html in embedded player
    updateEmbeddedPlayerHtml(pl[player.index]);

    var idtype = getIdType(tags);
    currentIdType = idtype;

    // Log TNS Matrix
    //var href = location.href.replace("http://", "");
    //getTMqs('http',
    //            href,
    //            document.title + " - " + pl[player.index].author + " - " + pl[player.index].title
    //            , 'nrk_no', 'no', 'ISO-8859-1');



    if (idtype == 'mostpopular') {
        callTopListCallback(tags);
    }
    else if (idtype == 'laater') {
        callLaaterCallback(tags);
    }
    else
    // HACK: Must be changed when adding another type of playing
        callTagsCallback(pl[player.index].author, pl[player.index].title);
}


function updateState(player) {
    // player.oldstate, player.newstate
    // IDLE, BUFFERING, PLAYING, PAUSED, COMPLETED

    if (player.newstate == "PLAYING") {
        var p = thisTheMovie(player.id);
        var pl = p.getPlaylist();
        var c = p.getConfig();

        var tags = pl[c.item].tags;
        var file = pl[c.item].file;
        var author = pl[c.item].author;
        var title = pl[c.item].title;
        
        // Update last played cookie
        if (tags && tags != '') {
            var cookie = '{"file": "' + file + '", "author": "' + author + '", "title": "' + title + '", "tags": "' + tags + '"}';
            SetCookie("EmbeddedPlayerLastTrack", cookie, 100);
        }
    }

    if (currentIdType == 'laater') {
        laaterUpdateState(player.newstate);
    }
    
}


function updateTime(player) {
    var currentTime = player.position;

    // Phase out if less than 2 secs left
    /*
    if (player.duration - player.position < 3 && embeddedPlayerInfoHidden == false) {
        embeddedPlayerInfoHidden = true;
        jQuery("#miniautomat_nowplaying").animate({ left: "-500px" }, 1500, "linear");
    }
    */
    if (currentIdType == 'laater') {
        laaterSetTime(currentTime);
    }
}

/************************************/
/* Deprecated, works for v3.x of jeoren
*************************************/
function getUpdate(typ,pr1,pr2,swf) {

if(typ == "item") 
{ 
currentItem = pr1; 
// setTimeout("getTheItemData(swf, currentItem)",5000);
var obj = getTheItemData(swf, currentItem);
var idtype = getIdType(obj.tags);
currentIdType = idtype;
        
// Log TNS Matrix
//var href = location.href.replace("http://","");        
//getTMqs('http', 
//href, 
//document.title + " - " + obj.author + " - " + obj.title
//, 'nrk_no', 'no', 'ISO-8859-1');
        
if(idtype=='mostpopular')
    callTopListCallback(obj.tags);
else if(idtype=='laater'){
    callLaaterCallback(obj.tags);
}
else
// HACK: Must be changed when adding another type of playing
callTagsCallback(obj.author, obj.title);
}
if(typ == "state")
{
// pr1 == 0 : paused
// pr1 == 2 : playing
// (1 = preparing to play?)
if(currentIdType == 'laater')
{
laaterUpdateState(pr1);
}

}
    
if(typ == "time")
{
var currentTime = pr1; 
if(currentIdType == 'laater')
{
laaterSetTime(currentTime);
}
}

};

function getIdType(id)
{
var vals = id.split("|");
var idtype='';
for(var i in vals)
{
var v = vals[i].split(":");
if(v[0]=='idtype')
idtype = v[1];    
}
return idtype;
}

function callTagsCallback(author,title)
{
markPlayingTrack(author, title);
}


function callTopListCallback(id)
{
var vals = id.split("|");
var mmiid = -1;
var bandid = -1;
var mmmid = -1;
var listid = -1;
var userid = -1;
var ip = "";    
for(var i in vals)
{
var v = vals[i].split(":");
if(v[0]=='listid')
listid=v[1];
if(v[0]=='mmmid')
mmmid=v[1];
if(v[0]=='mmiid')
mmiid=v[1];
if(v[0]=='bandid')
bandid=v[1];
if(v[0]=='userid')
userid=v[1];
if(v[0]=='ip')
ip=v[1];
}
    
// Callback to stats
jQuery.get(baseUri + 'player/getMeta2.ashx?m='+mmmid);
 
showInfoboxForListEntry(listid, mmmid, mmiid, bandid, userid,ip);

}

function callLaaterCallback(id)
{
    var vals = id.split("|");
    var mmmid = -1;
    var mmiid = -1;
    for(var i in vals)
    {
        var v = vals[i].split(":");
        if(v[0]=='mmmid')
        mmmid=v[1];
        if(v[0]=='mmiid')
        mmiid=v[1];
    }
        
    laaterMarkPlaying(mmmid, mmiid);
}


function loadTheFile(swf,obj,start) {

    var p = thisTheMovie(swf);
    p.addControllerListener("ITEM", "updateItem");
    // p.addModelListener("TIME", "updateTime");
    p.addModelListener("STATE", "updateState");

    currentItem = 0;
    p.sendEvent("STOP");
    p.sendEvent("ITEM", 0);
    p.sendEvent("LOAD", obj);
    if (start !== false) {
        p.sendEvent("PLAY");
        jQuery("#nowplaying_desc").html("Spilles n&aring;:");
    }       
    getTheItemData(swf, 0);

        
    // Log TNS Matrix
    //var href = location.href.replace("http://","");
    //getTMqs('http', 
    //href, 
    //document.title + " - " + obj.toString(),
    //'nrk_no', 'no', 'ISO-8859-1');
};

function getLength(swf) { 
var len = thisTheMovie(swf).getLength(); 
alert('the length of the playlist is: '+len);
};

function addTheItem(swf,obj,idx) {
thisTheMovie(swf).addItem(obj,idx);
};

function removeItem(swf,idx) {
thisTheMovie(swf).removeItem(idx);
};

function itemData(swf,idx) {
var obj = thisTheMovie(swf).getPlaylist()[idx];
var txt = "";
for(var i in obj) { 
txt += i+": "+obj[i]+"\n";
}
alert(txt);
};

function getTheItemData(swf, idx) {
    var obj = thisTheMovie(swf).getPlaylist()[idx];
    // itemData(swf, idx);  // Print content of obj
    
    // Update embedded portion of page
    updateEmbeddedPlayerHtml(obj);    
        
    return obj;
};


function callLaaterCallback(id) {
var vals = id.split("|");
var mmmid = -1;
var mmiid = -1;
for (var i in vals) {
var v = vals[i].split(":");
if (v[0] == 'mmmid')
mmmid = v[1];
if (v[0] == 'mmiid')
mmiid = v[1];
}

laaterMarkPlaying(mmmid, mmiid);
}

/******************************************************************/
/******************** NEW EMBEDDED PLAYER *************************/
/******************************************************************/

function getMmmidForLaater(id) {
    var vals = id.split("|");
    for (var i in vals) {
        var v = vals[i].split(":");
        if (v[0] == 'mmmid')
            return v[1];
    }
    return -1;
}

function getMmmidForTopList(id) {
    var vals = id.split("|");
    for (var i in vals) {
        var v = vals[i].split(":");
        if (v[0] == 'mmmid')
            return v[1];
    }
    return -1;
}


function getMMMidFromId(id) {
    var idtype = getIdType(id);

    if (idtype == 'mostpopular')
        return getMmmidForTopList(id);
    else if (idtype == 'laater') {
        return getMmmidForLaater(id);
    }
    eRlse
        return -1;
}

function updateEmbeddedPlayerHtml(obj) {
    var id = obj.tags;
    if (id == null) {
        // TODO: Show default data in player
        return;
    }
    var mmmid = getMMMidFromId(id);
    if (mmmid != null && mmmid < 1){
        // TODO: Show default data in player
        return;
    }

    if (embeddedPlayerInfoHidden == false) {
        jQuery("#miniautomat_nowplaying").animate({ left: "-500px" }, 500, "linear");
    }
    
    var url = baseUri + "search/GetTracks.ashx?type=singletrack&q=" + mmmid;
    jQuery.getJSON(url, null,
                            function(data) {
                                if (data.length) {
                                    var iurl =  decodeURIComponent(data[0].imageurl);
                                    var artist = decodeURIComponent(data[0].alias);
                                    var artistUrl = decodeURIComponent(data[0].aliasUrl);
                                    var title = decodeURIComponent(data[0].trackname);
                                    var titleUrl = decodeURIComponent(data[0].trackUrl);
                                    var rec = data[0].recommended;
                                    var mmmid = data[0].mmmid;
                                    var mmiid = data[0].mmiid;
                                    var userid = data[0].userid;
                                    var ip = data[0].ip;
                                    var listens = data[0].listens;
                                    var downloads = data[0].downloads;
                                    var comments = data[0].comments;
                                    var thumbsup = data[0].thumbsup;
                                                                        
                                    // Bilder
                                    var imageLink = "<a title='Klikk for mer info om l\u00e5ta' href='" + titleUrl + "'>" + "<img id='bandimage' alt='" + artist + "' src='" + iurl + "'/>" + "</a>";
                                    jQuery("#miniautomat_nowplaying #nowplaying_image").html(imageLink);
                                    // jQuery("#miniautomat_nowplaying #nowplaying_image #bandimage").attr("src", iurl);

                                    // Navn p� band / l�t
                                    jQuery('#miniautomat_nowplaying #nowplaying_playinginfo').attr('title', artist + " - " + title);
                                    var artistLink = "<a title='Klikk for \u00e5 bes\u00F8ke artistens profil' href='" + artistUrl + "'>" + artist + "</a>";
                                    jQuery("#miniautomat_nowplaying #nowplaying_playinginfo #nowplaying_artist").html(artistLink);
                                    var titleLink = "<a title='Klikk for mer info om l\u00e5ta' href='" + titleUrl + "'>" + title + "</a>";
                                    jQuery("#miniautomat_nowplaying #nowplaying_playinginfo #nowplaying_title").html(titleLink);

                                    // Anbefalt stjerne
                                    if (rec == "1") {
                                        jQuery("#miniautomat_nowplaying #nowplaying_star").addClass('recommended').attr('title', 'Anbefalt!');
                                    } else {
                                        jQuery("#miniautomat_nowplaying #nowplaying_star").removeClass('recommended').removeAttr('title');
                                    }


                                    // Tommel opp / elsker
                                    if (THasVoted(mmmid)) {

                                        jQuery("#miniautomat_links #nowplaying_likes").parent().replaceWith("<a id='miniautomat_likes_" + mmmid
                                        + "' class='miniautomat_link miniautomat_likes' title='Du liker denne l\u00e5ta. Bra!'>"
                                        + "<span id='nowplaying_likes' class='link_icon voted'><span></span></span></a>");
                                    }
                                    else {
                                        jQuery("#miniautomat_links #nowplaying_likes").parent().replaceWith("<a id='miniautomat_likes_" + mmmid
                                        + "' class='miniautomat_link miniautomat_link_likes' title='Klikk dersom du liker l&aring;ta' onclick='TUpdateThumbs(\""
                                        + mmmid + "\",\"" + userid + "\", \"" + ip + "\", \"true\", \"_" + mmmid + "\", \"miniautomat_message\");jQuery(\"#nowplaying_likes\").addClass(\"voted\").attr(\"title\",\"Du liker denne l\u00e5ta. Bra!\"); jQuery(\"#nowplaying_likes span\").text((parseInt(jQuery(\"#nowplaying_likes span\").text())+1));jQuery(\".miniautomat_link_likes\").removeAttr(\"onclick\");"
                                        + "return false;' href='javascript:;;'><span id='nowplaying_likes' class='link_icon'><span></span></span></a>");
                                        // alert(jQuery(".miniautomat_link_likes").parent().html());
                                    }
                                    // Last ned
                                    jQuery("#miniautomat_links #nowplaying_download").parent().replaceWith("<a id='miniautomat_download_" + mmmid
                                    + "' class='miniautomat_link' title='Last ned l&aring;ta' href='http://nrk.no/urort/1.0/track/download/" + mmiid + ".mp3'><span id='nowplaying_download' class='link_icon'><span></span></span></a>");

                                    // Facebook
                                    jQuery("#miniautomat_links #nowplaying_facebook").parent().replaceWith("<a id='miniautomat_faceboook_" + mmmid
                                        + "' class='miniautomat_link miniautomat_link_facebook' title='Klikk for &aring; dele l&aring;ta p&aring; Facebook' onclick='facebookShareTrack("
                                        + mmmid + ");return false;' href='javascript:;;'><span id='nowplaying_facebook' class='link_icon'><span></span></span></a>");


                                    // Miksteip
                                    if (userid > 0) {
                                        jQuery("#miniautomat_links #nowplaying_mixtape").parent().replaceWith("<a id='miniautomat_mixtape_" + mmmid
                                        + "' class='miniautomat_link' title='Klikk for &aring; legge l&aring;ta til en miksteip' onclick='updateAndShowEmbeddedPlayerMixtapeBox(" + mmmid
                                        + ");"
                                        + "return false;' href='javascript:;;'><span id='nowplaying_mixtape' class='link_icon'><span></span></span></a>");

//                                        jQuery("#miniautomat_links #nowplaying_mixtape").parent().replaceWith("<a id='miniautomat_mixtape_" + mmmid
//                                        + "' class='miniautomat_link' title='Klikk for &aring; legge l&aring;ta til en miksteip' onclick='mixtapesShow(" + userid + ", " + mmmid
//                                        + ", \"" + encodeURIComponent(artist).replace("'", "%27") + "\",\"" + encodeURIComponent(title).replace("'", "%27") + "\");"
//                                        + "return false;' href='javascript:;;'><span id='nowplaying_mixtape' class='link_icon'><span></span></span></a>");


                                    } else {
                                        jQuery("#miniautomat_links #nowplaying_mixtape").parent().replaceWith("<a id='miniautomat_mixtape_" + mmmid
                                        + "' class='miniautomat_link' title='Logg p&aring; for &aring; lage dine egne miksteiper'"
                                        + "href='javascript:;;'><span id='nowplaying_mixtape' class='no_hover link_icon'><span></span></span></a>");

                                    }

                                    // Oppdater kommenterknappen
                                    jQuery("#nowplaying_comment").removeClass("no_hover").attr("title", "Kommenter '" + title + "'").unbind("click").click(function() { updateAndShowEmbeddedPlayerTrackCommentBox(userid, mmmid); });

                                    // Facebook-knapp
                                    jQuery("#nowplaying_facebook").removeClass("no_hover");

                                    // Statistikk
                                    var total = parseInt(listens) + parseInt(downloads);
                                    var kommentarer = " kommentarer";
                                    if (comments == "1") {
                                        kommentarer = " kommentar";
                                    }
                                    var commentsUrl = "<a href='" + baseUri + "Laat/" + mmmid + "#top' title='Klikk for \u00e5 lese kommentarene'>" + comments + "</a>";

                                    jQuery("#nowplaying_download span").text(total).attr("title", total + " last og lytt");
                                    jQuery("#nowplaying_likes span").text(thumbsup).attr("title", thumbsup + " liker '" + title + "'");
                                    jQuery("#nowplaying_comment span").html(commentsUrl).attr("title", comments + kommentarer); ;

                                    embeddedPlayerInfoHidden = false;
                                    jQuery("#miniautomat_nowplaying").animate({ left: "0" }, 500, "swing");

                                }
                            }
                        );
    
    
    // var tmp = document.getElementById("nowplaying_title"); if (tmp && obj) { tmp.innerHTML = " " + obj["author"] + " - " + obj["title"]; }

    //return obj;
};
/******************************************************************/
/******************** END NEW EMBEDDED PLAYER *********************/
/******************************************************************/




function thisTheMovie(movieName) {
	if(navigator.appName.indexOf("Microsoft") != -1) {
		return window[movieName];
	} else {
		return document[movieName];
	}
};




/*****************************************************************************
* KODE FOR POPUP - PLAYER
*****************************************************************************/
 
var _newwindow = ''; // Global containing popup-player

function enqueueInPopupPlayer(swf, mmmid, mmiid,image,bandalias, trackname)
{
    // Reset all playing icons on current page
    jQuery(".track.playing").removeClass("playing");

    // Pr�v � f� tak i referanse til popup-vinduet
    if(_newwindow == '' || _newwindow.closed )
    {
        var win = window.open("", 'untouchedplayer',"width=1,height=1,statusbar=0,toolbars=0,resizable=0");
        if(win.document.getElementById('mpl') == null)
        {            
            win.close();
        }
        else
        {
            var     trackpath = "http://nrk.no/urort/1.0/track/listen/" + mmiid + ".mp3";
        	_newwindow = win;
        	win.document.getElementById('mpl').addItem({file:""+trackpath+"",image:""+image+"", author:""+bandalias+"", title:+""+trackname+""});            
            _newwindow.focus();
            return;
        }
    }

    var rss = baseUri + "search/tracks.aspx?mmmids="+mmmid;
    if(_newwindow == '' || _newwindow.closed )
    {
        popPlayer(rss);
    }
    else {
        var     trackpath = "http://nrk.no/urort/1.0/track/listen/" + mmiid + ".mp3";
    	thisPopupMovie(swf).addItem({file:""+trackpath+"",image:""+image+"", author:""+unescape(bandalias)+"", title:+""+unescape(trackname)+""});
        _newwindow.focus();
   }   
}


function thisPopupMovie(movieName)
{
    return _newwindow.document.getElementById(movieName);
}

function popPlayer(file) {
  


  // Attempt to stop miniautomat
  sendEvent('miniautomat','stop');
  
  var uri = baseUri + 'automat/default.aspx?file=' + file;

  popitup(uri, 'untouchedplayer', 'width=600,height=320,statusbar=0,toolbars=0,resizable=0');
  // OLD: popitup(uri, 'untouchedplayer', 'width=360,height=600,statusbar=0,toolbars=0,resizable=0');
  
  return false;
} // openPlayer



function popitup(url, name, p) { // http://www.quirksmode.org/js/croswin.html
	if (!_newwindow.closed && _newwindow.location) {
		_newwindow.location.href = url;
	}
	else {
		_newwindow=window.open(url, name, p);
		if (!_newwindow.opener) _newwindow.opener = self;
	}
	if (window.focus) {_newwindow.focus()}
	return false;
}

/*****************************************************************************
* SLUTT KODE FOR POPUP - PLAYER
*****************************************************************************/


/*****************************************************************************
* KODE FOR POPUP TNS-STATS
*****************************************************************************/
function miniautomatSendStatsTNS(stat_string){

// finner artist og tittel fra miniautomat
	var artist = jQuery("#miniautomat_nowplaying #nowplaying_playinginfo #nowplaying_artist").text();
	var tittel = jQuery("#miniautomat_nowplaying #nowplaying_playinginfo #nowplaying_title").text();
	
	// sender ikke stats om ett felt er tomt
	if(artist != '' && tittel != ''){
	
		stat_string += "/" +  artist + "/" + tittel + "/";
		
		//alert(stat_string);
		getTMstats(stat_string);
	
	}

}


function miniautomatTrigStatsTNS(obj){

//var player = document.getElementById('miniautomat');
	
//	alert(player.getPlaylist()[1].author);
//	alert(player.getPlaylist()[1].title);

	
	// sender bare stats om det er PLAY og fila finnes
	if(obj.state == 'PLAY' && obj.file != ''){
		
		// setter sammen streng som sendes. Starter med fila
		var stat_string = 'flash.nrk.no/urort/miniautomat/v/' + obj.file;
		
		// venter tre sekunder - i tilfelle treig last av artist + tittel i bunnlinja
		// kaller s� funksjonen som sender stats til TNS
		setTimeout("miniautomatSendStatsTNS('" + stat_string + "')", 3000);
						
	}
	
}

/*****************************************************************************
* SLUTT KODE FOR POPUP TNS-STATS
*****************************************************************************/

