﻿$(document).ready(function() {

    var movieResults = false;
    $('#findmovie').autocomplete('/Movie/LookupMovie/', {
        dataType: "json",
        formatItem: function(data, i, n, value) {

            if (data.Type == -1) {
                return "<div class='ac'>No match found</div>";
            }
            if ((data.Type > 2 && data.Type < 100) || data.Type == 101) {
                //seperators are 3 and up
                return "<div class='ac2'><img src='/images/searchproto/" + data.Type + ".gif'/> " + data.Name + "</div>";
            }
            else {
                return "<div class='ac'>" + value + "</div>";
            }
        },
        autoFill: false, //types 1st match into field
        mustMatch: false,
        matchContains: false,
        cacheLength: 0,
        scrollHeight: 200,
        max: 100,
        delay: 100,
        width: 291,
        selectFirst: true,
        scroll: true,
        parse: function(data) {
            var array = new Array();


            var lastName = '';
            var lastType = -1;


            if (data.length == 0) {
                sep = { Type: -1, Name: '', Zip: '' };
                array[0] = { data: sep, value: '', result: '' };
                movieResults = false;
            }

            for (var i = 0; i < data.length; i++) {
                movieResults = true;
                var tempValue = data[i].Name != "" ? data[i].Name : data[i].Name;
                var tempResult = data[i].Name != "" ? data[i].Name : data[i].Name;

                //category
                if (data[i].Type != lastType) {
                    var sep;
                    if (data[i].Type == 0) {
                        sep = { Type: 3, Name: 'Theatres:', Zip: '' };
                    }
                    else if (data[i].Type == 1) {
                        sep = { Type: 4, Name: 'Cities:', Zip: '' };
                    }
                    else if (data[i].Type == 2) {
                        sep = { Type: 5, Name: 'Zip Codes:', Zip: '' };
                    }
                    else if (data[i].Type == 100) {
                        sep = { Type: 101, Name: 'Movies:', Zip: '' };
                    }

                    array[array.length] = { data: sep, value: '', result: '' };
                }


                //remove dups
                if (data[i].Name != lastName) {
                    array[array.length] = { data: data[i], value: tempValue, result: tempResult };
                }


                lastName = data[i].Name;
                lastType = data[i].Type;
            }

            return array;
        }
    });

    //binds to submit to stop default enter key when
    //no results are available
    $("#find-a-movie").submit(function() {
        if (!movieResults) {
            return false;
        }
    });

    //gets data and submits form
    $("#findmovie").result(function(event, data, formatted) {
        $("#movieResult").val(!data ? "-1" : "" + data.Zip);
        if (data.Zip != "") {
            if (data.Type == 100) {
                $("#find-a-movie").attr("action", '/Movie/MovieDetail/' + data.Zip + '/');
            }
            $("#find-a-movie").submit();
        }
    });

    //handles downarrow click
    $("#btnDownMovie").click(function() {
        $("#findmovie").attr({ value: ' ' }).trigger("focus").trigger("searchIt"); //.trigger("keydown").trigger("blur");
    });




    var theatreResults = false;
    $('#theatres').autocomplete('/Theatre/LookupTheatreCity/', {
        dataType: "json",
        formatItem: function(data, i, n, value) {

            if (data.Type == -1) {
                return "<div class='ac'>No match found</div>";
            }
            if (data.Type > 2) {
                //seperators are 3 and up
                return "<div class='ac2'><img src='/images/searchproto/" + data.Type + ".gif'/> " + data.Name + "</div>";
            }
            else {
                return "<div class='ac'>" + value + "</div>";
            }

        },
        autoFill: false, //types 1st match into field
        mustMatch: false,
        matchContains: false,
        cacheLength: 0,
        scrollHeight: 200,
        max: 100,
        delay: 100,
        width: 290,
        selectFirst: true,
        scroll: true,
        parse: function(data) {

            var array = new Array();


            var lastName = '';
            var lastType = -1;


            if (data.length == 0) {
                sep = { Type: -1, Name: '', Zip: '' };
                array[0] = { data: sep, value: '', result: '' };
                theatreResults = false;
            }

            for (var i = 0; i < data.length; i++) {
                theatreResults = true;
                var tempValue = data[i].Name != "" ? data[i].Name : data[i].Name;
                var tempResult = data[i].Name != "" ? data[i].Name : data[i].Name;

                //category
                if (data[i].Type != lastType) {
                    var sep;
                    if (data[i].Type == 0) {
                        sep = { Type: 3, Name: 'Theatres:', Zip: '' };
                    }
                    else if (data[i].Type == 1) {
                        sep = { Type: 4, Name: 'Cities:', Zip: '' };
                    }
                    else if (data[i].Type == 2) {
                        sep = { Type: 5, Name: 'Zip Codes:', Zip: '' };
                    }

                    array[array.length] = { data: sep, value: '', result: '' };
                }


                //remove dups
                if (data[i].Name != lastName) {
                    array[array.length] = { data: data[i], value: tempValue, result: tempResult };
                }


                lastName = data[i].Name;
                lastType = data[i].Type;
            }

            return array;
        }
    });

    //binds to submit to stop default enter key when
    //no results are available
    $("#theatres-showtimes").submit(function() {
        if (!theatreResults) {
            return false;
        }
    });

    //Get redsults and submit
    $("#theatres").result(function(event, data, formatted) {

        $("#zipResult").val(!data ? "-1" : "" + data.Zip);
        if (data.Zip != "") {
            if (data.Type == 0) {
                $("#theatres-showtimes").attr("action", '/Theatre/TheatreDetail/' + data.Zip + '/');
            } else {
                $("#theatres-showtimes").attr("action", '/Theatre/Search/');
            }
            $("#theatres-showtimes").submit();
        }
    });

    //handles downarrow click
    $("#btnDown").click(function() {
        $("#theatres").attr({ value: ' ' }).trigger("focus").trigger("searchIt"); //.trigger("keydown").trigger("blur");
    });


})