$(document).ready(function() {

	// show the social buzz section
	$("#social_buzz").css('display', 'block');

    // set a flag to keep track of the showcase trailer
    // being displayed or not
    $("#featured_movies .trailer_area").data('hidden', true);

    // display showcase trailer
    $("#featured_movies .trailer_button").click(function() {
		if ($(this).attr('href') != '#') {
			display_featured_movies_trailer($(this));
		}
        return false;
    });

	// make the clicked one the active one
	$("#featured_movies .queue_item").click(function() {
		featured_movies_make_active($(this));
		return false;
	});

	// shorten long plots and add ellipsis
    $(".movie_genre_plot").each(function() {
		var genre = $(this).find('.movie_genre').first();
        var plot = $(this).find('.movie_plot').first();
        if (genre.text().length + plot.text().length > 250) {
            plot.text(plot.text().substr(0, 240 - genre.text().length) + "...");
        }
    });

    // clear the text from the search field
    $("#search_term").click(function() {
        if ($(this).val() == "search...") {
            $(this).val("");
        } else {
            $(this).select();
        }
    });
    $("#search_term").blur(function() {
        if ($(this).val() == "") {
            $(this).val("search...");
        }
    });

	// only submit request if search field is not empty
    $("#search_form").submit(function() {
        return check_search();
    });

	// display the movie list trailer
	$(".movie_list_trailer").click(function() {
		var movie_list_item = $(this).parents('.movie_list_item').first();

		if (movie_list_item.data('trailer_open') != true) {

			// close any other trailer first
			$(".movie_list_item").each(function() {
				if ($(this).data('trailer_open') == true)
					$(this).find('.item_trailer_close').first().click();
			});
			if ($("#featured_movies .trailer_area").data('hidden') == false)
				$("#featured_movies .trailer_close_button").click();
			$(".details_trailer_close").click();

			movie_list_item.data('trailer_open', true);
			var item_trailer_panel = $('<div>');
			var trailer_panel_shadow_top = $('<div>');
			var trailer_panel_shadow_bottom = $('<div>');
			var item_trailer_area = $('<div>');
			var item_trailer_close = $('<a>');

			item_trailer_panel.attr('class', 'trailer_panel');
			trailer_panel_shadow_top.attr('class', 'trailer_panel_shadow_top');
			trailer_panel_shadow_bottom.attr('class', 'trailer_panel_shadow_bottom');
			item_trailer_area.attr('class', 'item_trailer_area');
			item_trailer_close.attr('class', 'item_trailer_close').attr('href', 'javascript:void(0)');
			item_trailer_area.append(item_trailer_close);

			item_trailer_area.hover(
				function() { item_trailer_close.fadeIn(); },
				function() { item_trailer_close.fadeOut(); }
			);

			item_trailer_panel
			.prepend(trailer_panel_shadow_top)
			.prepend(trailer_panel_shadow_bottom);

			movie_list_item
			.prepend(item_trailer_panel)
			.prepend(item_trailer_area)
			.animate({
				'height'	: '407px'
			}, function() {
				item_trailer_area.fadeIn(function() {
					var trailer_info = movie_list_item.find('.trailer_info').first().html().split(':');
					if (trailer_info[0] == 'traileraddict')
						$(this).append('<object width="598" height="250"><param name="movie" value="http://www.traileraddict.com/emd/'+trailer_info[1]+'"></param><param name="allowscriptaccess" value="always"></param><param name="wmode" value="transparent"></param><param name="allowfullscreen" value="true"></param><embed src="http://www.traileraddict.com/emd/'+trailer_info[1]+'" type="application/x-shockwave-flash" allowscriptaccess="always" wmode="transparent" allowfullscreen="true" width="598" height="250"></embed></object>');
					else if (trailer_info[0] == 'youtube')
						$(this).append('<iframe width="598" height="250" src="http://www.youtube.com/embed/'+trailer_info[1]+'?autohide=1&wmode=transparent" frameborder="0" allowfullscreen></iframe>');
				});
			});

			// close the trailer
			item_trailer_close.click(function() {
				item_trailer_area.css('background-image','none').empty().fadeOut('fast');
                movie_list_item
				.animate({
					'height'	: '106px'
				}, function() {
					movie_list_item
					.remove('.trailer_panel')
					.remove('.item_trailer_area')
					.data('trailer_open', false)
				});

				return false;
			});
		}

		return false;
	});

	$(".movie_details .trailer_button").click(function() {

		var trailer_panel = $('.details_trailer_panel');

		if (trailer_panel.data('trailer_open') != true) {
			trailer_panel.data('trailer_open', true);

			// close other trailers
			$(".item_trailer_close").click();

			var trailer_panel_shadow_top = $('<div>');
			var trailer_panel_shadow_bottom = $('<div>');
			trailer_panel_shadow_top.attr('class', 'details_trailer_panel_shadow_top');
			trailer_panel_shadow_bottom.attr('class', 'details_trailer_panel_shadow_bottom');

			var details_trailer_area = $('<div>');
			var details_trailer_close = $('<a>');

			details_trailer_area.attr('class', 'details_trailer_area');
			details_trailer_close.attr('class', 'details_trailer_close')
			.attr('href', 'javascript:void(0)')
			.click(function() {
				details_trailer_area.css('background-image','none')
				.empty()
				.fadeOut('fast');

				trailer_panel.animate({
					'height'	: '0'
				}, function() {
					$(this).empty().css({
						'border-bottom'	: 'none',
						'display'		: 'none'
					}).data('trailer_open', false)
				});
			});

			details_trailer_area.append(details_trailer_close);

			details_trailer_area.hover(
				function() { details_trailer_close.fadeIn(); },
				function() { details_trailer_close.fadeOut(); }
			);

			trailer_panel.append(trailer_panel_shadow_top)
			.append(trailer_panel_shadow_bottom)
			.append(details_trailer_area)
			.css('display', 'block')
			.animate({
				'height'	: '300px'
			}, function() {
				details_trailer_area.fadeIn(function() {
					var trailer_info = $('.trailer_info').html().split(':');
					if (trailer_info[0] == 'traileraddict')
						$(this).append('<object width="598" height="250"><param name="movie" value="http://www.traileraddict.com/emd/'+trailer_info[1]+'"></param><param name="allowscriptaccess" value="always"></param><param name="wmode" value="transparent"></param><param name="allowfullscreen" value="true"></param><embed src="http://www.traileraddict.com/emd/'+trailer_info[1]+'" type="application/x-shockwave-flash" allowscriptaccess="always" wmode="transparent" allowfullscreen="true" width="598" height="250"></embed></object>');
					else if (trailer_info[0] == 'youtube')
						$(this).append('<iframe width="598" height="250" src="http://www.youtube.com/embed/'+trailer_info[1]+'?autohide=1&wmode=transparent" frameborder="0" allowfullscreen></iframe>');
				});
			});
		}

		return false;
	});

	// show the 'report bad link' link
    $(".watch_link .bad_link").show().click(function() {
		var ext_link_href = $(this).prev('.ext_link').attr('href');
		var link_id = 0;
		if (ext_link_href.slice(0,12) == '/movies/ext/') {
			link_id = ext_link_href.split('/')[3];
			if ($(this).prev('.ext_link').data('visited') == true) {
				$.post("/movies/report_bad_link", {
					id: link_id
				});
			}
		}
		$(this).html('reported... thanks!').css({
			'color'				: '#555',
			'text-decoration'	: 'none',
			'cursor'			: 'default'
		});
		return false;
	});

	// mark visited links
	$(".watch_link .ext_link").data({
		'visited'		: false,
		'last_visited'	: false
	}).click(function() {
		$(".watch_link .ext_link").data('last_visited', false).css('background-position', '0 0');
		$(this).data({
			'visited'		: true,
			'last_visited'	: true
		}).css('background-position', '0 -84px');
	}).hover(
		function() {
			$(this).css('background-position', '0 -84px');
		},
		function() {
			if ($(this).data('last_visited') == false) {
				$(this).css('background-position', '0 0');
			}
		}
	);
});

// Close trailers when Esc is pressed
$(document).keydown(function(event) {
	if (event.keyCode == '27') {
		$("#featured_movies .trailer_close_button").click();
		$(".item_trailer_close").click();
		$(".details_trailer_close").click();
	}
});


// Check to see if the search field is empty / has default value or not
function check_search() {
    var search_term = $.trim($("#search_term").val());

    if (search_term == "search..." || search_term == "") {
        return false;
    }

    return true;
}

function display_featured_movies_trailer(trailer_button) {
    // Only do this if the trailer is not already in the process of being displayed
    // and it is not already displayed
    if ( (trailer_button.queue('fx').length == 0) && ($("#featured_movies .trailer_area").data('hidden') == true) ) {

		// Close any other trailer first
		trailer_button.queue(function() {
			$(".movie_list_item").each(function() {
				if ($(this).data('trailer_open') == true)
					$(this).find('.item_trailer_close').first().click();
			});
			trailer_button.dequeue();
		});

        // Extend the trailer area and add the loading message
        trailer_button.queue(function() {
            $("#featured_movies .trailer_area").data('hidden', false).animate({
                left: '160px'
            }, function() {
				$("#featured_movies .left_side_cover").fadeIn();
				$("#featured_movies .trailer_area_left").css('background','#000 url(/v1.51/images/backgrounds/loading_bg.png) no-repeat 50%');
                trailer_button.dequeue();
            });
        });

        // Display the trailer
        trailer_button.queue(function() {
            var trailer_id = $("#featured_movies .trailer_id").html();
			var trailer_host = $("#featured_movies .trailer_host").html();
			if (trailer_host == 'traileraddict') {
				$("#featured_movies .trailer_area_left").empty().html('<object width="638" height="298"><param name="movie" value="http://www.traileraddict.com/emd/'+trailer_id+'"></param><param name="allowscriptaccess" value="always"></param><param name="wmode" value="transparent"></param><param name="allowfullscreen" value="true"></param><embed src="http://www.traileraddict.com/emd/'+trailer_id+'" type="application/x-shockwave-flash" allowscriptaccess="always" wmode="transparent" allowfullscreen="true" width="638" height="298"></embed></object>');
			}
			else if (trailer_host == 'youtube') {
				$("#featured_movies .trailer_area_left").empty().html('<iframe width="638" height="298" src="http://www.youtube.com/embed/'+trailer_id+'?autohide=1&wmode=transparent&rel=0" frameborder="0" allowfullscreen></iframe>');
			}
            trailer_button.dequeue();
        });

        // Move the ad to the right
        trailer_button.queue(function() {
            $("#featured_movies .watch_now_button").css({
                right: '10px',
				bottom: '10px',
                zIndex: 4
            });
            trailer_button.dequeue();
        });

        // Display the close button
        trailer_button.queue(function() {
            $("#featured_movies .trailer_close_button").css({
                display: 'block'
            }).click(function() {
                // Hide the close button
                trailer_button.queue(function() {
                    $("#featured_movies .trailer_close_button").css({ display: 'none' });
                    trailer_button.dequeue();
                });

                // Move the ad back to the left
                trailer_button.queue(function() {
                    $("#featured_movies .watch_now_button").css({
                        right: '676px',
						bottom: '17px',
                        zIndex: 2
                    });
                    trailer_button.dequeue();
                });

                // Empty the trailer area
                trailer_button.queue(function() {
                    $("#featured_movies .trailer_area_left").css('background', '#000').empty();
                    trailer_button.dequeue();
                });

                // Collapse the trailer area
                trailer_button.queue(function() {
                    $("#featured_movies .trailer_area").animate({
                        left: '-638px'
                    }, function() {
                        $("#featured_movies .trailer_area").data('hidden', true);
						$("#featured_movies .left_side_cover").fadeOut();
                        trailer_button.dequeue().clearQueue();
                    });
                });
            });

            trailer_button.dequeue();
        });
    }
}

function featured_movies_make_active(queue_item) {

	var panel = $("#featured_movies .cover_panel");

	// only do this if switching movies is NOT already in progress
	if (panel.queue().length == 0) {
		/* extract info on the clicked queue item
		 * 0 - year
		 * 1 - genre
		 * 2 - plot
		 * 3 - trailer id
		 * 4 - trailer host
		 */
		var queue_item_info = queue_item.find('span').first().html().split(':::');

		// hide active movie by covering with the panel
		panel.queue(function() {
			$(this).fadeIn().dequeue();
		});

		// switch the pictures
		panel.queue(function() {
			var active_thumbnail = $("#featured_movies .active_thumbnail");
			var active_thumbnail_img = $("#featured_movies .active_thumbnail img");
			var queue_item_img = queue_item.find('img').first();

			var temp = active_thumbnail.attr('title');
			active_thumbnail.attr('title', queue_item.attr('title'));
			queue_item.attr('title', temp);

			temp = active_thumbnail.attr('href');
			active_thumbnail.attr('href', queue_item.attr('href'));
			queue_item.attr('href', temp);

			temp = active_thumbnail_img.attr('alt');
			active_thumbnail_img.attr('alt', queue_item_img.attr('alt'));
			queue_item_img.attr('alt', temp);

			temp = active_thumbnail_img.attr('src');
			active_thumbnail_img.attr('src', queue_item_img.attr('src'));
			queue_item_img.fadeOut(function() {
				queue_item_img.attr('src', temp).fadeIn();
			});

			$(this).dequeue();
		});

		// switch the trailer
		panel.queue(function() {
			var trailer_id = $("#featured_movies .trailer_id");
			var temp = trailer_id.html();
			trailer_id.html(queue_item_info[3]);
			queue_item_info[3] = temp;

			var trailer_host = $("#featured_movies .trailer_host");
			temp = trailer_host.html();
			trailer_host.html(queue_item_info[4]);
			queue_item_info[4] = temp;

			var trailer_href = '#';
			if (trailer_host.html() == 'traileraddict')
				trailer_href = 'http://www.traileraddict.com/player.swf?id=' + trailer_id.html();
			else if (trailer_host.html() == 'youtube')
				trailer_href = 'http://www.youtube.com/watch?v=' + trailer_id.html();
			$('#featured_movies .trailer_button').attr('href', trailer_href);

			$(this).dequeue();
		});

		// switch the title and year
		panel.queue(function() {
			$('#featured_movies .active_title').attr('href', $('#featured_movies .active_thumbnail').attr('href'));
			$('#featured_movies .active_title').html($('#featured_movies .active_thumbnail').attr('title'));

			var active_year = $('#featured_movies .active_year a');
			var temp = active_year.html();
			active_year.html(queue_item_info[0]);
			active_year.attr('href', '/movies/year/' + queue_item_info[0]);
			queue_item_info[0] = temp;

			$(this).dequeue();
		});

		// switch the genre
		panel.queue(function() {
			var temp_array = new Array();
			$('#featured_movies .active_genre a').each(function() {
				temp_array.push($(this).html());
			});
			var temp = temp_array.join(',');

			temp_array = [];
			temp_array = queue_item_info[1].split(',');
			for (i in temp_array)
				temp_array[i] = '<a href="/movies/genre/' + temp_array[i].toLowerCase() + '">' +
					temp_array[i] + '</a>';

			$('#featured_movies .active_genre').html(temp_array.join('&nbsp;&rsaquo;&nbsp;'));
			queue_item_info[1] = temp;

			$(this).dequeue();
		});

		// switch the plot
		panel.queue(function() {
			var active_plot = $('#featured_movies .active_plot');
			var temp = active_plot.html();
			active_plot.html(queue_item_info[2]);
			queue_item_info[2] = temp;

			$(this).dequeue();
		});

		// adjust the 'go to movie' link
		// and update the queue_item_info span
		panel.queue(function() {
			$('#featured_movies .active_link').attr('href', $('#featured_movies .active_thumbnail').attr('href'));
			queue_item.find('.queue_item_info').first().html(queue_item_info.join(':::'));

			$(this).dequeue();
		});

		// show the new active movie by removing the panel
		panel.queue(function() {
			$(this).fadeOut().dequeue();
		});
	}
}

