/********************************/
/* Global Nav Scripts           */
/********************************/
YAHOO.namespace('com.bhg');

YAHOO.util.Event.onContentReady("nav-main", function(){
    buildNav('nav-main');
}, this);        
YAHOO.util.Event.onContentReady("glbReg", function(){
    YAHOO.com.bhg.glbReg = new YAHOO.widget.Panel("glbReg", { zIndex: 202, width:"400px", xy: [508, 0], visible:false, modal:false, fixedcenter:false, constraintoviewport:true, close:false } );
    YAHOO.com.bhg.glbReg.render();
    YAHOO.util.Dom.setStyle(['glbReg'], 'display', 'block');
}, this);
 
YAHOO.util.Event.onContentReady("glbRegThanks", function(){
    YAHOO.com.bhg.glbRegThanks = new YAHOO.widget.Panel("glbRegThanks", { zIndex: 202, width:"400px", xy: [508, 0], visible:false, close: false, modal:false, fixedcenter:false, constraintoviewport:true } );
    YAHOO.com.bhg.glbRegThanks.render();
    YAHOO.util.Dom.setStyle(['glbRegThanks'], 'display', 'block');
}, this); 

YAHOO.util.Event.onContentReady("glbLogin", function(){
    YAHOO.com.bhg.glbLogin = new YAHOO.widget.Panel("glbLogin", { zIndex: 202, xy: [508, 0], close: false, width:"400px", close: false, visible:false, modal:false, fixedcenter:false, constraintoviewport:true } );
    YAHOO.com.bhg.glbLogin.render();
    YAHOO.util.Dom.setStyle(['glbLogin'], 'display', 'block');
}, this); 
 
YAHOO.util.Event.onContentReady("glbForgotPwd", function(){
    YAHOO.com.bhg.glbForgotPwd = new YAHOO.widget.Panel("glbForgotPwd", { zIndex: 202, xy: [508, 0], close: false, width:"400px", close: false, visible:false, modal:false, fixedcenter:false, constraintoviewport:true } );
    YAHOO.com.bhg.glbForgotPwd.render();
    YAHOO.util.Dom.setStyle(['glbForgotPwd'], 'display', 'block');
}, this);

YAHOO.util.Event.onContentReady("glbForgotPwdThanks", function(){
    YAHOO.com.bhg.glbForgotPwdThanks = new YAHOO.widget.Panel("glbForgotPwdThanks", { zIndex: 202, xy: [508, 0], close: false, width:"400px", close: false, visible:false, modal:false, fixedcenter:false, constraintoviewport:true } );
    YAHOO.com.bhg.glbForgotPwdThanks.render();
    YAHOO.util.Dom.setStyle(['glbForgotPwdThanks'], 'display', 'block');
}, this);

function redrawAuthLinks(displayName){
    var sEmailBtnCont = "Welcome " + ((displayName !== null && displayName !== "") ? displayName : "Registered User");
	var sEmailBtn;
	var sMyAcctLink = CONST_BASE_PATH+"Views/My/Account.aspx";
	var sSavedLink = CONST_BASE_PATH+"Views/My/Listings.aspx";
	sEmailBtn = "<a href=\"#\" class=\"welcome-name\">";
	sEmailBtn += sEmailBtnCont;
	sEmailBtn += "<ul class=\"second\">"
	sEmailBtn += "<li><a href=\"" + sMyAcctLink + "\" class=\"welcome-account\">My Account</a></li>"
	sEmailBtn += "<li><a href=\"" + sSavedLink + "\" class=\"welcome-saved\">Saved Listings</a></li>"
	sEmailBtn += "</ul>"
	sEmailBtn += "</a>"

    YAHOO.util.Dom.setStyle(document.getElementById('loginBtn'), 'display', 'none');             
    YAHOO.util.Dom.setStyle(document.getElementById('registerBtn'), 'display', 'none');
    YAHOO.util.Dom.setStyle(document.getElementById('logoutBtn'), 'display', 'inline');

    document.getElementById("emailBtn2").innerHTML = sEmailBtn;

    //YAHOO.util.Dom.setStyle(document.getElementById('emailBtn'), 'display', 'inline');        
    YAHOO.util.Dom.setStyle(document.getElementById('savedPropLI'), 'display', 'inline');
    buildNav('nav-global');
}
function afterRegister(reg){
    if (CONST_AFTER_REGISTRATION != "") {
        eval(CONST_AFTER_REGISTRATION+"(reg);");
    }
}
function afterLogin(login){
    if (CONST_AFTER_LOGIN != "") {
        eval(CONST_AFTER_LOGIN+"(login);");
    }
}

function ShowForgotPwd()
{
    document.getElementById("fpwdEmail").value = "E-mail";
    YAHOO.util.Dom.setStyle(['forgot-btn-msg'], 'display', 'block');        
    YAHOO.util.Dom.setStyle(['divForgotPwdErrors'], 'display', 'none');
    document.getElementById("forgotPwdErrors").innerHTML = "";
    YAHOO.util.Dom.removeClass(['fpwdEmail'], 'validation-failed');
    YAHOO.com.bhg.glbLogin.hide();
    YAHOO.com.bhg.glbForgotPwd.show();
    return false;
}

function ShowLogin()
{   
    document.getElementById("loginEMail").value = "E-mail";        
    YAHOO.util.Dom.setStyle(['PwdFld'], 'display', 'block');
    YAHOO.util.Dom.setStyle(['loginPwdFld'], 'display', 'none');
    document.getElementById("loginPwdFld").value = "";        
    document.getElementById("loginRememberMe").checked = false;
    YAHOO.util.Dom.setStyle(['login-btn-msg'], 'display', 'block');        
    YAHOO.util.Dom.setStyle(['divLoginErrors'], 'display', 'none');
    document.getElementById("loginErrors").innerHTML = "";
    YAHOO.util.Dom.removeClass(['loginEMail', 'PwdFld'], 'validation-failed');        
    YAHOO.com.bhg.glbLogin.show();
    loginFormViewWT();
    return false;
}

function ShowReg()
{
    document.getElementById("regFName").value = "First Name";        
    document.getElementById("regLName").value = "Last Name";
    document.getElementById("regEmail").value = "E-mail";
    document.getElementById("regEmailConf").value = "Retype E-mail";
    YAHOO.util.Dom.setStyle(['Pwd'], 'display', 'block');
    YAHOO.util.Dom.setStyle(['regPwd'], 'display', 'none');
    YAHOO.util.Dom.setStyle(['PwdConf'], 'display', 'block');
    YAHOO.util.Dom.setStyle(['regPwdConf'], 'display', 'none');
    document.getElementById("regPwd").value = "";        
    document.getElementById("regPwdConf").value = "";
    document.getElementById("regZip").value = "Zip Code";        
    document.getElementById("regOptin1").checked = true;
    document.getElementById("regAgree").checked = false;
    document.getElementById("regRememberMe").checked = false;
    document.getElementById("regErrors").innerHTML = "";
    YAHOO.util.Dom.setStyle(['reg-btn-msg'], 'display', 'block');        
    YAHOO.util.Dom.setStyle(['divRegErrors'], 'display', 'none');        
    YAHOO.util.Dom.removeClass(['regFName', 'regLName', 'regEmail', 'regEmailConf', 'regZip', 'divRegAgree', 'Pwd', 'PwdConf'], 'validation-failed');        
    YAHOO.util.Dom.removeClass(['divRegAgree'],'col1-checkbox');
    YAHOO.util.Dom.removeClass(['divRegAgree'],'col1-checkbox-red');
    YAHOO.util.Dom.addClass(['divRegAgree'],'col1-checkbox');
    YAHOO.com.bhg.glbReg.show();
    regFormViewWT();
    return false;
}

/********************************/
/* Registration Overlay Scripts */
/********************************/
var RegisterXhr = {
    handleSuccess:function(o){            
        var reg = YAHOO.lang.JSON.parse(o.responseText);            
        if(reg.Errors && reg.Errors.length > 0){
            // communicate the error
            for(var i=0;i<reg.Errors.length;i++){                    
                document.getElementById("regErrors").innerHTML = reg.Errors[i]; // + "<br />";
                YAHOO.util.Dom.setStyle(['reg-btn-msg'], 'display', 'none');                    
                YAHOO.util.Dom.setStyle(['divRegErrors'], 'display', 'block');
            }
        } else {                
            YAHOO.com.bhg.glbReg.hide();
            YAHOO.com.bhg.glbRegThanks.show();
            // redraw header
            redrawAuthLinks(reg.ConsumerUser.User.DisplayName);
            
            // set the suth state
            auth = true;
            
            if(YAHOO.com.bhg.glbReg.fromPropertyDetail && YAHOO.com.bhg.glbReg.fromPropertyDetail !== null){
                YAHOO.com.bhg.glbReg.fromPropertyDetail.startRequest();
            }
            
            // call the page's method, pass in the successful command
            afterRegister(reg);
            
            // submit WebTrends information
            regFormSubmitWT();
            
            // Google Code for Member Registration Conversion Page
            var google_conversion_id = 1039182819;
            var google_conversion_label = "aeuNCKHBVxDj18LvAw";
            googleImage = new Image(1,1);
            googleImage.src = "http://www.googleadservices.com/pagead/conversion/"+google_conversion_id+"/?label="+google_conversion_label+"&script=0";
        }
    },
    handleFailure:function(o){
        document.getElementById("regErrors").innerHTML = o.responseText;
    },
    startRegRequest:function() {
        // serialize the registration values
        var reg = {                
            FName: document.getElementById("regFName").value, 
            LName: document.getElementById("regLName").value, 
            Email: document.getElementById("regEmail").value, 
            EmailConfirm: document.getElementById("regEmailConf").value,
            Password: escape(document.getElementById("regPwd").value),
            PasswordConfirm: escape(document.getElementById("regPwdConf").value),
            Zipcode: document.getElementById("regZip").value,
            OptIn1: document.getElementById("regOptin1").checked,
            Agree: document.getElementById("regAgree").checked,
            Remember: document.getElementById("regRememberMe").checked 
        }; 

        var jsonStr = YAHOO.lang.JSON.stringify(reg);            
        YAHOO.util.Connect.asyncRequest('POST', CONST_XHR_PATH+"register.user", registerAsync, "register_json=" + jsonStr);
    }
};
var registerAsync = {
    success:RegisterXhr.handleSuccess,
    failure:RegisterXhr.handleFailure,
    scope: RegisterXhr
};

function glbGoToLogin() {
    YAHOO.com.bhg.glbReg.hide();
    YAHOO.com.bhg.glbLogin.show();
    loginFormViewWT();
}

function glbRegValidate() {                
    YAHOO.util.Dom.setStyle(['divRegErrors'], 'display', 'none');
    document.getElementById("regErrors").innerHTML = "";
    if(validateGlblReg.validate())                
        RegisterXhr.startRegRequest();
    else {                    
        YAHOO.util.Dom.setStyle(['divRegErrors'], 'display', 'block');
        YAHOO.util.Dom.setStyle(['reg-btn-msg'], 'display', 'none');                    
    }
}

var validateGlblReg;
YAHOO.util.Event.onContentReady("glbRegForm", function(){
    validateGlblReg= new Validation('glbRegForm', {immediate : true, onFormValidate : formRegCallback});
}, this); 

function formRegCallback(result, form) {
	    var flag = true;
	    var othersFlag = false;
	    if(!result){
        var errorControls = YAHOO.util.Dom.getElementsByClassName('validation-failed', 'input', form);
        //var errors = YAHOO.util.Dom.getElementsByClassName('validation-advice', 'span', form);                
        //alert(errors1[0].id.lastIndexOf("-"));
        //alert(errors[0].id.substring(errors[0].id.lastIndexOf("-")+1, errors[0].id.length));                    
        for(var i=0;i<errorControls.length;i++)
        {   
            switch(errorControls[i].id)
            {
                case 'regFName':{
                    if(document.getElementById("regFName").value == "First Name")
                        document.getElementById("regErrors").innerHTML = "First&nbsp;name&nbsp;is&nbsp;required";
                     else
                        document.getElementById("regErrors").innerHTML = "Incorrect&nbsp;first&nbsp;name";
                    flag = false;
                    break;                            
                }
                case 'regLName':{
                    if(document.getElementById("regLName").value == "Last Name")
                        document.getElementById("regErrors").innerHTML = "Last&nbsp;name&nbsp;is&nbsp;required";
                     else
                        document.getElementById("regErrors").innerHTML = "Incorrect&nbsp;last&nbsp;name";
                    flag = false;
                    break;                          
                }
                case 'regEmail':{
                    if(document.getElementById("regEmail").value == "E-mail")
                        document.getElementById("regErrors").innerHTML = "EMail&nbsp;is&nbsp;required";
                     else
                        document.getElementById("regErrors").innerHTML = "Incorrect&nbsp;email";
                    flag = false;
                    break;                          
                }
                case 'regEmailConf':{                                
                    if(document.getElementById("regEmailConf").value == "Retype E-mail")
                        document.getElementById("regErrors").innerHTML = "Retype&nbsp;email&nbsp;is&nbsp;required";
                     else
                        document.getElementById("regErrors").innerHTML = "Incorrect&nbsp;retype&nbsp;email";
                    flag = false;
                    break;                          
                }
                case 'regZip':
                {
                    othersFlag = true;
                    if(ValidateOthers(flag))
                    {   
                        if(document.getElementById("regZip").value == "Zip Code")
                            document.getElementById("regErrors").innerHTML = "Zip&nbsp;Code&nbsp;is&nbsp;required";
                        else
                            document.getElementById("regErrors").innerHTML = "Incorrect&nbsp;zip&nbsp;code";
                    }
                    
                    flag = false;
                    break;
                }
                default:{
                    break;
                }
            }
            if(!flag)
                break;
        }
    }
    
    if(!othersFlag && !ValidateOthers(flag))
        flag = false;                
        
    if(!document.getElementById("regAgree").checked)
    {       
        if(flag)
            document.getElementById("regErrors").innerHTML = "Accept&nbsp;terms&nbsp;&&nbsp;privacy";
        YAHOO.util.Dom.removeClass(['divRegAgree'],'col1-checkbox');
        YAHOO.util.Dom.addClass(['divRegAgree'],'col1-checkbox-red');                                       
        flag = false;
    }
    else
    {
        YAHOO.util.Dom.removeClass(['divRegAgree'],'col1-checkbox-red');
        YAHOO.util.Dom.addClass(['divRegAgree'],'col1-checkbox');                    
    } 
    
	return flag;
}

function ValidateOthers(currVal)
{
    var flag = true;
    if(document.getElementById("regEmail").value != document.getElementById("regEmailConf").value)                
    {   
        showErrorClass(currVal, "regErrors", "EMails&nbsp;mismatch", "regEmailConf");                    
        flag = false;
    }                
    
    if(document.getElementById("regPwd").value == "")
    {   
        showErrorClass(flag, "regErrors", "Password&nbsp;is&nbsp;required", "Pwd");                    
        flag = false;
    }
    else if(document.getElementById("regPwd").value.length < 6)
    {   
        showErrorClass(flag, "regErrors", "Incorrect&nbsp;password&nbsp;(length&nbsp;6)", "Pwd");                    
        flag = false;
    }                                
    
    if(document.getElementById("regPwdConf").value == "")
    {   
        showErrorClass(flag, "regErrors", "Retype&nbsp;password&nbsp;is&nbsp;required", "PwdConf");                    
        flag = false;
    }
    else if(document.getElementById("regPwdConf").value.length < 6)
    {
        showErrorClass(flag, "regErrors", "Retype&nbsp;password&nbsp;(min&nbsp;length&nbsp;6)", "PwdConf");                    
        flag = false;
    }
    
    if(document.getElementById("regPwd").value != document.getElementById("regPwdConf").value)
    {
        showErrorClass(flag, "regErrors", "Password&nbsp;mismatch", "regPwdConf");                    
        flag = false;
    }
    
    return flag;
}

function showErrorClass(flag, errorTagName, msg, controlName)
{
    if(flag)
            document.getElementById(errorTagName).innerHTML = msg;
    YAHOO.util.Dom.removeClass([controlName],'validation-passed');
    YAHOO.util.Dom.removeClass([controlName],'validation-failed');
    YAHOO.util.Dom.addClass([controlName],'validation-failed');			
}

/*************************/
/* Login Overlay Scripts */
/*************************/
var LoginXhr = {
    handleSuccess:function(o){            
        var login = YAHOO.lang.JSON.parse(o.responseText);            
        if(login.Errors && login.Errors.length > 0)
        {   
            // communicate the error
            for(var i=0;i<login.Errors.length;i++)
            {
                document.getElementById("loginErrors").innerHTML = login.Errors[i]; //+ "<br />";                    
                YAHOO.util.Dom.setStyle(['login-btn-msg'], 'display', 'none');
                YAHOO.util.Dom.setStyle(['divLoginErrors'], 'display', 'block');
            }
        } 
        else 
        {
            YAHOO.com.bhg.glbLogin.hide();
            // redraw header
            redrawAuthLinks(login.ConsumerUser.User.DisplayName);
            
            // set the suth state
            auth = true;
            
            if(YAHOO.com.bhg.glbReg.fromPropertyDetail && YAHOO.com.bhg.glbReg.fromPropertyDetail !== null)
            {
                YAHOO.com.bhg.glbReg.fromPropertyDetail.startRequest();
            }
            
            // log with webtrends
            loginSubmitWT();
            
            // call the page's method, pass in the successful command
            afterLogin(login);
        }
    },
    handleFailure:function(o){
        document.getElementById("loginErrors").innerHTML = o.responseText;
    },        
    startLoginRequest:function() {
        // serialize the registration values
        var login = {
            Email: document.getElementById("loginEMail").value,
            Password: escape(document.getElementById("loginPwdFld").value),
            Remember: document.getElementById("loginRememberMe").checked 
        }; 

        var jsonStr = YAHOO.lang.JSON.stringify(login);            
        YAHOO.util.Connect.asyncRequest('POST', CONST_XHR_PATH+"login.user", loginAsync, "login_json=" + jsonStr);
    }
};
var loginAsync = {
    success:LoginXhr.handleSuccess,
    failure:LoginXhr.handleFailure,
    scope: LoginXhr
};

function glbLoginValidate() {            
    YAHOO.util.Dom.setStyle(['divLoginErrors'], 'display', 'none');            
    document.getElementById("loginErrors").innerHTML = "";
    
    if(validateGlblLogin.validate())
        LoginXhr.startLoginRequest();            
    else
    {   
        YAHOO.util.Dom.setStyle(['divLoginErrors'], 'display', 'block');                
        YAHOO.util.Dom.setStyle(['login-btn-msg'], 'display', 'none');
    }
}

var validateGlblLogin;
YAHOO.util.Event.onContentReady("glbLoginForm", function(){
    validateGlblLogin = new Validation('glbLoginForm', {immediate : true, onFormValidate : formLoginCallback});
}, this);

function formLoginCallback(result, form) {			
	var flag = true;
	if(!result){
        var errorControls = YAHOO.util.Dom.getElementsByClassName('validation-failed', 'input', form);
        //var errors = YAHOO.util.Dom.getElementsByClassName('validation-advice', 'span', form);                
        //alert(errors1[0].id.lastIndexOf("-"));
        //alert(errors[0].id.substring(errors[0].id.lastIndexOf("-")+1, errors[0].id.length));
        for(var i=0;i<errorControls.length;i++){                    
            switch(errorControls[i].id){
                case 'loginEMail':{
                    if(document.getElementById("loginEMail").value == "E-mail")
                        document.getElementById("loginErrors").innerHTML = "EMail&nbsp;is&nbsp;required";
                     else
                        document.getElementById("loginErrors").innerHTML = "Incorrect&nbsp;email";
                    flag = false;
                    break;                            
                }                        
                default:{
                    break;
                }
            }
            if(!flag)
                break;
        }
    }
	
	if(document.getElementById("loginPwdFld").value == "")
    {   
        showErrorClass(flag, "loginErrors", "Password&nbsp;is&nbsp;required", "PwdFld")                
        flag = false;
    }
    else if(document.getElementById("loginPwdFld").value.length < 6)
    {   
        showErrorClass(flag, "loginErrors", "Incorrect&nbsp;password&nbsp;(length&nbsp;6)", "loginPwdFld")                
        flag = false;
    }
    
	return flag;
}

/***********************************/
/* Forgot Password Overlay Scripts */
/***********************************/
var ForgotPwdXhr = {
    handleSuccess:function(o){            
        var forgot = YAHOO.lang.JSON.parse(o.responseText);            
        if(forgot.Errors && forgot.Errors.length > 0){
            // communicate the error
            for(var i=0;i<forgot.Errors.length;i++){                          
                document.getElementById("forgotPwdErrors").innerHTML = forgot.Errors[i]; // + "<br />";
                YAHOO.util.Dom.setStyle(['divForgotPwdErrors'], 'display', 'block');                
                YAHOO.util.Dom.setStyle(['forgot-btn-msg'], 'display', 'none');
            }
        } else {
            YAHOO.com.bhg.glbForgotPwd.hide();
            YAHOO.com.bhg.glbForgotPwdThanks.show();
        }
    },
    handleFailure:function(o){
        document.getElementById("loginErrors").innerHTML = o.responseText;
    },
    startForgotPwdRequest:function() {
        // serialize the registration values
        var forgot = {
            Email: document.getElementById("fpwdEmail").value
        }; 

        var jsonStr = YAHOO.lang.JSON.stringify(forgot);            
        YAHOO.util.Connect.asyncRequest('POST', CONST_XHR_PATH+"forgot.user", forgotPwdAsync, "forgotPwd_json=" + jsonStr);
    }
};

var forgotPwdAsync = {
    success:ForgotPwdXhr.handleSuccess,
    failure:ForgotPwdXhr.handleFailure,
    scope: ForgotPwdXhr
};

function glbForgotPwdValidate() {
   YAHOO.util.Dom.setStyle(['divForgotPwdErrors'], 'display', 'none');
   document.getElementById("forgotPwdErrors").innerHTML = "";
   if(validateGlblForgotPwd.validate()){    
        ForgotPwdXhr.startForgotPwdRequest();
    }else{                                                
        YAHOO.util.Dom.setStyle(['divForgotPwdErrors'], 'display', 'block');
        YAHOO.util.Dom.setStyle(['forgot-btn-msg'], 'display', 'none');
    }
}

var validateGlblForgotPwd;
YAHOO.util.Event.onContentReady("glbForgotPwdForm", function(){
    validateGlblForgotPwd = new Validation('glbForgotPwdForm', {immediate : true, onFormValidate : formForgotPwdCallback});
}, this); 

function formForgotPwdCallback(result, form) {		
    var flag = true;
	if(!result){
        var errorControls = YAHOO.util.Dom.getElementsByClassName('validation-failed', 'input', form);
        //var errors = YAHOO.util.Dom.getElementsByClassName('validation-advice', 'span', form);                
        //alert(errors1[0].id.lastIndexOf("-"));
        //alert(errors[0].id.substring(errors[0].id.lastIndexOf("-")+1, errors[0].id.length));
        for(var i=0;i<errorControls.length;i++){                    
            switch(errorControls[i].id){
                case 'fpwdEmail':{
                    if(document.getElementById("fpwdEmail").value == "E-mail")
                        document.getElementById("forgotPwdErrors").innerHTML = "EMail&nbsp;is&nbsp;required";
                     else
                        document.getElementById("forgotPwdErrors").innerHTML = "Incorrect&nbsp;email";
                    flag = false;
                    break;                            
                }                        
                default:{
                    break;
                }
            }
            if(!flag)
                break;
        }
    }
    
	return flag;
}




/********************************/
/* WebTrends Scripts            */
/********************************/
function regFormViewWT()
{
    dcsMultiTrack('DCS.dcsuri','/View/Shared/Login.aspx','WT.ti','User Registration Form','WT.cg_n','','WT.si_n','Register','WT.si_x','1','WT.si_cs','','WT.z_engage_type','','WT.z_engage_event','');
}
function regFormSubmitWT()
{
    dcsMultiTrack('DCS.dcsuri','/View/Shared/Login.aspx','WT.ti','User Registration Submit','WT.cg_n','engage','WT.si_n','Register','WT.si_x','2','WT.si_cs','1','WT.z_engage_type','Engage','WT.z_engage_event','Account Register');
}
function loginFormViewWT()
{
    dcsMultiTrack('DCS.dcsuri','/View/Shared/Login.aspx','WT.ti','View Form','WT.cg_n','','WT.si_n','Login','WT.si_x','1','WT.si_cs','','WT.z_engage_type','','WT.z_engage_event','');
}

function loginSubmitWT()
{
    dcsMultiTrack('DCS.dcsuri','/View/General/LoginSubmit.aspx','WT.ti','Submit Form','WT.cg_n','','WT.si_n','Login','WT.si_x','2','WT.si_cs','1','WT.z_engage_type','','WT.z_engage_event','');
}

