/*
*
* Objet de construction des composantes HTML
*
*/
var playlists = {
    /** Vars **/
    name                : 's2tWare-playlists',
    id                  : '#s2tWare-playlists',
    list                : '#s2tWare-playlists .list',
    tabs                : '#s2tWare-playlists .tabs',
    height              : null,
    width               : null,
    /** toggle searchCat **/
    toggleSearchVar     : false,
    toggleHeight        : 32,
    listHeight          : false,
    toggleAddBtn        : false,

    /** Méthodes **/
    addNewList: function () {
        $j(playlists.id).append("<div id='newPLaylist'><input name='newlistName' id='newlistName'><a href=''>Ok</a></div>")
    },
    addToPlaylist: function (soundId, playlistId ) {

        me = this;
        var soundSplit = soundId.split('_');
        var idSound = soundSplit["2"];

        var playlistSplit = playlistId.split('_');
        var idPlaylist = playlistSplit ['2'];

            $j.ajax({
            type: "POST",
            url: s2tWare.comUrl + 'addToPlaylist',
            data: "idSound="+idSound+"&idPlaylist="+idPlaylist,
            success: function(msg){
              if(msg){
                 $j('#' + playlistId).effect( 'pulsate',{ times:2 }, 300 )
              }
            }
            });

    },
    createNewlist: function (name)  {
        me = this;
        if(name!='' && name!=' ' && name!='  '){
            $j.ajax({
            type: "POST",
            url: s2tWare.comUrl + 'newPlaylist',
            data: "name="+name,
            success: function(msg){
              if(msg){
                $j('newPLaylist').remove();
                me.loadPlayLists('playlistPerso');
              }
            }
            });
        }
    },
    init: function () {
        this.construct(s2tWare.id);
        this.constructTabs();
        if(s2tWare.isUser){
            this.loadPlayLists('playlistPerso');
        }else{
            this.loadPlayLists('playlist2teuf');
        }
        this.resize();
        $j(this.id).fadeIn();
    },
    construct: function(parent) {
       var HTML = '<div id="' + this.name + '"><div class="tabs"></div><div class="list"></div></div>';
       $j(parent).prepend(HTML);
    },
    constructTabs: function () {
        var tabs;
        if(s2tWare.isUser) {
            tabs = [
                    {display: 'Mes playlists', id: 'playlistPerso', classe: 'active'},
                    {display: 'PlayLists2teuf', id: 'playlist2teuf', classe: 'off'},
            ];
        }else {
            tabs = [
                    {display: 'PlayLists2teuf', id: 'playlist2teuf', classe: 'active'},
            ];
        }
        var t = "";
        for (i=0;i<tabs.length;i++)
        {
          t += "<a href='#' class='tabsPlaylist " + tabs[i].classe + "' id='" + tabs[i].id + "'>" + tabs[i].display + "</a>";
        }

       $j(this.id + ' .tabs').prepend(t);
     },
     loadPlayLists: function(id) {

        var me = this;

        $j(me.id + " .tabs a").removeClass('active').removeClass('off');
        $j(me.id + " .tabs a").addClass('off');
        $j("#" + id ).removeClass('off').addClass('active');

        this.unloadList();
        s2tLog('ok');
        switch (id) {
            case "playlistPerso":
                 arrayCols =  [
                                    {display: 'Playlist', name: 'name', sortable: false, align: 'left'},
                              ];
                arrayButtons = [
                                    {name: 'Ajouter une playlist', bclass: 'add', onpress: playlists.addNewList },
                                    {name: 'Supprimer la playlist', bclass: 'remove', onpress: playlists.removeSelectedPlaylist },
                               ]
                me.toggleAddBtn = true;
                break;
            default:
                 arrayCols =  [
                                    {display: 'Playlist', name: 'name', sortable: false, align: 'left'},
                              ];
                 arrayButtons = [];
                 me.toggleAddBtn = false;
                break;
        }
        $j(me.list).flexigrid ({
			title: 'PLaylists',
			url: s2tWare.comUrl + 'showPlaylist&source=' + id ,
			dataType: 'json',
			// Définition des colonnes
			colModel: arrayCols,
                        buttons: arrayButtons,
                        sortname: "p.name",
			sortorder: "asc",
                        options: true,
			usepager: true,
			singleSelect: true,
			useRp: false,
			rp: 15,
			showTableToggleBtn: false,
			width: me.width,
			height: parseInt(me.listHeight),
                        onSuccess: function() {
                         
                            if (id == 'playlistPerso') {
                              var buttons = $j('<td class="actions"><a class="launch">play</a></td>');
                              $j( me.id + " .list tr").droppable({
                                    over: function(event, ui){
                                        $j(this).addClass("hover");
                                    },
                                    out: function(event, ui){
                                        $j(this).removeClass("hover");
                                    },
                                    drop: function(event, ui){
                                        playlists.addToPlaylist($j('.ui-draggable-dragging').attr('id'),$j(this).attr('id'));
                                        $j('.ui-draggable-dragging').remove();
                                        $j(this).removeClass("hover");
                                    }
                                    }).append(buttons);
                              $j( me.id + " .list tr .launch").click(function(){
                                   s2tWarePlayer.loadFullPlaylist($j(this).closest('tr').attr('id')); 
                              })  
                             }
                        }
	})
        this.resize();
    },
    removeSelectedPlaylist: function() {
        me = this;
        var id = $j(me.id + ' .list').find('.trSelected').attr('id');
        if(typeof id == 'undefined'){
            alert('Selectionne une playlist à enlever!!!')
            
        }else{
            var idSplit = id.split('_');
            var idPlaylist = idSplit["2"];
            $j.ajax({
                type: "POST",
                url: s2tWare.comUrl + 'removePlaylist',
                data: "id="+idPlaylist,
                success: function(msg){
                  if(msg){
                     playlists.loadPlayLists('playlistPerso');
                  }
                }
            });
        }
    },
    resize: function() {
        var me = playlists;
        var marginSearch = 0;
        var marginBtn = 0;
        if(me.toggleSearchVar) {
            marginSearch = me.toggleHeight;
        }
        if(!me.toggleAddBtn) {
            marginBtn = 22;
        }
        $j(me.id).css({
                height: function(){
                   me.height = (s2tWare.height/2) - s2tWare.margin - marginSearch + marginBtn - 15 

                   return me.height + "px";
                },
                width: function() {
                   me.width = (s2tWare.width/2) - (s2tWare.logoWidth/2) - s2tWare.margin * 2
                   return me.width + "px";
                },
                bottom: function (){
                   var posi = s2tWare.margin;
                   return posi + 'px' 
                },
                left: function (){
                   var posi = s2tWare.margin;
                   return posi + 'px'
                }

       });
       me.listHeight = this.height - 125;
       $j(me.id +' .bDiv').height(me.listHeight) 
    },
    toggleSearch: function(){
        var me = playlists;
        if(!me.toggleSearchVar) {
            me.height -= me.toggleHeight;
            me.toggleSearchVar = true;
        } else {
             me.height += me.toggleHeight;
             me.toggleSearchVar = false;
        }
        me.resize();
    },
    unloadList: function(){
        var me = this;
        if($j(me.id +' .flexigrid').size()) {
            $j(me.id +' .flexigrid').remove();
            $j(me.id).append('<div class="list"></div>');
        }
    }
}

