AjaxLogin = Class.create();

AjaxLogin.prototype = {
	initialize:function() {
	},
	
	runAjax:function(redirectPage) {
		!isNull(redirectPage) ? this.redirectPage = redirectPage : this.redirectPage='';
		var loginTimeOut;
		try {
			clearTimeout(loginTimeOut);
			if (FormValidation.validateForm(null,'loginForm')) {
				currentTime = new Date()
				var goAjax = new Ajax.Request(
					'/global/ajax/ajaxResponse/loginAjaxResponse.jsp', 
					{
						method: 'post',
						parameters: 'currentTime='+currentTime.getTime(),
						postBody: parseParamsforAjax('loginForm'),
						onLoading: this.onLoadingHandler,
						onFailure: this.onFailureHandler,
						onComplete: this.onCompleteHandler
					});
			}
		} catch(err) {
			loginTimeOut = setTimeout('this.runAjax(' + redirectPage + ')', 100);
		}
		
	},
	
	onCompleteHandler:function(responseBack) {
		/* ajaxResponse.jsp should not contain any line breaks. Line breaks will prevent the javascript from transforming it into a javascript object(JSON) */
		clearTimeout(ajaxTimer);
		try {$('dumpBox').innerHTML = responseBack.responseText.strip().escapeHTML();} catch(err){}
		oResponseMsg = eval("(" + responseBack.responseText.strip() + ")");
		AjaxLogin.membersOnly(oResponseMsg.ajaxResponse);
		if (oResponseMsg.ajaxResponse.ErrMessage) {
			AjaxLogin.loginError(oResponseMsg.ajaxResponse)
			$('loginPanelLoader').style.display='none';	
			$('loginPanelContents').style.display='block';
		} else {
			pageTracker._trackPageview('/action/login/globalNav');
			AjaxLogin.redirectPage=='null' ? AjaxLogin.loginPass(oResponseMsg.ajaxResponse) : document.location=AjaxLogin.redirectPage;
		}
		AjaxCart.runAjax();
	},
	
	loginError:function(oErrMsg) {
		var errorMessage = 'error';
		if (oErrMsg.ErrMessage) {
			errorMessage = oErrMsg.ErrMessage;
			$('loginError').innerHTML = oErrMsg.ErrMessage;
			$('loginError').style.display = 'block';
		} else {
			$('loginError').innerHTML='';
			$('loginError').style.display = 'none';
		}
		try {
			//refers to: products/collections/js/collections.js
			sendToActionScript(errorMessage);
		} catch(err) {}	
	},
	
	loginPass:function(oResponseMsg) {
		vmoTransient = false;
		userSkinShade = oResponseMsg.skinShade;
		
		$('loginPanelContainer').style.display='none';
		
		/* Initialize Menu to include Member Only Options*/
		$('Menu6').className='hasSubMenu';
		cgGlobalSubNav.initialize();
		cgGlobalNav.initialize();
		$('userinfoContainer').innerHTML = 'Hi <span id="memberUserName">'+oResponseMsg.username+'</span> | '+oResponseMsg.logoutLink;
		profileId = oResponseMsg.uid;
		if (systemPass && IsEZfaceActiveXInstalled()) window.onunload = DisposeEZfaceActiveX;
		setTimeout('loggedInMiniVMO();',1);
		$('contentUserName').innerHTML = oResponseMsg.username;

		if ($('loginForm').elements['flash'] && $('loginForm').elements['flash']!=null) {
			eval($('loginForm').elements['flash'].value + "()");
		}	
		try {
			//refers to: products/collections/js/collections.js
			sendToActionScript('success');
		} catch(err) {}	
	},
	
	onLoadingHandler:function() {
		$('loginMsg').innerHTML = 'Logging In...';
		$('loginPanelLoader').style.height='125px';
		$('loginPanelContents').style.display='none';
	 	$('loginPanelLoader').style.display='block';
	},
	
	onFailureHandler:function() {
		clearTimeout(ajaxTimer);
		$('loginPanelContents').style.display='block';
		$('loginPanelLoader').style.display = 'none';
		$('loginError').innerHTML = 'Connection error. Please try again later.';
		$('loginError').style.display = 'block';
	},
	
	membersOnly:function(oResponseMsg) {
		//Make all members only elements viewable
		if (!oResponseMsg.ErrMessage) {
			membersOnly(oResponseMsg.uid);
		}
	}
}

var AjaxLogin = new AjaxLogin;