//plugin player definition
(function($) {
   $.fn.player = function(settings) {
	   //config
     	var config = {
    		 'playerUrl' : 'http://beta.jiwa.fm/res/widget/DesktopPlayer.swf',
		 	 'trackInfosUrl' : '/ajax/tools/jiwatrackdetail/id/', //get jiwa infos
		 	 'swfDiv' : 'jwPlayerDiv',
		 	 'framePlayer' : 'am_frmOhlin',
		 	 'frameContent' : 'am_frmContent',
    		 'index' : 0,
    		 'total' : 0,
    		 'loop' : 0,
    		 'volume' : 1,
    		 'shuffle': 0,
             'mute':0,
    		 'playlist' : [],
    		 'tracks' : [],
    		 'flashvars' : {
					engineReadyHandler: "player.engineReadyHandler",
					engineClearQueueHandler: "player.engineClearQueueHandler",
					engineEndQueueHandler: "player.engineEndQueueHandler",
					//engineQueueAddHandler: "player.engineQueueAddHandler",
					//engineRemoveTracksHandler: "player.engineRemoveTracksHandler",
					engineLoadingTrackHandler: "player.engineLoadingTrackHandler",
					enginePlayTrackHandler: "player.enginePlayTrackHandler",
					enginePauseHandler: "player.enginePauseHandler",
					engineResumeHandler: "player.engineResumeHandler",
					engineCompletePlayHandler: "player.engineCompletePlayHandler",
					engineProgressHandler: "player.engineProgressHandler",
					engineLoadProgressHandler: "player.engineLoadingTrackHandler",
					log: "player.amTrace"
				},
				'params': {
					allowscriptaccess: "always"
				},
				'attributes': {}
		 };
		//extends config
		if (settings){
			config = $.extend(config, settings);
		}
		//total change if playlist provided
		var length = config.playlist.length;
		if(length > 0){
			//set total
			config.total = (length-1);
		}
			
		//is playing ?
		var _isPlaying = 0;
		//is track loaded ?
		var _isTrackLoaded = 0;
		var _locked = 0;
		var _isSlideLocked =0;
		//smartcheck
		var _smartCheckInterval=500;
		var _smartCheckInit=0;
		var _smartCheckObj=null;
		var _smartCheckMinTime=2;
		//Engine
		var _engine = null;
		//ref this
		var $this = $(this);
		
		//SWFObject will load the swf in the div with id jwPlayerDiv
		swfobject.embedSWF(config.playerUrl, config.swfDiv, "1", "1", "9.0.0", "/flash/expressinstall.swf", config.flashvars, config.params, config.attributes);
		
		//resize player
		function resizePlayer() 
		{
        	//var doc = top.frames[config.frameContent].win; //not working with jquery 1.4
			var goodFrame = top.frames[config.frameContent];
            if(goodFrame){
                var wiWidth = $(goodFrame).width();
                var player = $('#am_ohlinPlayerContainer',goodFrame.document).width();
                var widthNew = (wiWidth - player)/2;
                if(widthNew < 0){
                    widthNew = 0;
                }
                $('#am_ohlinPlayerContainer',goodFrame.document).css('left', widthNew);
                $('#am_ohlinPlayerContext',goodFrame.document).css('left', widthNew);
                /*
                var offset = $('button#ohlin_slider',goodFrame.document).offset();
                if(offset == null){
                    var left = 0;
                }else{
                    var left = offset.left;
                }
                $('#am_ohlinPlayerSoundSlider',goodFrame.document).css('left', left);
                */
            }
        }		
		

		//changeVolume
		function changeVolume($value)
		{
            var goodFrame = top.frames[config.frameContent];
            if(goodFrame){
                $("#ohlin_slider1", goodFrame.document).removeClass('selected');
                $("#ohlin_slider2", goodFrame.document).removeClass('selected');
                $("#ohlin_slider3", goodFrame.document).removeClass('selected');
                $("#ohlin_slider4", goodFrame.document).removeClass('selected');
                $("#ohlin_slider5", goodFrame.document).removeClass('selected');

                switch($value) {
                    case 0.2:
                        $("#ohlin_slider1",goodFrame.document).addClass('selected');
                        break;
                    case 0.4:
                        $("#ohlin_slider1",goodFrame.document).addClass('selected');
                        $("#ohlin_slider2",goodFrame.document).addClass('selected');
                        break;
                    case 0.5:
                        $("#ohlin_slider1",goodFrame.document).addClass('selected');
                        $("#ohlin_slider2",goodFrame.document).addClass('selected');
                        $("#ohlin_slider3",goodFrame.document).addClass('selected');
                        break;
                    case 0.8:
                        $("#ohlin_slider1",goodFrame.document).addClass('selected');
                        $("#ohlin_slider2",goodFrame.document).addClass('selected');
                        $("#ohlin_slider3",goodFrame.document).addClass('selected');
                        $("#ohlin_slider4",goodFrame.document).addClass('selected');
                        break;
                    case 1:
                        $("#ohlin_slider1",goodFrame.document).addClass('selected');
                        $("#ohlin_slider2",goodFrame.document).addClass('selected');
                        $("#ohlin_slider3",goodFrame.document).addClass('selected');
                        $("#ohlin_slider4",goodFrame.document).addClass('selected');
                        $("#ohlin_slider5",goodFrame.document).addClass('selected');
                        break;

                }
            }
        }


		/**
		 * return object
		 */
		return { 
			
			getInstance: function() 
			{
				return $this;
			},
			/**
			 * get config
			 */
			getConfig: function() 
			{
				return config;
			},
			/**
			 * get frame player
			 */
			getFramePlayer: function() 
			{
				return config.framePlayer;
			},
			/**
			 * get frame content
			 */
			getFrameContent: function() 
			{
				return config.frameContent;
			},
			/**
			 * set total
			 */
			setTotal: function(i)
			{
				config.total = i;
				return;
			},
			/**
			 * get total
			 */
			getTotal: function()
			{
				return config.total;
			},
			/**
			 * set current positon
			 */
			setPosition: function(i)
			{
				config.index = i;
				return;
			},
			/**
			 * reset current positon
			 */
			resetPosition: function()
			{
				return this.setPosition(0);
			},
			/**
			 * get current pos
			 */
			getPosition: function()
			{
				return config.index;
			},
			/**
			 * get next pos
			 */
			getNextPosition: function()
			{
				if( (config.index +1) > config.total){
					return -1;
				}
				return (config.index +1);
			},
			/**
			 * get next pos
			 */
			getPrevPosition: function()
			{
				if( (config.index - 1) == -1 || (config.index - 1) < 0){
					return -1;
				}
				return (config.index - 1);
			},
			/**
			 * is playing
			 */
			setPlaying: function(i)
			{
				_isPlaying = i;
			},
			/**
			 * set is playing
			 */
			isPlaying: function()
			{
				return _isPlaying;
			},
			/**
			 * is playing
			 */
			setTrackLoaded: function(i)
			{
				_isTrackLoaded = i;
			},
			/**
			 * set is playing
			 */
			isTrackLoaded: function()
			{
				return _isTrackLoaded;
			},
			/**
			 * is playing
			 */
			setLocked: function(i)
			{
				_locked = i;
			},
			/**
			 * set is playing
			 */
			isLocked: function()
			{
				return _locked;
			},
			/**
			 * get player engine
			 */
			setEngine: function(engine)
			{
				_engine = engine;
			},
			/**
			 * get player engine
			 */
			getEngine: function()
			{
				return _engine;
			},
			/**
			 * set playlist
			 */
			setPlaylist: function(playlist)
			{
				config.playlist = playlist;
				config.total = (playlist.length-1);
				//reninit
				this.resetPosition();
				this.setPlaying(0);
				this.setTrackLoaded(0);
				return;
			},
			/**
			 * get playlist
			 */
			getPlaylist: function()
			{
				return config.playlist;
			},
			/**
			 * has playlist
			 */
			hasPlaylist: function()
			{
				return config.playlist.length > 0;
			},
			/**
			 * get item at
			 */
			getItemAt: function(indice)
			{
				return config.playlist[indice];
			},
			/**
			 * get current item
			 */
			getCurrentItem: function()
			{
				var indice = this.getPosition();
				return config.playlist[indice];
			},
			 /**
			 * get Current Item artist Id 
			 */
			getCurrentItemArtistId : function()
	        {
	            var item = this.getCurrentItem();
	            return item.artistId;
	        },
	        /**
			 * get Current Item Track Id 
			 */
	        getCurrentItemTrackId : function()
	        {
	            var item = this.getCurrentItem();
	            return item.id;
	        },
	        /**
			 * get Current Item media Id 
			 */
	        getCurrentItemMediaId : function()
	        {
	            var item = this.getCurrentItem();
	            return item.id_media;
	        },
			/**
			 * get next track
			 */
			getNextTrack: function()
			{
				return this.getNextPosition();
			},
			/**
			 * get prev track
			 */
			getPrevTrack: function()
			{
				return this.getPrevPosition();
			},
			/**
			 * play next
			 */
			playNextTrack: function()
			{
				var nextPos = this.getNextTrack();
				//if last and loop on
				if( nextPos == -1 && this.getLoop() == 1){
					nextPos = 0;
				}else if( nextPos == -1){
					this.displayMsg('Pas de track suivante');
					this.displayDialog('Pas de track suivante','');
					this.displayTime('');
					this.hideLoading();
					this.hideEffect();
					return;
				}
				var item = this.getItemAt(nextPos);
				this.loadData(item.id_jiwa,nextPos);
			},
			/**
			 * play prev
			 */
			playPrevTrack: function()
			{
				var prevPos = this.getPrevTrack();
				//if last and loop on
				if( prevPos == -1 && this.getLoop() == 1){
					prevPos = this.getTotal();
				}else if( prevPos == -1){
					this.displayMsg('Pas de track précédente');
					this.displayDialog('Pas de track précédente','');
					this.displayTime('');
					this.hideLoading();
					this.hideEffect();
					return;
				}
				var item = this.getItemAt(prevPos);
				this.loadData(item.id_jiwa, prevPos);
			},
			/**
			 * pause
			 */
			playPause: function()
			{
				if(!this.hasPlaylist()){
					this.displayMsg('Cette chanson est indisponible' );
					this.displayDialog('Cette chanson est indisponible, passez à la suivante','');
					this.displayTime('');
					this.hideLoading();
					this.hideEffect();
					return;
				}
				if(this.isPlaying() == 0)
				{
					//track loaded
					if(!this.isTrackLoaded()){
						var indice = this.getPosition();
						var item = this.getItemAt(indice);
						this.loadData(item.id_jiwa, indice);
					}else{
						this.setPlaying(1);
						this.resume();
					}
				}else{
					this.setPlaying(0);
					this.pause();
				}
				this.refreshPlayPause();
				
			},
			/**
			 * refresh design
			 */
			refreshPlayPause: function()
			{
                var goodFrame = top.frames[this.getFrameContent()];
                if(goodFrame){
                    if(this.isPlaying() == 0)
                    {
                        $('button#ohlin_playpause', goodFrame.document)
                        .css({"background": "transparent url(/images/ohlin/btn_play.gif) no-repeat center top"});
                        //hide effect
                        this.hideEffect();
                    }else{
                        //css
                        $('button#ohlin_playpause', goodFrame.document)
                        .css({"background": "transparent url(/images/ohlin/btn_pause.gif) no-repeat center top"});
                        //play effect
                        this.displayEffect();
                    }
                }
			},
			/**
			 * resume
			 */
			resume: function()
			{
				var engine = this.getEngine();
				if(engine != null){
					engine.jwResume();
				}else{
					//error message
				}
			},
			/**
			 * pause
			 */
			pause: function()
			{
				var engine = this.getEngine();
				if(engine != null){
					engine.jwPause();
				}else{
					//error message
				}
			},
			/**
			 * set loop
			 */
			setLoop: function(i)
			{
				config.loop = i;
			},
			/**
			 * get loop
			 */
			getLoop: function()
			{
				return config.loop;
			},
			/**
			 * toggle loop on/off
			 */
			toggleLoop: function()
			{
                var goodFrame = top.frames[this.getFrameContent()];
                if(goodFrame){
                    if(this.getLoop() == 0){
                        this.setLoop(1);
                        //css
                        $('button#ohlin_toggles_loop', goodFrame.document)
                        .css({"background": "transparent url(/images/ohlin/btn_loopOn.gif) no-repeat center top"});
                    }else{
                        this.setLoop(0);
                        //css
                         $('button#ohlin_toggles_loop', goodFrame.document)
                            .css({"background": "transparent url(/images/ohlin/btn_loopOff.gif) no-repeat center top"});
                    }
                }
			},
			/**
			 * set Shuffle
			 */
			setShuffle: function(i)
			{
				config.shuffle = i;
			},
			/**
			 * get loop
			 */
			getShuffle: function()
			{
				return config.shuffle;
			},
			/**
			 * get Shuffle
			 */
			toggleShuffle: function()
			{
                var goodFrame = top.frames[this.getFrameContent()];
                if(goodFrame){
                    if(this.getShuffle() == 0){
                        this.setShuffle(1);
                        //css
                        $('button#ohlin_toggles_random', goodFrame.document)
                            .css({"background": "transparent url(/images/ohlin/btn_randomOn.gif) no-repeat center top"});
                    }else{
                        this.setShuffle(0);
                        //css
                        $('button#ohlin_toggles_random', goodFrame.document)
                        .css({"background": "transparent url(/images/ohlin/btn_randomOff.gif) no-repeat center top"});

                    }
                }
			},
			/**
			 * load data from source
			 */
			loadData : function(id_jiwa, nextindice)
			{
				if(this.isLocked() == 1){
					this.displayLoading();
					return;
				}
				//lock to prevent multiple click
				this.setLocked(1);
				//show loading
				this.displayMsg('');
	            this.displayTime('');
				this.displayLoading();
				//smartcheck
				this.smartCheckStop();
				//
				var $this = this;
				$.ajax({
					type: "GET", 
					url: config.trackInfosUrl + id_jiwa,
					cache: false,				
					dataType: "json",
					success: function(resp){	
				    	if(resp.success  == false ){
				    		var msg = resp.error;
				    		//jiwa : ERR__TRACK_NOT_FOUND 
				    		if(msg =='ERR__TRACK_NOT_FOUND'){
				    			msg = 'Cette chanson est indisponible, passez à la suivante';
				    		}
				    		//stop playing
				    		if($this.hasPlaylist()){
				    			if($this.isPlaying() == 1)
								{
				    				$this.pause();
								}
				    		}
				    		//error
				    		$this.displayMsg(msg);
				    		$this.displayDialog(msg);
				    		//display
				    		$this.displayTime('');
				    		$this.hideLoading();
				    		$this.hideEffect();
				    		//Delock
				    		$this.setLocked(0);
				    		return false;
				    	}else{
					    	//Store item in playlist
					    	var id = id_jiwa;
				    		var options = {play: true};
				    		$this.getEngine().jwAddTracks([resp.track], options);
				    		//assign new indice
				    		$this.setPosition(nextindice);
				    		//set  track loaded
				    		$this.setTrackLoaded(1);
				    		$this.setPlaying(1);
				    		//refresh display
				    		$this.refreshPlayPause();
				    		//delock
				    		$this.setLocked(0);
				    	}
				  	},
				  	error: function(error) {
				  		$this.displayError('Connexion échouée');
						$this.displayDialog('Connexion échouée','');
				  		//delock
				  		$this.setLocked(0);
				  		return false;
				  	}
				});		
			},
			/**
			 * display msg
			 */
			displayError: function(msg)
			{
				this.hideLoading();
				this.hideEffect();
                var goodFrame = top.frames[this.getFrameContent()];
                if(goodFrame){
                    $('div#ohlin_trackCtxt', goodFrame.document).html(msg);
                }
			},
			/**
			 * display text
			 */
			displayMsg: function(msg)
			{
                var goodFrame = top.frames[this.getFrameContent()];
                if(goodFrame){
                    $('div#ohlin_trackCtxt', goodFrame.document).html(msg);
                }
			},
			/**
			 * display text
			 */
			displayDialog: function(msg, dialogtitle)
			{
				if(typeof(dialogtitle) == "undefined" || dialogtitle == ''){
					var dialogtitle= 'Player';
				}
				//dialog
                var goodFrame = top.frames[this.getFrameContent()];
                if(goodFrame){
                    goodFrame.dialogBox(msg, dialogtitle);
                }
			},
			/**
			 * display text
			 */
			displayTime: function(msg)
			{
                var goodFrame = top.frames[this.getFrameContent()];
                if(goodFrame){
                    $('div#ohlin_trackTime', goodFrame.document).html(msg);
                }
			},
			/**
			 * display animation
			 */
			displayEffect: function()
	        {
                var goodFrame = top.frames[this.getFrameContent()];
                if(goodFrame){
                    $('div#am_ohlingGfxEq', goodFrame.document).show();
                }
	        },
	        /**
			 * display animation
			 */
			hideEffect: function()
	        {
                var goodFrame = top.frames[this.getFrameContent()];
                if(goodFrame){
                    $('div#am_ohlingGfxEq', goodFrame.document).hide();
                }
	        },
	        /**
			 * display loading
			 */
	        displayLoading: function()
	        {
	        	//hide loading
                var goodFrame = top.frames[this.getFrameContent()];
                if(goodFrame){
                    $('div#ohlin_progress', goodFrame.document).show();
                }
	        },
	        /**
	         * hide loading
	         */
	        hideLoading: function()
	        {
	        	//hide loading
                var goodFrame = top.frames[this.getFrameContent()];
                if(goodFrame){
                    $('div#ohlin_progress', goodFrame.document).hide();
                }
	        },
	        /**
			 * hide contextual
			 */
	        toggleContextual: function()
	        {
	        	if(_isSlideLocked == 1){
	        		return;
	        	}
	        	_isSlideLocked = 1;
                var goodFrame = top.frames[this.getFrameContent()];
                if(goodFrame){
                    
                    $('div#am_ohlinPlayerContext',goodFrame.document).slideToggle(1300, function(){
                        _isSlideLocked = 0;
                    });
                    
                }
	        },
	        contextualScript: function(artistId, trackId)
	        {
	        	$this = this;
	           //infos coulisses
               var goodFrame = top.frames[$this.getFrameContent()];
               if(goodFrame){
                   var  urlCoulisses = '/player/infoscoulisses/artistId/' + artistId;
                   $('#tabInfosCoulisses',goodFrame.document).attr('href', urlCoulisses);
                  //infos rack
                   var  urlInfos = '/player/informations/artistId/' + artistId + '/trackId/' + trackId;
                   $('#tabInformations',goodFrame.document).attr('href', urlInfos);

                   //load infos coulisses
                   this.contextualInfosLoad(urlCoulisses);

                  //contextuel
                  var loadingInfosCoulisses = '<div style="margin:0 auto;"><img src="/images/loading.gif"/></div>';
                  $("#InfosCoulissesTab_player a",goodFrame.document).tabs().click(function () {
                      t = $(this);
                      var urlAjax = t.attr("href");
                      $('#InfosCoulissesContainer_player',goodFrame.document).html(loadingInfosCoulisses);
                      $.ajax({
                        type: "POST",
                        url: urlAjax,
                        cache: false,
                        success: function(msg){
                          $('#InfosCoulissesContainer_player',goodFrame.document).html(msg);

                          $('.am_BlocContentTabsPaneInlinePicto a',goodFrame.document).click(function(){
                              var url = $(this).attr("href");
                              //change content url
                              goodFrame.location.href = url;
                              return false;
                          });
                          $('.am_innerBloc a',goodFrame.document).click(function(){
                              var url = $(this).attr("href");
                              //change content url
                              goodFrame.location.href = url;
                              return false;
                          });
                        }
                      });
                      $("#InfosCoulissesTab_player a",goodFrame.document).each(function(){
                        if($(this).attr('title') == t.attr('title'))
                        {
                          $(this).parent().addClass('selected');
                        }
                        else
                        {
                          $(this).parent().removeClass('selected');
                        }
                      });
                  });
                  $("#firstInfosCoulisses_player a",goodFrame.document).click();
               }
	        },
	        contextualInfosLoad: function(urlAjax){
	        	$this = this;
	            var loadingInfosCoulisses = '<div style="margin:0 auto;"><img src="/images/loading.gif"/></div>';
                var goodFrame = top.frames[$this.getFrameContent()];
                if(goodFrame){
                    $('#InfosCoulissesContainer_player',goodFrame.document).html(loadingInfosCoulisses);
                    $.ajax({
                      type: "POST",
                      url: urlAjax,
                      cache: false,
                      success: function(msg){
                        $('#InfosCoulissesContainer_player',goodFrame.document).html(msg);
                        $('.am_BlocContentTabsPaneInlinePicto a',goodFrame.document).click(function(){
                            var url = $(this).attr("href");
                            //change content url
                            goodFrame.location.href = url;
                            return false;
                        });

                        $('.am_innerBloc a',goodFrame.document).click(function(){
                            var url = $(this).attr("href");
                            //change content url
                            goodFrame.location.href = url;
                            return false;
                        });

                        //select first
                        $("#InfosCoulissesTab_player a",goodFrame.document).each(function(){
                           $(this).parent().removeClass('selected');
                        });
                        $("#InfosCoulissesTab_player a:first",goodFrame.document).parent().addClass('selected');
                      }
                    });
                }
	        },
            /**
             * refresh contextual infos
             */
            refreshContextualInfos : function()
            {
	            	//param current playlist item
	                var artistId = this.getCurrentItemArtistId();
	                var trackId = this.getCurrentItemTrackId();
	                //init contextual scripts
	                this.contextualScript(artistId, trackId);
            },
			/**
			 * engine ready
			 */
			engineReadyHandler: function() 
			{
	            //assign jiwa object
	            this.setEngine(document.getElementById(config.swfDiv));
	           
	        },
	        /**
			 * engine Complete Play Handler
			 */
	        engineCompletePlayHandler: function()
	        {
	            this.amTrace('engineCompletePlayHandler');
	        },
	        /**
	         * engine pause Handler
	         */
	        enginePauseHandler : function()
	        {
	        	this.amTrace('enginePauseHandler');
	        },
	        /**
	         * engine resume Handler
	         */
	        engineResumeHandler : function()
	        {
	        	this.amTrace('engineResumeHandler');
	        },
	        /**
	         * engine loading track Handler
	         */
	        engineLoadingTrackHandler: function(track, currentIndex, previousTracks, nextTracks) 
	        {
	            this.displayMsg('');
	            this.displayTime('');
	            this.hideEffect();
	           //display loading
	            this.displayLoading();
	        },
	        /**
	         * engine play track Handler
	         */
	        enginePlayTrackHandler: function(track, currentIndex, previousTracks, nextTracks) 
	        { // Called when a new track starts playing
	        	 //hide loading
	        	 this.hideLoading();
	        	 //infos
	        	 var item = this.getCurrentItem();
	        	 this.displayMsg(item.artistName + " - " + item.title);
	        	 //this.displayTime(currentTimeStr + " / " + maxTimeStr);
	        },
	        /**
	         * engine progress handler
	         */
	        engineProgressHandler: function(currentTimeInt, maxTimeInt, currentTimeStr, maxTimeStr)
	        {
	        	this.refreshPlayPause();
	        	//hide loading
	        	 this.hideLoading();
	        	 //infos
	        	 var item = this.getCurrentItem();
	        	 this.displayMsg(item.artistName + " - " + item.title);
	        	 this.displayTime(currentTimeStr + " / " + maxTimeStr);
		        /* this.showEffect();*/
	        	 //launch script to force next track if no endqueue event received
	        	 if((maxTimeInt - currentTimeInt) <= _smartCheckMinTime  ){
	        		 if( _smartCheckInit == 0){
	        			 this.smartCheckStart();
	        		 }
	        	 }
	        },
	        /**
	         * engine end queue Handler
	         */
	        engineEndQueueHandler: function() 
	        {  //this.amTrace('in engineEndQueueHandler');
	        	//stop smartcheck if launched
	        	smartCheckStop();
	        	//play next
	        	$this.playNextTrack();
	        },
	        /**
	         * clear queue event
	         */
	        engineClearQueueHandler : function()
	        {
	        	//this.amTrace('in engineClearQueueHandler');
	        },
	        engineRemoveTracksHandler: function()
	        {
	        	//this.amTrace('in engineRemoveTracksHandler');
	        },
	        /**
	         * set mute
	         */
	        setMute: function()
	        { // set the mute
                var goodFrame = top.frames[this.getFrameContent()];
                if (goodFrame) {
                    if (config.mute==0) {
                        config.mute = 1;
                        this.getEngine().jwSetVolume(0);
                        $('button#ohlin_slider',goodFrame.document).removeClass('selected');
                        return 0;
                    } else {
                        config.mute = 0;
                        this.getEngine().jwSetVolume(config.volume);
                        $('button#ohlin_slider',goodFrame.document).addClass('selected');
                        return config.volume;
                    }
                }
	        },
	        /**
	         * set volume
	         */
	        setVolume: function(volume)
	        { // set the volume
               var goodFrame = top.frames[this.getFrameContent()];
                if (goodFrame) {
                    config.volume = volume;
                    config.mute = 0;
                    $('button#ohlin_slider',goodFrame.document).addClass('selected');
                    this.getEngine().jwSetVolume(volume);
                }
                return config.volume;
	        },
	        /**
	         * set volume
	         */
	        getVolume: function() 
	        { // set the volume
	            return config.volume;
	        },
	        /**
	         * trace
	         */
            amTrace : function(msg)
            {
            	/*if( window.console != 'undefined'){
            		 console.log(msg);
            	}*/
            },
            /**
	         * init smart check
	         */
            smartCheckInit : function()
            {
            	
            },
            /**
	         * start smart check
	         */
            smartCheckStart : function()
            {
            	_smartCheckInit = 1;
            	//_smartCheckObj = setTimeout("player.smartCheckNext", 100);
            	this.smartCheckNext();
            },
            /**
	         * stop smart check
	         */
            smartCheckStop : function()
            {
            	_smartCheckInit = 0;
            	//clearTimeout(_smartCheckObj);
            },
            /**
	         * stop smart check
	         */
            smartCheckNext : function()
            {
            	this.smartCheckStop();
        		this.playNextTrack();
            },
            /**
             * init script
             */
            initScript : function()
            {
    			var $this = this;
                var goodFrame = top.frames[this.getFrameContent()];
                var dollar_goodFrame = top.frames[$this.getFrameContent()];
                var am_goodFrame = top.frames['am_frmContent'];

                if(goodFrame){
        		  $('button#ohlin_playpause', goodFrame.document).bind('click',function(event){
        			 event.preventDefault();
        			 $this.playPause();
        			return false;
				  });
            	  //prev
				   $('#ohlin_prev', goodFrame.document).bind('click',function(event){
					   event.preventDefault();
					   $this.playPrevTrack();
					   return false;
				   });
				   //next
				   $('#ohlin_next', goodFrame.document).bind('click',function(event){
					   event.preventDefault();
					   $this.playNextTrack();
					   return false;
				   });
            	 //init loop event
				   $('#ohlin_toggles_loop', goodFrame.document).bind('click',function(event){
					   event.preventDefault();
					   $this.toggleLoop();
					   return false;
				   });
				   //init shuffle event
				   $('#ohlin_toggles_random', goodFrame.document).bind('click',function(event){
					   event.preventDefault();
					   $this.toggleShuffle();
					   return false;
				   });

				   //volume
                   $('button#ohlin_slider',goodFrame.document).click(function(event) {
                       event.preventDefault();
                       changeVolume($this.setMute());
                       return false;
                   });
                   $('button#ohlin_slider1', goodFrame.document).click(function(event) {
                       event.preventDefault();
                       changeVolume(0.2);
                       $this.setVolume(0.2);
                       return false;
                   });
                   $('button#ohlin_slider2', goodFrame.document).click(function(event) {
                       event.preventDefault();
                       changeVolume(0.4);
                       $this.setVolume(0.4);
                       return false;
                   });
                   $('button#ohlin_slider3', goodFrame.document).click(function(event) {
                       event.preventDefault();
                       changeVolume(0.5);
                       $this.setVolume(0.5);
                       return false;
                   });
                   $('button#ohlin_slider4', goodFrame.document).click(function(event) {
                       event.preventDefault();
                       changeVolume(0.8);
                       $this.setVolume(0.8);
                       return false;
                   });
                   $('button#ohlin_slider5', goodFrame.document).click(function(event) {
                       event.preventDefault();
                       changeVolume(1);
                       $this.setVolume(1);
                       return false;
                   });
                   /*
				   $('button#ohlin_slider', goodFrame.document).click(function(event) {
                       var child_goodFrame = top.frames['am_frmContent'];
                       if(child_goodFrame){
                           event.preventDefault();
                           $("#am_ohlinPlayerSoundSlider",child_goodFrame.document).toggle();
                       }
					   return false;
				   });
                   */
                }

                if(am_goodFrame){
				   //hide slider on load
				   //$("#am_ohlinPlayerSoundSlider", am_goodFrame.document).hide();
                }

                if(goodFrame){
                    //set good bar for volume on load
                    changeVolume(this.getVolume());
                    if (config.mute == 0) {
                        changeVolume(this.getVolume());
                        $('button#ohlin_slider',goodFrame.document).addClass('selected');
                    }
				   // the slider
				  /* $("div#slider-vertical", goodFrame.document).slider({
				       orientation: "vertical",
				       range: "min",
				       step: 0.1,
				       min: 0,
				       max: 1,
				       value: this.getVolume(),
				       slide: function(event, ui) {
				           //$this.setVolume(ui.value);
					//   		config.volume = ui.value;
					//   		$this.getEngine().jwSetVolume(ui.value);
				       }
				   });*/
				   
				   //close contextual
				   $('#am_ohlinPlayerContext-close', goodFrame.document).bind('click',function(event){
					   event.preventDefault();
					   $this.toggleContextual();
					   return false;
				   });
				
				   // contextual : bind the click of the expand window button.
				   $("#player-ctx-moreInfo", goodFrame.document).click(function(event) {
					   event.preventDefault();
					   if(!$this.hasPlaylist()){
						   $this.displayMsg('Pas de musique' );
						   return false;
					   }
					   $this.toggleContextual();
					   $this.refreshContextualInfos();
					   
					   return false;
				   });
				   
				   $("#am_ohlinPlayerContext-refresh", goodFrame.document).click(function(event) {
					   event.preventDefault();
					   $this.refreshContextualInfos();
					   return false;
				   });

				   // fiche artiste bind the click of the expand window button.
				   $("#player-ctx-ficheArtiste", goodFrame.document).click(function(event) {
					   event.preventDefault();
					   if(!$this.hasPlaylist()){
						   $this.displayMsg('Pas de musique' );
						   return false;
					   }
					   var artistId = $this.getCurrentItemArtistId();
					   var url = '/artiste/'+ artistId;
                       var child_goodFrame = top.frames[$this.getFrameContent()];
                       if(child_goodFrame){
                            child_goodFrame.location.href = url;
                       }
					   return false;
				   });
				   
				   $("#ohlin_buy", goodFrame.document).click(function(event) {
					   event.preventDefault();
					   if(!$this.hasPlaylist()){
						   $this.displayMsg('Pas de musique' );
						   return false;
					   }
					   var trackId = $this.getCurrentItemTrackId();
					   var url = '/comparateur/product/type/2/id/'+trackId; //comparateur track
                       var child_goodFrame = top.frames[$this.getFrameContent()];
                       if(child_goodFrame){
                         child_goodFrame.location.href = url;
                       }
					   return false;
				   });
				   
				   $("#ohlin_AddToPlaylist", goodFrame.document).click(function(event) {
					   event.preventDefault();
					   if(!$this.hasPlaylist()){
						   $this.displayMsg('Pas de musique' );
						   return false;
					   }
					   var mediaId = $this.getCurrentItemMediaId();
					   var urlAjax = '/playlist/membre-add-media-to-my-playlist/media/'+mediaId;
                       var child_goodFrame = top.frames['am_frmContent'];
                       if(child_goodFrame){
                         child_goodFrame.dialogAjaxCall(urlAjax, 'Ajouter à ma playlist ');
                       }
			         return false;
				   });
				   
				   //display waiting msg
		           $this.displayMsg('J\'écoute ici toute la musique que j\'aime');
		           
				   //window resize
				   var resizeTimer = null;
                   $(goodFrame).bind('resize', function() {
                        if (resizeTimer) clearTimeout(resizeTimer);
                        resizeTimer = setTimeout(resizePlayer, 100);
                   });
                   resizePlayer();

                   //display on load
                   $("#am_ohlinPlayerContainer", goodFrame.document).show();
                 }
            }
            
    	}
	}
		
 
 })(jQuery);

