var PLAYLIST_TOPRANKED = "topRanked";
var PLAYLIST_LASTUPDATED = "lastUpdated";
var PLAYLIST_LASTSHOWN = null;
var PLAYLIST_RESULT = "playlist_result";
var PLAYLIST_RESULTS_PER_PAGE = 10;
var listplaylistajax;

function rankPlaylist( rank, id, params ){
  var json = eval( '(' + params + ')' );
  var ajax = new Ajax( null, ajaxError );
  var uri = "/media/rankplaylist!ajax.action?playlistId="+json.id+"&rank="+rank;
  ajax.get( uri, null, false );
}

function makeSortable( playlistNumber ){
   var mySort = new Sortables( $("tracks"),
   {
     constrain: true,
     clone: true,
     revert: true,
     onComplete: function(){
       var result = ""+mySort.serialize();
       var array = result.split(",");
       var order = '';
       var inorder = true;
       for(var a = 0; a < array.length; a++){
         order += array[a].replace(/^s+/, '').replace(/s+$/, '');
         if(a != array.length-1) order += '.';
         if( a < array.length-1 && parseInt(array[a]) > parseInt(array[a+1]) ) inorder = false;
       }
       var index = 0;
       mySort.serialize(function(element){
         element.id = index;
         index++;
       });
       if( inorder == true ) return;

       if( playlistNumber == 0 ){
         sessionplaylist_reorder( order );
         if( typeof(viewplaylist) != 'undefined' ){ viewplaylist(0); }
       }else{
         var reloadfunc = function(num){ if( typeof(viewplaylist) != 'undefined' ){ viewplaylist(num); } }.pass( playlistNumber );
         var ajax = new Ajax( reloadfunc, ajaxError );
         var uri = "/media/reorderplaylist!ajax.action?playlistNumber="+playlistNumber+
           "&order="+encodeURIComponent(order)+"&"+ generateLine()+"=0";
           ajax.get( uri, null, false );
       }
     }
  });
}

function addSong( url, title ){
  global_addsong( title, url );
}

function showUserPlaylistContent(){
  $('playlist_container').setStyle('display', 'block');
  $(PLAYLIST_RESULT).setStyle('display', 'none');
}


function showTopRankedPlaylist(){
  $('playlist_container').setStyle('display', 'none');
  $(PLAYLIST_RESULT).setStyle('display', 'block');
  if( PLAYLIST_LASTSHOWN == PLAYLIST_TOPRANKED ) return;
  PLAYLIST_LASTSHOWN = PLAYLIST_TOPRANKED;
  getTopRankedPlaylist(1);
}
function showUpdatedPlaylist(){
  $('playlist_container').setStyle('display', 'none');
  $(PLAYLIST_RESULT).setStyle('display', 'block');
  if( PLAYLIST_LASTSHOWN == PLAYLIST_LASTUPDATED ) return;
  PLAYLIST_LASTSHOWN = PLAYLIST_LASTUPDATED;
  getUpdatedPlaylist(1);
}

function getTopRankedPlaylist( page ){
  if(listplaylistajax){ listplaylistajax.abort(); }
  $(PLAYLIST_RESULT).innerHTML = '<div style="padding-top:60px">'+
    '<center><img src="'+ statichost + '/images/common/indicator_blue_large.gif"></center></div>';
  listplaylistajax = new Ajax( getPlaylistHandler, ajaxError, page);
  var uri = "/media/listtoprankedplaylist!ajax.action?"+generateLine()+"=0&count="+ PLAYLIST_RESULTS_PER_PAGE ;
  if( page != null ){
    uri += "&page="+page;
  }
  listplaylistajax.get( uri, null, false );
  return false;
}

function getUpdatedPlaylist( page ){
  if(listplaylistajax){ listplaylistajax.abort(); }
  $(PLAYLIST_RESULT).innerHTML = '<div style="padding-top:60px">'+
    '<center><img src="'+ statichost + '/images/common/indicator_blue_large.gif"></center></div>';
  listplaylistajax = new Ajax( getPlaylistHandler, ajaxloadError, page);
  var uri = "/media/listupdatedplaylist!ajax.action?"+generateLine()+"=0&count="+ PLAYLIST_RESULTS_PER_PAGE ;
  if( page != null ){
    uri += "&page="+page;
  }
  listplaylistajax.get( uri, null, false );
  return false;
}


function ajaxloadError(){
  $(PLAYLIST_RESULT).innerHTML = "";
  ajaxError();
}

function getPlaylistHandler( obj, jsont ){
  $(PLAYLIST_RESULT).innerHTML = "";
  var json = eval( '(' + jsont + ')' );
  if(json.status != 'failure'){
    if( json.Playlist == null || json.Playlist.length == 0 ){
      $(PLAYLIST_RESULT).innerHTML = "No Results";
    }else{
      var html = '';
      var page = obj.getParams();

      var pageHTML = '<div style="padding-right:8px" align="right">';
      if( page > 1 ){
        if( PLAYLIST_LASTSHOWN == PLAYLIST_TOPRANKED ){
          pageHTML += "<a href='#' class='blacklink' "+
                      "   onclick='getTopRankedPlaylist("+(page-1)+");return false;'><b>&lt;&lt; Prev</b></a>";
        }else{
          pageHTML += "<a href='#' class='pagelink' "+
                      "   onclick='getUpdatedPlaylist("+(page-1)+");return false;'><b>&lt;&lt; Prev</b></a>";
        }
      }
      if( page* PLAYLIST_RESULTS_PER_PAGE  < json.playlistsize ){
        if( PLAYLIST_LASTSHOWN == PLAYLIST_TOPRANKED ){
          pageHTML += "&nbsp; &nbsp; &nbsp;<a href='#' class='blacklink' "+
                      "   onclick='getTopRankedPlaylist("+(page+1)+");return false;'><b>Next &gt;&gt;</b></a>";
        }else{
          pageHTML += "&nbsp; &nbsp; &nbsp;<a href='#' style='padding-left:15px' class='blacklink' "+
                      "    onclick='getUpdatedPlaylist("+(page+1)+");return false;'><b>Next &gt;&gt;</b></a>";
        }
      }
      pageHTML += '</div>';

      html += pageHTML;
      for( var a = 0; a < json.Playlist.length; a++ ){
        var username = "unknown";
        if( json.Playlist[a].username ) username = json.Playlist[a].username;

        var playlistview = "window.location.href = '/playlist/view/"+ json.Playlist[a].eid + "'";

        html += '<div style="width:98%" class="div_container">';
        html += '<table class="header" width="100%"><tr>'+
                '<td align="left">'+ json.Playlist[a].name + ' updated by ' + username +'</td>'+
                '<td align="right">'+json.Playlist[a].updated+'</td></tr></table>';
        html += '<div style="padding:8px">';
        html += '<table width="100%"><tr><td style="font-size:9pt;cursor:pointer" onclick="' + playlistview + '">';


        var starview = '<span id="rank'+json.Playlist[a].eid +'" rank="'+ json.Playlist[a].ranking.average +'"  '+
                       '      params="{\'id\':\''+ json.Playlist[a].eid +'\' }" '+
                       '      class="starview"></span><br>';
        html += starview;
        var songs = "";
        for( var b = 0; json.Playlist[a].songs != null && b < json.Playlist[a].songs.length; b++ ){
          if( b != 0 ) songs += ",&nbsp;&nbsp;&nbsp;";

          var title = json.Playlist[a].songs[b].title;
          var artist = null;
          var name = title;
          if( title.indexOf("-") != -1 ){
            artist = trim( title.substr(0, title.indexOf("-") ) );
            name = trim( title.substr( title.indexOf("-")+1, title.length ) );
          }
          songs += '<span style="line-height:28px">';
          if( artist == null ) songs += title;
          else songs += '<b>'+artist+'</b> - ' + name;
          songs += '</span>';
        }
        html += songs;

        html += '</td><td align="right" width="80">';
        var image = statichost + '/images/common/man_face_thumbnail.gif'
        if( json.Playlist[a].thumbnail == null && json.Playlist[a].gender == 'F'){
          image = statichost + '/images/common/woman_face_thumbnail.gif';
        }else if( json.Playlist[a].thumbnail != null ){
          image = json.Playlist[a].thumbnail;
        }
        html += '<a href="/profile/' + json.Playlist[a].userId + '"><img src="'+ image + '"></a>';
        html += '</td></tr>';
        html += '<tr><td colspan="2">';
        html += '<div class="newblue_button" style="font-weight:bold;padding:2px">';
        html += '<a class="whitelink" href="/standalone/' + json.Playlist[a].eid + '" id="' + json.Playlist[a].eid + '">' +
                'Pop-out Player</a> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;';
        html += '<a class="whitelink" href="/playlist/view/' + json.Playlist[a].eid + '">' +
                'View Playlist</a>';

        html += '</div>';
        html += '</td></tr></table>';

        html += '</div>';
        html += '</div>';
      }
      html += pageHTML;
      $(PLAYLIST_RESULT).innerHTML =  html;

      for( var a = 0; a < json.Playlist.length; a++ ){
        setup_mediapopup_playlistid( json.Playlist[a].eid, json.Playlist[a].eid );
      }
      new StarRank( false, { 'classname':'starview', 'readonly':true } ).init();
    }
  }
}


function addSong( id ){
  var track = tracks[id];
  global_addsong( track.title, track.url );
}
function deleteSong( playlistNumber, songId ){
  var args = new Object();
  args.playlistNumber = playlistNumber;
  args.songId = songId;
  confirmSubmit(null, deleteSongConfirmHandler, args );
  return false;
}

function deleteSongConfirmHandler( value, args ){
  if( value == true ){
    if( args.playlistNumber == 0 ){
      sessionplaylist_delete( args.songId );
      if( userPlaylistInterface != null ) userPlaylistInterface.selectPlaylist( 0 );
    }else{
       var ajax = new Ajax( deleteSongHandler, ajaxError, args.playlistNumber );
       var uri = "/media/deleteplaylistmedia!ajax.action?confirm=true&playlistNumber="+
                 args.playlistNumber+"&songId="+args.songId+"&"+generateLine()+"=0";
       ajax.get( uri, null, false );
    }
  }
}
function deleteSongHandler( obj, jsont ){
  var json = eval( '(' + jsont + ')' );
  if(json.status != 'success'){
      dialogAlert(json.errorMessage);
  }
  if( typeof(afterDeleteSong) == 'function' ){
    afterDeleteSong(); 
  }else{
    window.location.reload();
  }
}

function deletePlaylist( playlistNumber ){
    var args = new Object();
    args.playlistNumber = playlistNumber;
    confirmSubmit(null, deletePlaylistConfirmHandler, args );
    return false;
}

function deletePlaylistConfirmHandler( value , args ){
  if( value == true ){
    var ajax = new Ajax( deletePlaylistHandler, ajaxError );
    var uri = "/media/deleteplaylist!ajax.action?confirm=true&playlistNumber="+args.playlistNumber+"&"+generateLine()+"=0";
    ajax.get( uri, null, false );
  }
}
function deletePlaylistHandler( obj, jsont ){
  var json = eval( '(' + jsont + ')' );
  if(json.status != 'success'){
      dialogAlert(json.errorMessage);
  }
  window.location.href = "/myplaylist";
}

function regenerateplaylists(){
  var ajax = new Ajax( regenerateplaylistsHandler, ajaxloadError );
  var uri = "/media/regenerateplaylists!ajax.action?"+generateLine()+"=0";
  ajax.get( uri, null, false );
}

function regenerateplaylistsHandler( obj, jsont ){
  var json = eval( '(' + jsont + ')' );
  if(json.status != 'failure'){
    dialogAlertTimeout( 'Regenerating playlist successful', 1000 );
  }else{
    dialogAlertTimeout( 'Error regenerating playlist', 3000 );
  }
}

/*********** Manage ******************/

var LINK_ARRAY = new Array();
var sortable = false;
var playlistajax;

function openlink( href ){
    window.location.href = href;
}

function addmanually( num ){
  var title = $('title'+num).value;
  var url   = $('url'+num).value;
  $('title'+num).disabled = true;
  $('url'+num).disabled = true;
  var playlistnumber = $('playlistNumber').value;
  title = encodeURIComponent( title );
  url   = encodeURIComponent( url );
   var html = $('addbutton'+num).innerHTML;
  $('addbutton'+num).innerHTML = '<center><img src="' + statichost + '/images/common/blue-small-ajax-loader.gif"></center>';
  var obj = new Object();
  obj.html = html;
  obj.num  = num;
  var ajax = new Ajax( addmanuallyHandler, ajaxError, obj );
  var uri = "/media/addplaylistmedia!ajax.action?"+generateLine()+"=0&playlistNumber="+playlistnumber+"&title="+title+"&url="+url;
  ajax.get( uri, null, false );
}
function addmanuallyHandler(  obj, jsont ){
  var num = obj.getParams().num;
  var html = obj.getParams().html;
  $('addbutton'+ num ).innerHTML = html;
  $('title'+num).value = '';
  $('url'+num).value = '';
  $('title'+num).disabled = false;
  $('url'+num).disabled = false;
  var json = eval( '(' + jsont + ')' );
  if(json.status == 'success'){
    dialogAlertTimeout('Song Added Successfully', 1000);
    getplaylist();
  }else{
    dialogAlertTimeout(json.errorMessage, 1000);
  }
}

function getplaylist(){
  if( playlistajax ) playlistajax.abort();
  playlistajax = new Ajax( playlisthandler, ajaxError );
  var playlistnumber = $('playlistNumber').value;
  var uri = "/media/listplaylist!ajax.action?"+generateLine()+"=0&playlistNumber=" + encodeURIComponent(playlistnumber);
  playlistajax.get( uri, null, false );
}

function afterDeleteSong(){
  getplaylist();
}

function playlisthandler( obj, jsont ){
  var json = eval( '(' + jsont + ')' );
  if(json.status != 'success'){
    dialogAlertTimeout(json.errorMessage, 1000);
  }else{
    var playlist = json.Playlist[0];
    LINK_ARRAY = new Array();
    var html = '';
    for( var a = 0; a < playlist.songs.length; a++ ){
      var title = playlist.songs[a].title;
      title = title.replace(/&quot;/g, "\"");
      var artist = title;
      var name = "";
      if( title.indexOf("-") != -1 ){
        artist = trim( title.substr(0, title.indexOf("-") ) );
        name = trim( title.substr( title.indexOf("-")+1, title.length ) );
      }
      var ringtone_artist = artist.replace(/\'/g, "").replace(/\"/g, "");
      var ringtone_name   = name.replace(/\'/g, "").replace(/\"/g, "");
      LINK_ARRAY[a] = "http://offers.thumbplay.com/offers/Open_Artist_6843/atb3?thpartist="+
                      encodeURIComponent(ringtone_artist)+
                      "&thptitle="+encodeURIComponent(ringtone_name)+"&thpcampid=widget-search";

      html += '<table cellpadding="0" cellspacing="0" class="songrow row' + (a%2) + '"' +
              '       id="' + a + '" width="100%"><tr>'+
              '  <td class="move_td">' +
              '    <img src="' + statichost + '/images/common/song_move_arrow.gif"></td>'+
              '  <td class="title_td"> ' + playlist.songs[a].title + '</td>' +
              '  <td class="getringtone_td">'+
              '    <a href="#" class="blacklink" onclick="openlink( LINK_ARRAY[' + a + '] );return false;">Get Ringtone</a>'+
              '  </td>' +
              '  <td class="add_td">' +
              '    <a href="#" class="blacklink" onclick="addSong(' + a + ');return false">Add</a>'+
              '  </td>'+
              '  <td class="delete_td">' +
              '    <a href="#" onclick="deleteSong(\'' + playlist.playlist_number + '\',\'' + playlist.songs[a].id + '\' );return false" ' +
              '       class="blacklink">' +
              '    Delete</a>' +
              '  </td>' +
              '</tr></table>';
    }
    $('tracks').innerHTML = html;
    if( sortable ) makeSortable( playlist.playlist_number );
  }
}


function makeSearchFocus( playlistNumber ){
  var cookie = new Hash.Cookie('playlistfocus', {duration:30, domain: 'flashwidgetz.com', path: '/'} );
  cookie.set('playlistNumber', playlistNumber );
}


