﻿$(document).ready(function () {
    toggleMenus($("#filter").val());
    $("#goButton").click(buyTicket);
});

function toggleMenus(filter) {
    if (filter == "cinema") {
        $("#cinema-tab").attr("src", "/content/images/Tickets_byCinema_on.png");
        $("#movie-tab").attr("src", "/content/images/Tickets_byMovie.png");
        $("#search-by-movie-div").hide();
        $("#search-by-cinema-div").show();
        loadCinemaSelect("cinema");
    }
    else if (filter == "movie") {
        $("#cinema-tab").attr("src", "/content/images/Tickets_byCinema.png");
        $("#movie-tab").attr("src", "/content/images/Tickets_byMovie_on.png");
        $("#search-by-cinema-div").css("display", "none");
        $("#search-by-movie-div").css("display", "block");
        loadMovieSelect("movie");
    }
    $("#filter").val(filter);
    saveCookie();
}

function setScreenType(screenType) {
    $("#screenType").val(screenType);
    saveCookie();
    var filter = $("#filter").val();
    if (filter == "cinema")
        loadCinemaSelect(filter);
    else
        loadMovieSelect(filter);
}

function cinemaSelectChange() {
    var cinema = $(this).val();
    $("#cinemaToken").val(cinema);
    saveCookie();
    
    if (cinema != "0" && cinema != "") {
        var filter = $("#filter").val();
        if (filter == "cinema")
            loadMovieSelect(filter);
        else
            loadSessionSelect();
    }
    else {
        return;
    }
}

function movieSelectChange() {

    var movieId = $(this).val();
    $("#movieId").val(movieId);
    saveCookie();

    if (movieId != "0" && movieId != "")
    {
        var filter = $("#filter").val();
        if (filter == "movie")
            loadCinemaSelect(filter);
        else
            loadSessionSelect();
    }
    else {
        return;
    }
}

function sessionSelectChange() {
    var sessionId = $(this).getSetSSValue();
    $("#sessionId").val(sessionId);
    saveCookie();
}

function resetCinemaSelect(filter) {
    var dropdownList = null; 
    if (filter == "cinema")
        dropdownList = $("#cinema-select1");
    else
        dropdownList = $("#cinema-select2");
    dropdownList.children().remove();
    appendOption(dropdownList, new Option("None available", ""));
    dropdownList.change(cinemaSelectChange);
}

function resetMovieSelect(filter) {
    var dropdownList = null;
    if (filter == "movie")
        dropdownList = $("#movie-select1");
    else
        dropdownList = $("#movie-select2");
    dropdownList.children().remove();
    appendOption(dropdownList, new Option("None available", ""));
    dropdownList.change(movieSelectChange);
}

function resetSessionSelect() {
    var dropdownList = $("#session-select");
    dropdownList.children().remove();
    appendOption(dropdownList, new Option("None available", ""));
    dropdownList.change(sessionSelectChange);
}

function loadCinemaSelect(filter) {
    var dropdownList = null;
    var containerDiv = null;
    if (filter == "cinema") {
        dropdownList = $("#cinema-select1");
        containerDiv = $("#cinema-selector-div1");
    }
    else {
        dropdownList = $("#cinema-select2");
        containerDiv = $("#cinema-selector-div2");
    }

    dropdownList.children().remove();
    var option = new Option("Loading ...", "")
    appendOption(dropdownList, option);
    
    var movieId = "0";
    if (filter == "movie")
        movieId = $("#movieId").val();
    var screenType = $("#screenType").val();
    var movieAttribute = "";
    if (screenType == "3d") {
        screenType = "";
        movieAttribute = "ThreeD";
    }

    $.getJSON("/Cinema/CinemaList", { movieId: movieId, screenType: screenType, movieAttribute: movieAttribute }, function (data) {
        dropdownList.children().remove();
        if (data != "") {
            var option = new Option("Select ...", "");
            appendOption(dropdownList, option);
        }

        var currentCinema = $("#cinemaToken").val();
        var currentCinemaFound = false;
        $.each(data, function (index, optionData) {
            if (optionData.Token != "BLKTWN") {
                var option;
                if (currentCinema != "" && currentCinema != "0" && currentCinema == optionData.Token) {
                    option = new Option(optionData.Name, optionData.Token, true);
                    option.selected = true;
                    currentCinemaFound = true;
                }
                else {
                    option = new Option(optionData.Name, optionData.Token, false);
                }

                appendOption(dropdownList, option);
            }
        });

        if (dropdownList.children().length == 0) {
            var option = new Option("None available", "");
            appendOption(dropdownList, option);
        }

        dropdownList.change(cinemaSelectChange);

        $(dropdownList).children().each(function () {
            if ($(this).val() == "0") {
                $(this).addClass("cinemalist-stateheader");
            }
        });

        if (currentCinemaFound) {
            if (filter == "cinema")
                loadMovieSelect(filter);
            else
                loadSessionSelect();
        }
        else {
            currentCinema = "";
            $("#cinemaToken").val("");
            if (filter == "cinema") {
                $("#movieId").val("");
                resetMovieSelect(filter);
                resetSessionSelect();
            }
            else
                resetSessionSelect();
        }
        saveCookie();
    });
}

function loadMovieSelect(filter) {
    var dropdownList = null;
    var containerDiv = null;
    if (filter == "cinema") {
        dropdownList = $("#movie-select1");
        containerDiv = $("#movie-selector-div1");
    }
    else {
        dropdownList = $("#movie-select2");
        containerDiv = $("#movie-selector-div2");
    }

    dropdownList.children().remove();
    var option = new Option("Loading ...", "");
    appendOption(dropdownList, option);
    
    var cinemaToken = "";
    if (filter == "cinema") {
        cinemaToken = $("#cinemaToken").val();
    }
    var screenType = $("#screenType").val();
    var movieAttribute = "";
    if (screenType == "3d") {
        screenType = "";
        movieAttribute = "ThreeD";
    }
    
    $.getJSON("/Movie/MovieList", { cinemaToken: cinemaToken, screenType: screenType, movieAttribute: movieAttribute, sessionAttribute: "", ticketType: "" }, function (data) {
        dropdownList.children().remove();
        if (data != "") {
            var option = new Option("Select ...", "")
            appendOption(dropdownList, option);
        }
        
        var currentMovieId = $("#movieId").val();
        var currentMovieFound = false;
        $.each(data, function (index, m) {
            var option;
            if (currentMovieId != "" && currentMovieId != "0" && currentMovieId == m.Id) {
                option = new Option(m.Name, m.Id, true);
                option.selected = true;
                currentMovieFound = true;
            }
            else {
                option = new Option(m.Name, m.Id, false);
            }

            appendOption(dropdownList, option);
        });

        if (dropdownList.children().length == 0) {
            var option = new Option("None available", "");
            appendOption(dropdownList, option);
        }

        dropdownList.change(movieSelectChange);

        if (currentMovieFound) {
            if (filter == "movie")
                loadCinemaSelect(filter);
            else
                loadSessionSelect();
        }
        else {
            currentMovieId = "";
            $("#movieId").val("");
            if (filter == "movie") {
                currentCinema = "";
                $("#cinemaToken").val("");
                resetCinemaSelect(filter);
                resetSessionSelect();
            }
            else
                resetSessionSelect();
        }
        saveCookie();
    });
}

function loadSessionSelect() {
    var dropdownList = $("#session-select");
    dropdownList.children().remove();
    var option = new Option("Loading ...", "");
    appendOption(dropdownList, option);

    var containerDiv = $("#session-selector-div");
    var cinemaToken = $("#cinemaToken").val();
    var movieId = $("#movieId").val();
    var screenType = $("#screenType").val();
    var currentSession = $("#sessionId").val();
    var currentSessionFound = false;
    
    $.getJSON("/Session/List1", { movieId: movieId, cinemaToken: cinemaToken, screenType: screenType }, function (data) {
        dropdownList.children().remove();

        if (data != "") {
            appendOption(dropdownList, new Option("Select ...", ""));
        }

        var i = 0;
        $.each(data, function (index, optionData) {
            var option;
            if (currentSession != "" && currentSession != "0" && currentSession == optionData.Value) {
                option = new Option(optionData.Text, optionData.Value, true);
                option.selected = true;
                currentSessionFound = true;
            }
            else {
                option = new Option(optionData.Text, optionData.Value, false);
            }
            appendOption(dropdownList, option);
        });

        if (!currentSessionFound) {
            $("#sessionId").val("");
        }

        if (dropdownList.children().length == 0) {
            appendOption(dropdownList, new Option("None available", ""));
        }

        dropdownList.change(sessionSelectChange);

        // Change class for sold out and less tha  5 seats left
        $(dropdownList).children().each(function (index) {
            if ($(this).text().indexOf("Soldout") >= 0)
                $(this).addClass("soldout");

            if ($(this).text().indexOf("5 seats") >= 0)
                $(this).addClass("lessThan5Seats");
        });
    });
}

function appendOption(dropdownList, option) {
    if ($.browser.msie) {
        dropdownList[0].add(option);
    }
    else {
        dropdownList[0].add(option, null);
    }
}

function buyTicket() {
    var session = $("#session-select").val();
    if (session == "" || session == "0") {
        alert("Please select a session before buyng tickets");
        return false;
    }
    var sessionId = session.split(';')[0];
    var seats = session.split(';')[1];
    if (seats != "0") {
        var link = "";
        var useNewTicketing = $("#useNewTicketing").val();
        if (useNewTicketing == "True")
            link = "/tickets/order/step2?sessionId=" + sessionId + "&bookingSource=web_home";
        else
            link = "/ticket/create?sessionId=" + sessionId;
        window.location.href = link;
    }
    else {
        alert("This session is sold out. Please select another session");
        return false;
    }
}

function saveCookie() {
    var filter = $("#filter").val();
    var screenType = $("#screenType").val();
    var cinemaToken = $("#cinemaToken").val();
    var movieId = $("#movieId").val();
    var sessionId = $("#sessionId").val();
    var value = "filter=" + filter + "&movieId=" + movieId + "&cinemaToken=" + cinemaToken + "&sessionId=" + sessionId + "&screenType=" + screenType;

    $.cookie("HomeSelector", value, { expires: 180, path: "/" });
}



