if (!window.YAHOO) throw 'Edmunds UI: User module requires YAHOO UI';
if (!YAHOO.Edmunds) throw 'Edmunds UI: User module requires Edmunds Core library';
/**
 * @class Handles user identity on the Edmunds site
 * @author Edmunds.com
 * @version 0.0.3
 * @static
 */
if (!YAHOO.Edmunds.User) {
    YAHOO.Edmunds.User = {
        /**
         * @property Class version
         * @static
         */
        VERSION: "0.0.3",
        /**
         * Initialize this person
         *
         * @memberOf YAHOO.Edmunds.User
         * @param void
         * @return void
         * @static
         */
        init: function() {
        },
        /**
         * @memberOf YAHOO.Edmunds.User
         * @return boolean
         * @static
         */
         isLoggedIn: function(){
			var role = YAHOO.Edmunds.UserTrack.getCookieValue("ROLE",false);
            return (YAHOO.Edmunds.UserTrack.getCookieValue("EMAIL",false) && role.indexOf('ROLE_MEMBER') >= 0);
        },

        /**
         * @memberOf YAHOO.Edmunds.User
         * @return boolean
         * @static
         */
        isAutoLoggedIn: function(){
            if(location.hostname == 'www.edmunds.com'
		&& YAHOO.Edmunds.UserTrack.getCookieValue("AL",false) == 'true') {
                var xmlHttp = YAHOO.Edmunds.UserTrack.getAjaxRequest();
                xmlHttp.open("GET", "http://www.edmunds.com/era/AutoLoginAjax.action?format=json", false);
                xmlHttp.send(null);
                if (xmlHttp.status == 200) {
                    var json = eval('('+ xmlHttp.responseText + ')');
                    if(json.response.code == 210 || json.response.code == 212) {
                        return false;
                    }
                }
            }
            return (this.isLoggedIn() && YAHOO.Edmunds.UserTrack.getCookieValue("AL",false) == 'true');
        },

        /**
         * @memberOf YAHOO.Edmunds.User
         * @return string
         * @static
         */
        getFirstName: function(){
            return YAHOO.Edmunds.UserTrack.getCookieValue("FN",false);
        },

        /**
         * @memberOf YAHOO.Edmunds.User
         * @return string
         * @static
         */
        getLastName: function(){
            return YAHOO.Edmunds.UserTrack.getCookieValue("LN",false);
        },

        /**
         * @memberOf YAHOO.Edmunds.User
         * @return boolean
         * @static
         */
        isGuest: function(){
            return (YAHOO.Edmunds.UserTrack.getCookieValue("ROLE",false).indexOf('ROLE_GUEST') >= 0);
        },

        /**
         * @memberOf YAHOO.Edmunds.User
         * @return boolean
         * @static
         */
        isMember: function(){
            return (YAHOO.Edmunds.UserTrack.getCookieValue("ROLE",false).indexOf('ROLE_MEMBER') >= 0);
        },

        /**
         * @memberOf YAHOO.Edmunds.User
         * @return boolean
         * @static
         */
        isAdmin: function(){
            return (YAHOO.Edmunds.UserTrack.getCookieValue("ROLE",false).indexOf('ROLE_ADMINISTRATOR') >= 0);
        },

        /**
         * @memberOf YAHOO.Edmunds.User
         * @return string
         * @static
         */
        getApplication: function(){
            return YAHOO.Edmunds.UserTrack.getCookieValue("APP",false);
        },

        /**
         * @memberOf YAHOO.Edmunds.User
         * @return string
         * @static
         */
        getRole: function(){
            return YAHOO.Edmunds.UserTrack.getCookieValue("ROLE",false);
        },
        /**
         * The context in which the user exists
         * 
         * @memberOf YAHOO.Edmunds.User
         * @return string
         * @static
         */
        context: {
            /**
             * @memberOf YAHOO.Edmunds.User
             * @return string
             * @static
             */
            getFromUrl: function(){
                var url = window.location.href;
                url = encodeURIComponent(url);
                return url;
            },

            /**
             * @memberOf YAHOO.Edmunds.User
             * @return string
             * @static
             */
            getToUrl: function(){
                var toUrl;
                if (YAHOO.Edmunds.Util.getQueryString('toUrl') != null && 
						YAHOO.Edmunds.Util.getQueryString('toUrl') != undefined && YAHOO.Edmunds.Util.getQueryString('toUrl') != '') {
                    toUrl = YAHOO.Edmunds.Util.getQueryString('toUrl');
					toUrl = encodeURIComponent(toUrl);
                } else {
                    toUrl = this.getFromUrl();
                }
                return toUrl;
            }
        }
    };
    YAHOO.Edmunds.User.init();
}

var user = YAHOO.Edmunds.User;
var g_name = "Guest";
var firstName = user.getFirstName();
var lastName = user.getLastName();
firstName = unescape(firstName);
lastName = unescape(lastName);
var fromUrl = user.context.getFromUrl();

// protected resource that the user going to access
var toUrl = user.context.getToUrl();
var toUrl;

//var image_path = g_getImagePath();
var g_signIn = '<a rel="shadowbox;width=490;height=400" class="option" href="http://www.edmunds.com/era/secure/lb/login.jsp?fromUrl=' + fromUrl + '&toUrl=' + toUrl + '&userinfo=true&tid=edmunds.g.home.regheader.signin.1.*' + '"><img src="' + image_path + '/media/dcm/signin_44x13.gif" border="0" width="44" height="13" alt="Sign In" /></a><img src="' + image_path + '/media/trans1x1.gif" width="8" height="13" border="0" alt="" /><a rel="shadowbox;width=510;height=595" class="option" href="http://www.edmunds.com/era/secure/lb/registration.jsp?fromUrl=' + fromUrl + '&toUrl=' + toUrl + '&userinfo=true&tid=edmunds.g.home.regheader.join.2.*' + '"><img src="' + image_path + '/media/dcm/yellow-join_31x13.gif" border="0" width="31" height="13" alt="Join" /></a>&nbsp<span id="fblogin"></span>';
if (user.isAutoLoggedIn() || user.isLoggedIn()) {
	g_name = firstName + " " + lastName;
	g_signIn = '<span id="fbuser"></span>&nbsp;<a id="signout_btn" href="http://www.edmunds.com/era/j_spring_security_logout?tid=edmunds.g.home.regheader.signout.1.*"><img src="' + image_path + '/media/dcm/signout_54x13.gif" border="0" width="54" height="13" alt="Sign Out" />';
}


function displayUserInfo(welcomeMessage, defaultGuestName){
	if (user.isAutoLoggedIn() || user.isLoggedIn()) {
		if (firstName != '') {
			document.write(welcomeMessage + ' ' + firstName + ' ' + lastName);
		}
     } else {
	    	document.write(welcomeMessage + ' ' + defaultGuestName);
     }
}

function displayUserInfoBtn(signOutImageLink, signInImageLink, joinImageLink){
    if (user.isAutoLoggedIn() || user.isLoggedIn()) {
        document.write('<span id="fbuser"></span>');
        document.write('&nbsp;');
        signOutImageLink = signOutImageLink.replace(/^<a href/, '<a id="signout_btn" href');
        document.write(signOutImageLink);
    } else {
        document.write(signInImageLink);
        document.write('&nbsp;');
        document.write(joinImageLink);
        document.write('&nbsp;');
        document.write('<span id="fblogin"></span>');
    }
}

