﻿var arrPlayList = new Array();
var arrVideos = new Array();
var videosDisplayed = 0;
var nowPlaying = 0;

var arrAudio = new Array();

var arrImages = new Array();
var imagesDisplayed = 0;
var arrAlbum = new Array();
var arrDisplay = new Array();
var previewDisplay = "";
var currImage = 0;
var isSlidePlaying = false;

$(document).ready(function() {
	if (lang == "es")
		playInitialVideo(5310);
	else
		playInitialVideo(5265);
	searchVideo();
	searchImage();
	searchAudio();

	$('#videoKeywords').keyup(function(e) { if(e.keyCode == 13) { searchVideo(); } });
	$('#imageKeywords').keyup(function(e) { if(e.keyCode == 13) { searchImage(); } });
	
	$(".imageItem").each( function() { 
								   var objImage = new Object();
								   objImage.id = $(this).attr("id").replace('i',''); 
								   arrImages[arrImages.length] = objImage; });
	
	$("#imagesList").scroll(function(){
		if ($("#imagesList").isNearEnd()) {
			populateImages();
		}
	}); 
	$("#videosList").scroll(function(){
		if ($("#videosList").isNearEnd()) {
			populateVideos();
		}
	});
});

function playInitialVideo(videoID) {
	$.ajax({ url: "/am/2009/videos/videoJSON.cfm?isAjaxRequest&id="+videoID+"&language="+language,
			 cache: false,
			 dataType: "json",
			 success: function(data) { $("#itemTitle").html(data.results[0].title);
									   $("#itemDate").html(data.results[0].date);
									   $("#itemDesc").html(data.results[0].summary);
									   $("#itemSize").html("("+data.results[0].length+")");
									   $("#player").html(loading);
									   var playerURL = "/global/customtags/video/video.cfm?language="+language+"&url="+data.results[0].url+"&length="+data.results[0].lengthSeconds+"&image="+data.results[0].image+"&format=FLV&Autoplay=true&width=362&height=297&size=medium";
									   $("#player").load(playerURL.replace(" ","%20"));
									   /*$("#player").load("videos/video.cfm?isAjaxRequest");*/
									   for (i=0;i<arrPlayList.length;i++)
											$("#video" + arrPlayList[i].id).removeClass("playing");
									   $("#video" + videoID).addClass("playing");
									   nowPlaying = videoID;
									  },
 		     error: function() { alert('There was an error processing your request. Please try again'); }
	});
	
}

function playVideo(mediaID) {
	$.ajax({ url: "/am/2009/videos/videoJSON.cfm?isAjaxRequest&mediaID="+mediaID+"&language="+language,
			 cache: false,
			 dataType: "json",
			 success: function(data) { $("#itemTitle").html(data.results[0].title);
									   $("#itemDate").html(data.results[0].date);
									   $("#itemDesc").html(data.results[0].summary);
									   $("#itemSize").html("("+data.results[0].length+")");
									   $("#player").html("cleaning");
									   var playerURL = "/global/customtags/video/video.cfm?language="+language+"&url="+data.results[0].url+"&length="+data.results[0].lengthSeconds+"&image="+data.results[0].image+"&format=FLV&Autoplay=true&width=362&height=297&size=medium";
									   $("#player").load(playerURL.replace(" ","%20"));
									   /*$("#player").load("videos/video.cfm?isAjaxRequest");*/
									   for (i=0;i<arrPlayList.length;i++)
											$("#video" + arrPlayList[i].id).removeClass("playing");
									   $("#video" + mediaID).addClass("playing");
									   nowPlaying = mediaID;
									  },
 		     error: function() { alert('There was an error processing your request. Please try again'); }
	});
	
}

function playAudio(audioID) {
	$("#player").load("/am/2009/videos/audio.cfm?path="+arrAudio[audioID].path+"&isAjaxRequest");	
	$("#itemTitle").html(arrAudio[audioID].title);
	$("#itemDate").html("");
	$("#itemDesc").html(arrAudio[audioID].desc);
	$("#itemSize").html("");
}

function searchVideo() {
	var keywords = $("#videoKeywords").val();
	var category = $("#videoCategory").val();
	showLoading();
	videosDisplayed = 0;
	/*$("#videosResults").html("<img align=\"absmiddle\" src=\"/global/javascript/ajax/loader.gif\" />");*/
	$("#videosList").html("");
	$.ajax({ url: "/am/2009/videos/videoJSON.cfm?isAjaxRequest&keywords="+keywords+"&category="+category+"&language="+language,
			 cache: false,
			 dataType: "json",
			 success: function(data) { arrVideos = data.results; populateVideos(); hideLoading(); },
	 		 error: function() { alert('There was an error processing your request. Please try again'); }
	});
}

function searchAudio() {
	showLoading();
	/*$("#videosResults").html("<img align=\"absmiddle\" src=\"/global/javascript/ajax/loader.gif\" />");*/
	$("#audioList").html("");
	$.ajax({ url: "/am/2009/videos/audioJSON.cfm?isAjaxRequest&language="+language,
			 cache: false,
			 dataType: "json",
			 success: function(data) { arrAudio = data.results; populateAudio(); hideLoading(); },
	 		 error: function() { alert('There was an error processing your request. Please try again'); }
	});
}

function populateVideos() {
	var content = ""; 
	var counter = videosDisplayed;
	if (arrVideos.length > 0)	{
		for (i=counter;(i<arrVideos.length && i<counter+12);i++) {
			content += "<div id=\"videoItem"+arrVideos[i].id+"\" class=\"libItemContainer\">";
				content += "<img id=\"addButtonV"+arrVideos[i].id+"\" class=\"addToPlaylist\" src=\"";
				if (playlistIndex('video',arrVideos[i].id) == -1)
					content += "/am/2009/images/addToPlaylist.gif";
				else
					content += "/am/2009/images/addedToPlaylist.gif";
				content += "\" title=\"Add to playlist\" onclick=\"addToPlaylist('video','"+arrVideos[i].id+"')\" />";
				content += "<div class=\"videoItem libItem\" onclick=\"playVideo('"+arrVideos[i].id+"');\">";
					content += "<img class=\"playIcon\" src=\"images/play.gif\" /><img class=\"videoImage\" src=\""+arrVideos[i].image+"\" />";
					content += "<span class=\"libItemTitle\">"+arrVideos[i].title+". <span class=\"videoLength\">("+arrVideos[i].length+")</span></span>";
				content += "</div>";
			content += "</div>";
			videosDisplayed++;
		}
		$("#videosList").append(content);
		$(".libItemContainer").hover( function() { $(this).css("background-color", "#eeeeee"); }, 
									  function() { $(this).css("background-color", "transparent"); } );
	
		$(".videoItem").hover(function() {$(".playIcon", this).css("display", "block");	}, 
							  function() {$(".playIcon", this).css("display", "none");});
	} else {
		$("#videosList").html("<div class='center addMarginTop'>"+labelNoVideosFound+"</div>");
	}
	$("#videosResults").html(labelVideos+" ("+arrVideos.length+")");
}

function populateAudio() {
	var content = ""; 
	if (arrAudio.length > 0)	{
		for (i=0;i<arrAudio.length;i++) {
			content += "<div id=\"videoItem"+i+"\" class=\"libItemContainer\">";
				content += "<a href=\""+arrAudio[i].path+"\"><img id=\"addButtonV"+i+"\" class=\"audioDownload\" src=\"/am/2009/images/audioDownload.gif\" title=\"Download Audio\" /></a>";
				content += "<div class=\"videoItem libItem\" onclick=\"playAudio('"+i+"');\">";
					content += "<img class=\"playIcon\" src=\"images/play.gif\" /><img class=\"videoImage\" src=\"/am/2009/images/audioIcon.jpg\" />";
					content += "<span class=\"libItemTitle\">"+arrAudio[i].title+".</span>";
				content += "</div>";
			content += "</div>"
		}
		$("#audioList").html(content);
		$(".libItemContainer").hover( function() { $(this).css("background-color", "#eeeeee"); }, 
									  function() { $(this).css("background-color", "transparent"); } );
	
		/*$(".videoItem").hover(function() {$(".playIcon", this).css("display", "block");	}, 
							  function() {$(".playIcon", this).css("display", "none");});*/
	} else {
		$("#audioList").html("<div class='center addMarginTop'>"+labelNoAudioFound+"</div>");
	}
	$("#audioResults").html(labelAudio+" ("+arrAudio.length+")");
}


function playNext() {
	if (arrPlayList.length > 0) {
		var index = playlistIndex('video', nowPlaying); 
		var nextIndex = 0;
		if ((index > -1) && ((index+1) < arrPlayList.length))
			nextIndex = index+1;
		playVideo(arrPlayList[nextIndex].id);
	}
}

function playPrev() {
	if (arrPlayList.length > 0) {
		var index = playlistIndex('video', nowPlaying); 
		var prevIndex = arrPlayList.length-1;
		if ((index > -1) && ((index-1) > -1))
			prevIndex = index-1;
		playVideo(arrPlayList[prevIndex].id);
	}
}

function addToPlaylist(type, id) {
	var index = videosIndex(id);
	var title = arrVideos[index].title;
	var size = arrVideos[index].length;
	if (playlistIndex(type, id) > -1)
		return false;
	var playlistItem = new Object();
	var itemTitle = title;
	if (title.length > 35)
		itemTitle = itemTitle.substring(0,35) + "...";
	playlistItem.type = type;
	playlistItem.id = id;
	playlistItem.title = itemTitle;
	playlistItem.size = size;
	arrPlayList[arrPlayList.length] = playlistItem;
	populatePlayList();
	$("#addButtonV"+id).attr("src", "images/addedToPlaylist.gif");
}

function removeFromPlaylist(type, id) {
	var index = playlistIndex(type, id); 
	if (index > -1) {
		arrPlayList.splice(index,1);
	}
	populatePlayList();
	$("#addButtonV"+id).attr("src", "images/addToPlaylist.gif");
}

function clearPlayList() {
	arrPlayList = new Array();
	$("#videosPlayList").html("<div class=\"center addPadding\">"+labeladdToPlaylistMSG+"</div>");
	$(".addToPlaylist").attr("src", "images/addToPlaylist.gif");
	populateTabTitle();
}

function playlistIndex(type, id) {
	for (var i=0;i<arrPlayList.length;i++) { 
		if ((arrPlayList[i].type == type) && (arrPlayList[i].id == id)) {
			return i;
		}
	}
	return -1;
}

function videosIndex(id) {
	for (var i=0;i<arrVideos.length;i++) { 
		if (arrVideos[i].id == id) {
			return i;
		}
	}
	return -1;
}

function getVideoID(medID) {
	for (var i=0;i<arrVideos.length;i++) { 
		if (arrVideos[i].id == medID) {
			return arrVideos[i].artId;
		}
	}
	return -1;
}

function populatePlayList() {
	var content = "<ul>";
	for (i=0;i<arrPlayList.length;i++) {
		content += "<li><a href=\"javascript:playVideo('"+arrPlayList[i].id+"')\" class=\"videoPlaylist";
		if (nowPlaying == arrPlayList[i].id)
			content += " playing";
		content += "\" id=\"video"+arrPlayList[i].id+"\"><span class=\"text\">"+arrPlayList[i].title+"</span> <span class=\"info\">"+arrPlayList[i].size+"&nbsp;</span></a><span class=\"delete\" onclick=\"javascript:removeFromPlaylist(\'video\',\'"+arrPlayList[i].id+"\');\">×</span></li>";
	}
	content += "<ul>";
	$("#Videostab-1 a").click();
	$("#videosPlayList").html(content);
	populateTabTitle();
}

function populateTabTitle() {
	$("#playTotalVideos").html(arrPlayList.length.toString());
}

/* ================================= Images ================================= */


function previewImage(imageID, collection) { 
	if (collection == "album") {
		arrDisplay = arrAlbum;
	} else {
		arrDisplay = arrImages;
	}

	previewDisplay = collection;
	currImage = parseInt(imageID);
	$("#imagePreview #image").html("<div style='height:319px;'>&nbsp;</div>");
	$("#imageLoading").show();
	if ( $("#imagePreview").modal( { onClose: function (dialog) { $.modal.close(); stopSlideShow(); } } ) ) {
		$("#simplemodal-container").hide();
		$("#simplemodal-container").fadeIn();
	}
	
	$.ajax({ url: "/am/2009/videos/photoJSON.cfm?isAjaxRequest&id="+imageID+"&language="+language,
			 cache: false,
			 dataType: "json",
			 success: function(data) {  var imgData = new Image();
										 imgWidth = (imgData.width>480?imgData.width:480);
										 imgData.src = data.results[0].url;
									    $(imgData).load(function () { $.modal.setPosition(); 

											//imgData.src = data.results[0].url;
											$("#imagePreview").css("width",imgWidth);
											$("#imagePreview #image").html("<img src=\""+data.results[0].url+"\" />");
										} ).attr('src', data.results[0].url);
										
										$("#imagePreview #desc").html(data.results[0].desc + " <span class=\"gray\">("+data.results[0].date+")</span>");
										if (imageAlbumIndex(imageID) > -1) {
											$("#imagePreview #addToAlbum a").attr("href","javascript:;").html(labeladdToAlbumAlready).addClass("added");
										} else
											$("#imagePreview #addToAlbum a").attr("href","javascript:addToAlbum('"+imageID+"',\""+data.results[0].desc+"\")").html(labelAddToAlbum).removeClass("added");
										$("#imagePreview #prev").css("height",imgData.height).css("width",parseInt(imgWidth/2));
										$("#imagePreview #next").css("height",imgData.height).css("width",parseInt(imgWidth/2));
										$("#imageLoading").hide();
										$("#imagePrevContent").fadeTo(400,1, function() {  $.modal.setPosition(); } );
										if(isSlidePlaying)
											setTimeout("nextImage(true);",3000);
			 },
	 		 error: function() { alert('There was an error processing your request. Please try again'); }
											
	});

}

function nextImage(slideShow) {
	var index = imageIndex();
	var nextIndex = 0;
	closeHighResForm();
	if (index > -1 && index < arrDisplay.length-1)
		nextIndex = index+1;

	if (!(slideShow && !isSlidePlaying)) {
		$("#imageLoading").show();
		$("#imagePrevContent").fadeTo(400,0.01);
		setTimeout("previewImage(arrDisplay["+nextIndex+"].id,'"+previewDisplay+"');",400);
	}
	
}

function prevImage() {
	var index = imageIndex();
	var prevIndex = arrDisplay.length-1;
	closeHighResForm();
	if (index > -1 && index > 0)
		prevIndex = index-1;

	$("#imageLoading").show();
	$("#imagePrevContent").fadeTo(400,0.01);
	setTimeout("previewImage(arrDisplay["+prevIndex+"].id,'"+previewDisplay+"')",400);
}

function searchImage() {
	var keywords = $("#imageKeywords").val();
	var category = $("#imageCategory").val();
	var imageDate = $("#imageDate").val();
	imagesDisplayed = 0;
	showLoading();
	/*$("#imageResults").html("&nbsp;<img align=\"absmiddle\" src=\"/global/javascript/ajax/loader.gif\"/>");*/
	$("#imagesList").html("");
	$.ajax({ url: "/am/2009/videos/photoJSON.cfm?isAjaxRequest&keywords="+keywords+"&category="+category+"&date="+imageDate+"&language="+language,
			 cache: false,
			 dataType: "json",
			 success: function(data) { arrImages = data.results; populateImages(); hideLoading(); },
	 		 error: function() { alert('There was an error processing your request. Please try again'); }
	});
}

function populateImages() {
	var content = ""; 
	var i = 0;
	var counter = imagesDisplayed;
	if (arrImages.length > 0)	{
		for (i=counter;(i<arrImages.length && i<counter+12);i++) {
			content += "<div id=\"imageItem"+arrImages[i].id+"\" class=\"libItemContainer\">";
				content += "<img id=\"addButtonI"+arrImages[i].id+"\" class=\"addToPlaylist\" src=\"";
				if (imageAlbumIndex(arrImages[i].id) == -1)
					content += "/am/2009/images/addToPlaylist.gif";
				else
					content += "/am/2009/images/addedToPlaylist.gif";
				content += "\" title=\"Add to Album\" onclick=\"addToAlbum('"+arrImages[i].id+"')\" />";
				content += "<div class=\"imageItem libItem\" onclick=\"previewImage('"+arrImages[i].id+"','main');\" id=\"i"+arrImages[i].id+"\">";
					content += "<img class=\"playIcon\" src=\"images/play.gif\" /><div class=\"imageThumb\"><img src=\""+arrImages[i].thumb+"\" /></div>";
					content += "<span class=\"libItemTitle\"><span class='videoLength'>"+arrImages[i].date+ "</span> - "+arrImages[i].desc+"</span>";
				content += "</div>";
			content += "</div>";
			imagesDisplayed++;
		}
		$("#imagesList").append(content);
		$(".libItemContainer").hover( function() { $(this).css("background-color", "#eeeeee"); }, 
									  function() { $(this).css("background-color", "transparent"); } );
	
		$(".videoItem").hover(function() {$(".playIcon", this).css("display", "block");	}, 
							  function() {$(".playIcon", this).css("display", "none");});
	} else {
		$("#imagesList").html("<div class='center addMarginTop'>"+labelNoPhotosFound+"</div>");
	}
	$("#imageResults").html(labelPhotos+" ("+arrImages.length+")");
}

function startSlideShow(imageID) {
	var index = 0;
	if (typeof imageID == "undefined") {
		if (arrAlbum.length > 0) {
			isSlidePlaying=true; 
			previewImage(arrAlbum[0].id,"album");
		}
	} else {
		isSlidePlaying=true;
		nextSlide();
	}
}

function stopSlideShow() {
	isSlidePlaying = false;
}

function imageIndex() {
	for (var i=0;i<arrDisplay.length;i++) { 
		if (arrDisplay[i].id == currImage) {
			return i;
		}
	}
	return -1;
}

/* Album */
function addToAlbum(id) {
	var index = imageListIndex(id);
	if (imageAlbumIndex(id) > -1)
		return false;
	var albumItem = new Object();
	var imageTitle = arrImages[index].desc;
	if (imageTitle.length > 45)
		imageTitle = imageTitle.substring(0,45) + "...";
	albumItem.id = id;
	albumItem.title = imageTitle;
	arrAlbum[arrAlbum.length] = albumItem;
	populateAlbum();
	$("#addButtonI"+id).attr("src", "images/addedToPlaylist.gif");
	$("#imagePreview #addToAlbum a").attr("href","javascript:;").html(labeladdToAlbumAlready).addClass("added");
}

function removeFromAlbum(imageID) {
	var index = imageAlbumIndex(imageID);
	if (index > -1) {
		arrAlbum.splice(index,1);
	}
	populateAlbum();
	$("#addButtonI"+imageID).attr("src", "images/addToPlaylist.gif");
	$("#imagePreview #addToAlbum a").attr("href","javascript:addToAlbum('"+imageID+"')").html(labelAddToAlbum).removeClass("added");
}

function populateAlbum() {
	var content = "<ul>";
	for (i=0;i<arrAlbum.length;i++) {
		content += "<li><a href=\"javascript:previewImage('"+arrAlbum[i].id+"','album')\" class=\"imageAlbum";
		content += "\" id=\"video"+arrAlbum[i].id+"\"><span class=\"text\">"+arrAlbum[i].title+"</span></a><span class=\"delete\" onclick=\"javascript:removeFromAlbum(\'"+arrAlbum[i].id+"\');\">×</span></li>";
	}
	content += "<ul>";
	$("#Videostab-2 a").click();
	$("#imageAlbum").html(content);
	populateAlbumTabTitle();
}

function clearAlbum() {
	arrAlbum = new Array();
	$("#imageAlbum").html("<div class=\"center addPadding\">"+labeladdToAlbumMSG+"</div>");
	$(".addToAlbum").attr("src", "images/addToPlaylist.gif");
	populateAlbumTabTitle();
}

function populateAlbumTabTitle() {
	$("#albumTotalFotos").html(arrAlbum.length.toString());
}

function imageAlbumIndex(imageID) {
	for (var i=0;i<arrAlbum.length;i++) { 
		if (arrAlbum[i].id == imageID) {
			return i;
		}
	}
	return -1;
}

function imageListIndex(imageID) {
	for (var i=0;i<arrImages.length;i++) { 
		if (arrImages[i].id == imageID) {
			return i;
		}
	}
	return -1;
}

function openHighResForm() {
	$("#highResForm").fadeIn();
}

function closeHighResForm() {
	$("#highResForm").fadeOut();
}

function openHighResFormAlbum() {
	$("#albumHighResForm").fadeIn();
}

function closeHighResFormAlbum() {
	$("#albumHighResForm").fadeOut();
}

function submitHighResForm(type) {
	var i = 0;
	var url = "/am/2009/videos/requestHighRes.cfm";
	var photoID = '';

	if (type == 'album') {
		if (arrAlbum.length == 0) {
			alert(labelHighResEmptyAlbum);
			return false;
		}
		for (var i=0;i<arrAlbum.length;i++) { 
			if (i != 0) {
				photoID += ",";
			}
			photoID += arrAlbum[i].id;
		}	
		var email = $("#albumhighResFormEmail").val().replace(/^\s+|\s+$/g,"");
		var purpose = $("#albumhighResFormPurpose").val();
		var affiliation = $("#albumhighResFormAff").val().replace(/^\s+|\s+$/g,"");	
	} else {
		photoID = currImage;		
		var email = $("#highResFormEmail").val().replace(/^\s+|\s+$/g,"");
		var purpose = $("#highResFormPurpose").val();
		var affiliation = $("#highResFormAff").val().replace(/^\s+|\s+$/g,"");	
	}
	
	if (email == '' || email.search(/^[^@]+@[^@]+.[a-z]{2,}$/i) == -1) {
		alert(labelHighResValidEmail);
		return false;
	} 
	if (affiliation == '') {
		alert(labelHighResValidCompany);
		return false;
	} 
	if (purpose == '') {
		alert(labelHighResValidPurpose);
		return false;
	}

	$.ajax({
		type: "POST",
		url: "/am/2009/videos/requestHighRes.cfm",
		data:{ conference:18, 
			   email:email,
			   id:photoID,
			   purpose:purpose,
			   affiliation:affiliation,
			   lang:lang
			 },
		success: function() { alert(labelHighResSent + " " + email + "."); closeHighResForm(); },
		error: function() { alert('There was an error processing your request. Please try again'); }
	});
}

/* ========================= OTHER =========================== */

function showLoading() {
	$('.searchLoading').show();
}
function hideLoading() {
	$('.searchLoading').hide();
}

$.fn.isNearEnd = function() {
    return this[0].scrollTop + this.height() >= this[0].scrollHeight-50;

} 


