/**************************************************************
	formerly login.js
***************************************************************/

var Url;
var login;
var loginEnabled = true;

Event.observe(window, 'load', function(){
	login = new Login('errorMsg');
	
	// if the btn exists onload, enable it
	if ($('btnLogin')) {
		enableLogin(true);
		
	}
	if ($('loginEmailAddress'))
	{
	    $('loginEmailAddress').focus();
	}
});

function onWait()
{
}

function onSuccess(response)
{
	if( typeof(g_returnUrl) != "undefined" && g_returnUrl != "" ) {
		document.location = g_returnUrl;
		return false;
	}
	else if( typeof(sku) != "undefined" && sku != "" && typeof(cartSku) != "undefined" && cartSku != "" ) {
		launchPhidget( sku, cartSku );
		return false;
	}
	else if( location.href.toLowerCase().indexOf('login.aspx')>0 ) {
		document.location = '/store.aspx';
	}
	else {
		window.location.reload();
		return false;
	}
}

function onFail(response)
{
	response = response.d;	//unwrap the response
	var ret = "";
	for( p in response )
		ret += p + "=" + response[p] + "\n";
	alert('Invalid user name or password.');
	$('btnLogin').value = "Sign In";
	pleaseWait('btnLogin', false);
	enableLogin(true);
}

function enableLogin(enable)
{
	if(enable)
	{
		Event.observe($('btnLogin'),'click',onLogin);
	}
	else
	{
		Event.stopObserving($('btnLogin'),'click',onLogin);
	}
	loginEnabled = enable;
}

function onLogin(event)
{
	pleaseWait('btnLogin', true);
	loginNow($F('loginEmailAddress'),$F('loginPassword'));
}

function loginNow(user,password)
{
	enableLogin(false);
	login.login(user,password,onWait,onSuccess,onFail);
}



/**************************************************************
	formerly loginClass.js
***************************************************************/
var Login = Class.create();

Login.prototype = {
	initialize: function(errorMessageDiv)
	{
		this._errorDiv = $(errorMessageDiv);
	},

	login: function(user, password, onWaitCallBack, onSuccessCallBack, onFailCallBack)
	{
		var This = this;

        //Clear cookies upon login attempt
		//deleteToken();
		//deleteEncryptionToken();
        ExpireCookies();
        
		var loginSuccess = function(securityDTO, context)
		{
				securityDTO = securityDTO.d; // unwrap the data
				
			if(securityDTO == null)
			{
				alert('Sorry, we cannot log you in at this time.  Please try again later.');
				return;
			}
			setEncryptionToken(securityDTO.EncryptionToken);
			setToken(securityDTO.CurrentToken);
			if(onSuccessCallBack)
				onSuccessCallBack(securityDTO);
		}

		var loginFail = function(response)
		{
			if(onFailCallBack)
				onFailCallBack(response);
		}
		
		if(onWaitCallBack != null)
			onWaitCallBack();


		EZP.Api.Presentation.Web.Ajax.Security.loginSecurityUser(getBrandId(), user.trim(), password.trim(), loginSuccess, loginFail, this);
	},
	logout: function(token, onSuccessCallBack, onFailCallBack)
	{
		var onSuccess = function(response)
		{
			onSuccessCallBack(response);
		}

		var onFail = function(response)
		{
			onFailCallBack(response);
		}

		if(token == null || token == '')
		{

			onSuccessCallBack();
		}
		else
		{
			EZP.Api.Presentation.Web.Ajax.Security.logOff(token, onSuccess, onFail, this);
		}
	}
	
}

var Register = Class.create();

Register.prototype = {
	initialize: function(errorMessageDiv)
	{
		this._errorDiv = $(errorMessageDiv);
	},

	showError: function(errorMsg, show)
	{
		if(show || true)
		{
			this._errorDiv.style.display = 'block';
			this._errorDiv.innerHTML = errorMsg;
		}
		else
		{
			this._errorDiv.style.display = 'none';
		}
	},

	registerUser: function(email,password, password2,firstName,lastName, phoneNumber, optIn, securityQuestionID, securityAnswer, onSuccessCallBack, onErrorCallBack)
	{
		var This = this;

		var onSuccess = function(response)
		{
			onSuccessCallBack(response);
		}

		var onFail = function(response)
		{
			onErrorCallBack(response);
		}

		EZP.Api.Presentation.Web.Ajax.Registration.register(getBrandId(), email, password, firstName, lastName, email, phoneNumber, true, true, optIn, securityQuestionID, securityAnswer, onSuccess, onFail, this);
	}
}



// from common
function logOut()
{
	deleteToken();
	deleteEncryptionToken();
	var login = new Login();
	var onFail = function(response)
	{
		alert('Failed To Log Out');
	}

	var onSuccess = function(response)
	{
		document.location = '/';
	}

	login.logout(getToken(),onSuccess,onFail);
}
