var joinNameDefaultValue    = "Name";
var joinEmailDefaultValue   = "E-Mail";

$(document).ready(generalDocumentReady);

function generalDocumentReady()
{
    showBanner();

    $("#jqShowBanner").click(showBanner);

    $(".jqCloseBanner").click(hideBanner);

    setFooter();
    resizePageContents();

    setFirstPage();


    setPhotoVideoThumbnailPages();

    $(window).resize(setFooter);
    $(window).resize(resizePageContents);

    $(".jqPageLink").click(changePage);

    $(".jqLinkShowRedBandTrailer").click(showRedBandTrailer);
    $(".jqLinkShowGreenBandTrailer").click(showGreenBandTrailer);

    $(".jqDivCharacterThumbnailContainer a").click(showCharacterOverlay);

    $(".jqLinkCloseCharacterOverlay").click(closeCharacterOverlay);

    $(".jqLinkClosePhotoOverlay").click(closePhotoOverlay);

    $(".jqPhotoThumbnailContainer a").click(showPhotoOverlay);

    $(".jqVideoThumbnailContainer li").click(showVideoOverlay);

    $(".jqLinkCloseVideoOverlay").click(closeVideoOverlay);

    $("#jqLinkNextVideoThumbnails").click(showNextVideoThumbnailPage);

    $("#jqLinkPrevVideoThumbnails").click(showPrevVideoThumbnailPage);

    $("#jqLinkNextPhotoThumbnails").click(showNextPhotoThumbnailPage);

    $("#jqLinkPrevPhotoThumbnails").click(showPrevPhotoThumbnailPage);

    $("#txtJoinName").focus(joinNameFocus).blur(joinNameBlur);
    $("#txtJoinEmail").focus(joinEmailFocus).blur(joinEmailBlur);

    $("#jqLinkSendJoinEmail").click(sendJoinMailingListEmail);

    $(document).keydown(documentKeyDown);
}

function joinNameFocus()
{
    $(document).unbind("keydown");
    if($.trim($(this).val()) == joinNameDefaultValue)
    {
        $(this).val("");
    }
}

function joinNameBlur()
{
    $(document).keydown(documentKeyDown);
    
    if($.trim($(this).val()) == "")
    {
        $(this).val(joinNameDefaultValue);
    }
}

function joinEmailFocus()
{
    $(document).unbind("keydown");
    if($.trim($(this).val()) == joinEmailDefaultValue)
    {
        $(this).val("");
    }
}

function joinEmailBlur()
{
    $(document).keydown(documentKeyDown);

    if($.trim($(this).val()) == "")
    {
        $(this).val(joinEmailDefaultValue);
    }
}

function documentKeyDown(e)
{
    if(e.which)
    {
        var currentLink = $(".link-active:first");
        if(e.which == 39 || e.which == 40)   //  Next
        {
            var nextLink    = currentLink.closest("li").next("li").children(":first");
            if(nextLink.length > 0)
            {
                nextLink.click();
            }
            return false;
        }
        else if(e.which == 37 || e.which == 38)  //  Previous
        {
            var prevLink    = currentLink.closest("li").prev("li").children(":first");
            if(prevLink.length > 0)
            {
                prevLink.click();
            }
            return false;
        }
    }

    return true;
}

function getAnchor()
{
    var url = window.location;
    if(arguments.length > 0)
    {
        url = arguments[0];
    }
    var strippedUrl = url.toString().split("#");
    
    if(strippedUrl.length > 1)
    {
        return strippedUrl[1];
    }

    return "";
}

function setFooter()
{
    var footer          = $("#jqSiteFooter");

    footer.css({
                    position:   "absolute",
                    top:        $(window).height() - footer.outerHeight(),
                    left:       0,
                    width:      $(window).width()
                });
}

function resizePageContents()
{
    var topBanner   = $("#jqTopBanner");
    if(topBanner.length > 0)
    {
        topBanner.css({
            marginLeft: (($(window).width() - topBanner.width())/2)
        });
    }
    var pagesContainerWidth = 0;
    
    $(".jqDivPageContainer").css({
                                    width:  1920, //$(window).width(),
                                    height: $(window).height()
                                })
                            .each(  function()
                                    {
                                        var pageContainer       = $(this);
                                        var pageContent         = pageContainer.children(".jqDivPageContent:first");
                                        var pageContainerWidth  = pageContainer.outerWidth();
                                        var pageContentWidth    = pageContent.outerWidth();

                                        pagesContainerWidth     += pageContainerWidth;

                                        if(pageContainerWidth < pageContentWidth)
                                        {
                                            pageContent.css({
                                                                "margin-left":  -Math.round((pageContentWidth - pageContainerWidth)/2)
                                                            });
                                        }
                                    });
    $("#jqDivPagesContainer").css({
                                        width:  pagesContainerWidth,
                                        height: $(window).height()
                                    });
}

function setFirstPage()
{
    var windowWidth     = $(window).width();
    var firstPageWidth  = $(".jqDivPageContainer:first").outerWidth();

    //if(windowWidth < firstPageWidth)
    //{
        $("#jqDivPagesContainer").css({
                                        left:  -(firstPageWidth - windowWidth)/2
                                    });
    //}
}

function changePage()
{
    var current         = $(this).blur();
    var urlAnchor       = getAnchor(current.attr("href"));
    var windowWidth     = $(window).width();
    
    if(urlAnchor != "")
    {
        var pageContainer   = $("#" + urlAnchor + "Container");
        
        if(pageContainer.length > 0)
        {
            $(".jqDivCharacterOverlay:visible").fadeOut("normal");
            $(".jqDivPhotoOverlay:visible").fadeOut("normal");
            $(".jqDivVideoOverlay:visible").fadeOut("normal");
            
            var pageContainerPosition   = pageContainer.position();

            //$(".jqFooterLinks .jqPageLink").removeClass("link-active");
			
			$(".jqFooterLinks .jqPageLink").each(function()
														  {
															var currentHref = $(this).attr("href");
															var currentClass= currentHref.replace(/#/, "");
															$(this).removeClass(currentClass).removeClass(currentClass + "-on").addClass(currentClass);
														  });
            //current.addClass("link-active");

            //$(".jqFooterLinks a[href='#" + urlAnchor + "']").addClass("link-active");
			var currentLink	= $(".jqFooterLinks a[href='#" + urlAnchor + "']");
			
			var currentLinkHref = currentLink.attr("href");
			var currentLinkClass= currentLinkHref.replace(/#/, "");
			currentLink.removeClass(currentLinkClass).removeClass(currentLinkClass + "-on").addClass(currentLinkClass + "-on");

            /*$("#jqDivPagesContainer").animate({
                                                "left":  - pageContainerPosition.left
                                              }, 1000);*/
            var pageWidth           = pageContainer.outerWidth();
            $("#jqDivPagesContainer").animate({
                                                "left":  - (pageContainerPosition.left + (pageWidth - windowWidth)/2)
                                              }, 1000);
        }
    }

    return false;
}

function showRedBandTrailer()
{
    $(".jqLinkShowRedBandTrailer").removeClass("red-band-off").addClass("red-band-on");
    $(".jqLinkShowGreenBandTrailer").removeClass("green-band-on").addClass("green-band-off");
    var redBandTrailer      = $(".jqDivRedBandTrailer:first");
    redBandTrailer.html('<div><embed src="' + moviePath + 'boondocksaints2_rbtrailer_640x360.mov" width="640" height="373" autoplay="false" loop="false" controller="true" pluginspage="http://www.apple.com/quicktime/"></embed></div>');

    return false;
}

function showGreenBandTrailer()
{
    $(".jqLinkShowRedBandTrailer").removeClass("red-band-on").addClass("red-band-off");
    $(".jqLinkShowGreenBandTrailer").removeClass("green-band-off").addClass("green-band-on");
    var redBandTrailer      = $(".jqDivRedBandTrailer:first");
    redBandTrailer.html('<div><embed src="' + moviePath + 'boondocksaints2_gbtrailer_640x360.mov" width="640" height="373" autoplay="false" loop="false" controller="true" pluginspage="http://www.apple.com/quicktime/"></embed></div>');




    return false;
}

function showCharacterOverlay()
{
    var current                 = $(this).blur();
    var thumbnailContainer      = current.closest(".jqDivCharacterThumbnailContainer");
    var thumbnailContainerId    = thumbnailContainer.attr("id");
    var characterOverlay        = $("#" + thumbnailContainerId + "Overlay");
    
    if(characterOverlay.length > 0)
    {
        var characterOverlayWidth       = characterOverlay.outerWidth();
        var characterOverlayHeight      = characterOverlay.outerHeight();
        var characterOverlayLeft        = ($(window).width() - characterOverlayWidth)/2;
        var characterOverlayTop         = ($(window).height() - characterOverlayHeight - $("#jqSiteFooter").outerHeight())/2;
        //var thumbnailContainerPosition  = thumbnailContainer.offset();
        
        if(characterOverlay.is(":hidden"))
        {
            $(".jqDivCharacterOverlay:visible").fadeOut("normal");
            characterOverlay.css({
                                    left:   characterOverlayLeft,
                                    top:    characterOverlayTop
                                }).fadeIn("normal");
        }
        else
        {
            characterOverlay.fadeOut("normal");
        }
    }

    return false;
}

function closeCharacterOverlay()
{
    $(this).closest(".jqDivCharacterOverlay").fadeOut("normal");

    return false;
}

function closePhotoOverlay()
{
    $(this).closest(".jqDivPhotoOverlay").fadeOut("normal");

    return false;
}

function closeVideoOverlay()
{
    $(this).closest(".jqDivVideoOverlay").fadeOut("normal");

    return false;
}

function showPhotoOverlay()
{
    var current         = $(this).blur();
    var detailsSpan     = current.find(".overlayDetails:first");
    var photoOverlay    = $("#jqPhotoOverlay");

    if(detailsSpan.length > 0)
    {
        photoOverlay.find(".jqImgOverlayPhoto:first")
                    .attr("src", detailsSpan.html())
                    .end()
                    .find(".jqPhotoCaption:first")
                    .html(detailsSpan.attr("title"))
                    .end()
                    .css({
                            left:   ($(window).width() - photoOverlay.outerWidth())/2,
                            top:    ($(window).height() - photoOverlay.outerHeight() - $("#jqSiteFooter").outerHeight())/2
                        })
                    .fadeIn("normal");
    }

    return false;
}

function showVideoOverlay()
{
    var current         = $(this).blur();
    var detailsSpan     = current.find(".overlayDetails:first");
    var videoOverlay    = $("#jqVideoOverlay");

    if(detailsSpan.length > 0)
    {
        videoOverlay.find(".jqVideoOverlayContent:first")
                    .html(detailsSpan.html())
                    .end()
                    .css({
                            left:   ($(window).width() - videoOverlay.outerWidth())/2,
                            top:    ($(window).height() - videoOverlay.outerHeight() - $("#jqSiteFooter").outerHeight())/2
                        })
                    .fadeIn("normal");
    }

    return false;
}

function setPhotoVideoThumbnailPages()
{
    $("#jqPhotoThumbnailContainer").find("ul").each(function()
                                                    {
                                                        var ulWidth     = 0;

                                                        $(this).find("li").each(function()
                                                                                {
                                                                                    ulWidth += $(this).outerWidth();
                                                                                });
                                                        $(this).css({
                                                                        width : ulWidth
                                                                    });
                                                    });
}

function showNextVideoThumbnailPage()
{
    $(this).blur();
    var firstVisibleLi1         = $("#jqVideoThumbnailContainer > ul:first > li:visible:first");
    var firstVisibleLi2         = $("#jqVideoThumbnailContainer > ul:eq(1) > li:visible:first");
    var firstVisibleLi3         = $("#jqVideoThumbnailContainer > ul:eq(2) > li:visible:first");

    var lastVisibleLi1         = $("#jqVideoThumbnailContainer > ul:first > li:visible:last");
    var lastVisibleLi2         = $("#jqVideoThumbnailContainer > ul:eq(1) > li:visible:last");
    var lastVisibleLi3         = $("#jqVideoThumbnailContainer > ul:eq(2) > li:visible:last");

    var nextLi1                 = lastVisibleLi1.next("li");
    var nextLi2                 = lastVisibleLi2.next("li");
    var nextLi3                 = lastVisibleLi3.next("li");

    if(nextLi1.length > 0 || nextLi2.length > 0 || nextLi3.length > 0)
    {
        nextLi1.show();
        nextLi2.show();
        nextLi3.show();
        firstVisibleLi1.hide();
        firstVisibleLi2.hide();
        firstVisibleLi3.hide();
    }
    return false;
}



function showPrevVideoThumbnailPage()
{
    $(this).blur();
    var firstVisibleLi1         = $("#jqVideoThumbnailContainer > ul:first > li:visible:first");
    var firstVisibleLi2         = $("#jqVideoThumbnailContainer > ul:eq(1) > li:visible:first");
    var firstVisibleLi3         = $("#jqVideoThumbnailContainer > ul:eq(2) > li:visible:first");

    var lastVisibleLi1         = $("#jqVideoThumbnailContainer > ul:first > li:visible:last");
    var lastVisibleLi2         = $("#jqVideoThumbnailContainer > ul:eq(1) > li:visible:last");
    var lastVisibleLi3         = $("#jqVideoThumbnailContainer > ul:eq(2) > li:visible:last");

    var prevLi1                 = firstVisibleLi1.prev("li");
    var prevLi2                 = firstVisibleLi2.prev("li");
    var prevLi3                 = firstVisibleLi3.prev("li");
    
    if(prevLi1.length > 0 || prevLi2.length > 0 || prevLi3.length > 0)
    {
        prevLi1.show();
        prevLi2.show();
        prevLi3.show();
        if($("#jqVideoThumbnailContainer > ul:eq(0) > li:visible").length > 3)
        lastVisibleLi1.hide();
        if($("#jqVideoThumbnailContainer > ul:eq(1) > li:visible").length > 3)
        lastVisibleLi2.hide();
        if($("#jqVideoThumbnailContainer > ul:eq(2) > li:visible").length > 3)
        lastVisibleLi3.hide();
    }
    return false;
}

function showNextPhotoThumbnailPage()
{
    $(this).blur();
    var firstVisibleLi1         = $("#jqPhotoThumbnailContainer > ul:first > li:visible:first");
    var firstVisibleLi2         = $("#jqPhotoThumbnailContainer > ul:eq(1) > li:visible:first");

    var lastVisibleLi1         = $("#jqPhotoThumbnailContainer > ul:first > li:visible:last");
    var lastVisibleLi2         = $("#jqPhotoThumbnailContainer > ul:eq(1) > li:visible:last");

    var nextLi1                 = lastVisibleLi1.next("li");
    var nextLi2                 = lastVisibleLi2.next("li");

    if(nextLi1.length > 0 || nextLi2.length > 0)
    {
        nextLi1.show();
        nextLi2.show();
        firstVisibleLi1.hide();
        firstVisibleLi2.hide();
    }
    return false;
}



function showPrevPhotoThumbnailPage()
{
    $(this).blur();
    var firstVisibleLi1         = $("#jqPhotoThumbnailContainer > ul:first > li:visible:first");
    var firstVisibleLi2         = $("#jqPhotoThumbnailContainer > ul:eq(1) > li:visible:first");

    var lastVisibleLi1         = $("#jqPhotoThumbnailContainer > ul:first > li:visible:last");
    var lastVisibleLi2         = $("#jqPhotoThumbnailContainer > ul:eq(1) > li:visible:last");

    var prevLi1                 = firstVisibleLi1.prev("li");
    var prevLi2                 = firstVisibleLi2.prev("li");

    if(prevLi1.length > 0 || prevLi2.length > 0)
    {
        prevLi1.show();
        prevLi2.show();
        lastVisibleLi1.hide();
        lastVisibleLi2.hide();
    }
    return false;
}

function sendJoinMailingListEmail()
{
    var joinName		= $.trim($("#txtJoinName").val());
    var joinEmail		= $.trim($("#txtJoinEmail").val());
    var error			= "";

    if(joinName == "" || joinName == joinNameDefaultValue)
    {
        alert("Please give name");
        return false;
    }
    
    if(joinEmail == "" || joinEmail == joinEmailDefaultValue)
    {
        alert("Please give email");
        return false;
    }
    else if(!funcValidateEmail(joinEmail))
    {
        alert("Please give valid email");
        return false;
    }

    $.ajax(
            {
                    url :           "join.php",
                    type :          "POST",
                    data :          {name : joinName, email : joinEmail},
                    dataType :      "json",
                    beforeSend:     function()
                                    {

                                    },
                    success :       function(reply)
                                    {
                                        if(reply.error)
                                        {
                                            var jsonError = reply.error;
                                            var errorString = "";

                                            $.each(jsonError, 	function()
                                                                {
                                                                    errorString += this.error + "\n";
                                                                });

                                            alert(errorString);
                                        }
                                        else if(reply.message)
                                        {
                                            alert(reply.message);

                                            $(":text").val("").blur();
                                        }
                                    },
                    complete :      function()
                                    {

                                    }
            }
    );

    return false;
}

function funcValidateEmail(email)
{
   var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
   return reg.test(email);
}


function showBanner()
{
    var banner = $("#jqBanner");

    banner.css({
                    position: "absolute",
                    left:   ($(window).width() - banner.outerWidth())/2,
                    top:    ($(window).height() - banner.outerHeight() - $("#jqSiteFooter").outerHeight())/2
                })
            .fadeIn("normal");
    

    return false;
}

function hideBanner()
{
    $("#jqBanner").fadeOut("normal");

    return $(this).attr("href") == "#" ? false : true;
}