﻿



// v1.0.2
/////////////////
// SETUP ARRAYS
var regionArray = new Array(60);
for (var i = 0; i < regionArray.length; i++) {
    regionArray[i] = new Array(10);
}
var stateArray = new Array(60);



/////////////////
// INITIALIZE
var currentYear;
var currentMonth;
var use_gebi = false, use_css = false, use_layers = false;

function ClientInit() {
    currentYear = Calendar.getYear();
    currentMonth = Calendar.getMonth() + 1;
    if (currentYear < 1900) {
        currentYear += 1900;
    }

    if (document.getElementById) {
        use_gebi = true;
    } else if (document.all) {
        use_css = true;
    } else if (document.layers) {
        use_layers = true;
    }


    PreSelectTime();
    PreSelectDate();
    CreateCalendar();
    var now = new Date;
    var off = now.getTimezoneOffset();
    document.getElementById("TimezoneOffset").value = off / 60;
    
    onStateChanged();
    PreSelectRegion();
    PreSelectPlayers();
    PreSelectCourse();
    PreSelectSort();
}

function PreSelectSort() {
    if (initialSort != null && initialSort != "") {
        var sortDDL = document.getElementById("Sort");
        sortDDL.value = initialSort;
    }
}

function PreSelectCourse() {
    if (initialCourse != null && initialCourse != "") {
        var courseNameDDL = document.getElementById("courseName");
        courseNameDDL.value = initialCourse;
    }
}

function PreSelectPlayers() {
    if (initialPlayers != null && initialPlayers != "") {
        var playersDDL = document.getElementById("players");
        selectByValue(playersDDL, initialPlayers);
    }
}

function PreSelectDate() {
    if (initialDate != null && initialDate != "") {

        // look for special date values
        if (initialDate.toLowerCase() == "today")
        {
            var day = new Date();
            initialDate = Month(day) + "/" + Day(day) + "/" + Year(day);
        }
        if (initialDate.toLowerCase() == "tomorrow")
        {
            var day = new Date();
            day.setDate(day.getDate()+1);
            initialDate = Month(Date()) + "/" + Day(day) + "/" + Year(day);
        }

        var splitDate = initialDate.split("/");
        SetDay(splitDate[0], splitDate[1], splitDate[2]);
    }
}


function PreSelectTime() {
    var timeDDL = document.getElementById("time");
    if (initialTime != null && initialTime != "") {
        selectByValue(timeDDL, initialTime);
    }
    else {
    // pre-select based on current time
        var now = new Date;

        if (!false) {
            var hours = now.getHours();
            var minutes = now.getMinutes();
            var seconds = now.getSeconds();
            var targetHour = (hours + 1) % 24;
            var targetMin = 0;
            if (minutes >= 30) {
                targetMin = 30;
            }
            if (targetMin == 0) {
                targetMin = "00";
            }
            if (targetHour < 10) {
                targetHour = "0" + targetHour;
            }
            selectByValue(timeDDL, targetHour + "" + targetMin);
        } else {
            timeDDL.selectedIndex = 0;
        }
    }
}

function PreSelectRegion()
{
    if (initialRegion != null && initialRegion != "")
    {
        selectByValue(document.getElementById("region"), initialRegion);
        UpdateRegionHints();
    }
}
    
/////////////////
// SUBMIT
function SubmitTeeTimeSearch() {

   
    // check region required
    if (regionRequired == true)
    {
        var regionElem = document.getElementById("region");
        if (regionElem.selectedIndex == 0) return;
    }
    
    
    showSearching();
    
    // gather values
    //FormToQueryString

    //state=CA&region=Northern+California&date=9%2F10%2F2007&time=1430&players=2&courseName=&TimezoneOffset=7&SelectedDate=
    var QString = "";
    QString = QString + FormSelToQueryString("state") + "&";
    QString = QString + FormSelToQueryString("region") + "&";
    QString = QString + FormSelToQueryString("date") + "&";
    QString = QString + FormSelToQueryString("time") + "&";
    QString = QString + FormSelToQueryString("players") + "&";
    QString = QString + FormTextToQueryString("courseName") + "&";
    QString = QString + FormTextToQueryString("TimezoneOffset") + "&";
    QString = QString + FormTextToQueryString("Sort") + "&";
    
    
    var searchURL = document.getElementById("searchPage").value + "?" + QString;
    
    window.location = searchURL;
}

function FormTextToQueryString(elemID)
{
    var elem = document.getElementById(elemID);
    var val = (elem != null) ? elem.value : "";
    return elemID + "=" + val;
}

function FormSelToQueryString(elemID)
{
    var selObj = document.getElementById(elemID);

    return elemID + "=" + selObj.options[selObj.selectedIndex].value;
}

function showSearching() {
    var el1 = document.getElementById("searchingIndicator");
    if (el1 != null) el1.style.display = "";

    var el2 = document.getElementById("ctl00_ContentPlaceHolder1_resultsPanel");
    if (el2 != null) el2.style.display = "none";

    var el3 = document.getElementById("foundTime");
    if (el3 != null) el3.style.display = "none";

    var el4 = document.getElementById("stateImageBox");
    if (el4 != null) el4.style.display = "none";
    
}

/////////////////
// STATE CHANGE
function onStateChanged()
{
    // get state index
    var stateDDL = document.getElementById("state");
    var stateAbbreviation = stateDDL[stateDDL.selectedIndex].value;
    var stateIndex = IndexOfState(stateAbbreviation);

    UpdateStateDisplay(stateAbbreviation);
    FillRegionList(stateIndex);
    UpdateStateImage();
    UpdateRegionHints();
}

function UpdateStateDisplay(stateAbbreviation)
{
    var em = document.getElementById("regionStateLabel");
    if (em != null) em.innerHTML = VIP_State_AbbrToFull(stateAbbreviation);
}

function UpdateStateImage() {
    var stateElem = document.getElementById("state");
    var msg = VIP_State_AbbrToFull(stateElem.value);

    var em = document.getElementById("regionStateLabel");
    if (em != null) em.innerHTML = msg;

    var imageBoxElem = document.getElementById("stateImageBox");
    if (imageBoxElem != null)
    {
    imageBoxElem.style.backgroundImage = "url(images/states/" + pageColor + "/state_" + stateElem.value + ".gif)";
    }
}

function IndexOfState(stateName) {
    for (var i = 0; i < stateArray.length; i++) {
        if (stateArray[i] == stateName) {
            return i;
        }
    }
    return -1;
}

/////////////////
// REGION
function UpdateRegionList() {
    var calendarDDL = document.getElementById("state");
    var slectedText = calendarDDL.value;
    FillRegionList(IndexOfState(slectedText));
}

function FillRegionList(stateIndex) {
    var regionDDL = document.getElementById("region");
    regionDDL.length = 0;
    regionDDL.options.add(new Option("Any Region", ""));
    if (stateIndex == -1) {
        return;
    }
    var regionName = "";
    for (var i = 0; i < regionArray[stateIndex].length; i++) {
        regionName = regionArray[stateIndex][i];
        if (regionName != "" && regionName != null) {
            regionDDL.options.add(new Option(regionName, regionName));
        } else {
            return;
        }
    }
}

var regionRequired = false;

function UpdateRegionHints()
{
    // get state index
    var stateDDL = document.getElementById("state");
    var stateAbbreviation = stateDDL.value;
    var stateIndex = IndexOfState(stateAbbreviation);
    
    if (stateIndex > -1)
    {
    
        // does the state have multiple regions?
        var regionCount = regionArray[stateIndex].length;
        
        // does the state require region selection?
        var isBigState = false;
        isBigState = isBigState || (stateAbbreviation == "CA");
        isBigState = isBigState || (stateAbbreviation == "AZ");
        isBigState = isBigState || (stateAbbreviation == "FL");
        isBigState = isBigState || (stateAbbreviation == "IL");
        
        if (isBigState){
        var telem = document.getElementById("region");
        telem.options[0].text = "-- select region --";
        }
        
        regionRequired = isBigState;

        // now update display appropriately
        DisplayRegionSuggested(regionCount > 0, isBigState);
        DisplayRegionRequired(isBigState);
    }
    else {
        regionRequired = false;
    
        DisplayRegionSuggested(false, false);
        DisplayRegionRequired(false);
    }
    
}

function DisplayRegionSuggested(show, isBigState)
{
    var regionDDL = document.getElementById("region");
    if (regionDDL.selectedIndex > 0) show = false;
    
    var em1 = document.getElementById("regionWarning0");
    if (em1 != null) em1.style.display = (show) ? "" : "none" ;
    
    var em2 = document.getElementById("regionSuggestLabel");
    if (em2 != null) em2.innerHTML = (isBigState) ? "You must" : "We suggest you";
    
}

function DisplayRegionRequired(show)
{
    var em1 = document.getElementById("regionWarning1");
    var em2 = document.getElementById("regionWarning2");
    if (em1 != null) em1.style.display = (show) ? "" : "none";
    if (em2 != null) em2.style.display = (show) ? "" : "none" ;
}



function VIP_State_AbbrToFull(s) {
    switch (s) {
      case "AL":
        return "Alabama";
      case "AK":
        return "Alaska";
      case "AS":
        return "American Samoa";
      case "AZ":
        return "Arizona";
      case "AR":
        return "Arkansas";
      case "CA":
        return "California";
      case "CO":
        return "Colorado";
      case "CT":
        return "Connecticut";
      case "DE":
        return "Delaware";
      case "DC":
        return "DC";
      case "FM":
        return "Federated States Of Micronesia";
      case "FL":
        return "Florida";
      case "GA":
        return "Georgia";
      case "GU":
        return "Guam";
      case "HI":
        return "Hawaii";
      case "ID":
        return "Idaho";
      case "IL":
        return "Illinois";
      case "IN":
        return "Indiana";
      case "IA":
        return "Iowa";
      case "KS":
        return "Kansas";
      case "KY":
        return "Kentucky";
      case "LA":
        return "Louisiana";
      case "ME":
        return "Maine";
      case "MH":
        return "Marshall Islands";
      case "MD":
        return "Maryland";
      case "MA":
        return "Massachusetts";
      case "MI":
        return "Michigan";
      case "MN":
        return "Minnesota";
      case "MS":
        return "Mississippi";
      case "MO":
        return "Missouri";
      case "MT":
        return "Montana";
      case "NE":
        return "Nebraska";
      case "NV":
        return "Nevada";
      case "NH":
        return "New Hampshire";
      case "NJ":
        return "New Jersey";
      case "NM":
        return "New Mexico";
      case "NY":
        return "New York";
      case "NC":
        return "North Carolina";
      case "ND":
        return "North Dakota";
      case "MP":
        return "Northern Mariana Islands";
      case "OH":
        return "Ohio";
      case "OK":
        return "Oklahoma";
      case "OR":
        return "Oregon";
      case "PW":
        return "Palau";
      case "PA":
        return "Pennsylvania";
      case "PR":
        return "Puerto Rico";
      case "RI":
        return "Rhode Island";
      case "SC":
        return "South Carolina";
      case "SD":
        return "South Dakota";
      case "TN":
        return "Tennessee";
      case "TX":
        return "Texas";
      case "UT":
        return "Utah";
      case "VT":
        return "Vermont";
      case "VI":
        return "Virgin Islands";
      case "VA":
        return "Virginia";
      case "WA":
        return "Washington";
      case "WV":
        return "West Virginia";
      case "WI":
        return "Wisconsin";
      case "WY":
        return "Wyoming";
      default:
        return "unknown state";
    }
}

//////////////
// POSITIONING

    function findPosX(obj) {
        var curleft = 0;
        if (obj.offsetParent) {
            while (obj.offsetParent) {
                curleft += obj.offsetLeft;
                obj = obj.offsetParent;
            }
        } else if (obj.x) {
            curleft += obj.x;
        }
        return curleft;
    }


    function findPosY(obj) {
        var curtop = 0;
        if (obj.offsetParent) {
            while (obj.offsetParent) {
                curtop += obj.offsetTop;
                obj = obj.offsetParent;
            }
        } else if (obj.y) {
            curtop += obj.y;
        }
        return curtop;
    }

//////////////
// CALENDAR
    function CreateCalendar() {
        var xOffset = 28;
        var yOffset = 0;
        var calendarDDL = document.getElementById("CalendarIcon");
        var calendarDiv = document.getElementById("calendarPopupBox");
        calendarDiv.style.left = findPosX(calendarDDL) + xOffset + "px";
        calendarDiv.style.top = findPosY(calendarDDL) + yOffset + "px";
        calendarDiv.style.display = "none";
    }


    function ShowCalendar() {
        var calendarDiv = document.getElementById("calendarPopupBox");
        calendarDiv.style.display = "";
        UpdateContents("calendarPopupBox", WriteCalendar(currentMonth, currentYear));
        var e = window.event;
        if (e != null) {
            e.cancelBubble = true;
            if (e.stopPropigation) {
                e.stopPropigation();
            }
        }
    }


    function HideCalendar() {
        var calendarDiv = document.getElementById("calendarPopupBox");
        calendarDiv.style.display = "none";
    }

    function SetDay(month, day, year) {
        today.setMonth(month - 1);
        today.setDate(day);
        today.setYear(year);
        var calendarDDL = document.getElementById("date");
        var found = false;
        var i = 0;
        for (i = 0; i < calendarDDL.length; i++) {
            if (calendarDDL[i].value == month + "/" + day + "/" + year) {
                found = true;
                calendarDDL.selectedIndex = i;
            }
        }
        if (!found) {
            i++;
            calendarDDL.options.add(new Option(short_month_of_year[month - 1] + " " + day + ", " + year, month + "/" + day + "/" + year));
            CombSort(calendarDDL.options);
            SetDay(month, day, year);
        }
        HideCalendar();
        doHide = true;
    }

    function SetMonth(interval) {
        currentMonth += interval;
        if (currentMonth < 1) {
            currentMonth = 12;
            currentYear--;
        }
        if (currentMonth > 12) {
            currentMonth = 1;
            currentYear++;
        }
        UpdateContents("calendarPopupBox", WriteCalendar(currentMonth, currentYear));
        ShowCalendar();
    }
    
    function CombSort(ArrIn) {
        var top = ArrIn.length;
        var temp = new Option;
        var done = false;
        while (!done && top > 0) {
            top--;
            var currentDay = ArrIn[top].value.split("/");
            var previousDay = ArrIn[top - 1].value.split("/");
            flip = false;
            for (var p = 0; p < 3; p++) {
                currentDay[p] = parseFloat(currentDay[p]);
                previousDay[p] = parseFloat(previousDay[p]);
            }
            if (currentDay[2] < previousDay[2]) {
                flip = true;
            } else if (currentDay[2] == previousDay[2] &&
                currentDay[0] < previousDay[0]) {
                flip = true;
            } else if (currentDay[2] == previousDay[2] &&
                currentDay[0] == previousDay[0] &&
                currentDay[1] < previousDay[1]) {
                flip = true;
            } else {
                done = true;
            }
            if (flip) {
                var t = ArrIn[top - 1].text;
                var v = ArrIn[top - 1].value;
                ArrIn[top - 1].text = ArrIn[top].text;
                ArrIn[top - 1].value = ArrIn[top].value;
                ArrIn[top].text = t;
                ArrIn[top].value = v;
            }
        }
    }

function updateSelectedDate() {
    var calendarDDL = document.getElementById("date");
    today = new Date(calendarDDL.value + " 0:0:0");
}

//////////////
// MISC HELPERS
    function selectByValue(elem, value) {
        var opt, i = 0;
        while ((opt = elem.options[i++])) {
            if (opt.value == value) {
                opt.selected = true;
                return;
            }
        }
    }

function UpdateContents(divName, contents) {
    if (use_gebi) {
        document.getElementById(divName).innerHTML = contents;
        document.getElementById(divName).style.padding = "0px";
    } else if (use_css) {
        document.all[divName].innerHTML = contents;
    } else if (use_layers) {
        var d = document.layers[divName];
        d.document.open();
        d.document.writeln(contents);
        d.document.close();
    }
}



/*









//////////////
// OLD CODE

    var StateIsSelected = false;
    var RegionIsSelected = false;
    var CourseNameExists = false;
    var showRegionWarning = false;
    var canSubmit = false;
    var regionArray = new Array(50);
    for (var i = 0; i < regionArray.length; i++) {
        regionArray[i] = new Array(10);
    }
    var stateArray = new Array(50);

    function preregion() {
        var regionDDL = document.getElementById("region");
        var hiddenRegion = document.getElementById("regionValue");
        selectByValue(regionDDL, hiddenRegion.value);
    }
















    var doHide = true;




    function showSearching() {
        var scrollTop = 0;
        if (navigator.appName == "Microsoft Internet Explorer") {
            scrollTop = document.body.scrollTop;
        } else {
            scrollTop = window.pageYOffset;
        }
        scrollTop += 150;
        document.getElementById("searchingNotification").style.top = scrollTop + "px";
        document.getElementById("searchingNotification").style.display = "";
    }




    function suggestState() {
        StateRegionNameCheck();
    }

    function suggestRegion() {
        StateRegionNameCheck();
    }

    function StateRequiresRegion() {
        var stateDDL = document.getElementById("state");
        var bigStateCount = 4;
        var bigStates = new Array(bigStateCount);
        bigStates[0] = "CA";
        bigStates[1] = "AZ";
        bigStates[2] = "FL";
        bigStates[3] = "IL";
        for (var i = 0; i < bigStateCount; i++) {
            if (stateDDL.value == bigStates[i]) {
                return true;
            }
        }
        return false;
    }


    function StateRegionNameCheck() {
        var stateDDL = document.getElementById("state");
        var regionDDL = document.getElementById("region");
        var courseNameTextBox = document.getElementById("courseName");
        StateIsSelected = stateDDL.selectedIndex > 0;
        RegionIsSelected = regionDDL.selectedIndex > 0;
        CourseNameExists = courseNameTextBox.value.length > 0;
        if (CourseNameExists) {
            if (!StateIsSelected) {
                showRegionWarning = false;
                showStateWarning = true;
                canSubmit = false;
            } else {
                showRegionWarning = false;
                showStateWarning = false;
                canSubmit = true;
            }
        } else {
            if (!StateIsSelected) {
                canSubmit = false;
                showStateWarning = true;
                showRegionWarning = false;
            } else {
                if (RegionIsSelected) {
                    canSubmit = true;
                    showStateWarning = false;
                    showRegionWarning = false;
                } else {
                    if (StateRequiresRegion()) {
                        canSubmit = false;
                        showStateWarning = false;
                        showRegionWarning = true;
                    } else {
                        canSubmit = true;
                        showStateWarning = false;
                        showRegionWarning = false;
                    }
                }
            }
        }
        showWarnings();
        return canSubmit;
    }


    function showWarnings() {
        var stateDDL = document.getElementById("state");
        if (showRegionWarning) {
            showMultiRegionWarning();
            document.getElementById("regionWarning1").style.display = "";
            document.getElementById("regionWarning2").style.display = "";
        } else {
            hideMultiRegionWarning();
            document.getElementById("regionWarning1").style.display = "none";
            document.getElementById("regionWarning2").style.display = "none";
        }
    }

    function hideSuggestRegion() {
        var regionDDL = document.getElementById("region");
        if (regionDDL.selectedIndex > 0) {
            hideMultiRegionWarning();
            document.getElementById("regionWarning1").style.display = "none";
            document.getElementById("regionWarning2").style.display = "none";
        }
    }
    
    function showMultiRegionWarning()
    {
        document.getElementById("regionWarning0").style.display = "";
    }

    function hideMultiRegionWarning()
    {
        document.getElementById("regionWarning0").style.display = "none";
    }


    function SearchCourse(courseName) {
        var courseNameElem = document.getElementById("courseName");
        courseNameElem.value = courseName;
        if (submitSearch()) {
            document.getElementById("ImageButtonSearch").click();
        }
    }




























    function pageClicked() {
        HideCalendar();
    }
    */