var responseLoginDone;
var responseGetUPDataDone;
var responseDoLogout;
var responseSubmitDataDone;
var oUPData;

var mIsCSLoggedIn = false;

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('tdWelcomeMsgID');
				o.innerHTML = 'Please login again!';
				mIsCSLoggedIn = false;
			} else {
				showLogout();
				mIsCSLoggedIn = true;
			}
		}
	}
}
function clearForm(){
	
	var o = document.getElementById('tdFullName_ID');
	if (o) o.innerHTML = ""
	
	var oFrm = document.getElementById('formCS_name_ID');
	if (oFrm) {
		oFrm.firstname.value="";
		oFrm.lastname.value="";
	}

	var o = document.getElementById('tdUsername_ID');
	if (o) o.innerHTML = ""
	
	var oFrm = document.getElementById('formCS_username_ID');
	if (oFrm) {
		oFrm.username.value="";
	}
	
	var oFrm = document.getElementById('formCS_password_ID');
	if (oFrm) {
		oFrm.txtOldPassword.value="";
		oFrm.txtNewPassword.value="";
	}

	var o = document.getElementById('tdEmail_ID');
	if (o) o.innerHTML = ""
	
	var oFrm = document.getElementById('formCS_contact_ID');
	if (oFrm) {
		oFrm.mobile_phone.value="";
		oFrm.home_phone.value="";
		oFrm.work_phone.value="";
		oFrm.main_email.value="";
		oFrm.alt_email.value="";
	}
	
	var o = document.getElementById('tdBillingInfo_ID');
	if (o) o.innerHTML = ""
	
	var oFrm = document.getElementById('formCS_billinginfo_ID');
	if (oFrm) {
		oFrm.bill_fname.value="";
		oFrm.bill_lname.value="";
		oFrm.bill_addr1.value="";
		oFrm.bill_addr2.value="";
		oFrm.bill_city.value="";
		oFrm.bill_state.value="";
		oFrm.bill_zip.value="";
		oFrm.bill_country.value="";
		oFrm.bill_phone.value="";
		oFrm.bill_email.value="";
	}
	
	var o = document.getElementById('tdShippingInfo_ID');
	if (o) o.innerHTML = ""
	
	var oFrm = document.getElementById('formCS_shippinginfo_ID');
	if (oFrm) {
		oFrm.ship_fname.value="";
		oFrm.ship_lname.value="";
		oFrm.ship_addr1.value="";
		oFrm.ship_addr2.value="";
		oFrm.ship_city.value="";
		oFrm.ship_state.value="";
		oFrm.ship_zip.value="";
		oFrm.ship_country.value="";
		oFrm.ship_phone.value="";
		oFrm.ship_email.value="";
	}
	
	var o = document.getElementById('tdPaymentInfo_ID');
	if (o) o.innerHTML = ""
	
	var oFrm = document.getElementById('formCS_paymentinfo_ID');
	if (oFrm) {
		oFrm.card_type.value="";
		oFrm.card_no.value="";
		oFrm.card_xyear.value="";
		oFrm.card_xmonth.value="";
		oFrm.card_name.value="";
		oFrm.card_cvn.value="";
		//** hidden fields
		oFrm.bill_fname.value="";
		oFrm.bill_lname.value="";
		oFrm.bill_addr1.value="";
		oFrm.bill_addr2.value="";
		oFrm.bill_city.value="";
		oFrm.bill_state.value="";
		oFrm.bill_zip.value="";
		oFrm.bill_country.value="";
	}
}
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 showLogout() {
	var o = document.getElementById('lnkLoginID');
	o.style.visibility = 'hidden';
	o.style.display = 'none';
	
	var o = document.getElementById('lnkLogoutID');
	o.style.visibility = 'visible';
	o.style.display = 'block';	
	
}

function hideLogout() {
	var o = document.getElementById('lnkLogoutID');
	o.style.visibility = 'hidden';
	o.style.display = 'none';
	
	var o = document.getElementById('lnkLoginID');
	o.style.visibility = 'visible';
	o.style.display = 'block';	
}	

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";
	}
	var o = document.getElementById('tdWelcomeMsgID');
	o.innerHTML = 'Thank you!';

	hideLogout();
	hideLoginPanel();
	clearForm();
	mIsCSLoggedIn = false;
}
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 setUserProfileData() {
	
	var o = document.getElementById('tdFullName_ID');
	if (o) o.innerHTML = oUPData.upData.firstname+" "+oUPData.upData.lastname;
	
	var oFrm = document.getElementById('formCS_name_ID');
	if (oFrm) {
		oFrm.firstname.value=oUPData.upData.firstname;
		oFrm.lastname.value=oUPData.upData.lastname;
	}

	var o = document.getElementById('tdUsername_ID');
	if (o) o.innerHTML = oUPData.upData.username;
	
	var oFrm = document.getElementById('formCS_username_ID');
	if (oFrm) {
		oFrm.username.value=oUPData.upData.username;
	}
	
	var o = document.getElementById('tdEmail_ID');
	if (o) o.innerHTML = oUPData.upData.main_email;
	
	var oFrm = document.getElementById('formCS_contact_ID');
	if (oFrm) {
		oFrm.mobile_phone.value = oUPData.upData.mobile_phone;
		oFrm.home_phone.value = oUPData.upData.home_phone;
		oFrm.work_phone.value = oUPData.upData.work_phone;
		oFrm.main_email.value = oUPData.upData.main_email;
		oFrm.alt_email.value = oUPData.upData.alt_email;
	}	
	
	var o = document.getElementById('tdShippingInfo_ID');
	if (o) o.innerHTML = oUPData.upData.ship_address.fname+" "+oUPData.upData.ship_address.lname+" - "+oUPData.upData.ship_address.address1+" - "+oUPData.upData.ship_address.city+", "+oUPData.upData.ship_address.state+" "+oUPData.upData.ship_address.zip+" "+oUPData.upData.ship_address.country;    

	var oFrm = document.getElementById('formCS_shippinginfo_ID');
	if (oFrm) {
		if (oUPData.upData.ship_address) {
			oFrm.ship_fname.value = oUPData.upData.ship_address.fname;
			oFrm.ship_lname.value = oUPData.upData.ship_address.lname;
			oFrm.ship_addr1.value = oUPData.upData.ship_address.address1;
			oFrm.ship_addr2.value = oUPData.upData.ship_address.address2;
			oFrm.ship_city.value = oUPData.upData.ship_address.city;
			oFrm.ship_state.value = oUPData.upData.ship_address.state;
			oFrm.ship_zip.value = oUPData.upData.ship_address.zip;
			oFrm.ship_country.value = oUPData.upData.ship_address.country;
			oFrm.ship_phone.value = oUPData.upData.ship_address.phone;
			oFrm.ship_email.value = oUPData.upData.ship_address.email;
		}
	}	

	var o = document.getElementById('tdBillingInfo_ID');
	if (o) o.innerHTML = oUPData.upData.bill_address.fname+" "+oUPData.upData.bill_address.lname+" - "+oUPData.upData.bill_address.address1+" - "+oUPData.upData.bill_address.city+", "+oUPData.upData.bill_address.state+" "+oUPData.upData.bill_address.zip+" "+oUPData.upData.bill_address.country;    

	var oFrm = document.getElementById('formCS_billinginfo_ID');
	if (oFrm) {
		if (oUPData.upData.bill_address) {
			oFrm.bill_fname.value = oUPData.upData.bill_address.fname;
			oFrm.bill_lname.value = oUPData.upData.bill_address.lname;
			oFrm.bill_addr1.value = oUPData.upData.bill_address.address1;
			oFrm.bill_addr2.value = oUPData.upData.bill_address.address2;
			oFrm.bill_city.value = oUPData.upData.bill_address.city;
			oFrm.bill_state.value = oUPData.upData.bill_address.state;
			oFrm.bill_zip.value = oUPData.upData.bill_address.zip;
			oFrm.bill_country.value = oUPData.upData.bill_address.country;
			oFrm.bill_phone.value = oUPData.upData.bill_address.phone;
			oFrm.bill_email.value = oUPData.upData.bill_address.email;
		}
	}	

	var o = document.getElementById('tdPaymentInfo_ID');
	if (o) o.innerHTML = oUPData.upData.paymentinfo.name+" - "+oUPData.upData.paymentinfo.type+" "+oUPData.upData.paymentinfo.number+"&nbsp;&nbsp;&nbsp;Exp.: "+oUPData.upData.paymentinfo.exp_month+"/"+oUPData.upData.paymentinfo.exp_year;
	
	var oFrm = document.getElementById('formCS_paymentinfo_ID');
	if (oFrm) {
		if (oUPData.upData.paymentinfo) {
			oFrm.card_type.value=oUPData.upData.paymentinfo.type;
			oFrm.card_no.value=oUPData.upData.paymentinfo.number;
			oFrm.card_xyear.value=oUPData.upData.paymentinfo.exp_year;
			oFrm.card_xmonth.value=oUPData.upData.paymentinfo.exp_month;
			oFrm.card_name.value=oUPData.upData.paymentinfo.name;
			oFrm.card_cvn.value=oUPData.upData.paymentinfo.verification_number;
			//*** Billing info is save in hidden fields to be passed to Authorize.net processing
			oFrm.bill_fname.value = oUPData.upData.bill_address.fname;
			oFrm.bill_lname.value = oUPData.upData.bill_address.lname;
			oFrm.bill_addr1.value = oUPData.upData.bill_address.address1;
			oFrm.bill_addr2.value = oUPData.upData.bill_address.address2;
			oFrm.bill_city.value = oUPData.upData.bill_address.city;
			oFrm.bill_state.value = oUPData.upData.bill_address.state;
			oFrm.bill_zip.value = oUPData.upData.bill_address.zip;
			oFrm.bill_country.value = oUPData.upData.bill_address.country;
		}
	}	

	var oFrm = document.getElementById('formCS_deactivate_ID');
	if (oFrm) {
		if (oUPData.upData.paymentinfo) {
			oFrm.upref.value=oUPData.upData.upref;
			oFrm.cuid.value=oUPData.upData.cuid;
		}
	}	
}

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

	var oFrm = document.getElementById('frmLoginID');
	if (!oFrm) return;
	
	oFrm.IsLSExpired.value = "no";
	oFrm.IsCSLoggedIn.value = "yes";
	oFrm.csFullName.value = oUPData.upData.firstname + " " + oUPData.upData.lastname;
	
	mIsCSLoggedIn = true;

	var o = document.getElementById('trMenuPanelID');
	o.style.display = "block";
	
	var el = document.getElementById('tdWelcomeMsgID');
	el.innerHTML = 'Welcome '+oFrm.csFullName.value;
	
	if (oFrm.LoginScreen.value == 'index') {
		hideMask();
		hideLoginProcessingMsg();
		return;
	}
	
	var sUrl = 'get-json-updata.php';
	if (oFrm.LoginScreen.value == 'phist') sUrl = 'get-json-purchasehist.php';
	
	Ext.Ajax.request({
	   url: sUrl,
       method: 'POST',
       params :{"upref":upref},
	   success: function(response, opts) {
	   		if (responseGetUPDataDone) return;
	   		responseGetUPDataDone = true;
			oUPData = Ext.util.JSON.decode(response.responseText);
			hideMask();
			hideLoginProcessingMsg();
			if(oUPData.successMsg=="OK") {
				if (oFrm.LoginScreen.value == 'phist') {
					setUserPurchaseHistory();
				} else {
					setUserProfileData();
				}
			} else {
				showLoginMessage(oUPData.successMsg, false);
			}
	   },
	   failure: function(response, opts) {
	      //console.log('server-side failure with status code ' + response.status);
	   		if (responseGetUPDataDone) return;
	   		responseGetUPDataDone = true;
			hideMask();
			hideLoginProcessingMsg();
			showLoginMessage("Process failure. Try again!", false);
	   }
	});
	setTimeout('responseGetUPDataTimeOut();',6000);
	responseGetUPDataDone = false;

}

function responseGetUPDataTimeOut() {
	if (responseGetUPDataDone) return;
	responseGetUPDataDone = true;
	hideMask();
	hideLoginProcessingMsg();
	showLoginMessage("Process failure. Try again!", false);
}

function showLoginPanel() {
	var o = document.getElementById('loginPanelID');
	o.style.visibility = 'visible';
	o.style.display = 'block';
	Ext.get("loginPanelID").anchorTo("tblHeaderContainerID","tl",[26,32]);
}
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: 'get-json-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(oUPData.upData.upref);
				} else {
					showLoginMessage(oUPData.successMsg, false);
				}
				hideMask();
		   },
		   failure: function(response, opts) {
		   		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();showLogout();',4000); 
	} else {
		timer=setTimeout('hideLoginMessage();resetLoginForm();',6000);
	}
}
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";
	}
}

