/* #########################################################################################################

	Namespace : NRT
	Classes   : Namespace
	Summary	  : This file defines the javascript namespaces for the NRT Property Search project.
	Copyright : (c) 2006 NRT Inc. All rights reserved.

	RevisionHistory: 
	-----------------------------------------------------------------------------------------------------------------------------
	Date				Name							Description
	-----------------------------------------------------------------------------------------------------------------------------
	12/06/2006	dlawless			 		Created
	
###########################################################################################################*/

NRT.namespace('MySite');
NRT.namespace('MySite.Validation');
NRT.namespace('MySite.Validation.Utility');
/*******************************************************************************************************************
*									P U B L I C   C O N S T A N T S
*******************************************************************************************************************/
//Common
NRT.MySite.Validation.MESSAGE_EMAIL_REQUIRED = 'Please enter your E-mail Address.';
NRT.MySite.Validation.MESSAGE_EMAIL_INVALID = 'Invalid E-Mail address format. Please enter a valid E-Mail Address.';
NRT.MySite.Validation.MESSAGE_PASSWORD_REQUIRED = 'Please enter a Password.';
NRT.MySite.Validation.MESSAGE_PASSWORD_INVALID = 'Invalid password.  Passwords cannot contain special characters (spaces, periods, dashes, etc.) and must be at least 5 characters long.';
NRT.MySite.Validation.MESSAGE_FIRSTNAME_REQUIRED = 'Please enter your First Name.';
NRT.MySite.Validation.MESSAGE_LASTNAME_REQUIRED = 'Please enter your Last Name.';
NRT.MySite.Validation.MESSAGE_ADDRESS_REQUIRED = 'Please enter your current Address.';
NRT.MySite.Validation.MESSAGE_CITY_REQUIRED = 'Please enter your current City.';
NRT.MySite.Validation.MESSAGE_PASSWORDCONFIRM_REQUIRED = 'Please re-enter your password.';
NRT.MySite.Validation.MESSAGE_PASSWORDCONFIRM_NOMATCH = 'Your password test failed - please enter your password again.';
NRT.MySite.Validation.MESSAGE_ZIPCODE_REQUIRED = 'Please enter your current Zip Code.';
NRT.MySite.Validation.MESSAGE_ZIPCODE_OR_ZIP_CHECKBOX_REQUIRED = 'You have not entered a Zip Code. Either enter a Zip Code or check the \'I currently reside outside of the U.S.\' checkbox.';
NRT.MySite.Validation.MESSAGE_ZIPCODE_INVALID = 'Invalid Zip Code.';
NRT.MySite.Validation.MESSAGE_PHONENUMBER_INVALID = 'Please enter a valid Phone Number.';

//Authentication
NRT.MySite.Validation.MESSAGE_AUTHENTICATIION_LOGININVALID = 'Sign In Failed.<br>Please enter a valid E-Mail Address and Password, or click "Sign Up" if you have not yet signed up.';
NRT.MySite.Validation.MESSAGE_AUTHENTICATIION_LOGINFAILED = 'A system problem occurred, Sign In Failed';
//NRT.MySite.Validation.MESSAGE_AUTHENTICATIION_ACCOUNT_INVALIDSTATUS = 'This account has been disabled.';
NRT.MySite.Validation.MESSAGE_AUTHENTICATIION_SAVEDSEARCH_NOTSELECTED = 'Your must select a saved search before continuing to a saved search.';
NRT.MySite.Validation.MESSAGE_AUTHENTICATIION_SEARCHOPTION_NOTSELECTED = 'Your must select a search option before continuing to a saved search.';
NRT.MySite.Validation.MESSAGE_AUTHENTICATIION_COOKIE_EXPIRATION = 'Your session has expired. You will be redirected to the login page.';

//Login
NRT.MySite.Validation.MESSAGE_LOGIN_EMAIL_REQUIRED = 'Please enter a valid E-mail Address.';
NRT.MySite.Validation.MESSAGE_LOGIN_EMAIL_INVALID = 'Sign In Failed.<br>Please enter a valid E-Mail Address and Password, or click "Sign Up" if you have not yet signed up.';
NRT.MySite.Validation.MESSAGE_LOGIN_PASSWORD_REQUIRED = 'Please enter the Password you registered with.';
NRT.MySite.Validation.MESSAGE_LOGIN_REQUESTPASSWORD_SUCCESS = 'Your password has been sent.';
NRT.MySite.Validation.MESSAGE_LOGIN_REQUESTPASSWORD_EMAILNOTFOUND = 'The email address you entered could not be found.';
NRT.MySite.Validation.MESSAGE_LOGIN_REQUESTPASSWORD_FAILED = 'A system problem occurred, your password request could not be sent.';

//MyAccount
NRT.MySite.Validation.MESSAGE_MYACCOUNT_DISABLE = 'Are you sure you want to Disable your account?  You will lose any Saved Searches, Saved Properties, and E-Mail Alert preferences you have setup.';
NRT.MySite.Validation.MESSAGE_MYACCOUNT_REMOVEPREFERAGENT = 'Are you sure you want to remove your Preferred Agent?';
NRT.MySite.Validation.MESSAGE_MYACCOUNT_REMOVEPREFERTEAM = 'Are you sure you want to remove your Preferred Team?';
NRT.MySite.Validation.MESSAGE_MYACCOUNT_SAVESUCCESSFULL = 'Your Account changes have been saved.';
NRT.MySite.Validation.MESSAGE_MYACCOUNT_SAVEFAILED = 'A system problem occurred, your account information could not be saved.';

//Registration
NRT.MySite.Validation.REGISTRATION_MINLENGTH = 5;
NRT.MySite.Validation.MESSAGE_REGISTRATION_ACCOUNT_EXISTS = 'An account already exists for this email address, please enter a different email address and try again.';
NRT.MySite.Validation.MESSAGE_REGISTRATION_SENDEMAIL_SUCCESS = 'Thank you for registering.';
NRT.MySite.Validation.MESSAGE_REGISTRATION_FAILED = 'A system problem occurred, please try again.';

// Save Property
NRT.MySite.Validation.MESSAGE_SAVEPROPERTY_PROPERTY_DUPLICATE = 'This property has already been saved.\r\nWould you like to delete this listing and continue?';
NRT.MySite.Validation.MESSAGE_SAVEPROPERTY_PROPERTY_DELETE_ERROR = 'We are unable to delete this property listing time.  Please try again later.';

// Save Search
NRT.MySite.Validation.MESSAGE_SAVESEARCH_SEARCHNAME_DUPLICATE = 'This search name already exists.';
NRT.MySite.Validation.MESSAGE_SAVESEARCH_SEARCHNAME_REQUIRED = 'Please enter a Saved Search Name.';
NRT.MySite.Validation.MESSAGE_SAVESEARCH_SEARCHNAME_INVALIDCHARS = 'The search name cannot contain the following special characters:';
NRT.MySite.Validation.MESSAGE_SAVESEARCH_SEARCHNAME_INVALID = 'Please re-enter a valid search name.';

//My Saved Searches
NRT.MySite.Validation.MESSAGE_DELETE_MY_SAVED_SEARCH = 'Are you sure you want to delete this saved search?';

//My Saved Properties
NRT.MySite.Validation.MESSAGE_DELETE_MY_SAVED_PROPERTY = 'Are you sure you want to delete this saved property?';

// Limit Reached
NRT.MySite.Validation.MESSAGE_LIMITREACHED_SS_NONESELECTED = 'No Saved Searches have been selected, please check at least one to delete then try again.';
NRT.MySite.Validation.MESSAGE_LIMITREACHED_SP_NONESELECTED = 'No Saved Properties have been selected, please check at least one to delete then try again.';


// Alert Preferences
NRT.MySite.Validation.MESSAGE_MY_ALERT_PREFERENCES_SAVED = 'Your E-Mail Alert preferences have been saved.';
NRT.MySite.Validation.MESSAGE_MY_ALERT_PREFERENCES_ERROR = 'We are unable to save your alert settings. Please try again later.';

// Email Recipients
NRT.MySite.Validation.MESSAGE_EMAIL_RECIPIENTS_INVALID_EMAIL = 'You must have valid emails in your additional recipients list.';
NRT.MySite.Validation.MESSAGE_EMAIL_RECIPIENTS_MAX = 'You can only enter up to 2 Additional Recipients.';



/* ##########################################################################################################################

    Namespace : NRT.MySite.Validation
    Classes   : Utility
    Summary	  : Contains all the scripts to handle the client side for the NRT MySite Validation functionality.
    Copyright : (c) 2006 NRT Inc. All rights reserved.

    RevisionHistory: 
    -------------------------------------------------------------------------------------------------------------------------
    Date		Name		Description
    -------------------------------------------------------------------------------------------------------------------------
    04/14/2007	dlawless	Initial Creation

###########################################################################################################################*/
NRT.MySite.Validation.Utility = function ()
{
    return {
        /******************************************************************************************************************
        *									P U B L I C   M E T H O D S
        *******************************************************************************************************************/
        /*==================================================================================
            Method		: closeInvalidEmailWindow
            Summary		: Closes the Invalid Email layered page.
            Author		: Dale Lawless
            Create Date	: 12/06/2007
        ====================================================================================*/
        closeInvalidEmailWindow: function () 
        {
            var DialogID = null;
            
            try
            {
                DialogID = "infoDialog_" + _WinTitle_InvalidEmailRecipient.replace(" ","_");
                _oUtility.closeLayeredPage(DialogID); 
            }
            catch(err)
            {
                _oErrorHandler.Error('NRT.MySite.Validation.Utility.closeInvalidEmailWindow', _oErrorHandler.ERRORTYPE_JS, err);
                return;
            }
        },

        /*==================================================================================
            Method		: closeInvalidSearchNameWindow
            Summary		: Closes the Invalid Email layered page.
            Author		: Dale Lawless
            Create Date	: 12/06/2007
        ====================================================================================*/
        closeInvalidSearchNameWindow: function () 
        {
            var DialogID = null;
            
            try
            {
                DialogID = "infoDialog_" + _WinTitle_InvalidSearchName.replace(" ","_");
                _oUtility.closeLayeredPage(DialogID); 
            }
            catch(err)
            {
                _oErrorHandler.Error('NRT.MySite.Validation.Utility.closeInvalidSearchNameWindow', _oErrorHandler.ERRORTYPE_JS, err);
                return;
            }
        },
        
        /*==================================================================================
            Method		: displayInvalidEmailMessage
            Summary		: Displays the invalid save search name message with the description 
                          for the  valid zip code format and zip code ranges.
            Author		: Dale Lawless
            Create Date	: 04/17/2007
        ====================================================================================*/
        displayInvalidEmailMessage : function (Email) 
        {  
            var sHTML = '';
                    
            try
            {
                //contents
                sHTML += "<table style='border:0px; padding:0px; WIDTH:" + (_WinW_InvalidEmailRecipient - 10) + "px;'>";
                sHTML += "<tr>";
                sHTML += "<td class='text'>";
                sHTML += " <label class='textbold'>Invalid Email Address</label>";
                sHTML += "</td>";
                sHTML += "</tr>";
                sHTML += "<tr>";
                sHTML += "<td class='text'>";
                sHTML += Email;
                sHTML += "</td>";
                sHTML += "</tr>";
                sHTML += "<tr>";
                sHTML += "<td class='text'>";
                sHTML += "";
                sHTML += "</td>";
                sHTML += "<tr>";
                sHTML += "<td class='text'>";
                sHTML += NRT.MySite.Validation.MESSAGE_EMAIL_RECIPIENTS_INVALID_EMAIL;
                sHTML += "</td>";
                sHTML += "</tr>";
                sHTML += "</tr>";
                sHTML += "<tr>";
                sHTML += "<td>";
                sHTML += "<TABLE style='padding:0px; border:0px; width:100%;'>";
                sHTML += "<TR>";
                sHTML += "<td style='height:9px;' class='separatorLineH'>";
                sHTML += "<img src='/NRTProducts/include/images/common_spacer.gif' border='0' width='100%' height='9'>";
                sHTML += "</td>";
                sHTML += "</TR>";
                sHTML += "</TABLE>";
                sHTML += "</td>";
                sHTML += "</tr>";
                sHTML += "<tr>";
                sHTML += "<td style='text-align:center;'>";
                sHTML += "<img id='" + _DefFocusItemID_InvalidEmailRecipient +"' border='0' class='pointer' src='/NRTProducts/include/images/btnOK.gif'";
                sHTML += " onmouseover=\"javascript:NRT.Utility.flipButton(this,1);\" onmouseout=\"javascript:NRT.Utility.flipButton(this,0);\"";
                sHTML += " onclick=\"javascript:NRT.MySite.Validation.Utility.closeInvalidEmailWindow();this.onblur=null;\" onblur=\"javascript:this.focus();\">";
                sHTML += "</td>";
                sHTML += "</tr>";
                sHTML += "</table>";
                //end of content

                _oUtility.showInfo(sHTML, _WinW_InvalidEmailRecipient, _WinTitle_InvalidEmailRecipient, _DefFocusItemID_InvalidEmailRecipient);
                return;
            }
            catch(err)
            {
                _oErrorHandler.Error('NRT.MySite.Validation.Utility.displayInvalidEmailMessage', _oErrorHandler.ERRORTYPE_JS, err);
                return;
            }
        },
        
        /*==================================================================================
            Method		: displayInvalidSaveSearchNameMessage
            Summary		: Displays the invalid save search name message with the description 
                          for the  valid zip code format and zip code ranges.
            Author		: Dale Lawless
            Create Date	: 04/17/2007
        ====================================================================================*/
        displayInvalidSaveSearchNameMessage : function (SearchName) 
        {     
            var sHTML = '';
            
            try
            {
                //contents
                sHTML += "<table style='border:0px; padding:0px; WIDTH:" + (_WinW_InvalidSearchName - 10) + "px;'>";
                sHTML += "<tr>";
                sHTML += "<td class='text'>";
                sHTML += " <label class='textbold'>You entered</label>&nbsp;";
                sHTML += SearchName;
                sHTML += "</td>";
                sHTML += "</tr>";
                sHTML += "<tr>";
                sHTML += "<td class='text'>";
                sHTML += NRT.MySite.Validation.MESSAGE_SAVESEARCH_SEARCHNAME_INVALIDCHARS + '(' + _InvalidSearchNameChars + ')';
                sHTML += "</td>";
                sHTML += "</tr>";
                sHTML += "<tr>";
                sHTML += "<td class='text'>";
                sHTML += "";
                sHTML += "</td>";
                sHTML += "<tr>";
                sHTML += "<td class='text'>";
                sHTML += NRT.MySite.Validation.MESSAGE_SAVESEARCH_SEARCHNAME_INVALID;
                sHTML += "</td>";
                sHTML += "</tr>";
                sHTML += "</tr>";
                sHTML += "<tr>";
                sHTML += "<td>";
                sHTML += "<TABLE style='padding:0px; border:0px; width:100%;'>";
                sHTML += "<TR>";
                sHTML += "<td style='height:9px;' class='separatorLineH'>";
                sHTML += "<img src='/NRTProducts/include/images/common_spacer.gif' border='0' width='100%' height='9'>";
                sHTML += "</td>";
                sHTML += "</TR>";
                sHTML += "</TABLE>";
                sHTML += "</td>";
                sHTML += "</tr>";
                sHTML += "<tr>";
                sHTML += "<td style='text-align:center;'>";
                sHTML += "<img id='" + _DefFocusItemID_InvalidSearchName + "' border='0' class='pointer' src='/NRTProducts/include/images/btnOK.gif'";
                sHTML += " onmouseover=\"javascript:NRT.Utility.flipButton(this,1);\"  onmouseout=\"javascript:NRT.Utility.flipButton(this,0);\"";
                sHTML += " onclick=\"javascript:NRT.MySite.Validation.Utility.closeInvalidSearchNameWindow();this.onblur=null;\" onblur=\"javascript:this.focus();\">";
                sHTML += "</td>";
                sHTML += "</tr>";
                sHTML += "</table>";
                //end of content

                _oUtility.showInfo(sHTML, _WinW_InvalidSearchName, _WinTitle_InvalidSearchName, _DefFocusItemID_InvalidSearchName);
                return;
            }
            catch(err)
            {
                _oErrorHandler.Error('NRT.MySite.Validation.Utility.displayInvalidSaveSearchNameMessage', _oErrorHandler.ERRORTYPE_JS, err);
                return;
            }
        },
            
        /*==================================================================================
            Method		: validEmail
            Summary		: Check for a valid email address.
            Author		: Dale Lawless
            Create Date	: 01/10/2007
        ====================================================================================*/
        validEmail: function (emailAddress)
        {  
            var sRegex = '';
            
            try
            {
                sRegex = /\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/;
                return sRegex.test(emailAddress);
            }
            catch(err)
            {
                _oErrorHandler.Error('NRT.MySite.Validation.Utility.validEmail', _oErrorHandler.ERRORTYPE_JS, err);
                return;
            }
        },
        
        /*==================================================================================
            Method		: validPassword
            Summary		: Check for a valid password. 
                            > Password should be minimum of 5 and maximum of 30 cahracters long.
                            > Password should have no spaces.
                            > Password should include only letters and numbers.
            Author		: Dale Lawless
            Create Date	: 01/11/2007
        ====================================================================================*/
        validPassword: function (password)
        {    
            var sRegex = '';
            
            try
            {
                sRegex = /^[0-9a-zA-Z]\w{4,29}$/;
                return sRegex.test(password);
            }
            catch(err)
            {
                _oErrorHandler.Error('NRT.MySite.Validation.Utility.validPassword', _oErrorHandler.ERRORTYPE_JS, err);
                return;
            }
        },
        
        /*==================================================================================
            Method		: validPhoneNumber
            Summary		: Check for a valid phone. 
                            > Matches US phone number format. 
                            > 1 in the beginning is optional, area code is required, 
                              spaces or dashes can be used as optional divider between 
                              number groups. 
                            > Alphanumeric format is allowed after area code.
            Author		: Dale Lawless
            Create Date	: 10/30/2007
        ====================================================================================*/
        validPhoneNumber: function (phone)
        {    
            var sRegex = '';
            
            try
            {
                sRegex = /^([0-9]( |-)?)?(\(?[0-9]{3}\)?|[0-9]{3})( |-)?([0-9]{3}( |-)?[0-9]{4}|[a-zA-Z0-9]{7})$/;
                return sRegex.test(phone);
            }
            catch(err)
            {
                _oErrorHandler.Error('NRT.MySite.Validation.Utility.validPhoneNumber', _oErrorHandler.ERRORTYPE_JS, err);
                return;
            }
        },
        
        /*==================================================================================
            Method		: validSearchName
            Summary		: Check for a invalid special characters in Search Name. 
                          The list of invalid characters is located in the MySite global 
                          variable called "_InvalidSearchNameChars".
            Author		: Dale Lawless
            Create Date	: 04/17/2007
        ====================================================================================*/
        validSearchName: function (searchName)
        {  
            var bReturn = true;
            var sArray = null;
            var x = 0;
            
            try
            {
                sArray = _InvalidSearchNameChars.split(',');
                for (x = 0; x < sArray.length; x += 1)
                {
                    if (searchName.lastIndexOf(sArray[x]) !== -1)
                    {
                        bReturn = false;
                        break;
                    }
                }
                return bReturn;
            }
            catch(err)
            {
                _oErrorHandler.Error('NRT.MySite.Validation.Utility.validSearchName', _oErrorHandler.ERRORTYPE_JS, err);
                return;
            }
        },

        /*==================================================================================
            Method		: validZipCode
            Summary		: Check for an invalid zip code. 
            Author		: Tim Abbs
            Create Date	: 05/29/2007
        ====================================================================================*/
        validZipCode: function (zipCode) 
        {
            var bReturn = true;
        
            try
            {
                // Check for correct zip code
                reZip = new RegExp(/(^\d{5}$)|(^\d{5}-\d{4}$)/);
         
                if (!reZip.test(zipCode))
                {
                    bReturn = false;
                }

                return bReturn;
            }
            catch(err)
            {
                _oErrorHandler.Error('NRT.MySite.Validation.Utility.validZipCode', _oErrorHandler.ERRORTYPE_JS, err);
                return;
            }
        }

    };
}();
/*******************************************************************************************************************
*								G L O B A L   V A R I A B L E S
*******************************************************************************************************************/
var _PrefillEmailAddress = 'E-mail Address';

// MySite Settings
var _WebsiteID = 0;
var _MetroMySiteName = '';
var _CookieLoginExpireMin = 20;
var _CookieExpireDays = 30;
var _MaxSavedProperties = 10;
var _MaxSavedSearches = 5;
var _SavedSearchXSLTPath = '';
var _SavedSearchDetailsXSLTPath = '';
var _ShowGlobalAlerts = true;
var _ShowEmailAlerts = false;
var _ShowFreq = true;
var _ShowAdditionalEmail = true;
var _ShowSendToAgent = false;
var _AllowDisableAccount = true;    
var _AltEmailTo  = '';        
var _EmailFrom  = '';	
var _MaxAdditionalRecipients = 2;
var _AgentLinkURL = '';
var _WebsiteHasTeams = true;

// Invalid Search Name Special Characters
var _InvalidSearchNameChars  = '|,^,@,#,$,%';			

//Search criteria  
var _oSearchCriteria = null;

// URLs
var _HomePageURL = '/Default.aspx' + NRT.Utility.getBranding('?');
var _LoginPageURL = '/MySite/MySiteLogin.aspx' + NRT.Utility.getBranding('?');
var _RegisterPageURL = '/MySite/MySiteRegister.aspx' + NRT.Utility.getBranding('?');
var _MySavedSearchesURL = '/MySite/MySiteHome.aspx?tab=0' + NRT.Utility.getBranding();
var _MySavedPropertiesURL = '/MySite/MySiteHome.aspx?tab=1' + NRT.Utility.getBranding();
var _MyAccountURL = '/MySite/MySiteHome.aspx?tab=2' + NRT.Utility.getBranding();
var _PropertyResultsURL = '/property/PropertyResults.aspx' + NRT.Utility.getBranding('?');
var _PropertySearchURL = '/property/PropertySearch.aspx?propsearch=0' + NRT.Utility.getBranding();

// Layered Windows
var _defWidth = 580;
//var _defHeight = 450;

var _WinTitle_AgentLookup = 'AGENT SEARCH';
var _WinW_AgentLookup = 800;
var _WinH_AgentLookup = 705;

var _WinTitle_TeamLookup = 'TEAM SEARCH';
var _WinW_TeamLookup = 800;
var _WinH_TeamLookup = 705;

var _WinTitle_Confirmation_SS = 'SAVE SEARCH - SUCCESSFUL';
var _WinTitle_Confirmation_SP = 'SAVE PROPERTY - SUCCESSFUL';
var _WinW_Confirmation = 360;
var _WinH_Confirmation = 80;
var _DefFocusItemID_Confirmation = 'divConfirmMessage';
var _DefFocusItemType_Confirmation = 'DIV';

var _WinTitle_CoookiesDisabled = 'COOKIES DISABLED';
var _WinW_CoookiesDisabled = 350;
var _WinH_CoookiesDisabled = 110;
var _DefFocusItemID_CoookiesDisabled = "imgOK";
var _DefFocusItemType_CoookiesDisabled = null;

var _WinTitle_ForgotPassword = 'FORGOT PASSWORD';
var _WinW_ForgotPassword = 275;
var _WinH_ForgotPassword = 130;
var _DefFocusItemID_ForgotPassword = 'txtForgotEmail';
var _DefFocusItemType_ForgotPassword = "INPUT";

var _WinTitle_Login = 'LOGIN';
var _WinW_Login = 570;
//var _WinH_Login = 300;
var _DefFocusItemID_Login = 'txtLoginEmail';
var _DefFocusItemType_Login = 'INPUT';
 
var _WinTitle_Registration = 'SIGN UP';
var _WinW_Registration = 620;
var _WinH_Registration = 320;
var _DefFocusItemID_Registration = 'txtRegisterEmail';
var _DefFocusItemType_Registration = 'INPUT';

var _WinTitle_RememberMe = 'REMEMBER ME';
var _WinW_RememberMe = 300;
var _WinH_RememberMe = 155;
var _DefFocusItemID_RememberMe = 'btnOK_RememberMe';
var _DefFocusItemType_RememberMe = null;

var _WinTitle_SaveProperty = 'SAVE PROPERTY';
var _WinW_SaveProperty = 560;
//var _WinH_SaveProperty = 270;
var _DefFocusItemID_SaveProperty = 'divPropertyAlertCheckboxes';
var _DefFocusItemType_SaveProperty = 'DIV';

var _WinTitle_SaveProperty_LimitReached = 'SAVE PROPERTY - LIMIT REACHED';
var _WinW_SaveProperty_LimitReached = 500;
//var _WinH_SaveProperty_LimitReached = 325;
var _DefFocusItemID_SaveProperty_LimitReached = 'divSavedPropertyCheckboxes';
var _DefFocusItemType_SaveProperty_LimitReached = 'DIV';

var _WinTitle_SaveSearch = 'SAVE SEARCH';
var _WinW_SaveSearch = 580;
//var _WinH_SaveSearch = 360;
var _DefFocusItemID_SaveSearch = 'txtSaveSearchName';
var _DefFocusItemType_SaveSearch = 'INPUT';

var _WinTitle_SaveSearch_LimitReached = 'SAVE SEARCH - LIMIT REACHED';
var _WinW_SaveSearch_LimitReached = 475;
//var _WinH_SaveSearch_LimitReached = 325;
var _DefFocusItemID_SaveSearch_LimitReached = 'divSavedSearchCheckboxes';
var _DefFocusItemType_SaveSearch_LimitReached = 'DIV';

var _WinTitle_InvalidEmailRecipient = 'INVALID EMAIL RECIPIENT';
var _WinW_InvalidEmailRecipient = 300;
//var _WinH_InvalidEmailRecipient = 155;
var _DefFocusItemID_InvalidEmailRecipient = 'btnOK_InvalidEmailRecipient';
var _DefFocusItemType_InvalidEmailRecipient = null;

var _WinTitle_InvalidSearchName = 'INVALID SEARCH NAME';
var _WinW_InvalidSearchName = 300;
//var _WinH_InvalidSearchName = 155;
var _DefFocusItemID_InvalidSearchName = 'btnOK_InvalidSearchName';
var _DefFocusItemType_InvalidSearchName = null;

// Confirmation types
var _ConfirmationType_SavedSearches = 0;
var _ConfirmationType_SavedProperties = 1;

//Messages
var _Registration_Text1 = '<P>By selecting the Remember Me checkbox,';
var _Registration_Text2 = 'will place a cookie on your computer that will automatically log you in when you return to the Web site.</P><P>If you are using a shared or public computer, we recommend that you do not use this feature.</P>';
/* ##########################################################################################################################

    Namespace : NRT.MySite
    Classes   : Authentication
    Summary	 : Contains all the scripts to handle the entire client side functionality for the
                  NRT MySite Authentication functionality. 
    Copyright : (c) 2006 NRT Inc. All rights reserved.

    RevisionHistory: 
    -------------------------------------------------------------------------------------------------------------------------
    Date		Name		Description
    -------------------------------------------------------------------------------------------------------------------------
    09/10/2006	dlawless	Initial Creation

###########################################################################################################################*/

NRT.MySite.Authentication = function ()
{
    /*******************************************************************************************************************
    *								V A R I A B L E S
    *******************************************************************************************************************/
    
    return {
        /*******************************************************************************************************************
        *									P U B L I C   P R O P E R T I E S
        *******************************************************************************************************************/
        getpasswordTextbox: function ()	
        {
            return _oUtility.getElementByTagNameAndID('txtPassword','INPUT');
        },
        
        getpasswordTextboxLabel: function ()	
        {
            return _oUtility.getElementByTagNameAndID('txtPasswordLabel','INPUT');
        },

        getSavedSearchID: function ()	
        {
            return _oUtility.getElementByTagNameAndID('ddlSavedSearches','SELECT').value;
        },

        getSearchOptionID: function ()	
        {
            return _oUtility.getElementByTagNameAndID('ddlSearchOptions','SELECT').value;
        },
        
        getSavedSearchDropDown: function ()	
        {
            return _oUtility.getElementByTagNameAndID('ddlSavedSearches','SELECT');
        },
            
        getSearchOptionDropDown: function ()	
        {
            return _oUtility.getElementByTagNameAndID('ddlSearchOptions','SELECT');
        },		

        /*******************************************************************************************************************
        *									P R I V A T E   P R O P E R T I E S
        *******************************************************************************************************************/
        _getPassword: function ()	
        {
            return _oUtility.getElementByTagNameAndID('txtPassword','INPUT').value;
        },
        
        _getEmailAddress: function ()	
        {
            return _oUtility.getElementByTagNameAndID('txtEmail','INPUT').value;
        },

        _getEmailTextbox: function ()	
        {
            return _oUtility.getElementByTagNameAndID('txtEmail','INPUT');
        },
                
        _getRememberMe: function ()	
        {
            return _oUtility.getElementByTagNameAndID('chkRememberMe','INPUT').checked;
        },		

        
        /*******************************************************************************************************************
        *									P U B L I C   M E T H O D S
        *******************************************************************************************************************/
        /*==================================================================================
            Method		: autoLoginUser
            Summary		: Checks to see if the MySite coookie exists and then will toggle
                          the authentication panel.
            Author		: Dale Lawless
            Create Date	: 02/26/2007
        ====================================================================================*/
        autoLoginUser: function ()
        {
            var iConsumerID = 0;
            var sConsumerName = null;
            var oCookie = null;
            var oCookieValues = null;
            
            try
            {
                oCookie = this._getCookie();
                if (oCookie)								// Check to see if the cookie exists
                {
                    oCookieValues = oCookie.split('~');
                    iConsumerID =  oCookieValues[0];
                    sConsumerName =  oCookieValues[1];
                    
                    if (iConsumerID !== 0)		
                    {
                        // Toggle DIV Tags on Authentication Panel
                        NRT.MySite.Authentication.toggleSearchOptions('divAuthSavedSearchOptions', sConsumerName);
                                
                        // Load the Saved Searches Dropdown List
                        NRT.MySite.Authentication.fillSavedSearchDropDownList(iConsumerID);								
                    }
                } else {
                    
                    NRT.MySite.Authentication.toggleSearchOptions('divAuthSavedSearchLogin');
                }
            }
            catch(err)
            {
                _oErrorHandler.Error('NRT.MySite.Authentication.autoLoginUser', _oErrorHandler.ERRORTYPE_JS, err);
            }
        },
        
        /*==================================================================================
            Method		: createCookie
            Summary		: 
            Author		: Dale Lawless
            Create Date	: 08/10/2006
        ====================================================================================*/
        createCookie: function (value,expiredays,expireminutes)
        {
            var oExpireDate = null;
            var sCookie = null;
            
            try
            {
                oExpireDate = new Date ();
                if (expiredays === null)
                {
                    oExpireDate.setTime(oExpireDate.getTime() + (expireminutes * 60 * 1000));
                    sCookie = 'MySite=' + escape(value) + ((expireminutes === null) ? '' : '; expires=' + oExpireDate.toGMTString()) + '; path=/';
                } else {
                    oExpireDate.setTime(oExpireDate.getTime() + (expiredays * 24 * 3600 * 1000));
                    sCookie = 'MySite=' + escape(value) + ((expiredays === null) ? '' : '; expires=' + oExpireDate.toGMTString()) + '; path=/';
                }
                document.cookie = sCookie; 
            }
            catch(err)
            {
                _oErrorHandler.Error('NRT.MySite.Authentication.createCookie', _oErrorHandler.ERRORTYPE_JS, err);
            }
        },
    
        /*==================================================================================
            Method		: createEmailCookie
            Summary		: Creates cookie on the client's computer to hold the email address
                          after a successful login. This cookie will be read to prefill the 
                          email address on the login page.
            Author		: Dale Lawless
            Create Date	: 02/14/2007
        ====================================================================================*/
        createEmailCookie: function (value,expiredays)
        {
            var oExpireDate = null;
            var sCookie = null;
            
            try
            {
                oExpireDate = new Date ();
                oExpireDate.setTime(oExpireDate.getTime() + (expiredays * 24 * 3600 * 1000));
                sCookie = 'MySiteEmail=' + escape(value) + ((expiredays === null) ? '' : '; expires=' + oExpireDate.toGMTString()) + '; path=/';
                document.cookie = sCookie;
                
                _PrefillEmailAddress = value;
            }
            catch(err)
            {
                _oErrorHandler.Error('NRT.MySite.Authentication.createEmailCookie', _oErrorHandler.ERRORTYPE_JS, err);
            }
        },

        /*==================================================================================
            Method		: checkCookieExpiration
            Summary		: Determines if the cookie has expired. If expired, the user will 
                          notified, logged off, and then sent to the login page.
            Author		: Dale Lawless
            Create Date	: 04/26/2007
        ====================================================================================*/
        checkCookieExpiration: function ()
        {
            var oCookie = null;
            
            try
            {
               oCookie = this._getCookie();
                if (oCookie === null || typeof oCookie === 'undefined')
                {
                    // Show Session Time-Out Message
                    _oUtility.showMessage(NRT.MySite.Validation.MESSAGE_AUTHENTICATIION_COOKIE_EXPIRATION);

                    NRT.MySite.Authentication.logout(true);
                    
                    return false; 
                }
                return true;
            }
            catch(err)
            {
                _oErrorHandler.Error('NRT.MySite.Authentication.checkCookieExpiration', _oErrorHandler.ERRORTYPE_JS, err);
            }
        },
                
        /*==================================================================================
            Method		: delCookie
            Summary		: Deletes a Cookie by setting the Expiration Date to Yesterday
            Author		: Dale Lawless
            Create Date	: 08/10/2006
        ====================================================================================*/
        delCookie: function ()
        {
            var oCookie = null;
        
            try
            {
                oCookie = this._getCookie();
                if (oCookie)								// If cookie exists
                {
                    this.createCookie('', -1);
                }
            }
            catch(err)
            {
                _oErrorHandler.Error('NRT.MySite.Authentication.delCookie', _oErrorHandler.ERRORTYPE_JS, err);
            }
        },

        /*==================================================================================
            Method		: delEmailCookie
            Summary		: Deletes the email Cookie 
            Author		: Dale Lawless
            Create Date	: 03/23/2007
        ====================================================================================*/
        delEmailCookie: function ()
        {
            var oCookie = null;
        
            try
            {
                oCookie = this._getEmailCookie();
                // If cookie exists
                if (oCookie)
                {
                    this.createEmailCookie('', -1);
                }
            }
            catch(err)
            {
                _oErrorHandler.Error('NRT.MySite.Authentication.delEmailCookie', _oErrorHandler.ERRORTYPE_JS, err);
            }
        },
        
        /*==================================================================================
            Method		: fillSavedSearchDropDownList
            Summary		: Fills the saved searched dropdown list on the saves search panel.
            Author		: Dale Lawless
            Create Date	: 08/10/2006
        ====================================================================================*/
        fillSavedSearchDropDownList: function (ConsumerID)	
        {
            var aSearches = null;
            
            try
            {
                aSearches = MySiteProvider.GetSavedSearchesToString(_WebsiteID, ConsumerID, this._fillSavedSearchDropDownList_CallBack);
            }
            catch(err)
            {
                _oErrorHandler.Error('NRT.MySite.Authentication.fillSavedSearchDropDownList', _oErrorHandler.ERRORTYPE_JS, err);
            }												
        },

        /*==================================================================================
            Method		: fillSearchOptionsDropDownList
            Summary		: Fills the search options dropdown list on the saves search panel.
            Author		: Dale Lawless
            Create Date	: 03/07/2007
        ====================================================================================*/
        fillSearchOptionsDropDownList: function ()
        {
            var lstSearchOptions = null;
            var sSearchOption = null;
            
            try
            {
                lstSearchOptions = NRT.MySite.Authentication.getSearchOptionDropDown();

                if (lstSearchOptions !== null)
                {															
                    // Fill the dropdown
                    lstSearchOptions.options[0] = new Option('All Matches', '0', false, false);					
                    lstSearchOptions.options[1] = new Option('Today\'s Matches', '1', false, false);
                    lstSearchOptions.options[2] = new Option('New Matches Since Last Login', '2', false, false);
                    
                    // Select the saved search option from the list using the querystring if available
                    sSearchOption = NRT.Utility.getQueryStringParam('SearchOption');
               if (sSearchOption !== null && typeof sSearchOption !== 'undefined')
               {
                        lstSearchOptions.value = sSearchOption;
                    }					
                }
            }
            catch(err)
            {
                _oErrorHandler.Error('NRT.MySite.Authentication.fillSearchOptionsDropDownList', _oErrorHandler.ERRORTYPE_JS, err);
            }												
        },
                
        /*==================================================================================
            Method		: getConsumerID
            Summary		: Returns consumer id from the MySite cookie.
            Author		: Dale Lawless
            Create Date	: 08/10/2006
        ====================================================================================*/
        getConsumerID: function ()
        {
            var iConsumerID = 0;
            var oCookie = null;
            var oCookieValues = null;
            
            try
            {
                oCookie = this._getCookie();
                if (oCookie) 
                {
                    oCookieValues = oCookie.split('~');
                    iConsumerID =  oCookieValues[0];
                }
                return iConsumerID;
            }
            catch(err)
            {
                _oErrorHandler.Error('NRT.MySite.Authentication.getConsumerID', _oErrorHandler.ERRORTYPE_JS, err);
            }
        },
        
        /*==================================================================================
            Method		: getEmailCookie
            Summary		: Gets the MySite Email Cookie
            Author		: Dale Lawless
            Create Date	: 02/14/2007
        ====================================================================================*/
        getEmailCookie: function ()
        {    
            var iIndex = 0;
            var sEndString = null;
            
            try
            {
                iIndex = document.cookie.indexOf('MySiteEmail=');
                if (iIndex === -1) 
                {
                    return null;
                }
                // first character
                iIndex = document.cookie.indexOf('=', iIndex) + 1;
                sEndString = document.cookie.indexOf(';', iIndex);
                if (sEndString === -1) 
                {
                    // last character
                    sEndString = document.cookie.length;
                }
                return unescape(document.cookie.substring(iIndex, sEndString));
            }
            catch(err)
            {
                _oErrorHandler.Error('NRT.MySite.Authentication.getEmailCookie', _oErrorHandler.ERRORTYPE_JS, err);
            }
        },
        
        /*==================================================================================
            Method		: hideDropDowns
            Summary		: Hides the dropdowns on the authentication panel. 
            Author		: Dale Lawless
            Create Date	: 04/06/2007
        ====================================================================================*/
        hideDropDowns: function ()
        {     
            var lstSearches = null;
            var lstSearchOptions = null;
            
            try
            {
                // Saved Searches Dropdown
                lstSearches = NRT.MySite.Authentication.getSavedSearchDropDown();
                if (lstSearches !== null && typeof lstSearches !== 'undefined') 
                {
                    lstSearches.style.display = 'none';
                }
                
                // Search Options Dropdown				
                lstSearchOptions = NRT.MySite.Authentication.getSearchOptionDropDown();
                if (lstSearchOptions !== null && typeof lstSearchOptions !== 'undefined') 
                {
                    lstSearchOptions.style.display = 'none';
                }
            }
            catch(err)
            {
                _oErrorHandler.Error('NRT.MySite.Authentication.hideDropDowns', _oErrorHandler.ERRORTYPE_JS, err);
            }
        },
        
        /*==================================================================================
            Method		: isUserLoggedIn
            Summary		: Determines if a User has logged in with the existance of the 
                          MySite cookie.
            Author		: Dale Lawless
            Create Date	: 08/10/2006
        ====================================================================================*/
        isUserLoggedIn: function ()
        {     
            var bReturn = false;
            var oCookie = null;
              
            try
            {
                oCookie = this._getCookie();
                if (oCookie)							// If cookie exists
                {
                    bReturn = true;
                }
                return bReturn;
            }
            catch(err)
            {
                _oErrorHandler.Error('NRT.MySite.Authentication.isUserLoggedIn', _oErrorHandler.ERRORTYPE_JS, err);
            }					
        },
                            
        /*==================================================================================
            Method		: login
            Summary		: Logs the user into the application from the authentication panel.
            Author		: Dale Lawless
            Create Date	: 01/15/2007
        ====================================================================================*/
        login: function ()
        {
            var sEmail = null; 
            var oEmailTextbox = null;
            var sPsword = null;
            var bRememberMe = false;
            
            try
            {
                this._clearErrorMessage();
            
                // Show Cookies Disabled message if browser settings don't have cookies enabled
                if (!_oUtility.browserCookiesEnabled())
                {
                    // Show cookies disabled message in a layered window
                    NRT.MySite.UI.showLayeredWindow('CookiesDisabled', _WinTitle_CoookiesDisabled,_WinW_CoookiesDisabled, _DefFocusItemID_CoookiesDisabled, _DefFocusItemType_CoookiesDisabled);
                    return;
                }
                
                // Get Form Values
                sEmail = this._getEmailAddress();
                sPsword = this._getPassword();
                bRememberMe = this._getRememberMe();
                
                // Validate Email Address
                if (sEmail.toUpperCase() === 'E-MAIL ADDRESS' || sEmail === '')
                {
                    NRT.MySite.Authentication._showErrorMessage(NRT.MySite.Validation.MESSAGE_LOGIN_EMAIL_REQUIRED);
                    oEmailTextbox = this._getEmailTextbox();
                    _oUtility.setFocus(oEmailTextbox);
                    return;
                } else if (!NRT.MySite.Validation.Utility.validEmail(sEmail))
                {
                    NRT.MySite.Authentication._showErrorMessage(NRT.MySite.Validation.MESSAGE_LOGIN_EMAIL_INVALID);
                    return;
                }

                //Validate Password
                if (!sPsword)
                {
                    NRT.MySite.Authentication._showErrorMessage(NRT.MySite.Validation.MESSAGE_LOGIN_PASSWORD_REQUIRED);
                    return;
                }
                
                // Ajax call to get login information
                MySiteProvider.Login(_WebsiteID, sEmail, sPsword, bRememberMe, this._login_Callback);
            }
            catch(err)
            {
                _oErrorHandler.Error('NRT.MySite.Authentication.login', _oErrorHandler.ERRORTYPE_JS, err);
                return;
            }						
        },

        /*==================================================================================
            Method		: logout
            Summary		: Logs the user out of the application.
            Author		: Dale Lawless
            Create Date	: 08/10/2006
        ====================================================================================*/
        logout: function (timeOut)
        {
            var iConsumerID = 0;
            var oStatus = null;
            var oTxtPassword = document.getElementById('txtPassword');
            var oTxtPasswordLabel = document.getElementById('txtPasswordLabel');
            
            try
            {
                this._clearErrorMessage();
                            
                // Update Last Login Date
                iConsumerID = this.getConsumerID();				
    
                oStatus = MySiteProvider.UpdateLastLoginDate(iConsumerID);
                
                if (oStatus.value === '4')  // AccountStatus - LastLoginUpdated
                {
                    // Expire Cookie
                    this.delCookie();
                    oTxtPassword.value = '';
                    oTxtPassword.style.display = 'none';
                    oTxtPasswordLabel.style.display = 'inline';

                    // Toggle MySite Panel if within Property search, otherwise redirect the user
                    // back to the hope page.
                    if (timeOut === null || typeof timeOut === 'undefined')
                    {
                        if (NRT.MySite.UI.pageIsMySiteHome()) 
                        {
                         NRT.MySite.UI.redirectToHomePage();
                        } 
                        
                        // Reload the search results page if Chicago
                        else if (NRT.MySite.UI.pageIsPropertyResults() && _WebsiteID === '2')
                        {
                            NRT.MySite.Authentication.toggleSearchOptions('divAuthSavedSearchLogin');
                            window.location = _oUtility.getAppPath() + window.location.pathname + window.location.search;
                        } else {
                            NRT.MySite.Authentication.toggleSearchOptions('divAuthSavedSearchLogin');  
                         }
                    } else {
                        NRT.MySite.UI.redirectToLoginPage(0);
                    }
                } else {
                    NRT.MySite.Authentication._showErrorMessage(NRT.MySite.Validation.MESSAGE_AUTHENTICATIION_LOGOUTFAILED);
                    return;
                }
            }
            catch(err)
            {
                _oErrorHandler.Error('NRT.MySite.Authentication.logout', _oErrorHandler.ERRORTYPE_JS, err);
            }
        },
        
        /*==================================================================================
            Method		: notYou
            Summary		: Logs the user out of the application and deletes the remembered email
                          cookie.
            Author		: Dale Lawless
            Create Date	: 03/23/2007
        ====================================================================================*/
        notYou: function ()
        {
            try
            {
                this.logout();
                this.delEmailCookie();
                this.resetAuthentication();
            }
            catch(err)
            {
                _oErrorHandler.Error('NRT.MySite.Authentication.logout', _oErrorHandler.ERRORTYPE_JS, err);
            }
        },

        /*==================================================================================
            Method		: onKeyDown
            Summary		: This function is called on the key down event from the mysite
                          authentication panel.
            Author		: Dale Lawless
            Create Date	: 05/15/2007
        ====================================================================================*/
        onKeyDown: function (e) 
        {
            var key = window.event ? e.keyCode : e.which;
            
            try
            {
                // Enter Key
                if (key === 13)
                {
                    if (typeof(Dialog) == 'undefined')
                    {
                        NRT.MySite.Authentication.login();
                    }
                    return;
                }	    
            }
            catch(err)
            {
                _oErrorHandler.Error('NRT.MySite.Authentication.onKeyDown', _oErrorHandler.ERRORTYPE_JS, err);
                return;
            }
        },
        
        /*==================================================================================
            Method		: prefillEmailAddress
            Summary		: Prefills email address on the authentication panel.
            Author		: Dale Lawless
            Create Date	: 02/15/2007
        ====================================================================================*/
        prefillEmailAddress: function ()
        {   
            var oEmailCookie = null;
            var oEmailTextbox = null;
            
            try
            {
                if (_PrefillEmailAddress === 'E-mail Address')
                {
                    // Check MySite global var
                    oEmailCookie = NRT.MySite.Authentication.getEmailCookie();
                    // Pull from MySite Email Cookie
                    // Check to see if the cookie exists
                    if (oEmailCookie !== null && typeof oEmailCookie !== 'undefined') 
                    {
                        _PrefillEmailAddress = oEmailCookie;
                    }
                }
                
                oEmailTextbox = _oUtility.getElementByTagNameAndID('txtEmail','INPUT');
                if (oEmailTextbox !== null && oEmailTextbox !== 'undefined')
                {
                    oEmailTextbox.value = _PrefillEmailAddress;
                }
            }
            catch(err)
            {
                _oErrorHandler.Error('NRT.MySite.Authentication.prefillEmailAddress', _oErrorHandler.ERRORTYPE_JS, err);
            }
        },

        /*==================================================================================
            Method		: resetAuthentication
            Summary		: Resets the email address textbox to show default text.
            Author		: Dale Lawless
            Create Date	: 03/23/2007
        ====================================================================================*/
        resetAuthentication: function ()
        { 
            var oEmailTextbox = null;
            
            try
            {
                // Email Address
                oEmailTextbox = _oUtility.getElementByTagNameAndID('txtEmail','INPUT');
                if (oEmailTextbox !== null && typeof oEmailTextbox !== 'undefined')
                {
                    _PrefillEmailAddress = 'E-mail Address';
                    oEmailTextbox.value = _PrefillEmailAddress;
                }
                
                //Password
                this.getpasswordTextbox().style.display = 'none';
                this.getpasswordTextboxLabel().style.display = 'inline';
            }
            catch(err)
            {
                _oErrorHandler.Error('NRT.MySite.Authentication.resetAuthentication', _oErrorHandler.ERRORTYPE_JS, err);
            }
        },
        
        /*==================================================================================
            Method		: removeSavedSearchFromDropDown
            Summary		: Remove a saved search from the saved searches dropdown list on
                          the authentication panel.
            Author		: Dale Lawless
            Create Date	: 02/21/2007
        ====================================================================================*/
        removeSavedSearchFromDropDown: function (SearchID)	
        {    
            var lstSearches = null;
            var oSearch = null;
            var i = 0;
                 
            try
            {
                lstSearches = NRT.MySite.Authentication.getSavedSearchDropDown();
            if (lstSearches !== null && typeof lstSearches !== 'undefined' && lstSearches.length > 0)
            {
                // Delete the saved search from the dropdown
                    for (i = 0; i < lstSearches.length; i += 1)
                    {
                        oSearch = lstSearches[i];
                        if (oSearch.value ==  SearchID)
                        {
                            lstSearches.options[i] = null;
                        }
                    }
                    
                    // Show no saved searches if all have been deleted
                    if (lstSearches.length === 0) 
                    {
                        NRT.MySite.Authentication.showNoSavedSearches(); 
                    }
                }
            }
            catch(err)
            {
                _oErrorHandler.Error('NRT.MySite.Authentication.removeSavedSearchFromDropDown', _oErrorHandler.ERRORTYPE_JS, err);
            }
        },

        /*==================================================================================
            Method		: setFormsAuthCookie
            Summary		: Sets the forms authentication cookie.
            Author		: Dale Lawless
            Create Date	: 02/01/2007
        ====================================================================================*/
        setFormsAuthCookie: function ()
        {     
            var oCookie = null;
            
            try
            {
                if (MySiteProvider !== null || typeof MySiteProvider !== 'undefined') 
                {
                    oCookie = this._getCookie();
                    // Check to see if the cookie exists
                    if (oCookie)
                    {
                        MySiteProvider.SetFormsAuthCookie(oCookie, true);
                     } else {
                        MySiteProvider.SetFormsAuthCookie(oCookie, false);  
                     }
                }
            }
            catch(err)
            {
                _oErrorHandler.Error('NRT.MySite.Authentication.setFormsAuthCookie', _oErrorHandler.ERRORTYPE_JS, err);
            }
        },
        
        /*==================================================================================
            Method		: showForgotPasswordWindow
            Summary		: Displays a forgot password layered window.
            Author		: Dale Lawless
            Create Date	: 04/24/2007
        ====================================================================================*/
        showForgotPasswordWindow: function () 
        {    
            var oEmailTextbox = null;
            var sQueryString = null;
            
            try
            {
                oEmailTextbox = _oUtility.getElementByTagNameAndID('txtEmail','INPUT');
                if (oEmailTextbox !== null && typeof oEmailTextbox !== 'undefined')
                {
                    sQueryString = 'controlType=ForgotPassword&PrefillEmail=' + oEmailTextbox.value;
                    _oUtility.showLayeredPage(sQueryString, _WinW_ForgotPassword, _WinTitle_ForgotPassword, _DefFocusItemID_ForgotPassword, _DefFocusItemType_ForgotPassword);
                }
            }
            catch(err)
            {
                _oErrorHandler.Error('NRT.MySite.Authentication.showForgotPasswordWindow', _oErrorHandler.ERRORTYPE_JS, err);
                return;
            }				
        },

        /*==================================================================================
            Method		: showDropDowns
            Summary		: Shows the dropdowns on the authentication panel. 
            Author		: Dale Lawless
            Create Date	: 04/06/2007
        ====================================================================================*/
        showDropDowns: function ()
        {     
            var lstSearches = null;
            var lstSearchOptions = null;
            
            try
            {
                // Saved Searches Dropdown
                lstSearches = NRT.MySite.Authentication.getSavedSearchDropDown();
                if (lstSearches !== null && typeof lstSearches !== 'undefined') 
                {
                    lstSearches.style.display = 'inline'; 
                }
                
                // Search Options Dropdown
                lstSearchOptions = NRT.MySite.Authentication.getSearchOptionDropDown();
                if (lstSearchOptions !== null && typeof lstSearchOptions !== 'undefined') 
                {
                    lstSearchOptions.style.display = 'inline';
                }
            }
            catch(err)
            {
                _oErrorHandler.Error('NRT.MySite.Authentication.showDropDowns', _oErrorHandler.ERRORTYPE_JS, err);
            }					
        },

        /*==================================================================================
            Method		: showLastLoginDate
            Summary		: Shows the last login date on the authentication panel. 
                          This is shown if the Debug flag is true.
            Author		: Dale Lawless
            Create Date	: 05/22/2007
        ====================================================================================*/
        showLastLoginDate: function ()
        {   
            var oSpanLastLoginDT = null; 
            var iConsumerId = 0; 
            var oResult = null;
            
            try
            {
                if (ISDEBUG) 
               {
                    oSpanLastLoginDT = document.getElementById('spnLastLoginDT');
                    if (oSpanLastLoginDT !== null && typeof oSpanLastLoginDT !== 'undefined')
                    {
                            //Make AJAX call to get the last login date
                            iConsumerId = NRT.MySite.Authentication.getConsumerID();
                            oResult = MySiteProvider.GetLastLoginDate(_WebsiteID, iConsumerId);
                            if (oResult !== null && typeof oResult !== 'undefined')
                            {
                            oSpanLastLoginDT.innerHTML = 'Last Login Date: ' + oResult.value;
                            }
                    }
                }
            }
            catch(err)
            {
                _oErrorHandler.Error('NRT.MySite.Authentication.showLastLoginDate', _oErrorHandler.ERRORTYPE_JS, err);
            }					
        },
                
        /*==================================================================================
            Method		: showPasswordInput
            Summary		: 
            Author		: Dale Lawless
            Create Date	: 08/10/2006
        ====================================================================================*/
        showPasswordInput: function ()
        {
            try
            {
                this.getpasswordTextboxLabel().style.display = 'none';
                this.getpasswordTextbox().style.display = 'inline';
                this.getpasswordTextbox().value = '';
                _oUtility.setFocus(this.getpasswordTextbox());
            }
            catch(err)
            {
                _oErrorHandler.Error('NRT.MySite.Authentication.showPasswordInput', _oErrorHandler.ERRORTYPE_JS, err);
            }				
        },

        /*==================================================================================
            Method		: showPasswordLabel
            Summary		: If the element is empty hides the element and shows the label element.
            Author		: Dale Lawless
            Create Date	: 08/10/2006
        ====================================================================================*/
        showPasswordLabel: function ()
        {
            try
            {
                if (this.getpasswordTextbox().value === '')
                {
                    this.getpasswordTextbox().style.display = 'none';
                    this.getpasswordTextboxLabel().style.display = 'inline';
                }
            }
            catch(err)
            {
                _oErrorHandler.Error('NRT.MySite.Authentication.showPasswordLabel', _oErrorHandler.ERRORTYPE_JS, err);
            }			
        },

        /*==================================================================================
            Method		: showSavedSearches
            Summary		: Displays the saved searched found div.
            Author		: Dale lawless
            Create Date	: 01/10/2007
        ====================================================================================*/
        showSavedSearches: function ()
        {
            try
            {
                document.getElementById('spnAuthSelectSearches').style.display = 'inline';
                document.getElementById('spnAuthNoSavedSearches').style.display = 'none';

            }
            catch(err)
            {
                _oErrorHandler.Error('NRT.MySite.Authentication.showSavedSearches', _oErrorHandler.ERRORTYPE_JS, err);
            }			
        },

        /*==================================================================================
            Method		: showNoSavedSearches
            Summary		: Displays the no saved searched found div.
            Author		: Dale lawless
            Create Date	: 01/10/2007
        ====================================================================================*/
        showNoSavedSearches: function ()
        {
            try
            {
                document.getElementById('spnAuthSelectSearches').style.display = 'none';
                document.getElementById('spnAuthNoSavedSearches').style.display = 'inline';

            }
            catch(err)
            {
                _oErrorHandler.Error('NRT.MySite.Authentication.showNoSavedSearches', _oErrorHandler.ERRORTYPE_JS, err);
            }			
        },
        
        /*==================================================================================
            Method		: toggleSearchOptions
            Summary		: 
            Author		: Dale Lawless
            Create Date	: 08/10/2006
        ====================================================================================*/
        toggleSearchOptions: function (divName,consumerName)
        {
            var oDivAuthSavedSearchOptions = document.getElementById('divAuthSavedSearchOptions');
            var oDivAuthSavedSearchLogin = document.getElementById('divAuthSavedSearchLogin');
            var oDIV = document.getElementById(divName);	
            var oWelcome = document.getElementById('spnWelcome');
        

            try
            {
                switch (divName)
                {
                    case 'divAuthSavedSearchLogin':
                        // Hide other div
                        if (oDivAuthSavedSearchOptions !== null && typeof oDivAuthSavedSearchOptions !== 'undefined')
                        {
                            oDivAuthSavedSearchOptions.style.display = 'none';
                        }
                        //Show selected div
                        if (oDivAuthSavedSearchLogin !== null && typeof oDivAuthSavedSearchLogin !== 'undefined')
                        {
                            oDivAuthSavedSearchLogin.style.display = 'inline';
                        }
                        break;
                        
                    case 'divAuthSavedSearchOptions':
                        // Hide other div
                        if (oDivAuthSavedSearchLogin !== null && typeof oDivAuthSavedSearchLogin !== 'undefined')
                        {
                            oDivAuthSavedSearchLogin.style.display = 'none';
                        }
                
                        //Show selected div
                        if (oDivAuthSavedSearchOptions !== null && typeof oDivAuthSavedSearchOptions !== 'undefined')
                        {
                            oDivAuthSavedSearchOptions.style.display = 'inline';
                        }
                        
                        if (oWelcome !== null && typeof oWelcome !== 'undefined')
                        {
                            oWelcome.innerHTML = 'Welcome, ' + consumerName;
                        }
                        
                        // Display Last Login Date in user-interface
                        NRT.MySite.Authentication.showLastLoginDate();
                        break;
                        
                    default:
                        // Hide all divs
                        if (oDivAuthSavedSearchLogin !== null && typeof oDivAuthSavedSearchLogin !== 'undefined')
                        {
                            oDivAuthSavedSearchLogin.style.display = 'none';
                        }
                        if (oDivAuthSavedSearchOptions !== null && typeof oDivAuthSavedSearchOptions !== 'undefined')
                        {
                            oDivAuthSavedSearchOptions.style.display = 'none';
                        }
                
                        //Show selected div
                        if (oDIV !== null && typeof oDIV !== 'undefined')
                        {
                            oDIV.style.display = 'inline';
                        }
                        break;
                }
            }
            catch(err)
            {
                _oErrorHandler.Error('NRT.MySite.Authentication.toggleSearchOptions', _oErrorHandler.ERRORTYPE_JS, err);
            }				
        },
                        
        /*==================================================================================
            Method		: validateUser
            Summary		: This is used on each of the MySite pages to Determine if a User
                          has logged in. If they are not, send them to the Login Layered Page.
            Author		: Dale Lawless
            Create Date	: 01/17/2007
        ====================================================================================*/
        validateUser: function ()
        {   
            var bLoggedIn = false;
            var sQueryString = null;
            
            try
            {
                bLoggedIn = this.isUserLoggedIn();
                if (bLoggedIn === false)
                {
                    sQueryString = 'controlType=Login&PrefillEmail=' + _PrefillEmailAddress;
                    _oUtility.showLayeredPage(sQueryString, _WinW_Login, _WinTitle_Login, _DefFocusItemID_Login, _DefFocusItemType_Login);
                    return false;
                }
                return true;
            }
            catch(err)
            {
                _oErrorHandler.Error('NRT.MySite.Authentication.validateUser', _oErrorHandler.ERRORTYPE_JS, err);
            }
        },

        /*==================================================================================
            Method		: validateUserInPage
            Summary		: This is used on each of the MySite pages to Determine if a User
                          has logged in. If they are not, send them to the Login In-Page.
            Author		: Dale Lawless
            Create Date	: 01/17/2007
        ====================================================================================*/
        validateUserInPage: function ()
        {   
            var bLoggedIn = false;	
                    
            try
            {
                bLoggedIn = this.isUserLoggedIn();
                if (bLoggedIn === false)
                {
                    NRT.MySite.UI.redirectToLoginPage(0);
                    return false;
                } else {
                    NRT.MySite.UI.redirectToMySavedSearches();
                }
                return true;
            }
            catch(err)
            {
                _oErrorHandler.Error('NRT.MySite.Authentication.validateUserInPage', _oErrorHandler.ERRORTYPE_JS, err);
            }
        },

        /*******************************************************************************************************************
        *								P R I V A T E   M E T H O D S
        *******************************************************************************************************************/
        /*==================================================================================
            Method		: _clearErrorMessage
            Summary		: Clear the error message displayed on the authentication panel.
            Author		: Dale Lawless
            Create Date	: 02/06/2007
        ====================================================================================*/
        _clearErrorMessage: function ()
        {   
            var oSpanErrMessage = null;
            
            try
            {
                oSpanErrMessage = document.getElementById('spnErrMessage');
                if (oSpanErrMessage !== null && typeof oSpanErrMessage !== 'undefined')
                {
                    oSpanErrMessage.innerHTML = '';
                    oSpanErrMessage.style.display = 'inline';
                } 
            }
            catch(err)
            {
                _oErrorHandler.Error('NRT.MySite.Authentication._clearErrorMessage', _oErrorHandler.ERRORTYPE_JS, err);
            }
        },
                    
        /*==================================================================================
            Method		: _getCookie
            Summary		: 
            Author		: Dale Lawless
            Create Date	: 08/10/2006
        ====================================================================================*/
        _getCookie: function ()
        {      
            var iStartIndex = 0;  
            var iEndIndex = 0;  
            
            try
            {
                iStartIndex = document.cookie.indexOf('MySite=');
                if (iStartIndex === -1) 
                {
                    return null;
                }
                // first character
                iStartIndex = document.cookie.indexOf('=', iStartIndex) + 1;
                iEndIndex = document.cookie.indexOf(';', iStartIndex);
                if (iEndIndex === -1) 
                {
                    // last character
                    iEndIndex = document.cookie.length;
                }
                return unescape(document.cookie.substring(iStartIndex, iEndIndex));
            }
            catch(err)
            {
                _oErrorHandler.Error('NRT.MySite.Authentication.getCookie', _oErrorHandler.ERRORTYPE_JS, err);
            }
        },

        /*==================================================================================
            Method		: _getEmailCookie
            Summary		: Gets the email cookie
            Author		: Dale Lawless
            Create Date	: 03/23/2007
        ====================================================================================*/
        _getEmailCookie: function ()
        {   
            var iStartIndex = 0;  
            var iEndIndex = 0;
            
            try
            {
                iStartIndex = document.cookie.indexOf('MySiteEmail=');
                if (iStartIndex === -1) 
                {
                    return null;
                }
                // first character
                iStartIndex = document.cookie.indexOf('=', iStartIndex) + 1;
                iEndIndex = document.cookie.indexOf(';', iStartIndex);
                if (iEndIndex === -1) 
                {
                    // last character
                    iEndIndex = document.cookie.length;
                }
                return unescape(document.cookie.substring(iStartIndex, iEndIndex));
            }
            catch(err)
            {
                _oErrorHandler.Error('NRT.MySite.Authentication._getEmailCookie', _oErrorHandler.ERRORTYPE_JS, err);
            }
        },

        /*==================================================================================
            Method		: _resetPassword
            Summary		: Resets the password on the authentication panel.
            Author		: Dale Lawless
            Create Date	: 04/05/2007
        ====================================================================================*/
        _resetPassword: function ()
        {
            try
            {
                this.getpasswordTextbox().style.display = 'none';
                this.getpasswordTextboxLabel().style.display = 'inline'; 
            }
            catch(err)
            {
                _oErrorHandler.Error('NRT.MySite.Authentication._resetPassword', _oErrorHandler.ERRORTYPE_JS, err);
            }
        },
                
        /*==================================================================================
            Method		: _showErrorMessage
            Summary		: Displays an error message on the authentication panel.
            Author		: Dale Lawless
            Create Date	: 02/14/2007
        ====================================================================================*/
        _showErrorMessage: function (sMessage)
        {   
            var oSpanErrMessage = null;
            
            try
            {
                // Display message on page
                oSpanErrMessage = document.getElementById('spnErrMessage');
                if (oSpanErrMessage !== null && typeof oSpanErrMessage !== 'undefined')
                {
                    oSpanErrMessage.innerHTML = sMessage;
                    oSpanErrMessage.style.display = 'inline';
                }
            }
            catch(err)
            {
                _oErrorHandler.Error('NRT.MySite.Authentication._showErrorMessage', _oErrorHandler.ERRORTYPE_JS, err);
            }
        },
        
        
        /******************************************************************************************************************
        *									A J A X   M E T H O D S
        *******************************************************************************************************************/
        /*==================================================================================
            Method		: _fillSavedSearchDropDownList_CallBack
            Summary		: 
            Author		: Dale Lawless
            Create Date	: 08/10/2006
        ====================================================================================*/
        _fillSavedSearchDropDownList_CallBack: function (response)
        {     
            var oConsumerSearchID = null;
            var oSearchesInfo = null; 
            var oSearches = null;
            var lstSearches = null; 
            var oOption = {}; 
            var sTemp = null;
            var i = 0; 
            
            try
            {
                if (response.error !== null) 
                {
                    _oErrorHandler.ResponseError('NRT.MySite.Authentication._fillSavedSearchDropDownList_CallBack',response);
                    return; 
                } else  {
                    if (response !== null && response.value !== null)
                    {
                        oSearchesInfo = response.value.split('|');
                    if (oSearchesInfo.length > 0 && response.value !== '')
                    {
                            lstSearches = NRT.MySite.Authentication.getSavedSearchDropDown();
                            if (lstSearches !== null)
                            {
                                // Clear saved searched dropdown
                                lstSearches.innerHTML = '';
                                                                        
                                // Select Saved Search Option
                                for (i = 0; i < oSearchesInfo.length - 1; i += 1)
                                {
                                    oSearches = oSearchesInfo[i].split(',');
                            if (oSearches.length > 0)
                            {		
                                oOption = new Option(oSearches[1], oSearches[0], false, false);
                                if (oOption !== null && typeof oOption !== 'undefined')
                                {
                                    // Add ellipsis to saved search text with tooltip for
                                    // saved searches that don't fit within the dropdown.
                                    if (oOption.text.length > 20)
                                    {
                                        oOption.title = oOption.text;
                                        sTemp = oOption.text.substring(0,20);		
                                        oOption.text = sTemp + '...';	
                                            }
                                            lstSearches.options[lstSearches.length] = oOption;
                                }	
                                    }
                                }
                                
                                // Select the saved search from the list using the querystring if available
                                oConsumerSearchID = NRT.Utility.getQueryStringParam('ConsumerSearchID');
                           if (oConsumerSearchID !== null && typeof oConsumerSearchID !== 'undefined')
                           {
                                    lstSearches.value = oConsumerSearchID;
                                }
                                
                                NRT.MySite.Authentication.fillSearchOptionsDropDownList();

                                NRT.MySite.Authentication.showSavedSearches();
                            }
                        } else {
                            NRT.MySite.Authentication.showNoSavedSearches();
                        }
                    }
                }
            }
            catch(err)
            {
                _oErrorHandler.Error('NRT.MySite.Authentication._fillSavedSearchDropDownList_CallBack', _oErrorHandler.ERRORTYPE_AJAX, err);
            }			
        },
        
        /*==================================================================================
            Method		: login_Callback
            Summary		: 
            Author		: Dale Lawless
            Create Date	: 08/10/2006
        ====================================================================================*/
        _login_Callback: function (response)
        {  
            var oLoginInfo = null;
            var sCookie = null; 
            var oPrefillEmail = null;
            
            try
            {
                if (response.error !== null) 
                {
                    _oErrorHandler.ResponseError('NRT.MySite.Authentication._login_Callback',response);
                    return; 
                } else {
                    if (response !== null && response.value !== null)
                    {
                        oLoginInfo = response.value.split(',');
                        if (oLoginInfo.length > 0)
                        {
                            if (oLoginInfo[0] === 'Success')
                            {
                                // Create Cookie  
                                sCookie = oLoginInfo[1] + '~' + oLoginInfo[2] + '~' + oLoginInfo[3];
                                if (oLoginInfo[3] === 'True')
                                {
                                    NRT.MySite.Authentication.createCookie(sCookie, _CookieExpireDays, null); 
                                } else {
                                    NRT.MySite.Authentication.createCookie(sCookie, null, _CookieLoginExpireMin);
                                }
                                
                                // Create MySite Email Cookie for prefilling the email address
                                oPrefillEmail = oLoginInfo[4];
                                if (oPrefillEmail === null || typeof oPrefillEmail === 'undefined') 
                                {
                                    oPrefillEmail = '';
                                }
                                
                                NRT.MySite.Authentication.createEmailCookie(oPrefillEmail, _CookieExpireDays);							
                                                            
                                // Toggle DIV Tags
                                NRT.MySite.Authentication.toggleSearchOptions('divAuthSavedSearchOptions',oLoginInfo[2]);
                                
                                // Load the Saved Searches and Search Options Dropdown Lists
                                NRT.MySite.Authentication.fillSavedSearchDropDownList(oLoginInfo[1]);
                                // Reload the search results page if Chicago
                                if (NRT.MySite.UI.pageIsPropertyResults() && _WebsiteID === '2')
                                {
                                    window.location = _oUtility.getAppPath() + window.location.pathname + window.location.search;
                                }
                                
                            } else if (oLoginInfo[0] === 'InvalidPassword' || oLoginInfo[0] === '')
                            {
                                NRT.MySite.Authentication._showErrorMessage(NRT.MySite.Validation.MESSAGE_AUTHENTICATIION_LOGININVALID);
                            } else if (oLoginInfo[0] === 'InvalidUserStatus')
                            {
                                NRT.MySite.Authentication._showErrorMessage(NRT.MySite.Validation.MESSAGE_AUTHENTICATIION_LOGININVALID);
                            }
                        } else {
                            NRT.MySite.Authentication._showErrorMessage(NRT.MySite.Validation.MESSAGE_AUTHENTICATIION_LOGINFAILED);
                            return;
                        }
                    }
                }
            }
            catch(err)
            {
                _oErrorHandler.Error('NRT.MySite.Authentication._login_Callback', _oErrorHandler.ERRORTYPE_AJAX, err);
            }									
        }
    };
}();/* ##########################################################################################################################

    Namespace : NRT.MySite
    Classes   : ForgotPassword
    Summary	 : Contains all the scripts to handle the entire client side functionality for the
                  NRT MySite Forgot Password functionality. 
    Copyright : (c) 2006 NRT Inc. All rights reserved.

    RevisionHistory: 
    -------------------------------------------------------------------------------------------------------------------------
    Date		Name		Description
    -------------------------------------------------------------------------------------------------------------------------
    05/04/2007	dlawless	Initial Creation

###########################################################################################################################*/

NRT.MySite.ForgotPassword = function ()
{
    /*******************************************************************************************************************
    *								V A R I A B L E S
    *******************************************************************************************************************/
    
    return {
        /*******************************************************************************************************************
        *									P U B L I C   P R O P E R T I E S
        *******************************************************************************************************************/

        /*******************************************************************************************************************
        *									P R I V A T E   P R O P E R T I E S
        *******************************************************************************************************************/
        _getForgotEmailAddress: function ()
        {
            return _oUtility.getElementByTagNameAndID('txtForgotEmail','INPUT').value;
        },

        
        /*******************************************************************************************************************
        *									P U B L I C   M E T H O D S
        *******************************************************************************************************************/
        /*==================================================================================
            Method		: emailPassword
            Summary		: Emails the password to the user to the email address that was entered
                          on the forgot password layered window.
            Author		: Dale lawless
            Create Date	: 01/18/2007
        ====================================================================================*/
        emailPassword: function ()
        {  
            var sForgotEmailAddress = null; 
            var sServerName = null;  
            var oStatus = null;
            
            try
            {
                this._clearErrorMessage();
                
                if (!this.validateEmailPassword()) 
                {
                    return;
                }

                sForgotEmailAddress = this._getForgotEmailAddress();
                sServerName = window.location.host;
                    
                oStatus = MySiteProvider.RequestPassword(_WebsiteID, _EmailFrom, _AltEmailTo, sForgotEmailAddress, sServerName);
                if (oStatus.value === 1)
                {
                    //RequestPasswordStatus - Success 
                    this._showErrorMessage(NRT.MySite.Validation.MESSAGE_LOGIN_REQUESTPASSWORD_SUCCESS);
                } else if (oStatus.value === 2)
                {
                    //RequestPasswordStatus - EmailNotFound     
                    this._showErrorMessage(NRT.MySite.Validation.MESSAGE_LOGIN_REQUESTPASSWORD_EMAILNOTFOUND);  
                } else {
                    //RequestPasswordStatus - Failed        
                    this._showErrorMessage(NRT.MySite.Validation.MESSAGE_LOGIN_REQUESTPASSWORD_FAILED);
                }
            }
            catch(err)
            {
                _oErrorHandler.Error('NRT.MySite.ForgotPassword.emailPassword', _oErrorHandler.ERRORTYPE_JS, err);
            }
        },

        /*==================================================================================
            Method		: validateEmailPassword
            Summary		: Validates the email address for email password functionality.
            Author		: Dale Lawless
            Create Date	: 01/18/2007
        ====================================================================================*/
        validateEmailPassword: function ()
        {     
            var bReturn = true;
            
            try
            {
                this._clearErrorMessage();
            
                // Email
                if (!this._getForgotEmailAddress())
                {
                    this._showErrorMessage(NRT.MySite.Validation.MESSAGE_LOGIN_EMAIL_REQUIRED);
                    _oUtility.setFocus(_oUtility.getElementByTagNameAndID('txtForgotEmail','INPUT'));
                    bReturn =  false;
                } else if (!NRT.MySite.Validation.Utility.validEmail(this._getForgotEmailAddress()))
                {
                    this._showErrorMessage(NRT.MySite.Validation.MESSAGE_LOGIN_EMAIL_INVALID);
                    _oUtility.setFocus(_oUtility.getElementByTagNameAndID('txtForgotEmail','INPUT'));
                    bReturn =  false;
                }
                return bReturn;
            }
            catch(err)
            {
                _oErrorHandler.Error('NRT.MySite.ForgotPassword.validateEmailPassword', _oErrorHandler.ERRORTYPE_JS, err);
                return;
            }
        },

        /*******************************************************************************************************************
        *								P R I V A T E   M E T H O D S
        *******************************************************************************************************************/
        /*==================================================================================
            Method		: _clearErrorMessage
            Summary		: Clear the error message displayed on the authentication panel.
            Author		: Dale Lawless
            Create Date	: 02/06/2007
        ====================================================================================*/
        _clearErrorMessage: function ()
        {   
            var oDivForgotMessage = null;
            
            try
            {
                oDivForgotMessage = document.getElementById('divForgotMessage');
                if (oDivForgotMessage !== null && typeof oDivForgotMessage !== 'undefined')
                {
                    oDivForgotMessage.innerHTML = '';
                    oDivForgotMessage.style.display = 'inline';
                } 
            }
            catch(err)
            {
                _oErrorHandler.Error('NRT.MySite.ForgotPassword._clearErrorMessage', _oErrorHandler.ERRORTYPE_JS, err);
            }
        },
                        
        /*==================================================================================
            Method		: _showErrorMessage
            Summary		: Displays an error message on the authentication panel.
            Author		: Dale Lawless
            Create Date	: 02/14/2007
        ====================================================================================*/
        _showErrorMessage: function (sMessage)
        {   
            var oDivForgotMessage = null;
            
            try
            {
                // Display message on page
                oDivForgotMessage = document.getElementById('divForgotMessage');
                if (oDivForgotMessage !== null && typeof oDivForgotMessage !== 'undefined')
                {
                    oDivForgotMessage.innerHTML = sMessage;
                    oDivForgotMessage.style.display = 'inline';
                }
            }
            catch(err)
            {
                _oErrorHandler.Error('NRT.MySite.ForgotPassword._showErrorMessage', _oErrorHandler.ERRORTYPE_JS, err);
            }
        }
    };
}();/* ##########################################################################################################################

    Namespace : NRT.MySite
    Classes   : Login
    Summary	 : Contains all the scripts to handle the entire client side functionality for the
                  NRT MySite login functionality. 
    Copyright : (c) 2006 NRT Inc. All rights reserved.

    RevisionHistory: 
    -------------------------------------------------------------------------------------------------------------------------
    Date		Name		Description
    -------------------------------------------------------------------------------------------------------------------------
    08/10/2006	dboyce	Initial Creation

###########################################################################################################################*/

NRT.MySite.Login = function ()
{
    /*******************************************************************************************************************
    *								V A R I A B L E S
    *******************************************************************************************************************/
    return {
        /*******************************************************************************************************************
        *									P R I V A T E   P R O P E R T I E S
        *******************************************************************************************************************/	
        _getEmailAddress: function ()	
        {
            return _oUtility.getElementByTagNameAndID('txtLoginEmail','INPUT').value;
        },
        _getPassword: function ()
        {
            return _oUtility.getElementByTagNameAndID('txtLoginPassword','INPUT').value;
        },
                
        _getRememberMe: function ()
        {
            return _oUtility.getElementByTagNameAndID('chkLoginRememberMe','INPUT').checked;
        },
        
        /*******************************************************************************************************************
        *									P U B L I C   M E T H O D S
        *******************************************************************************************************************/
        /*==================================================================================
            Method		: closeWindow
            Summary		: Closes the Login layered page.
            Author		: Dale Lawless
            Create Date	: 12/06/2007
        ====================================================================================*/
        closeWindow: function () 
        {
            var DialogID = null;
            
            try
            {
                DialogID = "Dialog_" + _WinTitle_Login.replace(" ","_");
                _oUtility.closeLayeredPage(DialogID); 
            }
            catch(err)
            {
                _oErrorHandler.Error('NRT.MySite.Login.closeWindow', _oErrorHandler.ERRORTYPE_JS, err);
                return;
            }
        },
                
        /*==================================================================================
            Method		: login
            Summary		: Logs the user into the application from the login page.
            Author		: Dale Lawless
            Create Date	: 01/18/2007
        ====================================================================================*/
        login: function ()
        {     
            var sEmailAddress = null; 
            var sPsword = null;
            var bEmailAddress = false;
            
            try
            {
                // Show Cookies Disabled message if browser settings don't have cookies enabled
                if (!_oUtility.browserCookiesEnabled())
                {
                    // Show cookies disabled message in a layered window
                    NRT.MySite.UI.showLayeredWindow("CookiesDisabled", _WinTitle_CoookiesDisabled,_WinW_CoookiesDisabled, _DefFocusItemID_CoookiesDisabled, _DefFocusItemType_CoookiesDisabled);
                    return;
                }
                            
                // Validate controls
                if (!this.validateLogin())
                {
                    return;
                }
            
                // Get Form Values
                sEmailAddress = this._getEmailAddress();
                sPsword = this._getPassword();
                bEmailAddress = this._getRememberMe();
                
                // Ajax call to get login information
                MySiteProvider.Login(_WebsiteID, sEmailAddress, sPsword, bEmailAddress, this._login_Callback);
            }
            catch(err)
            {
                _oErrorHandler.Error('NRT.MySite.Login.login', _oErrorHandler.ERRORTYPE_JS, err);
                return;
            }
        },

        /*==================================================================================
            Method		: prefillEmailAddress
            Summary		: Prefills email address on the login page.
            Author		: Dale Lawless
            Create Date	: 02/14/2007
        ====================================================================================*/
        prefillEmailAddress: function ()
        {     
            var oEmailCookie = null;  
            var oEmailTextbox = null;
            
            try
            {
                // Check MySite global var
                if (_PrefillEmailAddress === 'E-mail Address')
                {
                    // Pull from MySite Email Cookie
                    oEmailCookie = NRT.MySite.Authentication.getEmailCookie();
                
                    // Check to see if the cookie exists
                    if (oEmailCookie !== null && typeof oEmailCookie !== 'undefined')
                    { 
                        _PrefillEmailAddress = oEmailCookie;
                    } else {
                        _PrefillEmailAddress = '';
                    }
                }
                
                oEmailTextbox = _oUtility.getElementByTagNameAndID('txtLoginEmail','INPUT');
                if (oEmailTextbox !== null && typeof oEmailTextbox !== 'undefined')
                {
                    oEmailTextbox.value = _PrefillEmailAddress;
                }
            }
            catch(err)
            {
                _oErrorHandler.Error('NRT.MySite.Login.prefillEmailAddress', _oErrorHandler.ERRORTYPE_JS, err);
            }
        },
                
        /*==================================================================================
            Method		: showForgotPasswordWindow
            Summary		: Displays a forgot password layered window.
            Author		: Dale Lawless
            Create Date	: 04/24/2007
        ====================================================================================*/
        showForgotPasswordWindow: function () 
        {   
            var sEmailAddress = null;
            var sQueryString = null;
                        
            try
            {
                sEmailAddress = this._getEmailAddress();
                if (sEmailAddress !== null && typeof sEmailAddress !== 'undefined')
                {
                    sQueryString = 'controlType=ForgotPassword&PrefillEmail=' + sEmailAddress;
                    _oUtility.showLayeredPage(sQueryString, _WinW_ForgotPassword, _WinTitle_ForgotPassword, _DefFocusItemID_ForgotPassword, _DefFocusItemType_ForgotPassword);
                }
            }
            catch(err)
            {
                _oErrorHandler.Error('NRT.MySite.Authentication.showForgotPasswordWindow', _oErrorHandler.ERRORTYPE_JS, err);
                return;
            }
        },
        
        /*==================================================================================
            Method		: validateLogin
            Summary		: Validates the login information.
            Author		: Dale Lawless
            Create Date	: 01/16/2007
        ====================================================================================*/			
        validateLogin: function ()
        {    
            var bReturn = true;
            
            try
            {
                this._clearMessages();
                
                // Email
                if (!this._getEmailAddress())
                {
                    document.getElementById('divEmailMessage').innerHTML = NRT.MySite.Validation.MESSAGE_LOGIN_EMAIL_REQUIRED;
                    _oUtility.setFocus(_oUtility.getElementByTagNameAndID('txtLoginEmail','INPUT'));
                    bReturn =  false;
                } else if (!NRT.MySite.Validation.Utility.validEmail(this._getEmailAddress()))
                {
                    document.getElementById('divEmailMessage').innerHTML = NRT.MySite.Validation.MESSAGE_LOGIN_EMAIL_INVALID;
                    _oUtility.setFocus(_oUtility.getElementByTagNameAndID('txtLoginEmail','INPUT'));
                    bReturn =  false;
                } else {
                    document.getElementById('divEmailMessage').innerHTML = '';
                }
                
                // Password
                if (!this._getPassword())
                {
                    document.getElementById('divPasswordMessage').innerHTML = NRT.MySite.Validation.MESSAGE_LOGIN_PASSWORD_REQUIRED;
                    _oUtility.setFocus(_oUtility.getElementByTagNameAndID('txtLoginPassword','INPUT'));					
                    bReturn =  false;
                } else {
                    document.getElementById('divPasswordMessage').innerHTML = '';
                }
                
                return bReturn;
            }
            catch(err)
            {
                _oErrorHandler.Error('NRT.MySite.Login.validateLogin', _oErrorHandler.ERRORTYPE_JS, err);
                return;
            }
        },
        

        /*******************************************************************************************************************
        *								P R I V A T E   M E T H O D S
        *******************************************************************************************************************/
        /*==================================================================================
            Method		: _clearMessages
            Summary		: Clears all of the validation messages.
            Author		: Dale lawless
            Create Date	: 01/18/2007
        ====================================================================================*/				 									
        _clearMessages: function ()
        {
            try
            {
                document.getElementById('divLoginMessage').innerHTML = '';
                document.getElementById('divEmailMessage').innerHTML = '';
                document.getElementById('divPasswordMessage').innerHTML = '';
            }
            catch(err)
            {
                _oErrorHandler.Error('NRT.MySite.Login._clearMessages', _oErrorHandler.ERRORTYPE_JS, err);
            }
        },

        /*==================================================================================
            Method		: _showErrorMessage
            Summary		: Displays the login failed message
            Author		: Dale Lawless
            Create Date	: 02/14/2007
        ====================================================================================*/
        _showErrorMessage: function (sMessage)
        {  
            var oDivLoginMessage = null; 
            
            try
            {
                // Display message on page
                oDivLoginMessage = document.getElementById('divLoginMessage');
                if (oDivLoginMessage !== null && typeof oDivLoginMessage !== 'undefined')
                {
                    oDivLoginMessage.innerHTML = sMessage;
                    oDivLoginMessage.style.display = 'inline';
                }
            }
            catch(err)
            {
                _oErrorHandler.Error('NRT.MySite.Login._showErrorMessage', _oErrorHandler.ERRORTYPE_JS, err);
            }
        },
                    
        /******************************************************************************************************************
        *									A J A X   M E T H O D S
        *******************************************************************************************************************/
        /*==================================================================================
            Method		: login_Callback
            Summary		: 
            Author		: Dale Lawless 
            Create Date	: 12/10/2006
            Updates     : 08.31.2007 - TAbbs - Added code to redirect to the property details
                          in the event that the user needs to be logged in first to view the property.
                          TFS Requirement 4501
        ====================================================================================*/
        _login_Callback: function (response)
        {   
            var oLoginInfo = null; 
            var sCookie = null; 
            var sPrefillEmail = null;
            var tabID;
            
            try
            {
                if (response.error !== null) 
                {
                    _oErrorHandler.ResponseError('NRT.MySite.Authentication._login_Callback',response);
                    return; 
                } else {
                    if (response !== null && response.value !== null)
                    {
                        oLoginInfo = response.value.split(',');
                    if (oLoginInfo.length > 0)
                    {
                            if (oLoginInfo[0] === 'Success')
                            {	
                                // Create Cookie  
                                sCookie = oLoginInfo[1] + '~' + oLoginInfo[2] + '~'+ oLoginInfo[3];
                                if (oLoginInfo[3] === 'True')
                                {
                                    NRT.MySite.Authentication.createCookie(sCookie, _CookieExpireDays, null);
                                } else {
                                    NRT.MySite.Authentication.createCookie(sCookie, null, _CookieLoginExpireMin);
                                }

                                // Create MySite Email Cookie for prefilling the email address
                                sPrefillEmail = oLoginInfo[4];
                                if (sPrefillEmail === null || typeof sPrefillEmail === 'undefined') 
                                {
                                    sPrefillEmail = '';
                                }
                                
                                NRT.MySite.Authentication.createEmailCookie(sPrefillEmail, _CookieExpireDays);
                                        
                                // Close the Layered Window
                                NRT.MySite.Login.closeWindow();
                    
                                // Redirect user to correct page depending on current page being displayed
                                if (NRT.MySite.UI.pageIsMySiteLogin())
                                {
                                    // MySite Login Page
                                    tabID = _oUtility.getQueryStringParam("tab");
                                    switch (parseInt(tabID)) {
                                        case 0 : 
                                            NRT.MySite.UI.redirectToMySavedSearches();
                                            break;
                                        case 1 : 
                                            NRT.MySite.UI.redirectToMySavedProperties();
                                            break;
                                        case 2 : 
                                            NRT.MySite.UI.redirectToMyAccount();
                                            break;
                                        default :
                                            NRT.MySite.UI.redirectToMySavedSearches();
                                            break;
                                    }
                                    return;
                                } else if (NRT.MySite.UI.pageIsPropertySearch())
                                {
                                    // Property Search Page
                                    // Toggle DIV Tags on Authentication Panel
                                    NRT.MySite.Authentication.toggleSearchOptions('divAuthSavedSearchOptions',oLoginInfo[2]);
                                
                                    // Load the Saved Searches Dropdown List
                                    NRT.MySite.Authentication.fillSavedSearchDropDownList(oLoginInfo[1]);

                                    NRT.Property.Search.Utility.saveSearch();
                                    
                                    return;
                                } else if (NRT.MySite.UI.pageIsPropertyResults())
                                {
                                    if ( typeof(_oResults) != 'undefined' && typeof(_oResults.LoginRequestedBy) != 'undefined' )
                                    {
                                        if ( _oResults.LoginRequestedBy.toUpperCase() == "COMINGLING" )
                                        {
                                            Progress.show('loading', null, null);
                                            _oResults.loadPage();
                                            return;
                                        }
                                    }
                                    // Property Results Page
                                    _oResults.saveSearch();
                                    return;
                                } else if (NRT.MySite.UI.pageIsPropertyDetails())
                                {
                                    // Property Details Page
                                    NRT.MySite.SaveProperty.process();
                                    return;
                                } else if (NRT.MySite.UI.pageIsHomePage())
                                {
                                    // Home Page                                    
                                    NRT.MySite.UI.redirectToMySavedSearches();
                                    return;
                                }
                            } else if (oLoginInfo[0] === 'InvalidPassword' || oLoginInfo[0] === '')
                            {
                                NRT.MySite.Login._showErrorMessage(NRT.MySite.Validation.MESSAGE_AUTHENTICATIION_LOGININVALID);
                            } else if (oLoginInfo[0] === 'InvalidUserStatus')
                            {
                                NRT.MySite.Login._showErrorMessage(NRT.MySite.Validation.MESSAGE_AUTHENTICATIION_LOGININVALID);
                            }
                        } else {
                            NRT.MySite.Login._showErrorMessage(NRT.MySite.Validation.MESSAGE_AUTHENTICATIION_LOGINFAILED);
                        }
                    }
                }
            }
            catch(err)
            {
                _oErrorHandler.Error('NRT.MySite.Login._login_Callback', _oErrorHandler.ERRORTYPE_AJAX, err);
            }
        }
    };
}();/* ##########################################################################################################################

    Namespace : NRT.MySite
    Classes   : Registration
    Summary	 : Contains all the scripts to handle the entire client side functionality for the
                  NRT MySite Registration functionality. 
    Copyright : (c) 2006 NRT Inc. All rights reserved.

    RevisionHistory: 
    -------------------------------------------------------------------------------------------------------------------------
    Date		Name		Description
    -------------------------------------------------------------------------------------------------------------------------
    08/10/2006	dboyce	Initial Creation

###########################################################################################################################*/

NRT.MySite.Registration = function ()
{
    /*******************************************************************************************************************
    *								V A R I A B L E S
    *******************************************************************************************************************/
    var oEmail = null;
    var oFirstName = null;
    var oLastName = null;
    var oAddress = null;
    var oCity = null;
    var oState = null;
    var oZipCode = null;
    var oContactPhone = null;
    var oDaytimePhone = null;
    var oEveningPhone = null;
    var oPassword = null;
    var oPasswordConfirm = null;
    var oPreferredAgent = null;
    var oPreferredTeam = null;
    var oRememberMe = null;
    var oIsNonUSResident = null;
    
    return {
        /*******************************************************************************************************************
        *									P R I V A T E   P R O P E R T I E S
        *******************************************************************************************************************/
        _getEmailAddressTextbox: function () {
            oEmail = _oUtility.getElementByTagNameAndID('txtRegisterEmail','INPUT');                
            if (oEmail !== null && typeof oEmail !== 'undefined') {    
                return oEmail;  
            } else { return null; }     
        },
                
        _getEmailAddress: function () {
            if (this._getEmailAddressTextbox() !== null) {
                return this._getEmailAddressTextbox().value;
            }          
        },

        _getFirstNameTextbox: function () {
            oFirstName = _oUtility.getElementByTagNameAndID('txtFirstName','INPUT');                
            if (oFirstName !== null && typeof oFirstName !== 'undefined') {    
                return oFirstName;  
            } else { return null; }
                    
        },
                                        
        _getFirstName: function () {
            if (this._getFirstNameTextbox() !== null) {
                return this._getFirstNameTextbox().value;
            }         
        },

        _getLastNameTextbox: function () {
            oLastName = _oUtility.getElementByTagNameAndID('txtLastName','INPUT');                
            if (oLastName !== null && typeof oLastName !== 'undefined') {    
                return oLastName;  
            } else { return null; }
                    
        },
                
        _getLastName: function () {
            if (this._getLastNameTextbox() !== null) {
                return this._getLastNameTextbox().value;
            }         
        },

        _getAddressTextbox: function ()	{
            oAddress = _oUtility.getElementByTagNameAndID('txtAddress','INPUT');                
            if (oAddress !== null && typeof oAddress !== 'undefined') {    
                return oAddress;  
            } else { return null; }
        },
        
        _getAddress: function () {
            if (this._getAddressTextbox() !== null) {
                return this._getAddressTextbox().value;
            }       
        },

        _getCityTextbox: function () {
            oCity = _oUtility.getElementByTagNameAndID('txtCity','INPUT');                
            if (oCity !== null && typeof oCity !== 'undefined') {    
                return oCity;  
            } else { return null; }
        },
        
        _getCity: function () {
            if (this._getCityTextbox() !== null) {
                return this._getCityTextbox().value;
            }       
        },

        _getStateDropdown: function () {
            oState = _oUtility.getElementByTagNameAndID('ddlState','SELECT');                
            if (oState !== null && typeof oState !== 'undefined') {    
                return oState;  
            } else { return null; }
        },
                
        _getState: function () {
            if (this._getStateDropdown() !== null) {
                return this._getStateDropdown().value;
            }       
        },

        _getZipCodeTextbox: function ()	{
            oZipCode = _oUtility.getElementByTagNameAndID('txtZipCode','INPUT');                
            if (oZipCode !== null && typeof oZipCode !== 'undefined') {    
                return oZipCode;  
            } else { return null; }
        },
        
        _getZipCode: function () {
            if (this._getZipCodeTextbox() !== null) {
                return this._getZipCodeTextbox().value;
            }       
        },

        _getContactPhoneTextbox: function () {
            oContactPhone = _oUtility.getElementByTagNameAndID('txtContactPhone','INPUT');                
            if (oContactPhone !== null && typeof oContactPhone !== 'undefined') {    
                return oContactPhone;  
            } else { return null; }
        },
        
        _getContactPhone: function () {
            if (this._getContactPhoneTextbox() !== null) {
                return this._getContactPhoneTextbox().value;
            }       
        },
        
        _getDaytimePhoneTextbox: function () {
            oDaytimePhone = _oUtility.getElementByTagNameAndID('txtDaytimePhone','INPUT');                
            if (oDaytimePhone !== null && typeof oDaytimePhone !== 'undefined') {    
                return oDaytimePhone;  
            } else { return null; }
        },
        
        _getDaytimePhone: function () {
            if (this._getDaytimePhoneTextbox() !== null) {
                return this._getDaytimePhoneTextbox().value;
            }       
        },

        _getEveningPhoneTextbox: function () {
            oEveningPhone = _oUtility.getElementByTagNameAndID('txtEveningPhone','INPUT');                
            if (oEveningPhone !== null && typeof oEveningPhone !== 'undefined') {    
                return oEveningPhone;  
            } else { return null; }
        },
                
        _getEveningPhone: function () {
            if (this._getEveningPhoneTextbox() !== null) {
                return this._getEveningPhoneTextbox().value;
            }       
        },

        _getPasswordTextbox: function () {
            oPassword = _oUtility.getElementByTagNameAndID('txtRegisterPassword','INPUT');                
            if (oPassword !== null && typeof oPassword !== 'undefined') {    
                return oPassword;  
            } else { return null; }
        },
                                                
        _getPassword: function () {
            if (this._getPasswordTextbox() !== null) {
                return this._getPasswordTextbox().value;
            }         
        },

        _getPasswordConfirmTextbox: function () {
            oPasswordConfirm = _oUtility.getElementByTagNameAndID('txtRegisterPasswordConfirm','INPUT');                
            if (oPasswordConfirm !== null && typeof oPasswordConfirm !== 'undefined') {    
                return oPasswordConfirm;  
            } else { return null; }
        },
                
        _getPasswordConfirm: function () {
            if (this._getPasswordConfirmTextbox() !== null) {
                return this._getPasswordConfirmTextbox().value;
            }         
        },

        _getPreferredAgentHidden: function () {
            oPreferredAgent = _oUtility.getElementByTagNameAndID('hdnAgentID','INPUT');                
            if (oPreferredAgent !== null && typeof oPreferredAgent !== 'undefined') {    
                return oPreferredAgent;  
            } else { return null; }
        },
        
        _getPreferredAgentID: function () {
            if (this._getPreferredAgentHidden() !== null) {
                return this._getPreferredAgentHidden().value;
            }         
        },

        _getPreferredTeamHidden: function () {
            oPreferredTeam = _oUtility.getElementByTagNameAndID('hdnTeamID','INPUT');                
            if (oPreferredTeam !== null && typeof oPreferredTeam !== 'undefined') {    
                return oPreferredTeam;  
            } else { return null; }
        },
        
        _getPreferredTeamID: function () {
            if (this._getPreferredTeamHidden() !== null) {
                return this._getPreferredTeamHidden().value;
            }         
        },
        
        _getRememberMeCheckbox: function () {
            oRememberMe = _oUtility.getElementByTagNameAndID('chkRegisterRememberMe','INPUT');                
            if (oRememberMe !== null && typeof oRememberMe !== 'undefined') {    
                return oRememberMe;  
            } else { return null; }
        },
                
        _getRememberMe: function ()	{
            if ( this._getRememberMeCheckbox() !== null) {
                return this._getRememberMeCheckbox().checked;
            } else { return true; }        
        },

        _getIsNonUSResidentCheckbox: function () {
            oIsNonUSResident = _oUtility.getElementByTagNameAndID('chkOutsideUS','INPUT');                
            if (oIsNonUSResident !== null && typeof oIsNonUSResident !== 'undefined') {    
                return oIsNonUSResident;  
            } else { return null; }
        },
        
        _getIsNonUSResident: function () {
            if (this._getIsNonUSResidentCheckbox() !== null) {
                return this._getIsNonUSResidentCheckbox().checked;
            } else { return true; }
        },

        
        /*******************************************************************************************************************
        *									P U B L I C   M E T H O D S
        *******************************************************************************************************************/
        /*==================================================================================
            Method		: closeWindow
            Summary		: Closes the Did You Mean layered page.
            Author		: Dale Lawless
            Create Date	: 12/06/2007
        ====================================================================================*/
        closeWindow: function () 
        {
            var DialogID = null;
            
            try
            {
                DialogID = "Dialog_" + _WinTitle_Registration.replace(" ","_");
                _oUtility.closeLayeredPage(DialogID); 
            }
            catch(err)
            {
                _oErrorHandler.Error('NRT.MySite.Registration.closeWindow', _oErrorHandler.ERRORTYPE_JS, err);
                return;
            }
        },        
        /*==================================================================================
            Method		: registerUser
            Summary		: 
            Author		: Dale Lawless
            Create Date	: 08/10/2006
        ====================================================================================*/				 							
        registerUser: function ()
        {  
            var RegisterEmail = this._getEmailAddress();
            var FirstName = this._getFirstName();	
            var LastName = this._getLastName();
            var Password = this._getPassword();
            var PreferredAgentID = 0; 
            var PreferredTeamID = 0;
            var RememberMe = this._getRememberMe(); 
            var ServerName = window.location.host;	
            var IsBuyerWatch = false;
            
            try
            {
                // Show Cookies Disabled message if browser settings don't have cookies enabled
                if (!_oUtility.browserCookiesEnabled())
                {
                    // Show cookies disabled message in a layered window
                    NRT.MySite.UI.showLayeredWindow('CookiesDisabled', _WinTitle_CoookiesDisabled,_WinW_CoookiesDisabled, _DefFocusItemID_CoookiesDisabled, _DefFocusItemType_CoookiesDisabled);
                    return;
                }
                            
                // Validate controls
                if (!this.validate()) 
                {
                    return;
                }

                if (this._getPreferredAgentID() !== '') {
                    PreferredAgentID = this._getPreferredAgentID();
                }
                if (this._getPreferredTeamID() !== '') {
                    PreferredTeamID = this._getPreferredTeamID();
                }
                                                            					                    
                MySiteProvider.RegisterUser_v1(_WebsiteID,_EmailFrom, _AltEmailTo, FirstName, LastName, RegisterEmail, Password, PreferredAgentID, PreferredTeamID, RememberMe, ServerName, IsBuyerWatch, this._registerUser_Callback);			
            }
            catch(err)
            {
                _oErrorHandler.Error('NRT.MySite.Registration.registerUser', _oErrorHandler.ERRORTYPE_JS, err);
            }			
        },

        /*==================================================================================
            Method		: registerUserExtended
            Summary		: 
            Author		: Uma Chandrasekar
            Create Date	: 05/31/2007
        ====================================================================================*/				 							
        registerUserExtended: function ()
        {
            var Email = this._getEmailAddress();								
            var FirstName = this._getFirstName();						
            var LastName = this._getLastName();	
            var Address = this._getAddress();	
            var City = this._getCity();
            var State = this._getState();	
            var ZipCode = this._getZipCode();
            var IsNonUSResident = this._getIsNonUSResident();
            var DaytimePhone = this._getDaytimePhone();	
            var EveningPhone = this._getEveningPhone();	                                   				
            var ContactPhone = this._getContactPhone();
            var Password = this._getPassword();					
            var PreferredAgentID = 0;
            var PreferredTeamID = 0;			
            var RememberMe = this._getRememberMe();	
            var ServerName = window.location.host;	
            var IsBuyerWatch = false;
            var AreasOfInterest = '';
            var allInputs = null;
            var x = 0;
                
            try
            {
                // Show Cookies Disabled message if browser settings don't have cookies enabled
                if (!_oUtility.browserCookiesEnabled())
                {
                    // Show cookies disabled message in a layered window
                    NRT.MySite.UI.showLayeredWindow('CookiesDisabled', _WinTitle_CoookiesDisabled,_WinW_CoookiesDisabled, _DefFocusItemID_CoookiesDisabled, _DefFocusItemType_CoookiesDisabled);
                    return;
                }
                            
                // Validate controls
                if (!this.validate())
                {
                    return;
                }
                            
                allInputs = _oUtility.getElementsByTagNameAndID('chkAreasOfInterest','INPUT');
                
                for (x = 0; x < allInputs.length; x += 1)
                {
                    // Make sure it's a checkbox box
                    if (allInputs[x].type  === 'checkbox')
                    {
                        // Make sure it was checked
                        if (allInputs[x].checked  === true) 
                        {			
                            AreasOfInterest += allInputs[x].value + ',';	
                        }
                    }
                }	

                if (this._getPreferredAgentID() !== '') {
                    PreferredAgentID = this._getPreferredAgentID();
                }
                if (this._getPreferredTeamID() !== '') {
                    PreferredTeamID = this._getPreferredTeamID();
                }

                if (LastName === null || typeof LastName === 'undefined') {
                    LastName = '';
                }
                if (Address === null || typeof Address === 'undefined') {
                    Address = '';
                }
                if (City === null || typeof City === 'undefined') {
                    City = '';
                }
                if (State === null || typeof State === 'undefined') {
                    State = '';
                }
                
                //Note: Both RegisterUser and RegisterUserExtended calls the same _registerUser_Callback and it is perfectly okay!
                MySiteProvider.RegisterUserExtended_v2(_WebsiteID,_EmailFrom, _AltEmailTo, FirstName, LastName, Email, Address, City, State, ZipCode, IsNonUSResident, DaytimePhone, EveningPhone, Password, PreferredAgentID, PreferredTeamID, RememberMe, ServerName, IsBuyerWatch, AreasOfInterest, ContactPhone, this._registerUser_Callback);			
            }
            catch(err)
            {
                _oErrorHandler.Error('NRT.MySite.Registration.registerUserExtended', _oErrorHandler.ERRORTYPE_JS, err);
            }			
        },
        
        /*==================================================================================
            Method		: collapseRememberMe
            Summary		: Hides the Remember Me information.
            Author		: Dale Lawless
            Create Date	: 01/27/2007
        ====================================================================================*/				 							
        collapseRememberMe: function (obj)
        {      
            var objOvr = {};
            
            try
            {
                objOvr = obj;
                //var sBaseName = objOvr.id.replace('Tooltip','');
        
                objOvr.innerHTML='';
                objOvr.className='rememberMe_off hideDiv';
            }
            catch(err)
            {
                _oErrorHandler.Error('NRT.MySite.Registration.collapseRememberMe', _oErrorHandler.ERRORTYPE_JS, err);
            }			
        },

        /*==================================================================================
            Method		: expandRememberMe
            Summary		: Displays the Remember Me information.
            Author		: Dale Lawless
            Create Date	: 01/27/2007
        ====================================================================================*/				 							
        expandRememberMe: function (obj)
        {   
            var oRemembeMeMain = null;
            var oRemembeMeOver = null;
            
            try
            {
                oRemembeMeMain = NRT.Utility.getElementByTagNameAndID('RemembeMeMain','DIV');
                oRemembeMeOver = NRT.Utility.getElementByTagNameAndID('RemembeMeOver','DIV');

                oRemembeMeOver.style.pixeltop = oRemembeMeMain.offsetTop;
                oRemembeMeOver.style.pixelLeft = oRemembeMeMain.offsetLeft + 120;
                    
                oRemembeMeOver.innerHTML = _Registration_Text1 + ' ' + window.location.host + '.com ' + _Registration_Text2;
                oRemembeMeOver.className='rememberMe_off showDiv';
                    
            }
            catch(err)
            {
                _oErrorHandler.Error('NRT.MySite.Registration.expandRememberMe', _oErrorHandler.ERRORTYPE_JS, err);
            }			
        },
                
        /*==================================================================================
            Method		: validate
            Summary		: Validates the data entry on the registration layered window.
            Author		: Dale Lawless
            Create Date	: 01/10/2007
        ====================================================================================*/			
        validate: function ()
        {   
            var bReturn = true;
            var oDivEmailErrMessage = null;
            var oDivFirstNameErrMessage = null;
            var oDivLastNameErrMessage = null;
            var oDivAddressErrMessage = null;
            var oDivCityErrMessage = null;
            var oDivZipCodeErrMessage = null;
            var oDivDaytimePhoneErrMessage = null;
            var oDivEveningPhoneErrMessage = null;
            var oDivContactPhoneErrMessage = null;
            var oDivPasswordErrMessage = null; 
            var oDivPasswordConfirmErrMessage = null;
            
            try {
                this._clearMessages();
                
                // Email - Always Required
                if (this._getEmailAddressTextbox() !== null && typeof this._getEmailAddressTextbox() !== 'undefined') {          
                    oDivEmailErrMessage = eval(document.getElementById('divEmailErrMessage'));
                    if (oDivEmailErrMessage !== null && typeof oDivLastNameErrMessage !== 'undefined') {                                
                        if (!this._getEmailAddress()) {
                            oDivEmailErrMessage.innerHTML = NRT.MySite.Validation.MESSAGE_EMAIL_REQUIRED;
                            oDivEmailErrMessage.style.display = 'block';
                            bReturn =  false;
                        } else if (!NRT.MySite.Validation.Utility.validEmail(this._getEmailAddress())) {
                            oDivEmailErrMessage.innerHTML = NRT.MySite.Validation.MESSAGE_EMAIL_INVALID;
                            oDivEmailErrMessage.style.display = 'block';
                            bReturn =  false;
                        } else {
                            oDivEmailErrMessage.innerHTML = '';
                            oDivEmailErrMessage.style.display = 'none';
                        }
                    }                              
                }
                
                // First Name - Always Required
                if (this._getFirstNameTextbox() !== null && typeof this._getFirstNameTextbox() !== 'undefined') {          
                    oDivFirstNameErrMessage = eval(document.getElementById('divFirstNameErrMessage'));
                    if (oDivFirstNameErrMessage !== null && typeof oDivFirstNameErrMessage !== 'undefined') {                
                        if (!this._getFirstName()) {
                            oDivFirstNameErrMessage.innerHTML = NRT.MySite.Validation.MESSAGE_FIRSTNAME_REQUIRED;
                            oDivFirstNameErrMessage.style.display = 'block';
                            bReturn =  false;
                        } else {
                            oDivFirstNameErrMessage.innerHTML = '';
                            oDivFirstNameErrMessage.style.display = 'none';
                        }
                    }
                }

                // Last Name - Always Required
                if (this._getLastNameTextbox() !== null && typeof this._getLastNameTextbox() !== 'undefined') {                          
                    oDivLastNameErrMessage = eval(document.getElementById('divLastNameErrMessage'));
                    if (oDivLastNameErrMessage !== null && typeof oDivLastNameErrMessage !== 'undefined') {
                        if (!this._getLastName()) {
                            oDivLastNameErrMessage.innerHTML = NRT.MySite.Validation.MESSAGE_LASTNAME_REQUIRED;
                            oDivLastNameErrMessage.style.display = 'block';
                            bReturn =  false;
                        } else {
                            oDivFirstNameErrMessage.innerHTML = '';
                            oDivFirstNameErrMessage.style.display = 'none';
                        }                    
                    }                                
                }

                // Address - Required if shown
                if (this._getAddressTextbox() !== null && typeof this._getAddressTextbox() !== 'undefined') { 
                    if (this._getAddressTextbox().style.visibility !== "hidden" || this._getAddressTextbox().style.display  !== "none" || this._getAddressTextbox().disabled !== true) {
                        oDivAddressErrMessage = eval(document.getElementById('divAddressErrMessage'));
                        if (oDivAddressErrMessage !== null && typeof oDivAddressErrMessage !== 'undefined') {
                            if (!this._getAddress()) {
                                oDivAddressErrMessage.innerHTML = NRT.MySite.Validation.MESSAGE_ADDRESS_REQUIRED;
                                oDivAddressErrMessage.style.display = 'block';
                                bReturn =  false;
                            } else {
                                oDivAddressErrMessage.innerHTML = '';
                                oDivAddressErrMessage.style.display = 'none';
                            }                    
                        }                                
                    }
                }

                // City - Required if shown
                if (this._getCityTextbox() !== null && typeof this._getCityTextbox() !== 'undefined') { 
                    if (this._getCityTextbox().style.visibility !== "hidden" || this._getCityTextbox().style.display  !== "none" || this._getCityTextbox().disabled !== true) {
                        oDivCityErrMessage = eval(document.getElementById('divCityErrMessage'));
                        if (oDivCityErrMessage !== null && typeof oDivCityErrMessage !== 'undefined') {
                            if (!this._getCity()) {
                                oDivCityErrMessage.innerHTML = NRT.MySite.Validation.MESSAGE_CITY_REQUIRED;
                                oDivCityErrMessage.style.display = 'block';
                                bReturn =  false;
                            } else {
                                oDivCityErrMessage.innerHTML = '';
                                oDivCityErrMessage.style.display = 'none';
                            }                    
                        }                                
                    }
                }
                                
                // Zip Code - Required if shown
                if (this._getZipCodeTextbox() !== null && typeof this._getZipCodeTextbox() !== 'undefined') { 
                    if (this._getZipCodeTextbox().style.visibility !== "hidden" || this._getZipCodeTextbox().style.display  !== "none" || this._getZipCodeTextbox().disabled !== true) {
                        // Make sure the Reside Outside US check box isn't checked - if shown
                        if (this._getIsNonUSResidentCheckbox() !== null && typeof this._getIsNonUSResidentCheckbox() !== 'undefined') { 
                            if (this._getIsNonUSResidentCheckbox().style.visibility !== "hidden" || this._getIsNonUSResidentCheckbox().style.display  !== "none" || this._getIsNonUSResidentCheckbox().disabled !== true) {
                                if (!this._getIsNonUSResident()) {
                                     oDivZipCodeErrMessage = eval(document.getElementById('divZipCodeErrMessage'));
                                    if (!this._getZipCode()) {
                                        oDivZipCodeErrMessage.innerHTML = NRT.MySite.Validation.MESSAGE_ZIPCODE_OR_ZIP_CHECKBOX_REQUIRED;
                                        oDivZipCodeErrMessage.style.display = 'block';
                                        bReturn =  false;
                                    } else if (!NRT.MySite.Validation.Utility.validZipCode(this._getZipCode())) {
                                        oDivZipCodeErrMessage.innerHTML = NRT.MySite.Validation.MESSAGE_ZIPCODE_INVALID;
                                        oDivZipCodeErrMessage.style.display = 'block';
                                        bReturn =  false;
                                    } else {
                                        oDivZipCodeErrMessage.innerHTML = '';
                                        oDivZipCodeErrMessage.style.display = 'none';
                                    }
                                }
                            }
                        } else { // Zipcode Required - ResideOutsideUS checkbox is not shown
                            oDivZipCodeErrMessage = eval(document.getElementById('divZipCodeErrMessage'));
                            if (!this._getZipCode()) {
                                oDivZipCodeErrMessage.innerHTML = NRT.MySite.Validation.MESSAGE_ZIPCODE_REQUIRED;
                                oDivZipCodeErrMessage.style.display = 'block';
                                bReturn =  false;
                            } else if (!NRT.MySite.Validation.Utility.validZipCode(this._getZipCode())) {
                                oDivZipCodeErrMessage.innerHTML = NRT.MySite.Validation.MESSAGE_ZIPCODE_INVALID;
                                oDivZipCodeErrMessage.style.display = 'block';
                                bReturn =  false;
                            } else {
                                oDivZipCodeErrMessage.innerHTML = '';
                                oDivZipCodeErrMessage.style.display = 'none';
                            }                        
                        }
                    }                
                }

                // DaytimePhone - Check format if smething was entered
                if (this._getDaytimePhoneTextbox() !== null && typeof this._getDaytimePhoneTextbox() !== 'undefined') { 
                    if (this._getDaytimePhoneTextbox().style.visibility !== "hidden" || this._getDaytimePhoneTextbox().style.display  !== "none" || this._getDaytimePhoneTextbox().disabled !== true) {
                        if (this._getDaytimePhone() !== '') { // something was entered
                            oDivDaytimePhoneErrMessage = eval(document.getElementById('divDaytimePhoneErrMessage'));
                            if (oDivDaytimePhoneErrMessage !== null && typeof oDivDaytimePhoneErrMessage !== 'undefined') {
                                if (!NRT.MySite.Validation.Utility.validPhoneNumber(this._getDaytimePhone())) {
                                    oDivDaytimePhoneErrMessage.innerHTML = NRT.MySite.Validation.MESSAGE_PHONENUMBER_INVALID;
                                    oDivDaytimePhoneErrMessage.style.display = 'block';
                                    bReturn =  false;
                                } else {
                                    oDivDaytimePhoneErrMessage.innerHTML = '';
                                    oDivDaytimePhoneErrMessage.style.display = 'none';
                                }                    
                            }                         
                        }                               
                    }
                }
                
                // EveningPhone - Check format if smething was entered
                if (this._getEveningPhoneTextbox() !== null && typeof this._getEveningPhoneTextbox() !== 'undefined') { 
                    if (this._getEveningPhoneTextbox().style.visibility !== "hidden" || this._getEveningPhoneTextbox().style.display  !== "none" || this._getEveningPhoneTextbox().disabled !== true) {
                        if (this._getEveningPhone() !== '') { // something was entered
                            oDivEveningPhoneErrMessage = eval(document.getElementById('divEveningPhoneErrMessage'));
                            if (oDivEveningPhoneErrMessage !== null && typeof oDivEveningPhoneErrMessage !== 'undefined') {
                                if (!NRT.MySite.Validation.Utility.validPhoneNumber(this._getEveningPhone())) {
                                    oDivEveningPhoneErrMessage.innerHTML = NRT.MySite.Validation.MESSAGE_PHONENUMBER_INVALID;
                                    oDivEveningPhoneErrMessage.style.display = 'block';
                                    bReturn =  false;
                                } else {
                                    oDivEveningPhoneErrMessage.innerHTML = '';
                                    oDivEveningPhoneErrMessage.style.display = 'none';
                                }                    
                            }                        
                        }                                
                    }
                }
                       
                // ContactPhone - Check format if something was entered
                if (this._getContactPhoneTextbox() !== null && typeof this._getContactPhoneTextbox() !== 'undefined') { 
                    if (this._getContactPhoneTextbox().style.visibility !== "hidden" || this._getContactPhoneTextbox().style.display  !== "none" || this._getEveningPhoneTextbox().disabled !== true) {
                        if (this._getContactPhone() !== '') { // something was entered
                            oDivContactPhoneErrMessage = eval(document.getElementById('divContactPhoneErrMessage'));
                            if (oDivContactPhoneErrMessage !== null && typeof oDivContactPhoneErrMessage !== 'undefined') {
                                if (!NRT.MySite.Validation.Utility.validPhoneNumber(this._getContactPhone())) {
                                    oDivContactPhoneErrMessage.innerHTML = NRT.MySite.Validation.MESSAGE_PHONENUMBER_INVALID;
                                    oDivContactPhoneErrMessage.style.display = 'block';
                                    bReturn =  false;
                                } else {
                                    oDivContactPhoneErrMessage.innerHTML = '';
                                    oDivContactPhoneErrMessage.style.display = 'none';
                                }                    
                            }                        
                        }                                
                    }
                }
                
                // Password - Always Required
                if (this._getPasswordTextbox() !== null && typeof this._getPasswordTextbox() !== 'undefined') {
                    oDivPasswordErrMessage = eval(document.getElementById('divPasswordErrMessage'));
                    if (!this._getPassword()) {
                        oDivPasswordErrMessage.innerHTML = NRT.MySite.Validation.MESSAGE_PASSWORD_REQUIRED;
                        oDivPasswordErrMessage.style.display = 'block';
                        bReturn =  false;
                    } else if (!NRT.MySite.Validation.Utility.validPassword(this._getPassword())) {
                        oDivPasswordErrMessage.innerHTML = NRT.MySite.Validation.MESSAGE_PASSWORD_INVALID;
                        oDivPasswordErrMessage.style.display = 'block';
                        bReturn =  false;
                    } else {
                        oDivPasswordErrMessage.innerHTML = '';
                        oDivPasswordErrMessage.style.display = 'none';
                    }
                }
                
                // Password Confirmation - Always Required
                if (this._getPasswordConfirmTextbox() !== null && typeof this._getPasswordConfirmTextbox() !== 'undefined') {
                    oDivPasswordConfirmErrMessage = eval(document.getElementById('divPasswordConfirmErrMessage'));					
                    if (!this._getPasswordConfirm()) {
                        oDivPasswordConfirmErrMessage.innerHTML = NRT.MySite.Validation.MESSAGE_PASSWORDCONFIRM_REQUIRED;
                        oDivPasswordConfirmErrMessage.style.display = 'block';
                        bReturn =  false;
                    } else if (this._getPassword() !== this._getPasswordConfirm()) {
                        oDivPasswordConfirmErrMessage.innerHTML = NRT.MySite.Validation.MESSAGE_PASSWORDCONFIRM_NOMATCH;
                        oDivPasswordConfirmErrMessage.style.display = 'block';
                        bReturn =  false;
                    } else {
                        oDivPasswordConfirmErrMessage.innerHTML = '';
                        oDivPasswordConfirmErrMessage.style.display = 'none';
                    }
                }
                                
                return bReturn;			
            }
            catch(err)
            {
                _oErrorHandler.Error('NRT.MySite.Registration.validate', _oErrorHandler.ERRORTYPE_JS, err);
                return;
            }				
        },


        /*******************************************************************************************************************
        *								P R I V A T E   M E T H O D S
        *******************************************************************************************************************/
        /*==================================================================================
            Method		: _clearMessages
            Summary		: Clears all of the validation messages.
            Author		: Dale lawless
            Create Date	: 01/18/2007
        ====================================================================================*/				 									
        _clearMessages: function ()
        {  
            var oDivEmailErrMessage = null;
            var oDivFirstNameErrMessage = null;
            var oDivLastNameErrMessage = null;
            var oDivAddressErrMessage = null;
            var oDivCityErrMessage = null;
            var oDivZipCodeErrMessage = null;
            var oDivPasswordErrMessage = null; 
            var oDivPasswordConfirmErrMessage = null;
                      
            try
            {
                oDivEmailErrMessage = eval(document.getElementById('divEmailErrMessage'));
                if (oDivEmailErrMessage !== null && typeof oDivEmailErrMessage !== 'undefined')
                {
                    oDivEmailErrMessage.innerHTML = '';
                    oDivEmailErrMessage.style.display = 'none';
                }

                oDivFirstNameErrMessage = eval(document.getElementById('divFirstNameErrMessage'));
                if (oDivFirstNameErrMessage !== null && typeof oDivFirstNameErrMessage !== 'undefined')
                {
                    oDivFirstNameErrMessage.innerHTML = '';
                    oDivFirstNameErrMessage.style.display = 'none';
                }

                oDivLastNameErrMessage = eval(document.getElementById('divLastNameErrMessage'));
                if (oDivLastNameErrMessage !== null && typeof oDivLastNameErrMessage !== 'undefined')
                {
                    oDivLastNameErrMessage.innerHTML = '';
                    oDivLastNameErrMessage.style.display = 'none';
                }

                oDivAddressErrMessage = eval(document.getElementById('divAddressErrMessage'));
                if (oDivAddressErrMessage !== null && typeof oDivAddressErrMessage !== 'undefined')
                {
                    oDivAddressErrMessage.innerHTML = '';
                    oDivAddressErrMessage.style.display = 'none';
                }
                
                oDivCityErrMessage = eval(document.getElementById('divCityErrMessage'));
                if (oDivCityErrMessage !== null && typeof oDivCityErrMessage !== 'undefined')
                {
                    oDivCityErrMessage.innerHTML = '';
                    oDivCityErrMessage.style.display = 'none';
                }
                
                oDivZipCodeErrMessage = eval(document.getElementById('divZipCodeErrMessage'));
                if (oDivZipCodeErrMessage !== null && typeof oDivZipCodeErrMessage !== 'undefined')
                {
                    oDivZipCodeErrMessage.innerHTML = '';
                    oDivZipCodeErrMessage.style.display = 'none';
                }
                                
                oDivPasswordErrMessage = eval(document.getElementById('divPasswordErrMessage'));
                if (oDivPasswordErrMessage !== null && typeof oDivPasswordErrMessage !== 'undefined')
                {
                    oDivPasswordErrMessage.innerHTML = '';
                    oDivPasswordErrMessage.style.display = 'none';
                }
                
                oDivPasswordConfirmErrMessage = eval(document.getElementById('divPasswordConfirmErrMessage'));
                if (oDivPasswordConfirmErrMessage !== null && typeof oDivPasswordConfirmErrMessage !== 'undefined')
                {
                    oDivPasswordConfirmErrMessage.innerHTML = '';
                    oDivPasswordConfirmErrMessage.style.display = 'none';
                }
                
                oDivRegisterMessage = eval(document.getElementById('divRegisterMessage'));
                if (oDivRegisterMessage !== null && typeof oDivRegisterMessage !== 'undefined')
                {
                    oDivRegisterMessage.innerHTML = '';
                    oDivRegisterMessage.style.display = 'none';
                }
            }
            catch(err)
            {
                _oErrorHandler.Error('NRT.MySite.Registration._clearMessages', _oErrorHandler.ERRORTYPE_JS, err);
            }
        },

        /*==================================================================================
            Method		: _showErrorMessage
            Summary		: Displays the registration failed message
            Author		: Dale Lawless
            Create Date	: 03/07/2007
        ====================================================================================*/		
        _showErrorMessage: function (sMessage)
        {   
            var divRegisterMessage = null;
            
            try
            {
                // Display message on page
                divRegisterMessage = document.getElementById('divRegisterMessage');
                if (divRegisterMessage !== null && typeof divRegisterMessage !== 'undefined')
                {
                    divRegisterMessage.innerHTML = sMessage;
                    divRegisterMessage.style.display = 'inline';
                }
            }
            catch(err)
            {
                _oErrorHandler.Error('NRT.MySite.Registration._showErrorMessage', _oErrorHandler.ERRORTYPE_JS, err);
            }
        },

        /******************************************************************************************************************
        *									A J A X   M E T H O D S
        *******************************************************************************************************************/
        /*==================================================================================
            Method		: _registerUser_Callback
            Summary		: 
            Author		: Dale Lawless
            Create Date	: 08/10/2006
        ====================================================================================*/				 							
        _registerUser_Callback: function (response)
        {  
            var oRegisterInfo = null; 
            var sCookie = null; 
            var sPrefillEmail = null;
            
            try {
                if (response.error !== null) {
                    _oErrorHandler.ResponseError('NRT.MySite.Registration._registerUser_Callback',response);
                    return; 
                } else {
                    if (response !== null && response.value !== null) {
                        oRegisterInfo = response.value.split(',');
                    if (oRegisterInfo.length > 0) {
                            if (oRegisterInfo[0] === 'Success') {
                                // Close the Layered Window
                                NRT.MySite.Registration.closeWindow();

                                // Create Cookie  
                                sCookie = oRegisterInfo[1] + '~' + oRegisterInfo[2] + '~' + oRegisterInfo[3];
                                if (oRegisterInfo[3] === 'True') {
                                    NRT.MySite.Authentication.createCookie(sCookie, _CookieExpireDays, null);
                                } else {
                                    NRT.MySite.Authentication.createCookie(sCookie, null, _CookieLoginExpireMin);
                                }

                                // Create MySite Email Cookie for prefilling the email address
                                sPrefillEmail = oRegisterInfo[4];
                                if (sPrefillEmail === null || typeof sPrefillEmail === 'undefined') {
                                    sPrefillEmail = '';
                                }
                                NRT.MySite.Authentication.createEmailCookie(sPrefillEmail, _CookieExpireDays);							

                                if (NRT.MySite.UI.pageIsMySiteRegister()) {
                                    // Show Confirmation Message & Redirect to the MySite My Saved Searches tab.
                                    _oUtility.showMessage(NRT.MySite.Validation.MESSAGE_REGISTRATION_SENDEMAIL_SUCCESS);
                                    NRT.MySite.UI.redirectToMySavedSearches(); 
                                    return;
                                }
                                
                                if (NRT.MySite.UI.pageIsHomePage()) {
                                    if (NRT.MySite.UI.pageHasAuthentication()) {
                                        // Toggle Authentication Panel & Show Saved Searches
                                        _oUtility.showMessage(NRT.MySite.Validation.MESSAGE_REGISTRATION_SENDEMAIL_SUCCESS);
                                        NRT.MySite.Authentication.toggleSearchOptions('divAuthSavedSearchOptions',oRegisterInfo[2]);
                                        NRT.MySite.Authentication.showNoSavedSearches();
                                    } else { 
                                        // Show Confirmation Message & Redirect to the MySite MyAccount tab.
                                        _oUtility.showMessage(NRT.MySite.Validation.MESSAGE_REGISTRATION_SENDEMAIL_SUCCESS);
                                        NRT.MySite.UI.redirectToMyAccount(); 
                                    }
                                    return; 
                                }

                                if (NRT.MySite.UI.pageIsPropertySearch() || NRT.MySite.UI.pageIsPropertyResults()) {
                                    // Show Confirmation Message & Toggle Authentication Panel & Show Saved Searches
                                    _oUtility.showMessage(NRT.MySite.Validation.MESSAGE_REGISTRATION_SENDEMAIL_SUCCESS);
                                    NRT.MySite.Authentication.toggleSearchOptions('divAuthSavedSearchOptions',oRegisterInfo[2]);
                                    NRT.MySite.Authentication.showNoSavedSearches();
                                    // Show Save Search if the user clicked Save Search prior to registering
                                    if (NRT.MySite.SavedSearch.getLinkSelected()) { _oResults.saveSearch(); }
                                    return;
                                }
                                
                                if (NRT.MySite.UI.pageIsPropertyDetails()) {
                                     // Show Confirmation Message & Save Property Layered Window
                                    NRT.MySite.SaveProperty.show();
                                  //  _oUtility.showMessage(NRT.MySite.Validation.MESSAGE_REGISTRATION_SENDEMAIL_SUCCESS);	
                                    return;
                                }

                                //Show Confirmation Message
                                _oUtility.showMessage(NRT.MySite.Validation.MESSAGE_REGISTRATION_SENDEMAIL_SUCCESS);
                                	                                
                            } else if (oRegisterInfo[0] === 'Duplicate')
                            {
                                NRT.MySite.Registration._showErrorMessage(NRT.MySite.Validation.MESSAGE_REGISTRATION_ACCOUNT_EXISTS);	
                            } else {
                                // Registeration failed
                                NRT.MySite.Registration._showErrorMessage(NRT.MySite.Validation.MESSAGE_REGISTRATION_FAILED);	
                            }
                        }
                    }
                }
            } catch(err) {
                _oErrorHandler.Error('NRT.MySite.Registration._registerUser_Callback', _oErrorHandler.ERRORTYPE_AJAX, err);
            }
        }
    };
}();/* ##########################################################################################################################

    Namespace : NRT.MySite
    Classes   : SavedSearch
    Summary	 : Contains all the scripts to handle the entire client side functionality for the
                  NRT MySite Saved Search functionality. 
    Copyright : (c) 2006 NRT Inc. All rights reserved.

    RevisionHistory: 
    -------------------------------------------------------------------------------------------------------------------------
    Date		Name		Description
    -------------------------------------------------------------------------------------------------------------------------
    08/10/2006	dboyce	Initial Creation

###########################################################################################################################*/

NRT.MySite.SavedSearch = function ()
{	
    var _linkSelected;

    return {    
        /*******************************************************************************************************************
        *									P U B L I C   P R O P E R T I E S
        *******************************************************************************************************************/
        /*==================================================================================
            Property	: getLinkSelected
            Summary		: Returns the save search link flag.
            Author		: Dale Lawless
            Create Date	: 11/20/2007
        ====================================================================================*/
        getLinkSelected: function ()
        {
            return _linkSelected;
        },
        
        /*==================================================================================
            Property	: setLinkSelected
            Summary		: Sets the save search link flag to indicate that the save search link
                          has been selected. 
            Author		: Dale Lawless
            Create Date	: 11/20/2007
        ====================================================================================*/
        setLinkSelected: function (value)
        {
            _linkSelected = value;
        },

    
        /*******************************************************************************************************************
        *									P U B L I C   M E T H O D S
        *******************************************************************************************************************/
        /*==================================================================================
            Method		: closeWindow
            Summary		: Closes the Save Search layered page.
            Author		: Dale Lawless
            Create Date	: 12/06/2007
        ====================================================================================*/
        closeWindow: function () 
        {
            var DialogID = null;
            
            try
            {
                DialogID = "Dialog_" + _WinTitle_SaveSearch.replace(" ","_");
                _oUtility.closeLayeredPage(DialogID); 
            }
            catch(err)
            {
                _oErrorHandler.Error('NRT.MySite.SavedSearch.closeWindow', _oErrorHandler.ERRORTYPE_JS, err);
                return;
            }
        },
                														
        /*==================================================================================
            Method		: setAlertTextStyle
            Summary		: Called when a saved seach alert checkbox is clicked. Will bold or 
                          remove the bolding of the text for the alert name.
            Author		: Dale Lawless
            Create Date	: 01/28/2007
        ====================================================================================*/
        setAlertTextStyle: function (control)
        {    
            var str = null;
            var temp = null; 
            var divAlertName = null;
             
            try
            {
                str = control.id;
                temp = str.replace(/chkSearchAlert/, 'divSearchAlertText');
                
                divAlertName = _oUtility.getElementByTagNameAndID(temp,'DIV');
                if (divAlertName !== null && typeof divAlertName !== 'undefined')
                {
                    // Determine how do display the text
                    if (control.checked) 
                    {
                        divAlertName.style.fontWeight='bold'; 
                    } else {
                        divAlertName.style.fontWeight='';
                    }
                }
            }
            catch(err)
            {
                _oErrorHandler.Error('NRT.MySite.SavedSearch.setAlertTextStyle', _oErrorHandler.ERRORTYPE_JS, err);
                return;
            }
        },
        
        /*==================================================================================
            Method		: update
            Summary		: Updates the saved search for the user logged in. 
                          Note: the search has already been saved but not yet assigned saved
                          with a name and any alert options.
            Author		: Doug Boyce
            Create Date	: 12/12/2006
        ====================================================================================*/
        update: function ()
        {     
            var SearchName = null;
            var ConsumerSearchID = null; 
            var ConsumerID = null;
            var SearchXml = null;
            var AlertIDs = null; 
            var status = null;
            var DialogID = null;
            
            try
            {
                NRT.MySite.SavedSearch._clearMessages();
                
                // Check for empty saved search name
                SearchName = _oUtility.getElementByTagNameAndID('txtSaveSearchName','INPUT').value;
                if (!SearchName)
                {
                    NRT.MySite.SavedSearch._showErrorMessage(NRT.MySite.Validation.MESSAGE_SAVESEARCH_SEARCHNAME_REQUIRED);
                    return;
                } else if (!NRT.MySite.Validation.Utility.validSearchName(SearchName))
                {
                    NRT.MySite.Validation.Utility.displayInvalidSaveSearchNameMessage(SearchName);
                    return;
                }
                
                ConsumerSearchID = _oUtility.getElementByTagNameAndID('hdnConsumerSearchID','INPUT').value;
                ConsumerID = NRT.MySite.Authentication.getConsumerID();
                SearchXml = MySiteProvider.GetSavedSearchXml(_WebsiteID, ConsumerSearchID).value;
                AlertIDs = NRT.MySite.SavedSearch._getSelectedAlertIds();
                                                
                // Update Saved Search
                status = MySiteProvider.UpdateSavedSearch(_WebsiteID, ConsumerSearchID, ConsumerID, SearchName, SearchXml, AlertIDs, true);
                
                // Check status to show which Div
                switch (status.value)
                {
                    case 0:
                        //Failed
                        //Show Error Div 
                        document.getElementById('divSaveSearchFailed').style.display = 'inline';
                        document.getElementById('divSaveSearchEnter').style.display = 'none';
                        break;
                    case 1:
                        // Success
                        //Show Confirmation Layerd Window
                        NRT.MySite.SavedSearch.closeWindow();
                        NRT.MySite.Authentication.fillSavedSearchDropDownList(ConsumerID);	
                        NRT.MySite.UI.showConfirmationLayeredWindow(_ConfirmationType_SavedSearches, ConsumerID);
                        break;
                    case 4:
                        // Duplicate Search Name
                        //Show Duplicate Search Name Message
                        NRT.MySite.SavedSearch._showErrorMessage(NRT.MySite.Validation.MESSAGE_SAVESEARCH_SEARCHNAME_DUPLICATE);
                        break;
                }
            }
            catch(err)
            {
                _oErrorHandler.Error('NRT.MySite.SavedSearch.update', _oErrorHandler.ERRORTYPE_JS, err);
            }
        },
        
        /*==================================================================================
            Method		: view
            Summary		: Views a selected saved search from the saved search panel after 
                          selecting from the saved searches and search options dropdowns 
                          and clicking Go.
            Author		: Dale Lawless
            Create Date	: 03/07/2007
        ====================================================================================*/
        view: function ()
        {     
            var iConsumerSearchID = 0;
            var iSearchOptionID = 0; 
            var oSelectionErrMessage = null;
            
            try
            {
                iConsumerSearchID = parseInt(NRT.MySite.Authentication.getSavedSearchID(),10);
                iSearchOptionID = parseInt(NRT.MySite.Authentication.getSearchOptionID(),10);
                
                if (iConsumerSearchID === 0)
                {
                    oSelectionErrMessage = eval(document.getElementById('spnSelectionErrMessage'));
                    oSelectionErrMessage.innerHTML = NRT.MySite.Validation.MESSAGE_AUTHENTICATIION_SAVEDSEARCH_NOTSELECTED;
                    oSelectionErrMessage.style.display='inline';
                    return;
                }
                                
                NRT.MySite.UI.redirectToPropertyResultsPage(iConsumerSearchID, iSearchOptionID);
            }
            catch(err)
            {
                _oErrorHandler.Error('NRT.MySite.SavedSearch.view', _oErrorHandler.ERRORTYPE_JS, err);
            }
        },
        
                
        /******************************************************************************************************************
        *								P R I V A T E   M E T H O D S
        *******************************************************************************************************************/
        /*==================================================================================
            Method		: _clearMessages
            Summary		: Clears all of the validation messages.
            Author		: Dale lawless
            Create Date	: 02/28/2007
        ====================================================================================*/
        _clearMessages: function ()
        {
            try
            {
                document.getElementById('divSearchNameErrMessage').innerHTML = '';
            }
            catch(err)
            {
                _oErrorHandler.Error('NRT.MySite.SavedSearch._clearMessages', _oErrorHandler.ERRORTYPE_JS, err);
            }
        },
        
        /*==================================================================================
            Method		: _getSelectedAlertIds
            Summary		: Returns a comma-delimited string of all selected alerts.
            Author		: Dale Lawless
            Create Date	: 01/23/2007
        ====================================================================================*/
        _getSelectedAlertIds: function ()
        {     
            var sSelectedAlertIds = ''; 
            var allInputs = null;
            var x = 0;
                 
            try
            {
                allInputs = _oUtility.getElementsByTagNameAndID('chkSearchAlert','INPUT');
                
                for (x=0; x < allInputs.length; x += 1)
                {
                    // Make sure it's a checkbox box
                    if (allInputs[x].type === 'checkbox')
                    {
                        // Make sure it was checked
                        if (allInputs[x].checked === true) 
                        {
                            sSelectedAlertIds += allInputs[x].value + ',';
                        }
                    }
                }
                return sSelectedAlertIds;
            }
            catch(err)
            {
                _oErrorHandler.Error('NRT.MySite.SavedSearch._getSelectedAlertIds', _oErrorHandler.ERRORTYPE_JS, err);
                return;
            }
        },

        /*==================================================================================
            Method		: _showErrorMessage
            Summary		: Displays the search name error message
            Author		: Dale Lawless
            Create Date	: 02/18/2007
        ====================================================================================*/		
        _showErrorMessage: function (sMessage)
        {  
            var divMessage = null;
            
            try
            {
                // Display message on page
                divMessage = document.getElementById('divSearchNameErrMessage');
                if (divMessage !== null && typeof divMessage !== 'undefined')
                {
                    divMessage.innerHTML = sMessage;
                    divMessage.style.display = 'inline';
                }
            }
            catch(err)
            {
                _oErrorHandler.Error('NRT.MySite.SavedSearch._showErrorMessage', _oErrorHandler.ERRORTYPE_JS, err);
            }
        }
    };
}();
