﻿// JScript File

function regionNavTo(oRef)
{
    if(oRef.value != "")
    {
        if(oRef.options[oRef.selectedIndex].text.substring(0, 2) == "In")
            window.location.href = "area.aspx?id=" + oRef.value;
        else
            window.location.href = "community.aspx?id=" + oRef.value;
    }
}

// Homepage Tabbed Communities Linking via Select dropdowns
function tabbedNavTo(regURL, oRef)
{
    if(oRef.value != "")
    {
        if(oRef.options[oRef.selectedIndex].text.substring(0, 2) == "In")
            window.location.href = regURL + "area.aspx?id=" + oRef.value;
        else
            window.location.href = regURL + "community.aspx?id=" + oRef.value;
    }
}


// Ajax support functions
function SplitSource(sVal, sDelimiter)
{
    var sErrMsg = "Error extracting values: " + sVal;
    
    if (sVal.indexOf(sDelimiter) != -1)
    {
        var aRetVal = sVal.split(sDelimiter);
        
        if (aRetVal.length > 0)
            return aRetVal;
        else
            throw sErrMsg;
    }
    else
    {
        if (sVal.indexOf("Data error--") == 0)
            throw sErrMsg;
        else
            return sVal;
    }
}

function InitSelect()
{
    var iCnt;
    var iOptionCnt;
    
    try
    {
        for (iCnt = 0; iCnt < arguments.length; iCnt++)
        {
            for (iOptionCnt = arguments[iCnt].options.length; iOptionCnt >= 0; iOptionCnt--)
            {
                arguments[iCnt].options[iOptionCnt] = null;
            }
            arguments[iCnt].options[0] = new Option("Loading...");
        }
    }
    catch (e) { throw "Error clearing Select boxes"; }
}

function updateAreaList(oRegionRef)
{
    var oRefAreaListContainer = document.getElementById("areaListSelect");
    
    if(oRegionRef.selectedIndex == 0)
    {
        oRefAreaListContainer.style.display = "none";
    }
    else
    {
        oRefAreaListContainer.style.display = "block";
        var oRefAreaListTitle = document.getElementById("areaListTitle");
        oRefAreaListTitle.innerHTML = "Where in " + oRegionRef.options[oRegionRef.selectedIndex].text + "?";
    }
        
    var responseSuccess = function(oResp)
    {
        try
        {
            var oAreaRef = document.getElementById("areaList");
            InitSelect(oAreaRef);
            aVals = SplitSource(oResp.responseText, "|");
            
            if (typeof(aVals) == "string")
            {
                aNameValue = aVals.split("=");
                oAreaRef.disabled = false;
                oAreaRef.options[0] = null;
                oAreaRef.options[0] = new Option(aNameValue[0], aNameValue[1], true);
            }
            else
            {
                oAreaRef.disabled = false;
                oAreaRef.options[0] = new Option("No Preference", "0", false);
                for (iCnt = 0; iCnt < aVals.length; iCnt++)
                {
                    aNameValue = aVals[iCnt].split("=");
                    oAreaRef.options[oAreaRef.options.length] = new Option(aNameValue[0], aNameValue[1], false);
                }
            }
        }
        catch (e)
        {
            alert(e);
        }
        updateTotalsCorp();
    };
    
    var responseFailure = function(oResp)
    {
        alert(oResp.statusText);
    }
    
    var callback =
    {
      success:responseSuccess,
      failure:responseFailure
    };
    
    var transactionCities = YAHOO.util.Connect.asyncRequest('GET', '/utilities/find_arealist.aspx?region=' + oRegionRef.value, callback, null);
}

function updateTotalsCorp()
{
    if(arguments.length > 0)
        var oContainerRef = document.getElementById(arguments[0]);
    else
        var oContainerRef = document.getElementById("containerContent");

    var sRetVal = "";
    
    if (oContainerRef)
    {
        aSelects = oContainerRef.getElementsByTagName("select");
        
        if (aSelects.length > 0)
        {
            for(x=0;x<aSelects.length;x++)
            {
                if(sRetVal.length > 0)
                    sRetVal += "&amp;";
                sRetVal += aSelects[x].name + "=" + aSelects[x].value;
            }
            searchHomes(sRetVal);
        }
    }
}

function searchHomes(qsVal)
{
    var responseSuccess = function(oResp)
    {
        try
        {
            var result1Ref = document.getElementById("displayTotals1");
            var result2Ref = document.getElementById("displayTotals2");
            
            result1Ref.innerHTML = oResp.responseText;
            result2Ref.innerHTML = oResp.responseText;
        }
        catch (e)
        {
            alert(e);
        }
    };
    
    var responseFailure = function(oResp)
    {
        alert(oResp.statusText);
    }
    
    var callback =
    {
      success:responseSuccess,
      failure:responseFailure
    };
    
    var transactionCities = YAHOO.util.Connect.asyncRequest('GET', '/utilities/find_properties.aspx?' + qsVal, callback, null);
}

function ProcessForm(sFrm, sContainerName)
{
    var oRef = document.getElementById(sContainerName);
    var oFldRef = null;
    var bHasErr = false;
    var sData = "";
    
    if(oRef)
    {
        switch(sFrm)
        {
            case "GFI":
                //validate
                resetErrMsgs("validatorFirstName","validatorLastName","validatorEmail","validatorPhone");
                oFldRef = document.getElementById("firstName");
                if(isBlank(oFldRef.value))
                {
                    showErrMsg("validatorFirstName");
                    bHasErr = true;
                }
                else
                    sData += "firstName=" + escape(oFldRef.value);
                
                oFldRef = document.getElementById("lastName");
                if(isBlank(oFldRef.value))
                {
                    showErrMsg("validatorLastName");
                    bHasErr = true;
                }
                else
                    sData += "&lastName=" + escape(oFldRef.value);
                
                oFldRef = document.getElementById("emailAddress");
                if(!isValidEmail(oFldRef.value))
                {
                    showErrMsg("validatorEmail");
                    bHasErr = true;
                }
                else
                    sData += "&emailAddress=" + escape(oFldRef.value);
                
                oFldRef = document.getElementById("phoneNumber");
                if(!isBlank(oFldRef.value))
                {
                    if(!isValidUSPhone(oFldRef.value))
                    {
                        showErrMsg("validatorPhone");
                        bHasErr = true;
                    }
                    else
                        sData += "&phoneNumber=" + escape(oFldRef.value);
                }
                
                oFldRef = document.getElementById("cid");
                if(!isBlank(oFldRef.value))
                {
                    sData += "&cid=" + oFldRef.value;
                }
                
                if(!bHasErr)
                    ProcessFormData(sData, sContainerName, "cntrGFIStatus", "cntrGFIResult", "/utilities/form_gfi.aspx");
                break;
            
            case "RFI1":
                //validate
                resetErrMsgs("validatorName","validatorEmail","validatorPhone");
                oFldRef = document.getElementById("rfi1Name");
                if(isBlank(oFldRef.value))
                {
                    showErrMsg("validatorName");
                    bHasErr = true;
                }
                else
                    sData += "rfi1Name=" + escape(oFldRef.value);
                
                oFldRef = document.getElementById("rfi1EmailAddress");
                if(!isValidEmail(oFldRef.value))
                {
                    showErrMsg("validatorEmail");
                    bHasErr = true;
                }
                else
                    sData += "&rfi1EmailAddress=" + escape(oFldRef.value);
                
                oFldRef = document.getElementById("rfi1PhoneNumber");
                if(!isValidUSPhone(oFldRef.value))
                {
                    showErrMsg("validatorPhone");
                    bHasErr = true;
                }
                else
                    sData += "&rfi1PhoneNumber=" + escape(oFldRef.value);
                
                oFldRef = document.getElementById("hid");
                if(!isBlank(oFldRef.value))
                {
                    sData += "&hid=" + oFldRef.value;
                }
                
                oFldRef = document.getElementById("hIsRental");
                if(!isBlank(oFldRef.value))
                {
                    sData += "&hIsRental=" + oFldRef.value;
                }
                
                if(!bHasErr)
                    ProcessFormData(sData, sContainerName, "cntrRFI1Status", "cntrRFI1Result", "/utilities/form_rfi.aspx");
                break;
            
            case "RFI2":
                //validate
                resetErrMsgs("validatorYourEmail","validatorFriendEmail");
                oFldRef = document.getElementById("rfi2YourName");
                if(!isBlank(oFldRef.value))
                    sData += "rfi2YourName=" + escape(oFldRef.value);
                
                oFldRef = document.getElementById("rfi2YourEmail");
                if(!isValidEmail(oFldRef.value))
                {
                    showErrMsg("validatorYourEmail");
                    bHasErr = true;
                }
                else
                    sData += "&rfi2YourEmail=" + escape(oFldRef.value);
                
                oFldRef = document.getElementById("rfi2FriendsName");
                if(!isBlank(oFldRef.value))
                    sData += "&rfi2FriendsName=" + escape(oFldRef.value);
                
                oFldRef = document.getElementById("rfi2FriendsEmail");
                if(!isValidEmail(oFldRef.value))
                {
                    showErrMsg("validatorFriendEmail");
                    bHasErr = true;
                }
                else
                    sData += "&rfi2FriendsEmail=" + escape(oFldRef.value);
                
                oFldRef = document.getElementById("hid");
                if(!isBlank(oFldRef.value))
                {
                    sData += "&hid=" + oFldRef.value;
                }
                
                oFldRef = document.getElementById("hIsRental");
                if(!isBlank(oFldRef.value))
                {
                    sData += "&hIsRental=" + oFldRef.value;
                }
                
                if(!bHasErr)
                    ProcessFormData(sData, sContainerName, "cntrRFI2Status", "cntrRFI2Result", "/utilities/form_rfi2.aspx");
                break;
        }
    }
}

function ProcessFormData(sData, sContainerName, sStatusContainerName, sResultContainerName, sUrl)
{
    var oRefContainer = document.getElementById(sContainerName);
    var oRefStatus = document.getElementById(sStatusContainerName);
    var oRefResult = document.getElementById(sResultContainerName);
    
    oRefContainer.style.display = "none";
    oRefStatus.style.display = "block";
    
    var responseSuccess = function(oResp)
    {
        try
        {
            oRefStatus.style.display = "none";
            oRefResult.style.display = "block";
            
            switch(sResultContainerName)
            {
                case "cntrGFIResult":
                    pageTracker._trackPageview("/Community/GetFurtherInformationFormResponse");
                    break;
                case "cntrRFI1Result":
                    pageTracker._trackPageview("/AvailableHome/RequestFurtherInformationFormResponse");
                    break;
                case "cntrRFI2Result":
                    pageTracker._trackPageview("/AvailableHome/EmailFriendFormResponse");
                    break;
            }
        }
        catch (e)
        {
            //alert(e);
            oRefStatus.style.display = "none";
            oRefResult.innerHTML = e;
            oRefResult.style.display = "block";
        }
    };
    
    var responseFailure = function(oResp)
    {
        //alert(e);
        oRefStatus.style.display = "none";
        oRefResult.innerHTML = e;
        oRefResult.style.display = "block";
    }
    
    var callback =
    {
      success:responseSuccess,
      failure:responseFailure
    };
    
    var transactionCities = YAHOO.util.Connect.asyncRequest("POST", sUrl, callback, sData);
}


// data validation support functions
function showErrMsg(sId)
{
    try
    {
        var oRef = document.getElementById(sId);
        oRef.style.display = "block";
    }
    catch(e)
    {
        alert(e);
    }
}

function resetErrMsgs()
{
    for(var cnt = 0; cnt < arguments.length; cnt++)
    {
        try
        {
            var oRef = document.getElementById(arguments[cnt]);
            oRef.style.display = "none";
        }
        catch (e)
        {
            alert(e);
        }
    }
}

function isValidUSPhone(sVal)
{
    PhoneRegEx1 = /^((\+\d{1,3}(-| )?\(?\d\)?(-| )?\d{1,5})|(\(?\d{2,6}\)?))(-| )?(\d{3,4})(-| )?(\d{4})(( *x| *ext\.?)\s?\d{1,5}){0,1}$/;
    PhoneRegEx2 = /^((\+\d{1,3}\.?\(?\d\)?\.?\d{1,5})|(\(?\d{2,6}\)?))\.?(\d{3,4})\.?(\d{4})(( *x| *ext\.?)\s?\d{1,5}){0,1}$/;
    return (PhoneRegEx1.test(sVal) || PhoneRegEx2.test(sVal))
}

function isValidEmail(sVal)
{
	// match an Email, with 1 @ and at least one . with at least one alpha character after it
	EmailRegEx = /^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;
	return EmailRegEx.test(sVal);
}

function isBlank(sVal)
{
	// match an Email, with 1 @ and at least one . with at least one alpha character after it
	BlankRegEx = /[A-Za-z0-9]+/;
	return !BlankRegEx.test(sVal);
}


/* Elevation Viewer Support Functions */
function GetElImg(val)
{
    var oImg = new Image();
    oImg.src = val;
    return oImg;
}

function ElevationNavigator(id, imgpath)
{
    this.elevImg = GetElImg(imgpath);
    this.elevNav = '<img src="/images/ui/icon-' + id + '.gif" width="14" height="14" alt="' + id + '" onmouseout="this.src=\'/images/ui/icon-' + id + '.gif\';" onmouseover="this.src=\'/images/ui/icon-' + id + '-r.gif\';" />';
    this.elevNavR = '<img src="/images/ui/icon-' + id + '-r.gif" width="14" height="14" alt="' + id + '" />';
}

function showelevation(target)
{
    //alert(currNavSelItm.innerHTML);
    imageSrc = aEls[target.id].elevImg.src;
    target.innerHTML = aEls[target.id].elevNavR;
    currNavSelItm.innerHTML = aEls[currNavSelItm.id].elevNav;
    currNavSelItm = target;
    setTimeout("setimage()", 50);
}

function setimage()
{
    var ref = document.getElementById("imgElevation");
    ref.src = imageSrc;
}