var assets;						// Current asset list 
var alllineups;					// All lineups for current channel
var lineupid;					// Selected lineup
var channelid = 1254;			// 308 Hardcoded channel id
var player = null;
var items_per_page = 10;		// Number of items displayed via pagination
var num_display_entries = 8		// Number of pagination links shown
var num_edge_entries = 2		// Number of start and end points
var currentlyloading = false;
var issearchresult = false;
var workspaces = [];	

$(document).ready(function(){

	getWorkspaces();	
	
	// Load All Workspaces
    function getWorkspaces() {
    	$.ajax({
    		url: "MediaSiloAPI.cfc?wsdl",
    		async: true,
    		data: {method: 'proxycall', parameters: 'Workspace.GetAll'},
    		dataType: "json",
    		error: function(request,status,err) {
    			if (data == 'fail'){
    			alert("Session timed out");	
    				} else {
    			alert("An error occurred: " + status + err);
    			}
    		},
    		success: function(data){
    			workspaces = data;
			    displayWorkspaces(workspaces);
	    	
	    		// Load the first workspace
				getAssets(data[0].ID);
				$("#main_content_slider li a:first").addClass('activeSlide');
	    	}
    	})
	}
	
	// Display workspaces
	function displayWorkspaces(workspaces){
		var listItems = '';
	    	for( i=0; i < workspaces.length; i++){
	    		listItems += "<li><a href='#' rel='"+i+"'>"+workspaces[i].NAME+"</a></li>";
	    	}
	    	
	 	$('#main_content_slider').html(listItems);	
	 }
	
	
	// Load Assets
	function getAssets(workspaceid) {
    	$("#loading").show();
    	$.ajax({
    		url: "MediaSiloAPI.cfc?wsdl",
    		async: true,
    		data: {method: 'proxycall', parameters: 'Workspace.GetAssets&workspaceid='+workspaceid+'&ms=' + new Date().getTime()},
    		dataType: "json",
    		timeout: 100000,
    		error: function(request,status,err) {
    			alert("An error occurred: " + status + err);
    		},
    		success: function(data){
    			if (data == 'fail'){
    				alert("The current session has timed out. Please log in again.");
    				window.location = "login.html";
    				return;	
    			} 
    		
    			assets = data;
    			$("#loading").hide();
    			initPagination(assets);
    		}
    	})
	}
	
	
	// Send QuickLink
    function sendQuickLink() {
    	var subject = $("#subject").val();
    	var recipients = $("#recipients").val();
    	var message = $("#message").val();
    	
    	$.ajax({
    		url: "MediaSiloAPI.cfc?wsdl",
    		async: true,
    		data: {method: 'proxycall', parameters: 'Notification.SendEmail&subject='+subject+'&message='+message+'&userids=&emails='+recipients},
    		dataType: "json",
    		error: function(request,status,err) {
    			if (data == 'fail'){
    			alert("Session timed out");	
    				} else {
    			alert("An error occurred: " + status + err);
    			}
    		},
    		success: function(data){
				$("#quicklink").append("Email Sent Successfully");
	    	}
    	})

	}

	
	// Pagination Controls
	function pageselectCallback(dataset, page_index, jq){
        var max_elem = Math.min((page_index+1) * items_per_page, dataset.length);
        var newcontent = '';
        var items = ''; 
	
		
        // Iterate through a selection of the content and build an HTML string
       $('#assets').empty(); 		
       
        for(var i=page_index*items_per_page;i<max_elem;i++)
        {
            /*
            var tags = dataset[i].TAGS;
            var tagarray = new Array();
            var tagdisplay="<br>";
			tagarray = tags.split(',');
			for (k=0; k<tagarray.length; k++){
			  if(tagarray[k].length){var tagdisplay = tagdisplay+"<div class='tag'>"+tagarray[k]+"</div>";}
			}
			*/
			var tagdisplay="<br>";
			var tagarray = new Array();
            
			
			/*
			// Show the rating
			if (dataset[i].RATING) {
				var ratingdisp = "<img class='rating' src='images/"+dataset[i].RATING+"_stars.png'><br>"; 
            } else {
            	var ratingdisp='';
			}
			*/
			var ratingdisp='';
			
			// Limit the length of the title
			if(dataset[i].TITLE.length>25){
				var filetitle = dataset[i].TITLE.substr(0, 25) + "...";
			} else {
				var filetitle = dataset[i].TITLE;
			}
            
            items += "<div class='content-item' id='"+i+"'><a href='#'><img class='item-holder-thumbnail' src='"+assets[i].THUMBNAIL+"'></a><h3>"+assets[i].TITLE+"</h3><p>"+assets[i].DESCRIPTION+" ("+formatSecToTimecode(assets[i].DURATION)+")</p><a href='#' class='more'></a></div>";
          	//items += "<div class='asset' id='"+i+"'><div class='thumbnail'><img src='"+dataset[i].THUMBNAIL_SMALL+"'></div><div class='title'><strong>"+filetitle+"</strong><br>"+ratingdisp+"Duration: "+formatSecToTimecode(dataset[i].DURATION)+""+tagdisplay+"</div><div class='description'>"+dataset[i].DESCRIPTION+"</div></div>";
	   	}

		$('.item-holder').html(items);
				    
	    if (dataset.length == 0) {
	    	$('.item-holder').append("No assets found. Try again.");
			
	    }
        
        return false;
    }

	
	function initPagination(displayset) {
        // Create pagination element
        $("#Pagination").pagination(displayset, displayset.length, {
            num_edge_entries:  num_edge_entries,
            num_display_entries: num_display_entries,
            callback: pageselectCallback,
            items_per_page: items_per_page 
        });
     }	


	// ========== 
	// ! Search   
	// ========== 
	
	//Listen for return key in search box
	$('#searchbox').keyup(function(e) {
		e.preventDefault();
		if(e.keyCode == 13) {
			search($("#searchbox").val().toLowerCase());
		};
	})

	
	// Perform search
	function search(keyword){
		var foundalready = false;
		var foundassetObj = new Object;
		searchresultsarray = new Array();
			
			$(".item-holder, #Pagination").empty();
			
			// Remove workspace selected
			$("#content_navigation ul li").removeClass('selected');
			
			$("#assets, #Pagination").empty();
			$("#loading").show();
			workspaceselected = false;
			
			$.ajax({
    		url: "MediaSiloAPI.cfc?wsdl",
    		async: true,
    		data: {method: 'proxycall', parameters: 'Search&searchstring='+keyword+'&ms=' + new Date().getTime()},
    		dataType: "json",
    		error: function(request,status,err) {
    			alert("An error occurred: " + status + err);
    		},
    		success: function(data){
    			if (data == 'fail'){
    				alert("The current session has timed out. Please log in again.");
    				window.location = "login.html";
    				return;	
    			} 
    			assets = data;
    			issearchresult = false;
    			$("#loading").hide();
    			initPagination(assets);
    			return;
        	}
    	})
		
	}	

	
	// ============== 
	// ! UI Actions   
	// ============== 

	// QuickLink
	$("#sendquicklink").live("click", function() {
		sendQuickLink();
	})

	
	// Load Workspace
	$("#main_content_slider li a").live("click", function(){
		$("#main_content_slider li a").removeClass('activeSlide');
		$(this).addClass('activeSlide');
		$(".item-holder, #Pagination").empty();
		currentworkspace = workspaces[$(this).attr('rel')].ID; 
		workspaceselected = true;
		getAssets(currentworkspace);
		return false;
	})
	
	
	// Click on video clip
	 $(".content-item a, .item-holder-thumbnail a").live("click", function(event){
		if (currentlyloading==false) {	
			event.preventDefault();
			selectedasset = $(this).parent().attr('id');
			
			if (issearchresult) {
				assetid = searchresultsarray[selectedasset].ID;
			} else {
				assetid = assets[selectedasset].ID;
			}
			currentlyloading = true;
			//console.log("Get Asset detail for: " + assetid);
			currentlyloading = false;
			getAssetDetail(assetid);
		} else {
			alert("Patience, young jedi!");
		}
	})
	
	// Load Asset Detail
	function getAssetDetail(assetid) {
    	$.ajax({
    		url: "MediaSiloAPI.cfc?wsdl",
    		async: true,
    		data: {method: 'proxycall', parameters: 'Asset.GetDetail&assetid='+assetid+'&ms=' + new Date().getTime()},
    		dataType: "json",
    		timeout: 100000,
    		error: function(request,status,err) {
    			alert("An error occurred: " + status + err);
    		},
    		success: function(data){
    			if (data == 'fail'){
    				alert("The current session has timed out. Please log in again.");
    				window.location = "login.html";
    				return;	
    			} 
    		
    			assetdetail = data;
    			displayAssetDetail(assetdetail, assetid);
    		}
    	})
	}

	// Diplay asset detail
	function displayAssetDetail(assetdetail, assetid){
		$("#clipdetail").dialog({
			title: '',
			modal: true,
			autoOpen: false,
			height: 450,
			width: 980,
			beforeclose: function(event, ui) {
				$("#clipdetail").empty();	
			},
			beforeopen: function(event, ui) {
				//console.log("Clip title: ");
			},

			resizable: false
			})
		
		$("#clipdetail").dialog('open');
		
		$("#clipdetail").load("clipdetail.cfm?assetid="+assetid, function(){
			currentlyloading = false;
			var filetoplay = $("#player").html();
			$("#player").html();
			$f("player", "flash/flowplayer.commercial-3.1.5.swf", { 
			    key: '#@eb8df44ee51ce0e0ce7',
			    clip: filetoplay
			});
			
			$f(0).load();
			$("#detail").tabs();
			$('#clipdetail').data('title.dialog', assetdetail[0].TITLE); 
			
		})
	};
	
	


	/*
	// Click on video clip
	 $(".content-item a, .item-holder-thumbnail a").live("click", function(event){
		event.preventDefault();
		selectedasset = $(this).parent().attr('id');
		var content = $("<div id='viewvideo' style='width: 940px;><div id='playerstage'><div style='float: right; width: 200px;' id='description'>fdkfmdmfdks</div><div id='player' style='float: left;width:720px; height:429px;'></div><div style='clear: both'></div></div>");
		$.facebox(content);
		$("#description").html(assets[selectedasset].DESCRIPTION);
		$("#description").append("<a href='"+assets[selectedasset].SOURCE+"'>Download</a>")
		$f("player", "flash/flowplayer-3.1.5.swf", assets[selectedasset].PROXYSOURCE); 
	});
	*/
	
	
	
	
	
	// ========== 
	// ! Search   
	// ========== 
	
	//Listen for return key in search box
	 $('#searchbox').keyup(function(e) {
		e.preventDefault();
		if(e.keyCode == 13) {
			search($("#searchbox").val().toLowerCase());
		};
	})
	
	
	
	function formatSecToTimecode(sec) {
	   	var sec = sec/1000;
	    var hours = Math.floor(sec / 3600);
	    var minutes = Math.floor((sec-(hours*3600)) / 60);
	    var seconds = Math.round(sec - ((hours*3600)+(minutes*60)));
	    var returnString = "";
	    
	    if(hours.toString().length == 1) {
	        hours = "0"+hours;
	    }
	    if(minutes.toString().length == 1) {
	        minutes = "0"+minutes;
	    }
	    if(seconds.toString().length == 1) {
	        seconds = "0"+seconds;
	    }
		
		if(sec < 60) {
			returnString = "00:"+seconds;
		} else if(sec < 3600) {
			returnString = minutes+":"+seconds;
		} else {
			returnString = hours+":"+minutes+":"+seconds;
		}
	    return returnString;
	}

		
});





