$(document).ready(function() {
    var browser = $.browser;
    var browserVersion = $.browser.version;
    var isIE8 = false;

    if (browser.msie && browserVersion > 7.0) {
        isIE8 = true;
    }

    //for testing
    //alert("My ipaddress: " +  $.cookie("myIpCookie") + "");

    /***********************************************************
    / test for cookie to show location modal window
    /***********************************************************/
    if ($.cookie("toolbarSelectedTheaterID") == 0) {
        docHeight = $(window).height() - 100;
        $("#modal-shadow").css("max-height", docHeight);
        $("#modal").css("max-height", docHeight - 60);
        $("#modal-container").fadeIn("slow", function() { modalIsVisible = true; });
        var containerMaxHeight = docHeight - 400;
        $("#container-dp").css("max-height", containerMaxHeight);
        $("#modal-container").fadeIn("slow", function() {
            modalIsVisible = true;
        });
        $("#modal-shadow").css("height", $("#modal-shadow").height());
        $("#modal").css("height", $("#modal").height());
        $("#container-dp").css("height", $("#container-dp").height());
        dpContainerOffset = $("#container-dp").offset();
        dpContainerHeight = parseInt($("#container-dp").height());

    } else {

    }

    if ($.cookie("toolbarOpen") == null) {
        $.cookie("toolbarOpen", "false");
    }

    /*******************************************************
    /	CAROUSELS
    /******************************************************/
    // initialize the carousels
    try {
        var numItems = $('#carouselNowPlaying li').length;

        $('#carouselNowPlaying').carousel('#carouselNowPlaying-prev', '#carouselNowPlaying-next');

        if (numItems == 2) {
            $('#carouselNowPlaying-prev, #carouselNowPlaying-next').hide();
        }
    }
    catch (e) {
    }

    try {
        var numItems = $('#carouselComingSoon li').length;

        $('#carouselComingSoon').carousel('#carouselComingSoon-prev', '#carouselComingSoon-next');

        if (numItems == 2) {
            $('#carouselComingSoon-prev, #carouselComingSoon-next').hide();
        }
    }
    catch (e) {
    }

    /*******************************************************
    /	POSTER BUBBLE
    /******************************************************/
    var ctrlIDPre;
    var bubblePosition;
    var filmID;
    var filmTitle;
    var ratingImage;
    var ratingInfo;
    var filmRuntime;
    var filmDescription;
    var contentOffset;
    var posterOffset;
    var posterLeftOfContent;
    var posterClass;
    var bubbleNoHide = false;
    var kerasotesdate;

    // build and display the bubble for the movie poster
    $(".poster-now_playing, .poster-advance, .poster-learnmore").hoverIntent({
        interval: 350,
        over: bubbleShow,
        timeout: 250,
        out: bubbleHide
    });

    function bubbleShow() {
        ctrlIDPre = GetControlIDPrefix($(this).attr("id"));

        filmID = $(BuildControlID(ctrlIDPre, "bubbleFilmID")).val();
        filmTitle = $(BuildControlID(ctrlIDPre, "bubbleFilmTitle")).val();
        ratingImage = $(BuildControlID(ctrlIDPre, "bubbleRatingImage")).val();
        ratingInfo = $(BuildControlID(ctrlIDPre, "bubbleRatingInfo")).val();
        filmRuntime = $(BuildControlID(ctrlIDPre, "bubbleFilmRuntime")).val();
        filmDescription = $(BuildControlID(ctrlIDPre, "bubbleFilmDescription")).val();

        contentOffset = $(".content").offset();
        posterOffset = $(this).offset();
        posterLeftOfContent = posterOffset.left - contentOffset.left;
        posterClass = $(this).attr("class");

        // determine the position of the bubble
        switch (posterClass) {
            case "poster-now_playing":
                $(".bubble").css("backgroundImage", "url(images/bubble.png)");
                switch (posterLeftOfContent) {
                    case 90:
                        bubblePosition = "173px";
                        break;
                    case 201:
                        bubblePosition = "283px";
                        break;
                    case 312:
                        bubblePosition = "394px";
                        break;

                }
                break;
            case "poster-advance":
            case "poster-learnmore":
                $(".bubble").css("backgroundImage", "url(images/bubble-right.png)");
                switch (posterLeftOfContent) {
                    case 526:
                        bubblePosition = "247px";
                        break;
                    case 637:
                        bubblePosition = "359px";
                        break;
                    case 748:
                        bubblePosition = "470px";
                        break;

                }
                break;
        }

        // fill the bubble content
        $(".bubble #filmTitle").html(filmTitle);
        if (ratingImage != "") {
            $(".bubble #filmRating").attr("src", ratingImage.replace("~/", "")).attr("title", ratingInfo);
            $(".bubble #filmRating").tooltip({
                delay: 350,
                showURL: false
            });
        }
        else {
            $(".bubble #filmRating").hide();
            $(".bubble #filmRating").unbind("tooltip");
        }

        if (filmRuntime != "&nbsp;") {
            $(".bubble #filmRuntime").html("(" + filmRuntime + ") ");
        }

        $(".bubble #filmDescription").html(filmDescription);
        $(".bubble #filmDetailsLink").attr("href", "MovieDetail.aspx?FilmID=" + filmID);

        // display the bubble
        $(".bubble").css("left", bubblePosition);
        $(".bubble").css("display", "block");
    }

    function bubbleHide() {
        if (!bubbleNoHide) {
            $(".bubble").css("display", "none");
        }
    }

    // make sure the bubble stays up when the user hovers over it
    $(".bubble").hover(function() {
        bubbleNoHide = true;
        $(this).css("display", "block");
    }, function() {
        bubbleNoHide = false;
        $(this).css("display", "none");
    });

    // get the .net prefix for the linkFilmPoster controls
    function GetControlIDPrefix(id) {
        return id.replace("lnkFilmPoster", "");
    }

    // build the actual .net control id
    function BuildControlID(ctrlIDPre, id) {
        return "#" + ctrlIDPre + id;
    }


    /*******************************************************
    /	RATING TOOLTIP
    /******************************************************/

    $('.filmRating').tooltip({
        delay: 350,
        showURL: false
    });

    /*******************************************************
    /	MODAL WINDOW
    /******************************************************/
    var scrollAmount = $(".date-picker li:first").outerHeight(true);
    var marginTop = 0;
    var dpContainerOffset;
    var dpContainerHeight;
    var lastItemOffset;
    var shadowDefaultTopMargin = 40;
    var shadowTopMargin = 0;
    var docHeight = 0;
    var modalIsVisible = false;

    //    // modal show
    //    $(".btn-showtimes-change, .btn-toolbar-change, .nav-locations, .datetheatre, .link-toolbar-change, .change").click(function() {
    //        docHeight = $(window).height() - 100;
    //        $("#modal-shadow").css("max-height", docHeight);
    //        $("#modal").css("max-height", docHeight - 60);

    //        var containerMaxHeight = docHeight - 400;
    //        if (containerMaxHeight < 0) {
    //            alert("Your browser window is too small, please maximize the window then click the Change Date/Theatre button.");
    //        }
    //        else {
    //            $("#container-dp").css("max-height", containerMaxHeight);
    //            $("#modal-container").fadeIn("slow", function() {
    //                modalIsVisible = true;
    //            });
    //            $("#modal-shadow").css("height", $("#modal-shadow").height());
    //            $("#modal").css("height", $("#modal").height());
    //            $("#container-dp").css("height", $("#container-dp").height());

    //            if (browser.msie && !isIE8) {
    //                shadowTopMargin = shadowDefaultTopMargin + parseInt($(document).scrollTop());
    //                $("#modal-shadow").css("marginTop", shadowTopMargin + "px");
    //            }

    //            dpContainerOffset = $("#container-dp").offset();
    //            dpContainerHeight = parseInt($("#container-dp").height());
    //        }
    //    });

    //    // move modal when scrolling
    //    $(window).scroll(function() {
    //        if (browser.msie && modalIsVisible && !isIE8) {
    //            shadowTopMargin = shadowDefaultTopMargin + parseInt($(document).scrollTop());
    //            $("#modal-shadow").css({ "margin-top": shadowTopMargin + "px" });
    //        }
    //    });

    //    // modal hide
    //    $(".btn-select-date, .btn-modal-cancel").click(function() {
    //        $("#modal-container").fadeOut("fast", function() {
    //            modalIsVisible = false;
    //        });
    //    });

    //    // modal select location
    //    $(".btn-location").click(function() {
    //        $(".btn-location").removeClass("selected");
    //        $(this).addClass("selected");
    //    });

    //    // scroll up
    //    $("#modal .btn-scroll-up").click(function() {
    //        marginTop = parseInt($("#modal .date-picker").css("marginTop").replace("px", ""));
    //        if (!marginTop <= 0) {
    //            $("#modal .date-picker").animate({ "marginTop": "+=" + scrollAmount + "px" }, "slow");
    //        }
    //    });

    //    // scroll down
    //    $("#modal .btn-scroll-down").click(function() {
    //        dpContainerBottom = dpContainerOffset.top + dpContainerHeight;
    //        lastItemOffset = $("#modal .date-picker li:last").offset();
    //        if ((lastItemOffset.top + scrollAmount) > dpContainerBottom) {
    //            scrollAmount = $("#modal .date-picker li:first").outerHeight(true);
    //            $("#modal .date-picker").animate({ "marginTop": "-=" + scrollAmount + "px" }, "slow");
    //        }
    //    });


    /*******************************************************
    /	TOOLBAR
    /******************************************************/
    var sliderList = $("#center-times #sliderlist");  // the sliderlist

    var elmnts = $(sliderList).children();  // the slideritems
    var numElmts = elmnts.length; // number of slideritems

    var width = 0;
    var defaultSpeed = 30;
    var quickSpeed = 10;
    var duration = 200;
    var scrollSpeed = defaultSpeed;

    var direction;
    var group1Pos = 0;
    var group2Pos = 0;
    var group1Width = 0;
    var group2Width = 0;

    var g1 = $('<div></div>').attr("id", "panelGroup1").addClass("slidergroup");
    var g2 = $('<div></div>').attr("id", "panelGroup2").addClass("slidergroup");

    var _tickerTimeout = 10;
    var tickerTimer = false;
    var tickerPaused = false;
    var _tickerSpeed;

    var displayAreaWidth = $("#center-times").outerWidth(true);

    // set the speed of the ticker
    SetTickerSpeed(defaultSpeed);

    $(elmnts).each(function(index) {
        $(this).clone().appendTo(g1);
        $(this).clone().appendTo(g2);
        width = width + $(this).outerWidth(true);
    });

    $(sliderList).html('');
    g1.css('width', width + "px");
    g2.css('width', width + "px");
    $(sliderList).append(g1);

    if (width >= displayAreaWidth) {
        $(sliderList).append(g2);
        $(sliderList).css('width', width * 2 + 'px');
        group1Width = GetGroupWidth(g1);
        group2Width = GetGroupWidth(g2);
        $(g2).css("left", group1Width + "px");
    }
    else {
        $(".btn-toolbar-back, .btn-toolbar-next, .grad-left, .grad-right").hide();
    }

    function StartTicker() {
        group1Pos = $(g1).offset().left;
        group2Pos = $(g2).offset().left;

        var tickerTick = function() {
            if (!tickerPaused) {
                group1Pos = $(g1).css("left").replace("px", "");
                group2Pos = $(g2).css("left").replace("px", "");
                group1Pos -= 1;
                group2Pos -= 1;

                if (direction == "left") {
                    if (group1Pos <= (group1Width * -1)) {
                        group1Pos = group2Pos + group2Width;
                        $(g1).css({ "left": group1Pos });
                    }

                    if (group2Pos <= (group2Width * -1)) {
                        group2Pos = group1Pos + group1Width;
                        $(g2).css({ "left": group2Pos });
                    }
                    $(g1).css({ "left": group1Pos - 5 + "px" });
                    $(g2).css({ "left": group2Pos - 5 + "px" });
                }

                if (direction == "right") {
                    if (group1Pos >= displayAreaWidth) {
                        group1Pos = group2Pos - group1Width;
                        $(g1).css({ "left": group1Pos });
                    }

                    if (group2Pos >= displayAreaWidth) {
                        group2Pos = group1Pos - group2Width;
                        $(g2).css({ "left": group2Pos });
                    }
                    $(g1).css({ "left": group1Pos + 5 + "px" });
                    $(g2).css({ "left": group2Pos + 5 + "px" });
                }
            }

            if ((group1Width <= displayAreaWidth) && (group1Pos == 0)) {
                tickerTimer = false;
            }

            if (tickerTimer != false) {
                tickerTimer = window.setTimeout(tickerTick, GetTickerSpeed());
            }
        };

        if (!tickerTimer) {
            tickerTimer = window.setTimeout(tickerTick, GetTickerSpeed());
        }
    }

    function stopScroll() {
        tickerPaused = true;
    }

    // scroll right
    $(".btn-toolbar-back").hover(function() {
        tickerPaused = false;
        direction = "right";
        StartTicker();
    }, function() {
        stopScroll();
    });

    // scroll left
    $(".btn-toolbar-next").hover(function() {
        tickerPaused = false;
        direction = "left";
        StartTicker();
    }, function() {
        stopScroll();
    });

    $(".btn-toolbar-back, .btn-toolbar-next").mousedown(function() {
        SetTickerSpeed(quickSpeed);
    }).mouseup(function() {
        SetTickerSpeed(defaultSpeed);
    });


    // get and set the ticker speed
    function GetTickerSpeed() {
        return _tickerSpeed;
    }

    function SetTickerSpeed(s) {
        _tickerSpeed = s;
    }

    // get the ticker timeout
    function GetTickerTimeout() {
        return _tickerTimeout;
    }

    // get the height of the offer group panel
    function GetGroupWidth(group) {
        var w = group.width();
        return w;
    }

    //hover swap 
    //    $(function() {
    //        $('.rollover').hover(function() {
    //        var currentImg = $(this).attr('src');
    //        $(this).attr('src', $(this).attr('hover'));
    //        $(this).attr('hover', currentImg);
    //        }, function() {
    //        var currentImg = $(this).attr('src');
    //        $(this).attr('src', $(this).attr('hover'));
    //        $(this).attr('hover', currentImg);
    //        });
    //    });

    $("#area1").hover(function() {
        var currentImg = $("#RooseveltMap").attr('src');
        $("#RooseveltMap").attr('src', $("#area1").attr('hover'));
        $("#area1").attr('hover', currentImg);
    }, function() {
        var currentImg = $("#RooseveltMap").attr('src');
        $("#RooseveltMap").attr('src', $("#area1").attr('hover'));
        $("#area1").attr('hover', currentImg);
    });

    $("#area2").hover(function() {
        var currentImg = $("#RooseveltMap").attr('src');
        $("#RooseveltMap").attr('src', $("#area2").attr('hover'));
        $("#area2").attr('hover', currentImg);
    }, function() {
        var currentImg = $("#RooseveltMap").attr('src');
        $("#RooseveltMap").attr('src', $("#area2").attr('hover'));
        $("#area2").attr('hover', currentImg);
    });

    $("#area3").hover(function() {
        var currentImg = $("#StLouisMap").attr('src');
        $("#StLouisMap").attr('src', $("#area3").attr('hover'));
        $("#area3").attr('hover', currentImg);
    }, function() {
        var currentImg = $("#StLouisMap").attr('src');
        $("#StLouisMap").attr('src', $("#area3").attr('hover'));
        $("#area3").attr('hover', currentImg);
    });

    $("#area4").hover(function() {
        var currentImg = $("#StLouisMap").attr('src');
        $("#StLouisMap").attr('src', $("#area4").attr('hover'));
        $("#area4").attr('hover', currentImg);
    }, function() {
        var currentImg = $("#StLouisMap").attr('src');
        $("#StLouisMap").attr('src', $("#area4").attr('hover'));
        $("#area4").attr('hover', currentImg);
    });
    // toolbar hide
    $(".tb-hide").click(function() {
        $('.btn-toolbar-toggle').toggle();
        $("#showtimes_toolbar").animate({ "bottom": "-=88px" }, "slow");
        $.cookie("toolbarOpen", "false");
    });

    // toolbar show
    $(".tb-show").click(function() {
        $('.btn-toolbar-toggle').toggle();
        $("#showtimes_toolbar").animate({ "bottom": "+=88px" }, "slow");
        $.cookie("toolbarOpen", "true");
    });

    // toolbar theatre picker
    $(".dd-theatre, .menu-theatre").click(function(e) {
        e.stopPropagation();
    });

    $(document).click(function() {
        $(".menu-theatre").css("display", "none");
        $(".dd-theatre").css("background-position-y", "top");
    });

    $(".dd-theatre").hover(function() {
        $(this).css("background-position-y", "center");
    }, function() {
        $(this).css("background-position-y", "top");
    });

    $(".menu-theatre").hover(function() {
        $(".dd-theatre").css("background-position-y", "bottom");
    });

    $(".dd-theatre").click(function() {
        $(this).css("background-position-y", "bottom");
        $(".menu-theatre").fadeIn("fast");
    });

    $("ul.menu-theatre li a").click(function() {
        $("ul.menu-theatre").css("display", "none");
        $(".dd-theatre").html($(this).html());
        $(".dd-theatre").css("background-position-y", "top");
    });

    if (parseInt($.cookie("toolbarSelectedTheaterID")) > 0) {
        $("#tb-select").hide();
        $("#tb-selected").show();
        if ($.cookie("toolbarOpen").toLowerCase() == "true") {
            $("#showtimes_toolbar").css("bottom", "0px");
        }
        else {
            $(".btn-toolbar-toggle").toggle();
        }
    }
    else {
        $("#tb-select").show();
        $("#tb-selected").hide();
    }

    /*THEATRE SELECT*/
    $(".btn-toolbar-select").click(function() {
        $("#showtimes_toolbar").animate({ "bottom": "+=88px" }, "slow");
        $("#tb-select").fadeOut("fast");
        $(".pnl-tb-select").hide();
        $("#tb-selected").fadeIn("slow");
    });

    /*******************************************************
    /	NAVIGATION
    /******************************************************/
    // movies
    $(".nav-movies").hover(function() {
        $(".nav-movies").addClass("nav-movies-over");
        $("#dd-movies").css("display", "block");
    }, function() {
        $("#dd-movies").css("display", "none");
        $(".nav-movies").removeClass("nav-movies-over");
    });
    $("#dd-movies").hover(function() {
        $(".nav-movies").addClass("nav-movies-over");
        $("#dd-movies").css("display", "block");
    }, function() {
        $("#dd-movies").css("display", "none");
        $(".nav-movies").removeClass("nav-movies-over");
    });
    // showtimes
    $(".nav-showtimes").hover(function() {
        $(".nav-showtimes").addClass("nav-showtimes-over");
        $("#dd-showtimes").css("display", "block");
    }, function() {
        $("#dd-showtimes").css("display", "none");
        $(".nav-showtimes").removeClass("nav-showtimes-over");
    });
    $("#dd-showtimes").hover(function() {
        $(".nav-showtimes").addClass("nav-showtimes-over");
        $("#dd-showtimes").css("display", "block");
    }, function() {
        $("#dd-showtimes").css("display", "none");
        $(".nav-showtimes").removeClass("nav-showtimes-over");
    });
    // locationsnav
    $(".nav-locationsnav").hover(function() {
        $(".nav-locationsnav").addClass("nav-locationsnav-over");
        $("#dd-locationsnav").css("display", "block");
    }, function() {
        $("#dd-locationsnav").css("display", "none");
        $(".nav-locationsnav").removeClass("nav-locationsnav-over");
    });
    $("#dd-locationsnav").hover(function() {
        $(".nav-locationsnav").addClass("nav-locationsnav-over");
        $("#dd-locationsnav").css("display", "block");
    }, function() {
        $("#dd-locationsnav").css("display", "none");
        $(".nav-locationsnav").removeClass("nav-locationsnav-over");
    });
    // faq
    $(".nav-faq").hover(function() {
        $(".nav-faq").addClass("nav-faq-over");
        $("#dd-faq").css("display", "block");
    }, function() {
        $("#dd-faq").css("display", "none");
        $(".nav-faq").removeClass("nav-faq-over");
    });
    $("#dd-faq").hover(function() {
        $(".nav-faq").addClass("nav-faq-over");
        $("#dd-faq").css("display", "block");
    }, function() {
        $("#dd-faq").css("display", "none");
        $(".nav-faq").removeClass("nav-faq-over");
    });

    // about
    $(".nav-about").hover(function() {
        $(".nav-about").addClass("nav-about-over");
        $("#dd-about").css("display", "block");
    }, function() {
        $("#dd-about").css("display", "none");
        $(".nav-about").removeClass("nav-about-over");
    });
    $("#dd-about").hover(function() {
        $(".nav-about").addClass("nav-about-over");
        $("#dd-about").css("display", "block");
    }, function() {
        $("#dd-about").css("display", "none");
        $(".nav-about").removeClass("nav-about-over");
    });

    /*LOCATIONS
    $(".nav-locations").hover(function () { 
    $(".nav-locations").addClass("nav-locations-over");
    $("#dd-locations").css("display","block");
    }, function () { 
    $("#dd-locations").css("display","none");
    $(".nav-locations").removeClass("nav-locations-over");
    });
    $("#dd-locations").hover(function () { 
    $(".nav-locations").addClass("nav-locations-over");
    $("#dd-locations").css("display","block");
    }, function () { 
    $("#dd-locations").css("display","none");
    $(".nav-locations").removeClass("nav-locations-over");
    });*/
    /*DINE*/
    $(".nav-dine").hover(function() {
        $(".nav-dine").addClass("nav-dine-over");
        $("#dd-dine").css("display", "block");
    }, function() {
        $("#dd-dine").css("display", "none");
        $(".nav-dine").removeClass("nav-dine-over");
    });
    $("#dd-dine").hover(function() {
        $(".nav-dine").addClass("nav-dine-over");
        $("#dd-dine").css("display", "block");
    }, function() {
        $("#dd-dine").css("display", "none");
        $(".nav-dine").removeClass("nav-dine-over");
    });
    /*GROUPS*/
    $(".nav-groups").hover(function() {
        $(".nav-groups").addClass("nav-groups-over");
        $("#dd-groups").css("display", "block");
    }, function() {
        $("#dd-groups").css("display", "none");
        $(".nav-groups").removeClass("nav-groups-over");
    });
    $("#dd-groups").hover(function() {
        $(".nav-groups").addClass("nav-groups-over");
        $("#dd-groups").css("display", "block");
    }, function() {
        $("#dd-groups").css("display", "none");
        $(".nav-groups").removeClass("nav-groups-over");
    });
    // connect
    $(".connect-kerasotes").hover(function() {
        $(".connect-kerasotes").addClass("connect-kerasotes-over");
        $("#connect-menu").css("display", "block");
    }, function() {
        $("#connect-menu").css("display", "none");
        $(".connect-kerasotes").removeClass("connect-kerasotes-over");
    });
    $("#connect-menu").hover(function() {
        $(".connect-kerasotes").addClass("connect-kerasotes-over");
        $("#connect-menu").css("display", "block");
    }, function() {
        $("#connect-menu").css("display", "none");
        $(".connect-kerasotes").removeClass("connect-kerasotes-over");
    });
});