// JavaScript Document


  
HMM = {
	player:{},
	flvURL:"",
	flashvars:{},
    urlVars:{},
	params:{},
	attributes:{},
	playlist: [],
	allPlaylists:[],
	imageDuration:10000,
	playTimeout: null,
	playlistIndex:0,
	trackIndex: 0,
	trackCount: 0,
	height:'289',
	width:'480',
	autoStart:false,
	initAllPlaylists: true,
	domPlaylist:"",
	callAfterTrackChange:null,
	defaultPreview:"http://honens.com/Honens/media/Site-Images/playerUI/imgBlank.png",
	popupWindow:{},
    	featuredStatus : {
            ALL:'ALL',
            NOTFEATURED:'NOTFEATURED',
            FEATURED:'FEATURED'
    	},
	typeFilter:"all",
	
	initPlayer: function(params){
		var flvURL="";
		
		if(params){
			this.height = (params.height) || this.height;
			this.width = (params.width) || this.width;
			this.initAllPlaylists = (params.initAllPlaylists)? params.initAllPlaylists : this.initAllPlaylists;
			this.callAfterTrackChange = (params.callAfterTrackChange) ? params.callAfterTrackChange : this.callAfterTrackChange;
			this.autoStart = (params.autoStart) ? params.autoStart : this.autoStart;
			if(params.domPlaylist && params.domPlaylist != ""){
				this.domPlaylist= params.domPlaylist;
				$(this.domPlaylist + " a").click(function(event){ event.preventDefault();})	
			}
		}
		this.flashvars = {
            		'autostart':'false', 
            		'id':'playerID'
				//	'file':'http://honens.ecentricarts.com/Honens/media/Site-Images/playerUI/imgPlayerPlaceholder.gif',
				//	'image':'http://honens.ecentricarts.com/Honens/media/Site-Images/playerUI/imgPlayerPlaceholder.gif'
        };
     	this.params = {'allowfullscreen':'true','allowscriptaccess':'always','wmode':'opaque'};
	    this.attributes = {'id':'playerID','name':'playerID'};
		swfobject.embedSWF('/App_Themes/Honens/swf/player-test.swf', 'HMMPlayer', this.width, this.height, '9.0.124', false, this.flashvars, this.params, this.attributes);
		$("#playerContainer .playerSplashLoading").css("display","none");
	},
	init : function(){
		var that = this;
			//dummy test json object
	
		
        $(".buttonsFilter ul li#allFilter a").toggleClass("selected");	
		
		// add ui handlers
		this.addHandlers();
		
		//check if playlist id and track index has been passed via GET		
    	this.urlVars= getUrlVars();
		if(this.domPlaylist != ""){
			this.initDomPlaylist(this.domPlaylist);
		}
		else{
			
			this.getPlaylists();
		}
		

	},
	addHandlers: function(){
		var that = this;
		//ui handlers
		$("#headerMainNav #menuElem li a").click(function(){
			HMM.stopPlayer();												  
		});
		$(".buttonsFilter ul li a").click(function(){
			var type= ($(this).parent()[0].id).match(/^(Audio)|(Video)|(Image)|(all)/)[0]; 
			that.typeFilter = type;
			that.filterPlaylist(type);
            $(".buttonsFilter ul li a.selected").removeClass('selected');
            $(this).toggleClass('selected');
			return false;
		});
		$("#playlistSelectButton").click(function(){
			$("#playlistSelectButton").toggleClass("buttonHover");
            		return false;
		});
		$("#playlistCloseButton").click(function(){
			window.close();
            		return false;
		});
		$("#playlistSelectButton.buttonHover ul#drpDwnSelectPls li").click(function(){
			$("#playlistSelectButton").removeClass("buttonHover");
            		return false;
		});
		$("#playlistSelectButton").hover(null,function(){
			$("#playlistSelectButton").removeClass("buttonHover");
		});
		that.player.addModelListener('STATE','HMM.stateMonitor');
		$("#launchPlayerButton").click(function(){HMM.loadPopupPlayer({'pID': HMM.playlist.id, 'tIndex':HMM.trackIndex});} );		
		$("#playerSecContainer .buttonsPanel a.buttonHover #drpDwnSelectPls").mousedown(function(event){event.stopPropogation();});
	
	},

	getPlaylists: function(){
		var that = this;
        	var urlPlsID = (this.urlVars && this.urlVars.plsID)?  this.urlVars.plsID : null; 
        	$.ajax({
	        	        type: "POST",
						async:true,
	        	        url: "/HMM/Feed.aspx/GetAllPlayLists",
	        	        data: "{'featuredStatus':'" + this.featuredStatus.ALL + "'}",
	        	        contentType: "application/json; charset=utf-8",
	        	        dataType: "json",
	        	        success: function(data){		
		        	       	that.allPlaylists = jQuery.extend([], data.d);
		                        $("#drpDwnSelectPls").html("");
		                    	$.each(that.allPlaylists,function(plsID, plsObj){
					        	//add playlist to dropdown
						if(plsObj.hideFromEsther == false){
							$("#drpDwnSelectPls").append("<li>"+plsObj.title+"</li>");
						}
						else{
							$("#drpDwnSelectPls").append("<li style=\"display:none;\">"+plsObj.title+"</li>");
						}
				        });		        
				        var pls = $("#drpDwnSelectPls li").click(function(){
						that.stopPlayer();
						that.playlistIndex = pls.index(this);
						that.getPlaylist(that.allPlaylists[that.playlistIndex].id);
				        });
		                    	if(urlPlsID){
		                        	that.getPlaylist(urlPlsID);	
		                    	}
		                    	else{				
						$(that.allPlaylists).each(function(i, tmpPls){
							if (tmpPls.featured == true){
								that.playlistIndex = i;						
								return false;
							}
						});
		                        	that.getPlaylist(that.allPlaylists[that.playlistIndex].id);
										//that.getPlaylist();
		                    	}
                	},
			error: function(XMLHttpRequest, textStatus, errorThrown){
                    		//alert("FAIL: " + textStatus + " ERROR: " + errorThrown);
                	}                      
            	});      
	},
	getPlaylist: function(playlistID){
		var that = this;
		this.stopPlayer();
		$.ajax({
                	type: "POST",
					async:true,
                	url: "/HMM/Feed.aspx/GetPlayList",
                	data: "{\"playListID\":" +playlistID+ ",\"trackID\":" + 0 + "}",
                	contentType: "application/json; charset=utf-8",
                	dataType: "json",
                	success: function(data){
					
                     		that.loadPlaylist(data.d);
							
                	},     
                	error: function(XMLHttpRequest, textStatus, errorThrown){
                	    //alert("FAIL: " + textStatus + " ERROR: " + errorThrown);
                	}   
		});
		return false;
	},


	loadPlaylist: function(plsData){
		var that = this;
        var tracks = {};
		var typeCount = {"Video":0, "Image":0, "Audio":0};
        var trackID= null;
		//when the popup Loads only
	
		if(this.urlVars && this.urlVars.track){
			this.trackIndex =this.urlVars.track; 
			this.urlVars.track = null;
		}
		else{
			this.trackIndex = 0; 
		}
		if(this.urlVars && this.urlVars.trackID){
			trackID = this.urlVars.trackID;
			 this.urlVars.trackID = null;
		}
		this.playlist=jQuery.extend([], plsData);
		
		$(".playlist ul").html("");
		$("#playlistTitle").html(plsData.title);
		tracks = plsData.tracks; 
		this.trackCount=tracks.length;
		
		if(tracks.length > 0){
			var  buyLinkCount=0;
			// populate with playlist tracks
			$(" .playlist").html("<div class=\"scrollUpButton\"><a href=\"#\">scroll up</a></div><div class=\"innerContainer\"><ul></ul></div><div class=\"scrollDownButton\"><a href=\"#\">scroll down</a></div>");
			for(var i = 0; i < tracks.length; i++){
				
					
					var trackItem= "<li class=\""+tracks[i].type+"\" ><span class=\"iconPls\"></span>" +
									"<p>"+tracks[i].trackName+"</p></a>";
									if(tracks[i].iTunesLink){
										trackItem+="<a target=\"_blank\" href=\""+tracks[i].iTunesLink+"\" class=\"buttonBuy\"> Buy </a>";
										buyLinkCount++;
									}
									
					$(" .playlist ul").append(trackItem);
					
					
					if(trackID && trackID == tracks[i].id) {
						this.trackIndex = i;
					}
			
				typeCount[tracks[i].type] +=1;
			}
			if(buyLinkCount > 0){
				$("#playerSecContainer .notes div.content").html("<p>By clicking '<b>BUY</b>' you  will be directed to the <a href=\"http://itunes.apple.com/\">iTunes store</a> to buy this recording.</p><img src=\"/Honens/media/Site-Images/playerUI/itunesIcon.png\" alt=\"ITunes\" />");
			}
			else{
				$("#playerSecContainer .notes div.content").html("");
			}
			VSCROLL.init({entryHeight: $("#playerSecContainer .playlist li").outerHeight(true),
					 btnUpSelector:"#playerSecContainer .playlist .scrollUpButton a" ,
					 btnDownSelector:"#playerSecContainer .playlist .scrollDownButton a",
					 outerContainer:"#playerSecContainer .playlist .innerContainer",
					 container:"#playerSecContainer .playlist ul",
					 listItem:"#playerSecContainer .playlist li"});
		}
		else{
			$(" .playlist").html("There are no tracks in this playlists.");
		}
		var btnFilterCtr=0;
		$.each(typeCount, function(type,count){
			if(count > 0){
				btnFilterCtr++;
			}
		});
		
	
		$.each(typeCount, function(type,count){
			if(count >0 & btnFilterCtr >1){
					
				$("#"+type+"Filter").show();				
			}
			else{
				$("#"+type+"Filter").hide();	
			}
		});	
		if( btnFilterCtr >1){
			$("#allFilter, .buttonsFilter span.caption").show();
		}
		else{
			$("#allFilter, .buttonsFilter span.caption").hide();
		}
		// ui listeners
		// track change
		$('.playlist ul li a.buttonBuy').click(function(event){
			event.stopPropagation();
		});
		var items = $(".playlist ul li").click(function(){
			that.trackIndex = items.index(this);
			that.loadMedia(that.trackIndex);
			
		});
		if(tracks.length == 0){
			HMM.stopPlayer();
		}
		else{
			that.loadMedia(this.trackIndex);
			//HMM.stopPlayer();
		}
	},
	initDomPlaylist:function(selector){
		this.playlist = {};
		this.playlist.tracks = [];
		var that = this;
		var i =0;
		var domItems =  $(selector).each(function(){											   
			that.playlist.tracks[i] ={fileURL: $("a.eventMediaTrigger", this).attr("href"),type:$(this).attr("class") };
			if($(".phPreviewImage", this).html() != ""){
				that.playlist.tracks[i].previewImageHTML  = $(".phPreviewImage", this).html() ;
			}
			i++;
		});
		this.trackCount = i;
		var items = $(selector).click(function(event){
			//if($(event.target).is("a")){
				//event.preventDefault();
			//}
			that.trackIndex = items.index(this);
			that.loadMedia(that.trackIndex);
			return false;
		});
		$("#eventDetailSecContainer .playlist .iconLoading").hide();
		$("#eventDetailSecContainer .playlist .scrollable").css("visibility","visible");
		if(this.autoStart){
			this.loadMedia(this.trackIndex);
		}
	},

	loadMedia: function(track){
		//var reBrTrail = new RegExp("(\<br\s*?\/?\>)*$","i");
		var trackObj= this.playlist.tracks[track];
		
		$("ul.trackInfo").html="";
		if(trackObj){
			var type =trackObj.type;
			clearTimeout(this.playTimeout);
			clearTimeout(this.imageDuration);
			this.trackIndex=track;
            switch(type){
		    	case "Audio":
		    			type = "sound";
						this.stopPlayer();
						$("#playerWrapper").removeClass('image');
						if(trackObj.previewImageHTML){
							
							var url = "http://honens.com"+trackObj.previewImageHTML.match(/src *= *["\']?~?([^"\']*)/)[1];
			   				this.player.sendEvent('LOAD', {file:trackObj.fileURL,  provider:type, image: url});
			   	 		}
						else{
							this.player.sendEvent('LOAD', {file:trackObj.fileURL,  provider:type, image:this.defaultPreview});
						}
						//setTimeout("HMM.player.sendEvent(\"play\")", 1000);
						
		    	break;
		    	case "Image":
			    		type ="image";
						this.stopPlayer();
						this.player.sendEvent('LOAD', {file:trackObj.fileURL, provider:type, image:this.defaultPreview});
						$("#playerWrapper").addClass('image');
				 
			    		this.playTimeout = setTimeout("HMM.player.sendEvent(\"play\")", 2000);
				
						this.imageDuration=setTimeout("HMM.moveNext()", 10000);
				break;
				case "Video":
					this.stopPlayer();
					$("#playerWrapper").removeClass('image');
			   		this.player.sendEvent('LOAD', {file:trackObj.fileURL,  provider:type, image:this.defaultPreview});
			   	 	//setTimeout("HMM.player.sendEvent(\"play\")", 1000);
			    break;
			}	
		
		
		    	//update ui
			// if track info exists populate
            if($("ul.trackInfo").length  > 0){       
				if(trackObj.type=="Audio"){ 
					
					
					var composer = ((trackObj.composerName).length > 130) ? (trackObj.composerName).substring(0,130)+"..." : trackObj.composerName;
					var artist = ((trackObj.artistName).length >130) ?(trackObj.artistName).substring(0,130)+"..." :trackObj.artistName;
					var workname= ((trackObj.workName).length >130) ?(trackObj.workName).substring(0,130)+"..." : trackObj.workName;
					$("ul.trackInfo").html("<li class=\"firstItem \"><h4>Artist</h4><p class=\"artistName\">"+artist+"</p></li><li><h4>Composer</h4><p  class=\"composerName\">"+composer+"</p></li><li><h4>Work</h4><p class=\"trackName\">"+workname+"</p></li>");
				}
				else{
					$("ul.trackInfo").html("<li class=\"firstItem \"><p class=\"trackDescription\">"+trackObj.trackName+"</p></li>");
				}
			}
			// here state for track
			$(".playlist ul li.selected").toggleClass("selected");
			$($(".playlist ul li")[this.trackIndex]).toggleClass("selected");
			if(this.callAfterTrackChange){
					this.callAfterTrackChange();
			}
		}	
    	},
    	filterPlaylist: function(type){
		if(type == "all"){
			$(".playlist ul li").show();
		}
		else{
			$(".playlist ul li:not(."+type+")").hide();
			$(".playlist ul li."+type).show();
		}
	},
	stateMonitor: function(obj){
		switch(obj.newstate){
			case "IDLE":
                
			break;
			case "PLAYING":
            	if(obj.oldstate =="PAUSED"){
					if(this.playlist.tracks[this.trackIndex].type == "Image"){
						this.imageDuration=setTimeout("HMM.moveNext()", 10000);
					}
				}
			break;
			case "COMPLETED":
				HMM.moveNext();
			break;
			case "PAUSED":
				if(this.playlist.tracks[this.trackIndex].type == "Image"){
					clearTimeout(this.imageDuration);
				}
			break;
			case "BUFFERING":
			break;
		}
		
	},
	moveNext: function(){
		if((HMM.trackIndex +1) < HMM.trackCount){  
            var list = $(".playlist ul li");
			var nextVisible = $(list[this.trackIndex]).next(":visible");
            if(nextVisible){
                HMM.loadMedia((list.index(nextVisible)));
		    }
        }
	},
	movePrev: function(){
	},
	
	loadPopupPlayer: function(params){
		var pID=null;
		var tID=null;
		var tIndex =null;
  		var popupURL="";
			
		HMM.stopPlayer();
	
		if(HMM.popupWindow !={}){
			if(params){
				pID = (params.pID)? "plsID="+params.pID : "plsID="+ HMM.playlist.id;
					//alert(pID);
				tID= (params.tID)? "&trackID="+params.tID: null;
				
				tIndex= (params.tIndex != undefined && params.tIndex)? "&track="+params.tIndex :  "&track="+ HMM.trackIndex;
				popupURL= "/HMM/popup.html?"+pID+(tID || tIndex );
				HMM.popupWindow = window.open(popupURL,"Honens_Media_Player","location=1,status=1,scrollbars=1,width=1055,height=600");
			}
			
		}
	},	
    	stopPlayer: function(){
	    	clearTimeout(this.imageDuration);
			clearTimeout(this.playTimeout);
			if(HMM.player.sendEvent){
				HMM.player.sendEvent("stop");
				
			}
    	}	
	
	
} //HMM
/*jwplayer callback upon creation and initialization of the flash player*/
function playerReady(obj) {
    	HMM.player = document.getElementById('playerID');
		//alert(HMM.player);
        setTimeout("HMM.init()",3000); 
 }
function getUrlVars()
{
	var vars = [], hash;
	var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
    	if(hashes.length > 1){    
    		for(var i = 0; i < hashes.length; i++)
    		{
    			hash = hashes[i].split('=');
    			vars.push(hash[0]);
    			vars[hash[0]] = hash[1];
    		}
    	}
   	else{
    		vars= null; 
    	}
    	return vars;
 
}
function eventMediaNextTrack(){
	var offset = ($('.playlist ul li.selected').offset().left +3) - ($("#eventDetailSecContainer .playlist").innerWidth()-24);
	if( offset > ($("#eventDetailSecContainer .playlist").innerWidth()-24)  ){
		//console.log( offset +" "+$("#eventDetailSecContainer .playlist").innerWidth());
		$("div.scrollable").scrollable().next();
	}
	$("#eventDetailSecContainer .trackName div").html($('.playlist ul li.selected .phDescription').html()).css("visibility","visible");
}

function scrollToPlayer(){
	$('html,body').animate({scrollTop: $('#contentMainTitle').offset().top},1000);
}


function attachSliderEvents(){
	$('div.featuredPlaylistsSlider').each(function () {      
		var ul = $('ul.items', this);
		ul.css('width', $('li.listItem', ul).size() * $('li.listItem', ul).outerWidth(true));
		var productWidth = $(ul).innerWidth() - $(this).outerWidth();
		if(productWidth < 0 ){
			$('.track',this).css('display','none');
		}
		else{
			$('.slider', this).slider({ 
			//		animate: true,
			min: 0, 
			max: productWidth, 
			orientation:'horizontal',
			change: function (event, ui) {
				ul.css({'left' : ui.value * -1 });
			},
			slide: function (event, ui) {
				ul.css({'left': ui.value * -1});
			}
			});
		}
	});
}
	
/*function  handleSliderChange(e, ui)
{
  var maxScroll = $("#content-scroll").attr("scrollWidth") -
                  $("#content-scroll").width();
  $("#content-scroll").animate({scrollLeft: ui.value *
     (maxScroll / 100) }, 1000);
}

function handleSliderSlide(e, ui)
{
  var maxScroll = $("#content-scroll").attr("scrollWidth") -
                  $("#content-scroll").width();
  $("#content-scroll").attr({scrollLeft: ui.value * (maxScroll / 100) });
}*/

