/*
    REQUIRES: jquery.js        
*/
/* ------------------------------------------------------------------------------- */
/* MAKE MODIFICATIONS TO THIS SECTION TO CONFIGURE SIGNIN PAGE                     */
/* ------------------------------------------------------------------------------- */
PluckGlobal = {
    domain : cookieDomain, //Domain for site
    signin : "/mystyle/community/authentication/index.jsp", //signin page
    forgotPass : "/mystyle/community/authentication/forgotPassword.jsp", //signin page
    changePass : "/mystyle/community/authentication/changePassword.jsp", //signin page
    register : "/mystyle/community/authentication/register.jsp", //signin page
    editSettings : "/mystyle/community/authentication/update.jsp", //signin page
    profile : "/mystyle/community/persona/index.jsp", //profile page
    pluckAuthStyle : function() { if (typeof pluckAuthStyle == "undefined") return 0; else return pluckAuthStyle; }()
};
/* ------------------------------------------------------------------------------- */

/* Common functions needed for Auth */
var PluckAuthCommon = PkC = function(){
    return {
		isDefined : function(variable){
		//Checks if a dom element is defined
			return (!(!( variable||false )))
		},
		querySt : function(ji) {
        //Gets a query string parameter
			qs = window.location.search.substring(1);
			gy = qs.split("&");
			for (i=0;i<gy.length;i++) {
				ft = gy[i].split("=");
				if (ft[0] == ji) {
					return ft[1];
				}
			}
		},
        trimIt : function(str) {
        //Missing Javascript trim function
	        var	str = str.replace(/^\s\s*/, ''),
		        ws = /\s/,
		        i = str.length;
	        while (ws.test(str.charAt(--i)));
	        return str.slice(0, i + 1);
        },
        getCookieValue : function( check_name ) {
	        // first we'll split this cookie up into name/value pairs
	        // note: document.cookie only returns name=value, not the other components
	        var a_all_cookies = document.cookie.split( ';' );
	        var a_temp_cookie = '';
	        var cookie_name = '';
	        var cookie_value = '';
	        var b_cookie_found = false; // set boolean t/f default f

	        for ( i = 0; i < a_all_cookies.length; i++ )
	        {
		        // now we'll split apart each name=value pair
		        a_temp_cookie = a_all_cookies[i].split( '=' );


		        // and trim left/right whitespace while we're at it
		        cookie_name = a_temp_cookie[0].replace(/^\s+|\s+$/g, '');

		        // if the extracted name matches passed check_name
		        if ( cookie_name.toLowerCase() == check_name.toLowerCase() )
		        {
			        b_cookie_found = true;
			        // we need to handle case where cookie has no value but exists (no = sign, that is):
			        if ( a_temp_cookie.length > 1 )
			        {
				        //cookie_value = unescape( a_temp_cookie[1].replace(/^\s+|\s+$/g, '') );
    			        cookie_value = a_all_cookies[i].substring(a_all_cookies[i].indexOf('=')+1, a_all_cookies[i].length);
			        }
			        return unescape(cookie_value);
			        break;
		        }
		        a_temp_cookie = null;
		        cookie_name = '';
	        }
	        if ( !b_cookie_found )
	        {
		        return null;
	        }
        },
		setCookie : function( name, value, expires, path, domain, secure )
        {
            // set time, it's in milliseconds
            var today = new Date();
            today.setTime( today.getTime() );

            /*
            if the expires variable is set, make the correct
            expires time, the current script below will set
            it for x number of days, to make it for hours,
            delete * 24, for minutes, delete * 60 * 24
            */
            if ( expires )
            {
            expires = expires * 1000 * 60 * 60 * 24;
            }
            var expires_date = new Date( today.getTime() + (expires) );

            document.cookie = name + "=" +escape( value ) +
            ( ( expires ) ? ";expires=" + expires_date.toGMTString() : "" ) +
            ( ( path ) ? ";path=" + path : "" ) +
            ( ( domain ) ? ";domain=" + domain : "" ) +
            ( ( secure ) ? ";secure" : "" );
        },
        GetPluckCookieValue : function(valType)
        {
            /*  This will return UID, DisplayName, Email
                Pass the following strings to get each:
                UID = GetPluckCookieValue("uid")
                DisplayName = GetPluckCookieValue("name")
                Email = GetPluckCookieValue("email")
            */
			if ((PluckAuthCommon.getCookieValue("at") != null) || (PluckAuthCommon.getCookieValue("AT") != null)) {
                var cookieVal = PluckAuthCommon.getCookieValue("at");
                if (cookieVal == null) cookieVal = PluckAuthCommon.getCookieValue("AT");
                var cookieValArray = cookieVal.split('&');
                var i = 0;
                for (i = 0; i < cookieValArray.length; i++)
                {
                    var tempVar = cookieValArray[i].split('=');
                    switch (valType) {
                        case "uid" : if ((tempVar[0] == "u") && (tempVar.length > 1)) return tempVar[1]; break;
                        case "name" : if ((tempVar[0] == "a") && (tempVar.length > 1)) return tempVar[1]; break;
                        case "email" : if ((tempVar[0] == "e") && (tempVar.length > 1)) return tempVar[1]; break;
                        default : if ((tempVar[0] == "u") && (tempVar.length > 1)) return tempVar[1]; break;
                    }
                }
                return null;
            } else if ((PluckAuthCommon.getCookieValue("hd") != null) || (PluckAuthCommon.getCookieValue("HD") != null)) {
                var cookieVal = PluckAuthCommon.getCookieValue("hd");
                if (cookieVal == null) cookieVal = PluckAuthCommon.getCookieValue("HD");
                var cookieValArray = cookieVal.split('|');
                switch (valType) {
                    case "uid" : return cookieValArray[0]; break;
                    case "name" : return cookieValArray[1]; break;
                    case "email" : return cookieValArray[3]; break;
                    default : return cookieValArray[0]; break;
                }
                return cookieValArray[0];
            } else {
                return null;
            }       
        },
        getElementsByClassName : function(className, tag, elm){
	        var testClass = new RegExp("(^|\\s)" + className + "(\\s|$)");
	        var tag = tag || "*";
	        var elm = elm || document;
	        var elements = (tag == "*" && elm.all)? elm.all : elm.getElementsByTagName(tag);
	        var returnElements = [];
	        var current;
	        var length = elements.length;
	        for(var i=0; i<length; i++){
		        current = elements[i];
		        if(testClass.test(current.className)){
			        returnElements.push(current);
		        }
	        }
	        return returnElements;
        },
        getStyleObj : function(id){
            var obj = null;
            if(document.getElementById){
                obj = document.getElementById(id);
            }else if(document.all){
                obj = document.all[id];
            }else if(document.layers){
                obj = document.layers[id];
            }
            return (obj && obj.style) || obj;
        },
        removeChildNodes : function(ctrl)
        {
          while (ctrl.childNodes[0])
          {
            ctrl.removeChild(ctrl.childNodes[0]);
          }
        }

	};
}();

var gByClass = PluckAuthCommon.getElementsByClassName;
function gEID(sData) { return document.getElementById(sData); }

/*
    Overwrite the __SubmitForm method in the SLAuthProxy that we includ from Sitelife
    This allows us to filter out the T&C textarea.
    Only used when a T&C is submitted.
*/
if (typeof SLAuthProxy == "undefined") {
//This is only if sitelife server is down - we should handle this case and make sure we fail gracefully
	SLAuthProxy = {
		prototype : {},
		__SubmitForm : function (formObj) {
			if (PluckAuthCommon.isDefined(gEID('slRenderDiv'))) {
				gEID('slRenderDiv').innerHTML = "<div id=\"slLoginMessage\" class=\"slFieldValidationIndicator\">The authentication server is temporarily unavailable. Please try again later.</div>";
				gEID('slRenderDiv').innerHTML += "<span class=\"slaErrorMessage\">The authentication server is temporarily unavailable. Please try again later.</span>";
			}
		},
		__SubmitFormNew : function (formObj) {
			if (PluckAuthCommon.isDefined(gEID('slRenderDiv'))) {
				gEID('slRenderDiv').innerHTML = "<div id=\"slLoginMessage\" class=\"slFieldValidationIndicator\">The authentication server is temporarily unavailable. Please try again later.</div>";
				gEID('slRenderDiv').innerHTML += "<span class=\"slaErrorMessage\">The authentication server is temporarily unavailable. Please try again later.</span>";
			}
		},
		generateProfileURL : function(uid) {
			return PluckGlobal.profile + "?uid=" + uid;
		},
		gotoProfile : function(uid) {
			if (typeof uid == "undefined") uid = PluckAuthCommon.GetPluckCookieValue('uid');
			window.location = PluckGlobal.profile + "?uid=" + uid;
		}
	};
	jsValidateEmailAddress = function(doesntMatter) {
		return true;
	}
	gSLAuthProxy = SLAuthProxy;
}
SLAuthProxy.prototype.__SubmitFormNew = function(form){
    var elementData = "";
    for(var x=0;x<form.elements.length;x++)
    {	
        if(form.elements[x].type == "checkbox"){
		    if(form.elements[x].checked == true){
			    elementData += form.elements[x].name + "=" + escape(form.elements[x].value) + "&";	
		    }else{
			    elementData += form.elements[x].name + "=null&";
		    }
	    }
	    else if(form.elements[x].type != "textarea"){
		    elementData += form.elements[x].name + "=" + escape(form.elements[x].value) + "&";
    	}
    }
    elementData += "slaElementId=slRenderDiv&slaDivLayout=1";
    var actionDest = form.action + "?" + elementData;
    this.__Send(this.__CapturePersistentParams(actionDest), "submitForm");
}


PluckAuth = {
    submenuOn : false,
    OnFocus : function(obj) {
        obj.className = 'focus';
    },
    OnBlur : function(obj) {
        obj.className = '';
    },
	Logout : function() {
		//Changed this to expire all possible auth cookies under all possible domains.
		var baseDomain = window.location.hostname;
		var domainArray = baseDomain.split('.');
		if (domainArray.length >= 2) {
			var tempDomain = domainArray[domainArray.length-1];
			for (var i=(domainArray.length - 2); i>=0; i--) {
				tempDomain = domainArray[i] + '.' + tempDomain;
				PluckAuthCommon.setCookie( "hd", "expire", -10, "/", tempDomain, false );
				PluckAuthCommon.setCookie( "HD", "expire", -10, "/", tempDomain, false );
				PluckAuthCommon.setCookie( "at", "expire", -10, "/", tempDomain, false );
				PluckAuthCommon.setCookie( "AT", "expire", -10, "/", tempDomain, false );
			}
		} else {
			PluckAuthCommon.setCookie( "hd", "expire", -10, "/", window.location.hostname, false );
			PluckAuthCommon.setCookie( "HD", "expire", -10, "/", window.location.hostname, false );
			PluckAuthCommon.setCookie( "at", "expire", -10, "/", window.location.hostname, false );
			PluckAuthCommon.setCookie( "AT", "expire", -10, "/", window.location.hostname, false );
		}
	},
	ReloadAuthHeader : function() {
	    if (PluckAuthCommon.isDefined(gEID('registerLink'))) {
	        if (PluckAuthCommon.GetPluckCookieValue('uid') != null) {
	            //Logged in
	            gEID('registerLinkDiv').style.display = "none";
	            gEID('editLinkDiv').style.display = "block";
	            gEID('signinLinkDiv').style.display = "none";
	            gEID('signoutLinkDiv').style.display = "block";
	            gEID('welcomeLink').innerHTML = PluckAuthCommon.GetPluckCookieValue('name');
	            gEID('welcomeLink').href = gSLAuthProxy.generateProfileURL(PluckAuthCommon.GetPluckCookieValue('uid'));
	            gEID('welcomeLinkDiv').style.display = "block";
	        } else {
	            //Logged out
	            gEID('registerLinkDiv').style.display = "block";
	            gEID('editLinkDiv').style.display = "none";
	            gEID('signinLinkDiv').style.display = "block";
	            gEID('signoutLinkDiv').style.display = "none";
	            gEID('welcomeLinkDiv').style.display = "none";
	        }
	    }
	},
	ShowTOC : function() {
	    if (PluckAuthCommon.isDefined(gEID('tocContainer'))) {
            var allObj = gByClass('plckProjRow', 'div', document);
            for (var i = 0; i<allObj.length; i++) {
                allObj[i].style.display = 'none';
            }	        
	        gEID('tocContainer').style.display = "block";
	    }
	    plckProjRow
	},
	CloseTOC : function() {
	    if (PluckAuthCommon.isDefined(gEID('tocContainer'))) {
	        gEID('tocContainer').style.display = "none";
            var allObj = gByClass('plckProjRow', 'div', document);
            for (var i = 0; i<allObj.length; i++) {
                allObj[i].style.display = 'block';
            }	        
	    }
	    plckProjRow
	},
	ShowAuthSubmenu : function(divId, styleId) {
	    if (PluckAuthCommon.isDefined(gEID(divId))) {   
	        gEID(divId).style.display = "block";
	    }
	},
	HideAuthSubmenu : function(divId, firstOut) {
	    if (PluckAuth.submenuOn || firstOut) { 
	        setTimeout("PluckAuth.HideAuthSubmenu('" + divId +  "', false)",700);
	    } else {
	        if (PluckAuthCommon.isDefined(gEID(divId))) {   
	            gEID(divId).style.display = "none";
	        }
	    }
	},
	KeepSubmenu : function() {
	    PluckAuth.submenuOn = true;
	},
	RemoveSubmenu : function() {
	    PluckAuth.submenuOn = false;
	},
	ShowAuthWidget : function(pagePath, styleId, width, height) {
	    displayMessage(pagePath, width, height);
	    afterAuthWidgetShow();
	    return false;
	    /*
        //Different Styles of Overlay
        //LightBox Style = 0 (default)
        //Dropdown Box = 1
        //----------------------------        
	    if (!styleId) styleId = 0;
        if (styleId == 0) {
            if (PluckAuthCommon.isDefined(gEID('slOverlay'))) gEID('slOverlay').style.display = "block";
            var viewPortWidth = windowState.getWidth();
            var viewPortHeight = windowState.getHeight();
            var horizontalScroll = windowState.getScrollX();
            var verticalScroll = windowState.getScrollY();
            var divStyleRef = PluckAuthCommon.getStyleObj(divId);
            var hPos = Math.round(horizontalScroll+((viewPortWidth-500)/2));       
            var vPos = Math.round(verticalScroll+((viewPortHeight-parseInt(gEID(divId).clientWidth))/2));
            hPos = (hPos < 0)?0:hPos;
            vPos = (vPos < 0)?0:vPos;
            var positionMod = (typeof divStyleRef.top == 'string')?"px":0;
            divStyleRef.top = vPos + positionMod;
            divStyleRef.left = hPos + positionMod;
        } else if (styleId == 1) {
        }

	    if (PluckAuthCommon.isDefined(gEID(divId))) {
            var allObj = gByClass('authWidgetContainer', 'div', document);
            for (var i = 0; i<allObj.length; i++) {
                allObj[i].style.display = 'none';
            }	        
	        gEID(divId).style.display = "block";
	    }
	    */
	},
    PluckReg : {
        OnEnter : function(e) {
            if(e.keyCode==13){
                PluckAuth.PluckReg.submitForm()
                return false;
            }
        },
        postBackRenderTimer : null,
        submitForm : function(){
            var allObj = gByClass('error', 'div', document);
            for (var i = 0; i<allObj.length; i++) {
                allObj[i].style.display = 'none';
            }
            
            allObj = gByClass('error', 'input', gEID('plckAuthContent'));
            for (var i = 0; i<allObj.length; i++) {
                allObj[i].className = '';
            }
            
			PluckAuth.clearGeneralError("", gEID('registerContainer'));
            setTimeout("PluckAuth.PluckReg.runValidation()",250);
        },
        runValidation : function(){
            var isvalid = true;
            PluckAuthCommon.removeChildNodes(gEID("slRenderDiv"));
            
            if(gEID("termsCB").checked == false){
                isvalid=false;PluckAuth.showError(PluckAuth.getRow(gEID("termsCB")),"Terms & Conditions must be agreed to.");
            }
            if(PluckAuthCommon.trimIt(gEID("displayName").value)==""){
                isvalid=false;PluckAuth.showError(PluckAuth.getRow(gEID("displayName")),"Display name is required.");
            }
            if( !jsValidateEmailAddress( PluckAuthCommon.trimIt( gEID("email").value ) ) ){
                isvalid=false;PluckAuth.showError(PluckAuth.getRow(gEID("email")),"Please enter a valid email.");
            }
            if(PluckAuthCommon.trimIt(gEID("emailConfirm").value)!= PluckAuthCommon.trimIt(gEID("email").value)){
                isvalid=false;PluckAuth.showError(PluckAuth.getRow(gEID("emailConfirm")),"Emails must match.");
            }
            if(PluckAuthCommon.trimIt(gEID("password").value)=="" || PluckAuthCommon.trimIt(gEID("password").value).length < 6){
                isvalid=false;PluckAuth.showError(PluckAuth.getRow(gEID("password")),"Password is required and must be at least 6 characters.");
            }
            if(PluckAuthCommon.trimIt(gEID("passwordConfirm").value)!= PluckAuthCommon.trimIt(gEID("password").value)){
                isvalid=false;PluckAuth.showError(PluckAuth.getRow(gEID("passwordConfirm")),"Passwords must match.");
            }
            
            if(isvalid){
                gSLAuthProxy.__SubmitFormNew(gEID("plckRegForm"));
                PluckAuth.PluckReg.handlePostBackRendering();
                setTimeout("PluckAuth.PluckReg.clearPostBackRender()",300000);
            }
        },
        handlePostBackRendering : function(){
            if(PluckAuthCommon.isDefined(gEID("slRenderDiv"))) {
                if(gEID("slRenderDiv").childNodes.length>0){
                    var errBox = gByClass('slaErrorMessage', 'span', gEID("slRenderDiv"));
                    var successForm = gEID("slaLoginForm");
                    if(errBox.length>0){
                        errBox = errBox[0];
                        var errTxt = errBox.innerHTML;
                        if(errTxt.indexOf("DuplicateEmailAddress")!=-1){
                            PluckAuth.showGeneralError("There is already an account with the email address: " + gEID("email").value, gEID('registerContainer'));
                        }
                        else if(errTxt.indexOf("DuplicateDisplayName")!=-1){
                            PluckAuth.showGeneralError("The display name \"" + gEID("displayName").value + "\" already exists.", gEID('registerContainer'));
                        }
                        else{
                            PluckAuth.showGeneralError(errTxt, gEID('registerContainer'));
                        }
                    }
                    else if(successForm != null){

                        // Mystyle whatcounts newsletter customization
                        if(gEID("subscribeNewsletter").checked == true){
                            var email = PluckAuthCommon.trimIt( gEID("email").value );
                            var pars = "";
                            //pars = "email=" + email + "&dob=" + year + "/" + month + "/" + daymonth + "&domain=mystyle";
                            pars = "email=" + email + "&dob=" + "1990" + "/" + "01" + "/" + "01" + "&domain=mystyle"; // TODO: date of birth to be collected elsewhere
                            new Ajax.Request('/mystyle/newsletter/subscribe/subscribeWhatcounts.jsp',{
                            	method: 'get',
                            	parameters: pars
                            });
                        }
                        // Mystyle whatcounts newsletter customization
                        
                        if(PluckAuthCommon.getCookieValue('PlckRememberEmail')){
                            PluckAuthCommon.setCookie('PlckRememberEmail', PluckAuthCommon.trimIt( gEID("email").value ), 365, '/', PluckGlobal.domain, false );
                        }
                        if (PluckGlobal.pluckAuthStyle == 0) { 
                            //If default style then each auth widget is on its own page and we want to redirect to signin page
                            if (PluckAuthCommon.querySt('returnurl') != null) {
                                window.location = PluckGlobal.signin + "?newuser=true&returnurl=" + PluckAuthCommon.querySt('returnurl');
                            } else {
                                window.location = PluckGlobal.signin + "?newuser=true";
                            }
                        } else if (PluckGlobal.pluckAuthStyle == 1) {
                            //We are using modal dialogs - thus close the modal and update header and open signin
                            closeMessage();
                            PluckAuth.ReloadAuthHeader();
                            PluckAuth.ShowAuthWidget('/mystyle/community/authentication/includes/authSignIn.html?newuser=true', 0, 400, 240);
                        }
                    }
                    else{
                        PluckAuth.showGeneralError("There was an unknown error, please try your request again later.", gEID('registerContainer'));
                    }
                }
                else{
                    PluckAuth.PluckReg.postBackRenderTimer = setTimeout("PluckAuth.PluckReg.handlePostBackRendering()",250);
                }
            }
            else{
                PluckAuth.PluckReg.postBackRenderTimer = setTimeout("PluckAuth.PluckReg.handlePostBackRendering()",250);
            }
        },
        clearPostBackRender : function(){
            clearTimeout(PluckAuth.PluckReg.postBackRenderTimer);
            PluckAuth.showGeneralError("There was an unknown error, please try your request again later.", gEID('registerContainer'));
        }
    },
    signInSimple : {
        OnEnter : function(e) {
            if(e.keyCode==13){
                PluckAuth.signInSimple.subForm()
                return false;
            }
        },
        checkRememberedEmail : function(){
            if(PluckAuthCommon.getCookieValue('PlckRememberEmail')){
                gEID("plckEmail").value = PluckAuthCommon.getCookieValue('PlckRememberEmail');
                gEID("remembereml").checked = true;
            }
        },
        postBackRenderTimer : null,
        subForm : function(){
            var allObj = gByClass('error', 'div', document);
            for (var i = 0; i<allObj.length; i++) {
                allObj[i].style.display = 'none';
            }
            
            allObj = gByClass('error', 'input', gEID('plckAuthContent'));
            for (var i = 0; i<allObj.length; i++) {
                allObj[i].className = '';
            }
            
			PluckAuth.clearGeneralError("", gEID('signInContainer'));
            setTimeout("PluckAuth.signInSimple.runValidation()",250);
        },
        runValidation : function(){
            var isvalid = true;
            PluckAuthCommon.removeChildNodes(gEID("slRenderDiv"));
            if( !jsValidateEmailAddress( PluckAuthCommon.trimIt( gEID("plckEmail").value ) ) ){
                isvalid=false;PluckAuth.showError(PluckAuth.getRow(gEID("plckEmail")),"Please enter a valid email.");
            }
            if(PluckAuthCommon.trimIt(gEID("password").value)=="" || PluckAuthCommon.trimIt(gEID("password").value).length < 6){
                isvalid=false;PluckAuth.showError(PluckAuth.getRow(gEID("password")),"Please enter a valid password.");
            }
            if(isvalid){
                gSLAuthProxy.__SubmitForm(gEID("slaSigninForm"));
                PluckAuth.signInSimple.handlePostBackRendering();
                setTimeout("PluckAuth.signInSimple.clearPostBackRender()",300000);
            }
        },
        handlePostBackRendering : function(){
            if(PluckAuthCommon.isDefined(gEID("slRenderDiv"))) {
                if(gEID("slRenderDiv").childNodes.length>0){
                    var errBox = gEID("slLoginMessage");
                    var successLinks = gEID("SLAuthActionLinks");
                    if(errBox!=null){
                        //errBox = errBox[0];
                        var errTxt = errBox.innerHTML;
                        PluckAuth.showGeneralError(PluckAuthCommon.trimIt( errTxt.replace(/\*/g,"") ), gEID('signInContainer'));
                    }
                    else if(successLinks != null){
                        if(gEID("remembereml").checked){
                            PluckAuthCommon.setCookie('PlckRememberEmail', PluckAuthCommon.trimIt( gEID("plckEmail").value ), 365, '/', PluckGlobal.domain, false );
                        }
                        else{
                            PluckAuthCommon.setCookie('PlckRememberEmail', null, -1, '/', PluckGlobal.domain, false );
                        }
                        
                        if (PluckGlobal.pluckAuthStyle == 0) {
                            //If default style then each auth widget is on its own page and we want to redirect to returnurl or profile page
                            if(PluckAuthCommon.querySt("returnurl")){
                                window.location = unescape(PluckAuthCommon.querySt("returnurl"));
                            }
                            else if(PluckAuthCommon.getCookieValue("PlckReferringPage")){
                                var l = PluckAuthCommon.getCookieValue("PlckReferringPage");
                                PluckAuthCommon.setCookie("PlckReferringPage", null, -1, '/', PluckGlobal.domain, false );
                                window.location = unescape(l);
                            }
                            else{
                                window.location = PluckGlobal.profile;
                            }
                        } else if (PluckGlobal.pluckAuthStyle == 1) {
                            //We are using modal dialogs - thus just close the modal and update header.
                            closeMessage();
                            PluckAuth.ReloadAuthHeader();
                        }
                    }
                    else{
                        PluckAuth.showGeneralError("There was an unknown error, please try your request again later.", gEID('signInContainer'));
                    }
                }
                else{
                    PluckAuth.signInSimple.postBackRenderTimer = setTimeout("PluckAuth.signInSimple.handlePostBackRendering()",250);
                }
            }
            else{
                PluckAuth.signInSimple.postBackRenderTimer = setTimeout("PluckAuth.signInSimple.handlePostBackRendering()",250);
            }
        },
        clearPostBackRender : function(){
            clearTimeout(PluckAuth.signInSimple.postBackRenderTimer);
            PluckAuth.showGeneralError("There was an unknown error, please try your request again later.", gEID('signInContainer'));
        }
    },
    forgottenSimple : {
        OnEnter : function(e) {
            if(e.keyCode==13){
                PluckAuth.forgottenSimple.subForm()
                return false;
            }
        },
        checkRememberedEmail : function(){
            if(PluckAuthCommon.getCookieValue('PlckRememberEmail')){
                gEID("email").value = PluckAuthCommon.getCookieValue('PlckRememberEmail');
            }
        },
        postBackRenderTimer : null,
        subForm : function(){
            var allObj = gByClass('error', 'div', document);
            for (var i = 0; i<allObj.length; i++) {
                allObj[i].style.display = 'none';
            }
            
            allObj = gByClass('error', 'input', gEID('plckAuthContent'));
            for (var i = 0; i<allObj.length; i++) {
                allObj[i].className = '';
            }
            
			PluckAuth.clearGeneralError("", gEID('forgotPasswordContainer'));
            setTimeout("PluckAuth.forgottenSimple.runValidation()",250);
        },
        runValidation : function(){
            var isvalid = true;
            PluckAuthCommon.removeChildNodes(gEID("slRenderDiv"));
            if( !jsValidateEmailAddress( PluckAuthCommon.trimIt( gEID("email").value ) ) ){
                isvalid=false;PluckAuth.showError(PluckAuth.getRow(gEID("email")),"Please enter a valid email.");
            }
            if(isvalid){
                gSLAuthProxy.__SubmitForm(gEID("slaForgotPasswordForm"));
                PluckAuth.forgottenSimple.handlePostBackRendering();
                setTimeout("PluckAuth.forgottenSimple.clearPostBackRender()",300000);
            }
        },
        handlePostBackRendering : function(){
            if(PluckAuthCommon.isDefined(gEID("slRenderDiv"))) {
                if(gEID("slRenderDiv").childNodes.length>0){
                    var errBox = gByClass('slFieldValidationIndicator', 'div', gEID("slRenderDiv"));
                    var successLinks = '';
                    if (gByClass('SignIn_Wrapper', 'div', gEID("slRenderDiv")).length > 0) {
                        var successLinks2 = gByClass('', 'a', gByClass('SignIn_Wrapper', 'div', gEID("slRenderDiv"))[0]);
                        for (var i=0; i<successLinks2.length; i++) {
                            if (successLinks2[i].innerHTML.indexOf('Sign In') >=0) {
                                successLinks = successLinks2[i];
                            }
                        }
                    }
                    if(errBox.length>0){
                        errBox = errBox[0];
                        var errTxt = errBox.innerHTML;
                        PluckAuth.showGeneralError(PluckAuthCommon.trimIt( errTxt.replace(/\*/g,"") ), gEID('forgotPasswordContainer'));
                    }
                    else if (( successLinks != "") && (successLinks != null)){
                        var instructions = "";
                        var aLink = "";
                        var aText = "";
                        var aOnClick;
                        if (PluckGlobal.pluckAuthStyle == 0) {
                            //If default style then each auth widget is on its own page and we want to redirect to signin on link
                            if (gByClass('SignIn_Wrapper', 'div', gEID("slRenderDiv")).length > 0) {
                                instructions = gByClass('Reg_LeftAlign', 'div', gByClass('SignIn_Wrapper', 'div', gEID("slRenderDiv"))[0])[0].innerHTML;
                            }
                            aLink = PluckGlobal.signin; 
                            aText = "Sign In";
                            aOnClick = null;
                        } else if (PluckGlobal.pluckAuthStyle == 1) {
                            //We are using modal dialogs - thus hav link just close the modal
                            if (gByClass('SignIn_Wrapper', 'div', gEID("slRenderDiv")).length > 0) {
                                instructions = gByClass('Reg_LeftAlign', 'div', gByClass('SignIn_Wrapper', 'div', gEID("slRenderDiv"))[0])[0].innerHTML;
                            }
                            aLink = "javascript:void(0)"; 
                            aText = "Sign In";
                            //aOnClick = new Function("function("+parameter+")");
                            aOnClick = new Function("PluckAuth.ShowAuthWidget('/mystyle/community/authentication/includes/authSignIn.html?newuser=true', 0, 400, 240)");
                            //aOnClick = closeMessage;
                        }
                        
                        PluckAuth.showSuccess(gEID('forgotPasswordContainer'),instructions, aLink, aText, aOnClick);
                    }
                    else{
                        PluckAuth.showGeneralError("There was an unknown error, please try your request again later.", gEID('forgotPasswordContainer'));
                    }
                }
                else{
                    PluckAuth.forgottenSimple.postBackRenderTimer = setTimeout("PluckAuth.forgottenSimple.handlePostBackRendering()",250);
                }
            }
            else{
                PluckAuth.forgottenSimple.postBackRenderTimer = setTimeout("PluckAuth.forgottenSimple.handlePostBackRendering()",250);
            }
        },
        clearPostBackRender : function(){
            clearTimeout(PluckAuth.forgottenSimple.postBackRenderTimer);
            PluckAuth.showGeneralError("There was an unknown error, please try your request again later.", gEID('forgotPasswordContainer'));
        }
    },
    updateInfo : {
        OnEnter : function(e) {
            if(e.keyCode==13){
                PluckAuth.updateInfo.subForm()
                return false;
            }
        },
        checkRememberedEmail : function(){
            if(PluckAuthCommon.GetPluckCookieValue('uid') == null){
                window.location = PluckGlobal.signin + "?returnurl=" + escape(window.location);
            }
            if(PluckAuthCommon.GetPluckCookieValue('name') != null){
                gEID("displayName").value = PluckAuthCommon.GetPluckCookieValue('name');
            }
            if(PluckAuthCommon.GetPluckCookieValue('email') != null){
                gEID("newEmail").value = PluckAuthCommon.GetPluckCookieValue('email');
                gEID("newEmailConfirm").value = PluckAuthCommon.GetPluckCookieValue('email');
            }
        },
        postBackRenderTimer : null,
        subForm : function(){
            var allObj = gByClass('error', 'div', document);
            for (var i = 0; i<allObj.length; i++) {
                allObj[i].style.display = 'none';
            }
            
            allObj = gByClass('error', 'input', gEID('plckAuthContent'));
            for (var i = 0; i<allObj.length; i++) {
                allObj[i].className = '';
            }
            
			PluckAuth.clearGeneralError("", gEID('updateSettingsContainer'));
            setTimeout("PluckAuth.updateInfo.runValidation()",250);
        },
        runValidation : function(){
            var isvalid = true;
            PluckAuthCommon.removeChildNodes(gEID("slRenderDiv"));
            if(PluckAuthCommon.trimIt(gEID("displayName").value)==""){
                isvalid=false;PluckAuth.showError(PluckAuth.getRow(gEID("displayName")),"Display name is required.");
            }
            if( !jsValidateEmailAddress( PluckAuthCommon.trimIt( gEID("newEmail").value ) ) ){
                isvalid=false;PluckAuth.showError(PluckAuth.getRow(gEID("newEmail")),"Please enter a valid email.");
            }
            if(PluckAuthCommon.trimIt(gEID("newEmailConfirm").value)!= PluckAuthCommon.trimIt(gEID("newEmail").value)){
                isvalid=false;PluckAuth.showError(PluckAuth.getRow(gEID("newEmailConfirm")),"Emails must match.");
            }
            if(isvalid){
                gSLAuthProxy.__SubmitForm(gEID("slaUpdateSettingsForm"));
                PluckAuth.updateInfo.handlePostBackRendering();
                setTimeout("PluckAuth.updateInfo.clearPostBackRender()",300000);
            }
        },
        handlePostBackRendering : function(){
            if(PluckAuthCommon.isDefined(gEID("slRenderDiv"))) {
                if(gEID("slRenderDiv").childNodes.length>0){
                    var errBox = gByClass('slaErrorMessage', 'div', gEID("slRenderDiv"));
                    var successLinks = gEID("SLAuthActionLinks");
                    if(errBox.length>0){
                        errBox = errBox[0];
                        var errTxt = errBox.innerHTML;
                        PluckAuth.showGeneralError(PluckAuthCommon.trimIt( errTxt.replace(/\*/g,"") ), gEID('updateSettingsContainer'));
                    }
                    else if(successLinks != null){
                        var instructions = "Your settings have been updated.";
                        var aLink = "";
                        var aText = "";
                                        
                        if (PluckGlobal.pluckAuthStyle == 0) {
                            //Have the link go to returnurl or profile if deault style
                            if(PluckAuthCommon.querySt("returnurl")){
                                aLink = unescape(PluckAuthCommon.querySt("returnurl")); 
                                aText = "Return";
                                //window.location = PluckAuthCommon.querySt("returnurl");
                            }
                            else if(PluckAuthCommon.getCookieValue("PlckReferringPage")){
                                var l = PluckAuthCommon.getCookieValue("PlckReferringPage");
                                PluckAuthCommon.setCookie("PlckReferringPage", null, -1, '/', PluckGlobal.domain, false );
                                //window.location = l;
                                aLink = unescape(l); 
                                aText = "Return";
                            }
                            else{
                                aLink = PluckGlobal.profile; 
                                aText = "Go to Profile";
                                //window.location = PluckGlobal.profile;
                            }
                            aOnClick = null;
                        } else if (PluckGlobal.pluckAuthStyle == 1) {
                            //We are using modal dialogs - thus hav link just close the modal
                            aLink = "javascript:void(0)"; 
                            aText = "Close";
                            aOnClick = closeMessage;
                        }
                        PluckAuth.showSuccess(gEID('updateSettingsContainer'),instructions, aLink, aText, aOnClick);
                    }
                    else{
                        PluckAuth.showGeneralError("There was an unknown error, please try your request again later.", gEID('updateSettingsContainer'));
                    }
                }
                else{
                    PluckAuth.updateInfo.postBackRenderTimer = setTimeout("PluckAuth.updateInfo.handlePostBackRendering()",250);
                }
            }
            else{
                PluckAuth.updateInfo.postBackRenderTimer = setTimeout("PluckAuth.updateInfo.handlePostBackRendering()",250);
            }
        },
        clearPostBackRender : function(){
            clearTimeout(PluckAuth.updateInfo.postBackRenderTimer);
            PluckAuth.showGeneralError("There was an unknown error, please try your request again later.", gEID('updateSettingsContainer'));
        }
    },
    changePassword : {
        OnEnter : function(e) {
            if(e.keyCode==13){
                PluckAuth.changePassword.subForm()
                return false;
            }
        },
        checkLogin : function(){
            if(PluckAuthCommon.GetPluckCookieValue('uid') == null){
                window.location = PluckGlobal.signin + "?returnurl=" + escape(window.location);
            }
        },
        postBackRenderTimer : null,
        subForm : function(){
            var allObj = gByClass('error', 'div', document);
            for (var i = 0; i<allObj.length; i++) {
                allObj[i].style.display = 'none';
            }
            
            allObj = gByClass('error', 'input', gEID('plckAuthContent'));
            for (var i = 0; i<allObj.length; i++) {
                allObj[i].className = '';
            }
            
			PluckAuth.clearGeneralError("", gEID('changePasswordContainer'));
            setTimeout("PluckAuth.changePassword.runValidation()",250);
        },
        runValidation : function(){
            var isvalid = true;
            PluckAuthCommon.removeChildNodes(gEID("slRenderDiv"));
            if(PluckAuthCommon.trimIt(gEID("oldPassword").value)==""){
                isvalid=false;PluckAuth.showError(PluckAuth.getRow(gEID("oldPassword")),"Old password is required.");
            }
            if(PluckAuthCommon.trimIt(gEID("newPassword").value)=="" || PluckAuthCommon.trimIt(gEID("newPassword").value).length < 6){
                isvalid=false;PluckAuth.showError(PluckAuth.getRow(gEID("newPassword")),"Please enter a new password.");
            }
            if(PluckAuthCommon.trimIt(gEID("newPasswordConfirm").value)!= PluckAuthCommon.trimIt(gEID("newPassword").value)){
                isvalid=false;PluckAuth.showError(PluckAuth.getRow(gEID("newPasswordConfirm")),"New passwords must match.");
            }
            if(isvalid){
                gSLAuthProxy.__SubmitForm(gEID("slaChangePasswordForm"));
                PluckAuth.changePassword.handlePostBackRendering();
                setTimeout("PluckAuth.changePassword.clearPostBackRender()",300000);
            }
        },
        handlePostBackRendering : function(){
            if(PluckAuthCommon.isDefined(gEID("slRenderDiv"))) {
                if(gEID("slRenderDiv").childNodes.length>0){
                    var errBox = gEID("slaErrorMessage");
                    var successLinks = gEID("SLAuthActionLinks");
                    if(errBox != null){
                        //errBox = errBox[0];
                        var errTxt = errBox.innerHTML;
                        PluckAuth.showGeneralError(PluckAuthCommon.trimIt( errTxt.replace(/\*/g,"") ), gEID('changePasswordContainer'));
                    }
                    else if(successLinks != null){
                        var instructions = "Your password has been changed.";
                        var aLink = "";
                        var aText = "";
                        if (PluckGlobal.pluckAuthStyle == 0) {                                        
                            //Default style on each page - so link goes to previous page or profile
                            if(PluckAuthCommon.querySt("returnurl")){
                                aLink = unescape(PluckAuthCommon.querySt("returnurl")); 
                                aText = "Return";
                                //window.location = PluckAuthCommon.querySt("returnurl");
                            }
                            else if(PluckAuthCommon.getCookieValue("PlckReferringPage")){
                                var l = PluckAuthCommon.getCookieValue("PlckReferringPage");
                                PluckAuthCommon.setCookie("PlckReferringPage", null, -1, '/', PluckGlobal.domain, false );
                                //window.location = l;
                                aLink = unescape(l); 
                                aText = "Return";
                            }
                            else{
                                aLink = PluckGlobal.profile; 
                                aText = "Go to Profile";
                                //window.location = PluckGlobal.profile;
                            }
                            aOnClick = null;
                        } else if (PluckGlobal.pluckAuthStyle == 1) {
                            //We are using modal dialogs - thus hav link just close the modal
                            aLink = "javascript:void(0)"; 
                            aText = "Close";
                            aOnClick = closeMessage;
                        }
                        PluckAuth.showSuccess(gEID('changePasswordContainer'),instructions, aLink, aText, aOnClick);
                    }
                    else{
                        PluckAuth.showGeneralError("There was an unknown error, please try your request again later.", gEID('changePasswordContainer'));
                    }
                }
                else{
                    PluckAuth.changePassword.postBackRenderTimer = setTimeout("PluckAuth.changePassword.handlePostBackRendering()",250);
                }
            }
            else{
                PluckAuth.changePassword.postBackRenderTimer = setTimeout("PluckAuth.changePassword.handlePostBackRendering()",250);
            }
        },
        clearPostBackRender : function(){
            clearTimeout(PluckAuth.changePassword.postBackRenderTimer);
            PluckAuth.showGeneralError("There was an unknown error, please try your request again later.", gEID('changePasswordContainer'));
        }
    },
    showSuccess : function(containerDiv, instructions, aLink, aText, aOnClick) {
        if (!aOnClick) aOnClick = null;
        if (PluckAuthCommon.isDefined(containerDiv) == false) containerDiv = document;
        var objDiv = gByClass('plckContentBorder', 'div', containerDiv);
        if(objDiv.length > 0){
            objDiv[0].style.display = 'none';
        }
        var objDiv = gByClass('plckHeadDesc', 'p', containerDiv);
        if(objDiv.length > 0){
            objDiv[0].style.display = 'none';
        }
        var objDiv = gByClass('plckSuccessMsg', 'div', containerDiv);
        if(objDiv.length > 0){
            objDiv[0].style.display = 'block';
        }
        var objDiv = gByClass('plckInstructions', 'div', containerDiv);
        if(objDiv.length > 0){
            objDiv[0].innerHTML = instructions;
        }
        var objDiv = gByClass('plckLoginLink', 'a', containerDiv);
        if(objDiv.length > 0){
            objDiv[0].href = aLink;
            objDiv[0].innerHTML = aText;
            objDiv[0].onclick = aOnClick;
        }
    },
    showError : function(row,msg){
        var errDiv = gByClass('error', 'div', row);
        if(errDiv.length > 0){
            errDiv[0].innerHTML = '<div>' + msg + '</div>';
            errDiv[0].style.display = 'block';
        }
        
        var allInputs = gByClass('', 'input', row);
        for (var i = 0; i<allInputs.length; i++) {
            allInputs[i].className = 'error';
        }
    },
    getRow : function(o){ return o.parentNode.parentNode; },
    showGeneralError : function(msg, containerDiv){
        if (PluckAuthCommon.isDefined(containerDiv) == false) containerDiv = document;
        var errDiv = gByClass('plckStaticSystemMessage', 'div', containerDiv);
        if(errDiv.length > 0){
            errDiv[0].innerHTML = msg;
            errDiv[0].style.display = 'block';
        }
        //gEID("plckStaticSystemMessage").innerHTML = msg;
        //gEID("plckStaticSystemMessage").style.display = "block";
    },
    clearGeneralError : function(msg, containerDiv){
        if (PluckAuthCommon.isDefined(containerDiv) == false) containerDiv = document;
        var errDiv = gByClass('plckStaticSystemMessage', 'div', containerDiv);
        if(errDiv.length > 0){
            errDiv[0].innerHTML = "";
            errDiv[0].style.display = 'none';
        }
        //gEID("plckStaticSystemMessage").innerHTML = msg;
        //gEID("plckStaticSystemMessage").style.display = "block";
    }
}
