smallImages = new Array();
images = new Array();

$(document).ready(function(){
	if (document.location.pathname == "/search" || document.location.search.indexOf("from=search") > - 1) {
		$("#search_movie").select();
	}
	initializeTooltips();
	setTimeout("initializeImagePopups()", 5000);
	setTimeout("startImageRotation()", 2000);
});

function initializeTooltips() {
	$(".tooltip").tooltip({
		showURL: false
	});	
}

function startImageRotation() {
	initializeImageRotation();
	setTimeout("rotateImages()", 3000);
}

function initializeImageRotation() {
	for(entry in smallImages) {
		rotationSpan = $("#imagerotation_" + entry);
		for(image in smallImages[entry]) {
			rotationSpan.html(rotationSpan.html() + "<span><span><img src=\""+image+"\" class=\"invisible\" /></span></span>");
		}
	}
}

function rotateImages() {
	imageContainers = $(".imagerotation");
	imageContainers.each(function(){
		images = $(this).find("img");
		if(images.length > 1) {
			for(var i = 0; i < images.length; i++) {
				image = $(images[i]);
				if(image.css("display") != "none") {
					image.fadeOut(2000);
					fadeIn = (i == images.length - 1)? 0 : i + 1;
					$(images[fadeIn]).fadeIn(2000);
					break;
				}
			}
		}
	});
	setTimeout("rotateImages()", 5000);
}

function initializeImagePopups() {
	for(entry in images) {
		popupSpan = $("#imagepopup_" + entry).children("span");
		invisible = false;
		for(image in images[entry]) {
			imageHtml = "<span><span><img src=\""+image+"\" ";
			if(invisible) imageHtml += "class=\"invisible\" ";
			invisible = true; // All images but the first are invisible.
			imageHtml += "/></span></span>";
			popupSpan.html(popupSpan.html() + imageHtml);
		}
	}	
}

function displayImagePopup(key) {	
	popup = $("#imagepopup_" + key);
	popup.modal({containerId: 'simplemodal-image-container', overlayId: 'simplemodal-image-overlay'});
	$('#simplemodal-image-overlay').click($.modal.close);
}

function displayTagInput(id) {
	tag_list = $("#" + id + "_tags");
	tags = ""
	tag_list.find("a").each(function() {
		tags += $(this).text() + ", ";
	})
	tag_list.addClass("invisible");
	tag_input = $("#" + id + "_tag_input");
	tag_input.removeClass("invisible");
	tag_input.find("input").focus();
	tag_input.find("input").val(tags);
	return true;
}

function submitTags(form, movie_key, id) {
	tags_string = $(form).find('input').val();
	$.ajax({
	    url: '/collection/actions',
	    type: 'GET',
	    timeout: 5000,
	    dataType: "json",
	    data: {
			action: "tag",
		    tags: tags_string,
		    key: movie_key
		},
	    error: function(){
	        alert('Error saving tags');
	    },
	    success: function(json){
	    	tag_links = ""
	    	for(i in json.tags) {
	    		tag_links += "<a href='?tag=" + json.tags[i] + "'>"+ json.tags[i] + "</a> ";
	    	}
	    	if(json.tags.length > 0) {
	    		tag_links += "<br />";
	    	}
	    	tag_list = $("#" + id + "_tags");
	    	tag_list.html(tag_links);
	    	tag_list.removeClass("invisible");
	    	tag_input = $("#" + id + "_tag_input");
	    	tag_input.addClass("invisible");
	    	tag_input.find("input").blur();
	    }
	});
}

function tagSuggestions(input_element, movie_key, id) {	
	input_list = $(input_element).val();
	input_list = input_list.split(",");
	input = input_list[input_list.length - 1];
	if(input == "" || input == " ") {
		$("#tag_suggestions").addClass("invisible");
		return;
	}
	$.ajax({
	    url: '/autocompletion/actions',
	    type: 'GET',
	    timeout: 5000,
	    dataType: "json",
	    data: {
			type: "tags",
		    input: input
		},
	    success: function(json){
			if(json.tags.length == 0) {
				$("#tag_suggestions").addClass("invisible");
				return;
			}
			old_tag_string = "";
			for(i in input_list) {
				if(i != input_list.length - 1) {
					old_tag_string += input_list[i] + ", ";
				}
			}	
			old_tag_string = old_tag_string.replace("  ", " "); // apparently trim() doesn't work in Chrome
			tags = "<ul>";
	    	for(i in json.tags) {
	    		tag_string = old_tag_string + json.tags[i];
	    		tags += '<li><a href="#" onclick="acceptTagSuggestion(\'' + tag_string + '\', \'' + movie_key + '\', \'' + id + '\'); $(\'#tag_suggestions\').addClass(\'invisible\');return false;" >'+ json.tags[i] + '</a></li>';
	    	}
	    	tags += "</ul>";
	    	tag_suggestions_element = $("#tag_suggestions");
	    	tag_suggestions_element.html(tags); 
	    	tag_suggestions_element.css('top', $(input_element).offset().top + $(input_element).height() + 1);	    	
	    	tag_suggestions_element.css('left', $(input_element).offset().left);
	    	tag_suggestions_element.width($(input_element).width());
	    	tag_suggestions_element.removeClass("invisible");
	    }
	});
}

function acceptTagSuggestion(tag_string, movie_key, id) {
	tag_input = $("#" + id + "_tag_input");
	tag_input.find("input").focus();
	tag_input.find("input").val(tag_string);	
}

function hideTagSuggestions() {
	window.setTimeout("$('#tag_suggestions').addClass('invisible')", 500);
}

function rateMovie(entry_key, rating) {
	$.ajax({
	    url: '/collection/actions',
	    type: 'GET',
	    timeout: 5000,
	    dataType: "json",
	    data: {
			action: "rate",
		    rating: rating,
		    key: entry_key
		},
	    error: function(){
	        alert('Error saving rating');
	    },
	    success: function(json){	    	
	    	for(var i = 1; i <= json.rating; i++) {
	    		$('#' + json.key + '_rating_' + i).attr('src', '/images/icon_star.gif');
	    	}
	    	for(var i = json.rating + 1; i <= 5; i++) {
	    		$('#' + json.key + '_rating_' + i).attr('src', '/images/icon_star_gray.gif');
	    	}
	    }
	});
}

function openLendingDialog(id) {
	$("[name=lending_key]").val(id);
	$("[name=lending_friend]").load('/friends/actions?action=lending_dialog_friends_options');
	$('#lendingModalDialog').modal();
	$('[name=lending_custom_name]').focus();
}

function lendMovieToSomebody() {
	lending_friend = $("[name=lending_friend]").val();
	lending_custom_name = $("[name=lending_custom_name]").val();
	lending_key = $("[name=lending_key]").val();
	$.ajax({
	    url: '/collection/actions',
	    type: 'GET',
	    timeout: 5000,
	    dataType: "json",
	    data: {
			action: "lend",
		    friend: lending_friend,
		    custom_name: lending_custom_name,
		    key: lending_key
		},
	    error: function(){
	        alert('Error lending movie');
	    },
	    success: function(json){
	    	lending_icon = $("#" + lending_key + "_lending_icon");
	    	lending_icon.html('<a href="javascript:void(0)" onclick="movieReturned(\'' + lending_key + '\')" class="tooltip" title="Click here if you got this movie back"><img src="/images/icon_return.gif" style="padding-left:8px;" width="16" height="16" /></a>');
	    	lending_entry = $("#" + lending_key + "_entry");
	    	lending_entry.addClass("lent");
	    	initializeTooltips();
	    }
	});
	$.modal.close();
}

function movieReturned(lending_key) {
	$.ajax({
	    url: '/collection/actions',
	    type: 'GET',
	    timeout: 5000,
	    dataType: "json",
	    data: {
			action: "returned",
		    key: lending_key
		},
	    error: function(){
	        alert('Error getting movie back');
	    },
	    success: function(json){
	    	lending_icon = $("#" + lending_key + "_lending_icon");
	    	lending_icon.html('<a href="javascript:void(0)" onclick="openLendingDialog(\'' + lending_key + '\')" class="tooltip" title="Click here to open a dialog to select the person you\'ve lent this movie to"><img src="/images/icon_lend.gif" style="padding-left:8px;" width="16" height="16" /></a>');
	    	lending_entry = $("#" + lending_key + "_entry");
	    	lending_entry.removeClass("lent");
	    	lent_to = lending_entry.find(".lent_to");
	    	initializeTooltips();
	    	$(lent_to).hide(1000);
	    }
	});	
}

function openTellAFriendDialog() {
	$('#tellAFriendModalDialog').modal();
	$('[name=friend_email]').focus();
}

function tellAFriend() {
	friend_email = $("[name=friend_email]").val();
	friend_message = $("[name=friend_message]").val();
	$.ajax({
	    url: '/friends/actions',
	    type: 'GET',
	    timeout: 5000,
	    dataType: "json",
	    data: {
			action: "tell_a_friend",
		    email: friend_email,
		    message: friend_message
		},
	    error: function(){
	        alert('Error sending email!');
	    },
	    success: function(json){
	    	if (json.error) {
	    		alert(json.error)
	    	} else {
	    		$.modal.close();
	    	}
	    }
	});
	
}

