﻿var ROW_HEIGHT_RECORD = 18;
var ROWS_MINIMUM = 3;

var XML_SEARCH = "Search";
var XML_POSTCODE = "Postcode";

function getPostcode(region, suburb)
{
    xmlSource = XML_POSTCODE;
    processXMLHttpResult(loadXMLDoc("EmergencyContacts.asp?GetHTML=GetPostcode&Region=" + region + "&Suburb=" + suburb, false));
}

function init()
{
    displaySection("divLogoutButton", false);
    displaySection("spanUsernameDisplay", false);

    document.getElementById("imgLogo").src = "../Images/dbyd_logo_small.png";
    document.getElementById("Suburb").focus();
}

function setFooterPosition(top)
{
    if (top == "")
    {
        var rows = 0;

        if (document.getElementById("tblResults") != null)
            rows = document.getElementById("tblResults").rows.length;
    
        if (rows > ROWS_MINIMUM)
            top = DEFAULT_FOOTER_TOP + ((rows - ROWS_MINIMUM) * ROW_HEIGHT_RECORD);
    }

    if (top != "")
        document.getElementById("divFooter").style.top = top + "px";
}

function displayErrorMessage(message, display)
{
    setFooterPosition("");

    setErrmsg(message);
    document.getElementById("divErrmsg").style.display = display;
}

function getSearchResultsViaXML()
{
    xmlSource = XML_SEARCH;

    // Clear the results.
    setErrmsg("Performing search now.  Please wait...");
    setErrorPanelTitle("");
    
    loadXMLDoc("getEmergencyContacts.asp?Region=" + document.getElementById("Region").value
                                                    + "&Suburb=" + document.getElementById("Suburb").value
                                                    + "&Postcode=" + document.getElementById("hdnPostcode").value, true);
}

function processXMLHttpResult(responseText)
{
    switch (xmlSource)
    {
        case XML_POSTCODE:
            fillInPostcode(responseText);
            break;

        case XML_SEARCH:
            if (responseText != "NOTHING")
            {
                document.getElementById("divResultsContent").innerHTML = responseText;
                displayErrorMessage("", "none");
                setErrorPanelTitle("");
            }
            else
            {
                displayErrorMessage("No records found", "");
                setErrorPanelTitle("");
            }
            
            break;
    }
}

function processXMLHttpResultError()
{
    switch (xmlSource)
    {
        case XML_SEARCH:
            displayErrorMessage("Error retrieving emergency contacts.", "");
            setErrorPanelTitle("");
            break;

        case XML_POSTCODE:
            displayErrorMessage("Error retrieving postcode.", "");
            setErrorPanelTitle("");
            break;
    }
}

function fillInPostcode(postcodes)
{
    if (postcodes == "")
    {
        document.getElementById("Postcode").value = "Not Found";
    }
    else
    {
        var postcodeList = postcodes.split(cGlobalDelim);

        if (postcodeList.length == 1)
        {
            var values = postcodeList[0].split(cColDelim);
            
            var isCorrectSuburbFound = values[0] == document.getElementById("Suburb").value;
            isCorrectSuburbFound = isCorrectSuburbFound && values[2] == document.getElementById("Region").value;

            // Check if the suburb found matches what was entered.
            if (isCorrectSuburbFound && (document.getElementById("Postcode").value == "" || values[1] == document.getElementById("Postcode").value))
            {
                document.getElementById("hdnPostcode").value = values[1];
                getSearchResultsViaXML();
            }
            else
            {
                fillInMultiplePostcodes(postcodeList);
                setFooterPosition(700);
            }
        }
        else
        {
            fillInMultiplePostcodes(postcodeList);
            setFooterPosition(700);
        }
    }
}

function fillInMultiplePostcodes(postcodes)
{
    var values;

    displaySection("divPostcodeSelectPlace", true);
    clearSelect("SuburbList");
    
    for (var index = 0; index < postcodes.length; index++)
    {
        values = postcodes[index].split(cColDelim);
        createOption("SuburbList", values[0] + cColDelim + values[1], convertProper(values[0]) + " " + values[1] + ", " + document.getElementById("Region").value);
    }
}

function closePostcodeSelectPanel()
{
    displaySection("divPostcodeSelectPlace", false);
    setFooterPosition(DEFAULT_FOOTER_TOP);
}

function fillInSuburbAndPostcode(value)
{
    var values = value.split(cColDelim);
    
    document.getElementById("Suburb").value = values[0];
    document.getElementById("Postcode").value = values[1];

    clearSelect("SuburbList");
    closePostcodeSelectPanel()
}

function submitForm()
{
    removeTableRows(document.getElementById("tblResults"), 1);
    closePostcodeSelectPanel();
    setFooterPosition(DEFAULT_FOOTER_TOP);

    if (document.getElementById("Postcode").value == "")
    {
	    if (document.getElementById("Region").value == "NULL" && document.getElementById("Suburb").value == "")
	    {
	        displayErrorMessage("Please select either a Suburb/Town and Region, or a Postcode.");
	        setErrorPanelTitle("Action required.");
		    return false;
	    }
	    else
	    {
	        getPostcode(document.getElementById("Region").value, document.getElementById("Suburb").value);
        }
    }
    else
    {
        if (document.getElementById("Region").value != "NULL" && document.getElementById("Suburb").value != "")
        {
            getPostcode(document.getElementById("Region").value, document.getElementById("Suburb").value);
        }
        else
        {
            document.getElementById("hdnPostcode").value = document.getElementById("Postcode").value;
            getSearchResultsViaXML();
        }
    }
}

function resetPage()
{
    removeTableRows(document.getElementById("tblResults"), 1);
    document.getElementById("frmEmerEnq").reset()
    setErrmsg("");
    setFooterPosition(DEFAULT_FOOTER_TOP);
    closePostcodeSelectPanel();
    document.getElementById("Suburb").focus();
}