﻿$(document).ready(function()
{
    var wtp = $("#whereToPlay");
    var inputFields = wtp.find("#inputFields .txtVIP");
    var inputLabels = ["Store name", "City", "Zip"];
    var searchBtn = wtp.find("#searchBtn");
    var content = wtp.find("#content");
    var inputEntries = [inputLabels[0], inputLabels[1], "98109"];

    init();

    function init()
    {
        /* inputField listeners */
        inputFields.each(function(i)
        {
            //populate input fields with default labels
            $(this).val(inputLabels[i])
        });

        inputFields.focus(function()
        {
            for (i = 0; i < inputLabels.length; i++)
            {
                //check if input fields are populated with default labels
                if ($(this).val() == inputLabels[i])
                {
                    $(this).val("");
                }
            }

            //key listener
            $(this).bind("keypress", function(event)
            {
                //"Enter" keycode
                if (event.keyCode == 13)
                {
                    sendSearchResults();
                }
            });
        });

        searchBtn.click(function()
        {
            sendSearchResults();
        });

        populateInputFields(inputEntries);
    }

    function getGeolocation()
    {
        //find users coords using W3C Geolocation
        if (navigator.geolocation)
        {
            var timeoutVal = 10 * 1000 * 1000;

            navigator.geolocation.getCurrentPosition(geocodeLatLng, displayError,
            {
                enableHighAccuracy: true,
                timeout: timeoutVal,
                maximumAge: 0
            });
        }
        else
        {
            //incompatible browser
            populateInputFields(inputEntries);
        }
    }

    function geocodeLatLng(position)
    {
        var geocoder = new google.maps.Geocoder();
        var latlng = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);

        geocoder.geocode({ "latLng": latlng }, function(results, status)
        {
            if (status == google.maps.GeocoderStatus.OK)
            {
                //clear array
                inputEntries = [];
            
                //save City name
                if (results[0].address_components[3])
                {
                    inputEntries.push(results[0].address_components[3].long_name);
                }
                else
                {
                    inputEntries.push(inputLabels[1]);
                }

                //save Zip Code
                if (results[0].address_components[7])
                {
                    inputEntries.push(results[0].address_components[7].long_name);
                }
                else
                {
                    inputEntries.push(inputLabels[2]);
                }

                populateInputFields(inputEntries);
            }
            else
            {
                //alert("Geocoder failed due to: " + status);
            }
        });
    }

    function displayError(error)
    {
        /*
        var errors = {
        1: 'Permission denied',
        2: 'Position unavailable',
        3: 'Request timeout'
        };
        alert("Error: " + errors[error.code]);
        */

        populateInputFields(inputEntries);
    }

    function populateInputFields(_entries)
    {
        inputFields.each(function(i)
        {
            $(this).val(_entries[i]);
        });

        sendSearchResults();
    }

    function sendSearchResults()
    {
        var keyValues = [];

        //check inputField values
        inputFields.each(function(i)
        {
            if ($(this).val() == inputLabels[i] || $(this).val() == "")
            {
                keyValues[i] = "";
            }
            else
            {
                keyValues[i] = $(this).val();
            }
        });

        var queryString = "?s=" + keyValues[0] + "&c=" + keyValues[1] + "&z=" + keyValues[2] + "&page=1";

        //modify iframe's src attribute and append URL with queryString
        content.attr("src", "Results.aspx" + queryString);
    }
});
