var responseLoginDone;
var responseGetUPAddrsDone;
var responseDoLogout;
var oUPData;

Ext.onReady(function() { 
	Ext.QuickTips.init(); 
	
    Ext.get('passwordID').on({
        'keyup' : { fn: function(e, target, options) { if(e.getKey() == e.ENTER) {submitLogin();} }, scope: this }
    });		
    
    checkLoginStatus();
});

function checkLoginStatus() {
	
	var oFrm = document.getElementById('frmLoginID');
	if (oFrm) {
		if (oFrm.IsCSLoggedIn.value=="yes") {
			if (oFrm.IsLSExpired.value == "yes" || oFrm.UPResponseText.value != "OK") {
				showMask();
				hideDivLoginFrm();
				showLogoutMessage(oFrm.UPResponseText.value, true);
				showLoginPanel();
				showLoginOkBtn();
				var o = document.getElementById('tdCSFullName_ID');
				o.innerHTML = 'Please login again!';
			} else {
				showLogoutLink();
			}
		}
		if (oFrm.website.value=="www.thePopcornMachine.com") {
			var o = document.getElementById('divCudaFamilyLinks_ID');
			o.style.position = 'relative';
			o.style.top = '-5px';
			var o = document.getElementById('tblHeaderContainerID');
			o.style.height = '60px';
		}
		if (oFrm.website.value=="www.TheSnowConeMachine.com") {
			var o = document.getElementById('divCudaFamilyLinks_ID');
			o.style.position = 'relative';
			o.style.top = '-140px';
			var o = document.getElementById('tblHeaderContainerID');
			o.style.height = '60px';
		}
		if (oFrm.website.value=="www.CudaCoffeeVending.com") {
			var o = document.getElementById('divCudaFamilyLinks_ID');
			o.style.position = 'relative';
			o.style.top = '-65px';
			var o = document.getElementById('tblHeaderContainerID');
			o.style.height = '50px';
		}
	}
}

function showSignUp() {
	showMask();
	showMessage("<table border='0' cellpadding='0' cellspacing='0'><tr><td style='vertical-align: bottom; width: 112px'><img src='http://cudacorp.com/images/cudashopper_logo.png' style='float: left;' /></td><td class='greenSubTitle'>Sign Up</td></tr></table><br />You may sign-up for your CudaShopper account during the checkout process. The ShopperOne<sup>&reg;</sup> shopping cart secure transactions enable you enter your personal information safely. As you enter your payment information you will be offered to create an account; simply enter a username, password and security answer.", false);
	showDialogBox();
}

function showMyAccount() {
	var oFrm = document.getElementById('frmLoginID');
	if (oFrm) {
		if (oFrm.IsCSLoggedIn.value=="yes") {
		    var url = "https://cudacorp.com/userprofile.php";
		    //var url = "http://w2.cudacorp.com/userprofile.php"; //** for debug
		    //var wname = 'upui';
		    //var wfeatures = 'menubar=yes,resizable=yes,scrollbars=yes,status=yes,location=yes';
		    //window.open(url,wname,wfeatures);
			oFrm.method = 'POST';
			oFrm.target = '_self';
			oFrm.action = url;
			oFrm.submit();
		}
	}
}

function closeLoginPanelMsg() {
	hideMask();
	hideLoginPanel();
}

function showLoginOkBtn() {
	var o = document.getElementById('divSubmitBtnID');
	o.style.visibility = 'hidden';
	o.style.display = 'none';
	var o = document.getElementById('divOkBtnID');
	o.style.visibility = 'visible';
	o.style.display = 'block';
}
function hideLoginOkBtn() {
	var o = document.getElementById('divSubmitBtnID');
	o.style.visibility = 'visible';
	o.style.display = 'block';
	var o = document.getElementById('divOkBtnID');
	o.style.visibility = 'hidden';
	o.style.display = 'none';
}

function showLogoutLink() {
	var o = document.getElementById('lnkLogin_ID');
	o.style.visibility = 'hidden';
	o.style.display = 'none';
	
	var o = document.getElementById('lnkLogout_ID');
	o.style.visibility = 'visible';
	o.style.display = 'block';	
	
	var o = document.getElementById('lnkSignUp_ID');
	o.style.visibility = 'hidden';
	o.style.display = 'none';
	
	var o = document.getElementById('lnkMyAccount_ID');
	o.style.visibility = 'visible';
	o.style.display = 'block';	
	
	var o = document.getElementById('tdCSFullName_ID');

	var csname="";
	var oFrm = document.getElementById('frmLoginID');
	if (oFrm) csname = oFrm.csFullName.value;

	o.innerHTML = 'Welcome '+csname;
	
	var o = document.getElementById('divCudaFamilyLinks_ID');
	o.style.visibility = 'visible';
	o.style.display = 'block';	
}

function hideLogoutLink() {
	var o = document.getElementById('lnkLogout_ID');
	o.style.visibility = 'hidden';
	o.style.display = 'none';
	
	var o = document.getElementById('lnkMyAccount_ID');
	o.style.visibility = 'hidden';
	o.style.display = 'none';
	
	var o = document.getElementById('lnkLogin_ID');
	o.style.visibility = 'visible';
	o.style.display = 'block';	
	
	var o = document.getElementById('lnkSignUp_ID');
	o.style.visibility = 'visible';
	o.style.display = 'block';	

	var o = document.getElementById('divCudaFamilyLinks_ID');
	o.style.visibility = 'hidden';
	o.style.display = 'none';
}	

function doLogout() {

	showMask();
	hideDivLoginFrm();
	showLoginProcessingMsg();
	showLoginPanel();
	
	Ext.Ajax.request({
	   url: 'logout-cs.php',
	   form: 'frmLogin',
	   method: 'POST', 
	   success: function(response, opts) {
		if (responseDoLogout) return;
	   		responseDoLogout = true;
			hideMask();
			hideLoginProcessingMsg();
			if(response.responseText=="OK") {
				return setUserHasLoggedOut();
			} else {
				showLogoutMessage("Logout failure. Try again!", false);
			}
	   },
	   failure: function(response, opts) {
	      //console.log('server-side failure with status code ' + response.status);

	   		if (responseDoLogout) return;
	   		responseDoLogout = true;
			hideMask();
			hideLoginProcessingMsg();
			showLogoutMessage("Logout failure. Try again!", false);
	   }
	});

	setTimeout('responseDoLogoutTimeOut();',6000);
	responseDoLogout = false;
}

function setUserHasLoggedOut() {
	var oFrm = document.getElementById('frmLoginID');
	if (oFrm) {
		oFrm.IsLSExpired.value = "yes";
		oFrm.IsCSLoggedIn.value = "no";
		oFrm.csFullName.value = "";
	}
	var o = document.getElementById('tdCSFullName_ID');
	o.innerHTML = '';

	hideLogoutLink();
	hideLoginPanel();
	if (document.checkout) showCreateCSAcctContainer();
}
function responseDoLogoutTimeOut() {
	if (responseDoLogout) return;
	responseDoLogout = true;
	hideMask();
	hideLoginProcessingMsg();
	showLogoutMessage("Logout failure. Try again!", false);
}
function showLogoutMessage(msg, isOK) {
	var el = document.getElementById("divLoginMsgBoxID");
	var clsName = "failedLoginMsg";
	el.className = clsName;
	el.innerHTML = msg;
	el.style.visibility="visible";
	el.style.display="block";
	//if (isOK) return;
	timer=setTimeout('hideLoginMessage();hideLoginPanel();',6000);
}

function setUserIsLoggedIn(){
	
	showLoginMessage("Login was successful.", true);	
	hideMask();
	hideLoginProcessingMsg();

	var oFrm = document.getElementById('frmLoginID');
	if (oFrm) {
		oFrm.IsLSExpired.value = "no";
		oFrm.IsCSLoggedIn.value = "yes";
		oFrm.csFullName.value = oUPData.upData.firstname + " " + oUPData.upData.lastname;
	}
}
function showLoginPanel() {
	var o = document.getElementById('loginPanelID');
	o.style.visibility = 'visible';
	o.style.display = 'block';
}
function hideLoginPanel() {
	var o = document.getElementById('loginPanelID');
	o.style.visibility = 'hidden';
	o.style.display = 'none';
}
function resetLoginForm() {	
	hideLoginOkBtn();
	hideLoginMessage();
	hideMask();
	showDivLoginFrm();
	showLoginPanel();
	
	var oFrm = document.getElementById('frmLoginID');
	if (oFrm) {
		oFrm.username.value = "";
		oFrm.password.value = "";
		oFrm.username.focus();
	}
}

function submitLogin() {

	var oFrm = document.getElementById('frmLoginID');
	if (oFrm) {
        if (oFrm.username.value == "") {
            alert ("Please enter your username.");
			return false;
        }
        if (oFrm.password.value == "") {
            alert ("Please enter your password.");
			return false;
        }

		showMask();
		hideDivLoginFrm();
		showLoginProcessingMsg();

		Ext.Ajax.request({
		   url: 'login-cs.php',
		   form: 'frmLogin',
		   method: 'POST', 
		   success: function(response, opts) {
				if (responseLoginDone) return;
				responseLoginDone = true;
				hideLoginProcessingMsg();
				
				oUPData = Ext.util.JSON.decode(response.responseText);
				if(oUPData.successMsg=="OK") {
					return setUserIsLoggedIn();
				} else {
					showLoginMessage(oUPData.successMsg, false);
				}
				hideMask();
		   },
		   failure: function(response, opts) {
		      //console.log('server-side failure with status code ' + response.status);
		   		if (responseLoginDone) return;
				responseLoginDone = true;
				hideMask();
				hideLoginProcessingMsg();
				showLoginMessage("Process failure. Try again!", false);
		   }
		});
		setTimeout('responseLoginTimeOut();',6000);
		responseLoginDone = false;
	}
}

function responseLoginTimeOut() {
	if (responseLoginDone) return;
	responseLoginDone = true;
	hideMask();
	hideLoginProcessingMsg();
	showLoginMessage("Process failure. Try again!", false);
}
function showLoginMessage(msg, isOK) {
	var el = document.getElementById("divLoginMsgBoxID");
	var clsName = "failedLoginMsg";
	if (isOK) clsName = "okLoginMsg";
	el.className = clsName;
	el.innerHTML = msg;
	el.style.visibility="visible";
	el.style.display="block";
	if (isOK) {
		timer=setTimeout('hideLoginPanel();showLogoutLink();',2000); 
	} else {
		timer=setTimeout('hideLoginMessage();resetLoginForm();',4000);
	}
}
function hideLoginMessage() {
	var el = document.getElementById("divLoginMsgBoxID");
	el.style.visibility="hidden";
	el.style.display="none";
}
function showLoginProcessingMsg() {
	var el = document.getElementById("divLoginProcessingID");
	el.style.visibility="visible";
	el.style.display="block";
}
function hideLoginProcessingMsg() {
	var el = document.getElementById("divLoginProcessingID");
	el.style.visibility="hidden";
	el.style.display="none";
}
function hideDivLoginFrm() {
	var el = document.getElementById("divLoginFrmID");
	el.style.visibility="hidden";
	el.style.display="none";
}
function showDivLoginFrm() {
	var el = document.getElementById("divLoginFrmID");
	el.style.visibility="visible";
	el.style.display="block";
}
function showMask() {
	var el = document.getElementById("divMaskID");
	el.style.visibility="visible";
	el.style.display="block";
}
function hideMask() {
	var el = document.getElementById("divMaskID");
	el.style.visibility="hidden";
	el.style.display="none";
}
function showCreateCSAcctContainer() {
	var el = document.getElementById("divCreateCSAcctContainerID");
	el.style.visibility="visible";
	el.style.display="block";
}
function hideCreateCSAcctContainer() {
	var el = document.getElementById("divCreateCSAcctContainerID");
	if (el){
		el.style.visibility="hidden";
		el.style.display="none";
	}
}

function showProcessingMsg() {
	var el = document.getElementById("divProcessingMsgID");
	//el.style.visibility="visible";
	el.style.display="block";
	var el = document.getElementById("btnOkID");
	el.style.display="none";	
}
function hideProcessingMsg() {
	var el = document.getElementById("divProcessingMsgID");
	//el.style.visibility="hidden";
	el.style.display="none";
}
function showDialogBox(elID) {
	//var o = document.getElementById('dialogBoxID');
	//o.style.visibility = 'visible';
	//o.style.display = 'block';
	//
	Ext.get("dialogBoxID").show();
	Ext.get("dialogBoxID").alignTo(document,"t",[-80,60]);
}
function hideDialogBox() {
	var o = document.getElementById('dialogBoxID');
	//o.style.visibility = 'hidden';
	o.style.display = 'none';
	hideMessage();
	hideProcessingMsg();
	hideMask();
}

function showMessage(msg, isOK) {
	var el = document.getElementById("divMsgBoxID");
	el.innerHTML = msg;
	//el.style.visibility="visible";
	el.style.display="block";
	if (isOK) {
		timer=setTimeout('hideDialogBox();',4000); 
	} else {
		showOkBtn();
	}
}
function showOkBtn() {
	Ext.get("btnOkID").show();
	hideSubmitCancelBtns();
}
function hideMessage() {
	var el = document.getElementById("divMsgBoxID");
	el.style.display="none";
	var el = document.getElementById("btnOkID");
	el.style.display="none";
	hideSubmitCancelBtns();
}
function showSubmitMessage(msg) {
	var el = document.getElementById("divMsgBoxID");
	el.style.display="block";
	el.innerHTML = msg;
	showSubmitCancelBtns();
	var el = document.getElementById("btnOkID");
	el.style.display="none";
}
function showSubmitCancelBtns() {
	Ext.get("btnSubmitID").show();
	Ext.get("btnCancelID").show();
}
function hideSubmitCancelBtns() {
	var el = document.getElementById("btnSubmitID");
	el.style.display="none";
	var el = document.getElementById("btnCancelID");
	el.style.display="none";
}

function switchSite(url) {
	var oFrm = document.frmLogin;
	oFrm.method = 'POST';
	oFrm.target = '_self';
	oFrm.action = url;
	oFrm.submit();
}

