

// -------
function makeErrorMessage( errors, errorMessage )
{
	// check for required zip
	if (errors.match('ReqZ9')!=null || errors.match('ReqU21')!=null)
	{
		errorMessage += ", zip code";
		flagField( "txtZip" );
	}	

	// check for valid & required email  address
	if (errors.match('ReqW1')!=null || errors.match('ReqI11')!=null) 
	{
		errorMessage += ", email address";
		flagField( "txtEmailReg" );			
	}

	// check for required confirm email  address, email match
	if (errors.match('ReqE2')!=null || errors.match('ReqCE1')!=null) 
	{
		errorMessage += ", confirm email address";
		flagField( "txtConfirmEmail" );			
	}

	// check for required password and repass match
	if (errors.match('ReqZ2')!=null  || errors.match('ReqO31')!=null) 
	{
		errorMessage += ", password";
		flagField( "txtPassReg" );
	}

	if (errorMessage.charAt(0)==',') 
	{
		errorMessage=errorMessage.replace(",","");
	}			
	
	return errorMessage;
}

// -------
function processKeypresses(e) 
{	
    // key's ASCII code
    var whichASC = (e != null && typeof(e) != "undefined") ? e.which : event.keyCode;

    if (whichASC==13)
    {
        // enter key
        var widgetName = (e != null && typeof(e) != "undefined") ? e.target.name : event.srcElement.name;
        if  (widgetName == "txtEmailFPass")
	        SubmitRequestPass()
        else if ((widgetName == "txtEmailLogon")||(widgetName =="txtPassLogon"))
	        SubmitLogin();
        else
	        SubmitReg(); 
    }
}

// -------
function FlagInpuField(label,txtInput,valid)
{
    if( !valid )
    {
    	document.getElementById(label).style.fontWeight = "bold";
	    document.getElementById(label).style.color = "#FF5400";  		
    	document.getElementById(txtInput).style.backgroundColor = "#FFF1EB";  	
    }
    else
    {
    	document.getElementById(label).style.fontWeight = "normal";
	    document.getElementById(label).style.color = "#000000";  		
    	document.getElementById(txtInput).style.backgroundColor = "";  	
    }
}

// -------
function ShowLoginErr(errMsg)
{
	document.getElementById("LogErrorTable").style.display="block";
	document.getElementById("LoginErrMsg").style.backgroundColor = "#FF5400";
	document.getElementById("LoginErrMsg").style.color = "#FFFFFF";
	document.getElementById("LoginErrMsg").style.width = (errMsg.length > 30 ? "" : "140px");
	document.getElementById("LoginErrMsg").innerHTML = errMsg;
}

// -------
function SubmitLogin()
{  
   var email = GetDocElement("txtEmailLogon").value;
   var password = GetDocElement("txtPassLogon").value;
   var errMsg = "";
   
   // vaildate e-mail
   if( email.length == 0 || email.indexOf("@") == -1 )
   {
        FlagInpuField("txtEmailLogonLabel","txtEmailLogon",false);
  		errMsg = "&nbsp;Invalid email&nbsp;";
   }
   else
   {
        FlagInpuField("txtEmailLogonLabel","txtEmailLogon",true);   
   }
   
   // vaildate password
   if( password.length < 4 || password.length > 10 )
   {
        FlagInpuField("txtPassLogonLabel","txtPassLogon",false);
  		errMsg = ( errMsg.length > 0 ? errMsg + "and password&nbsp;" : "&nbsp;Invalid password&nbsp;");
   }
   else
   {
        FlagInpuField("txtPassLogonLabel","txtPassLogon",true);
   }
   
   if( errMsg.length > 0 )
   {
  		ShowLoginErr(errMsg);
   }
   else
   {
        GetDocElement(ci_controlPrefix + "RegFirstName").value = "";
        GetDocElement(ci_controlPrefix + "RegLastName").value = "";
        GetDocElement(ci_controlPrefix + "RegEmail").value = "";
        GetDocElement(ci_controlPrefix + "RegPassword").value = "";
        GetDocElement(ci_controlPrefix + "RegZip").value = "";
        GetDocElement(ci_controlPrefix + "RegDFSI").value = "";
        GetDocElement(ci_controlPrefix + "RegSpecialOffers").value = "";     
        GetDocElement(ci_controlPrefix + "LoginEmail").value = GetDocElement("txtEmailLogon").value;
        GetDocElement(ci_controlPrefix + "LoginPass").value = GetDocElement("txtPassLogon").value;
        GetDocElement(ci_controlPrefix + "RememberMe").value = (GetDocElement("ckRememberLogon").checked ? "checked" : " ");
        GetDocElement(ci_controlPrefix + "RedirectToURL").value = GetDocElement("txtRedirectToURL").value;
        GetDocElement(ci_controlPrefix + "SrcButton").value = "Login";    
        document.aspnetForm.submit();
    }  
}

// -------
function SubmitReg()
{
	ERRORS = "";
	ERROR_MESSAGE = "";

	unflagInputField( "txtPassReg" );
	unflagInputField( "txtEmailReg" );
	unflagInputField( "txtConfirmEmail" );
	unflagInputField( "txtZip" );

	validate_required(GetDocElement("txtEmailReg"), 'ReqW1');   // validate required email address	
	validate_password(GetDocElement("txtPassReg"), 'ReqZ2');    // validate chars limit	
	validate_required(GetDocElement("txtPassReg"), 'ReqZ2');    // validate required Password	
	if( GetDocElement("txtRePass") != null )	{
		validate_required(GetDocElement("txtRePass"), 'ReqG3');  // validate required re password
		validate_confirmation(GetDocElement("txtPass"), GetDocElement("txtRePass"), 'ReqO31'); // validate password and re password
	}

	validate_required(GetDocElement("txtZip"), 'ReqZ9');     // validate required zip
	validate_email(GetDocElement("txtEmailReg"), 'ReqI11');     // validate valid  email address

	if( GetDocElement("txtConfirmEmail") != null )	{
		validate_required(GetDocElement("txtConfirmEmail"), 'ReqE2');  // validate required confirm email
		validate_confirmation(GetDocElement("txtEmailReg"), GetDocElement("txtConfirmEmail"), 'ReqCE1'); // validate email and re confirm email
	}

	validate_zip(GetDocElement("txtZip"), 'ReqU21');			// validate valid  zip code
	
	ERROR_MESSAGE=makeErrorMessage( ERRORS, ERROR_MESSAGE );
    ERROR_MESSAGE="Invalid " +ERROR_MESSAGE + ". Please fill out all required information.<br>";
				
	if(!(ERRORS=="")) {
		WriteRequired('ErrDisplay', ERROR_MESSAGE);
		location.href="#Top"; //jump to the top of the page to show error message
	}
	else 
	{
        GetDocElement(ci_controlPrefix + "RegFirstName").value = GetDocElement("txtFirst").value;
        GetDocElement(ci_controlPrefix + "RegLastName").value = GetDocElement("txtLast").value;
        GetDocElement(ci_controlPrefix + "RegEmail").value = GetDocElement("txtEmailReg").value;
        GetDocElement(ci_controlPrefix + "RegPassword").value = GetDocElement("txtPassReg").value;
        GetDocElement(ci_controlPrefix + "RegZip").value = GetDocElement("txtZip").value;
        GetDocElement(ci_controlPrefix + "RegDFSI").value = (GetDocElement("ckOpt1").checked ? "checked" : " ");
        GetDocElement(ci_controlPrefix + "RegSpecialOffers").value = (GetDocElement("ckOpt2").checked ? "checked" : " ");
        GetDocElement(ci_controlPrefix + "LoginEmail").value = "";
        GetDocElement(ci_controlPrefix + "LoginPass").value = "";       
        GetDocElement(ci_controlPrefix + "RememberMe").value = (GetDocElement("ckRememberReg").checked ? "checked" : " ");
                
	    GetDocElement(ci_controlPrefix + "SrcButton").value = "Register";  
		document.aspnetForm.submit();
	}    
}
 
// -------
function SubmitRequestPass()
{
    if 	(document.getElementById("txtEmailFPass").value!=""){
        GetDocElement(ci_controlPrefix + "SrcButton").value = "ForGotPass";    
        document.aspnetForm.submit();
	}
	else {
		document.getElementById("forgot_password_error").style.display="";		
		document.getElementById("forgot_password_instrn").style.display="none";		
		document.getElementById("LogErrorTable").style.display="none";
	}
}

// -------
function requestPassword()
{
	document.getElementById("forgot_password_table").style.display="";
	document.getElementById("login_table").style.display="none";
	//document.frmLogOn.txtEmailFPass.value = document.frmLogOn.txtEmailLogon.value
	document.getElementById("LogErrorTable").style.display="none";		
}

// -------
function RepopInputField(id,defaultVal)
{
    return ( GetDocElement(id).value.length > 0 ? GetDocElement(id).value : defaultVal ); 
}

//*****************************************************************************************************
//*** BEFORE I SHOP specific
//*****************************************************************************************************

// - Login user using AJAX calls to Login.aspx
function BISSubmitLogin()
{
    var loginEmail = GetDocElement("txtEmailLogon");
    var loginPassword = GetDocElement("txtPassLogon");
    var loginRememberMe = (document.getElementById("chkRememberLogon").checked == 1 ? "on" : "off");
    var errMsg = "";
    
    // validate fields
	if (validate_email(loginEmail, "Email") == "Email") {
	    errMsg = "&nbsp;Invalid email&nbsp;";
	}
	if (validate_password(loginPassword, "Password") == "Password") {
	    errMsg = ( errMsg.length > 0 ? errMsg + "and password&nbsp;" : "&nbsp;Invalid password&nbsp;");
	}
	
	// do something
   	if (errMsg.length>0 ){
   	    BISDisplayError("Invalid email or password - please try again.","show","login-error");
   	}
	else {
	    BISLoginUser(loginEmail.value,loginPassword.value,"Offers.aspx",loginRememberMe);
        //alert("BISLoginUser("+loginEmail.value+","+loginPassword.value+",Offers.aspx,"+loginRememberMe+");");
	}
}

// 
function BISDisplayError(errorMessage, dispDo, divID) {
    elError = document.getElementById(divID);
    elError.innerHTML = errorMessage;
    if (dispDo == "show") {
        $("#"+divID).show();
    } else {
        $("#"+divID).hide();
    }
}

function BISLoginUser(logon,password,redirecturl,rememberme)
{
    xmlHttp=BISGetXmlHttpObject();
    if (xmlHttp==null)
      {
          alert ("Your browser does not support AJAX!");
          return;
      } 
    var url="Login.aspx?pid="+GetQueryStringValue("pid")+"&nid="+GetQueryStringValue("nid")+"&zid="+GetQueryStringValue("zid");
    var queryString = "&q=loginuser&logon="+logon+"&password="+password+"&redirecturl="+redirecturl+"&rem="+rememberme;
    
    xmlHttp.onreadystatechange=BISDispAjaxResult;
    xmlHttp.open("POST", url, true);
    xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
    xmlHttp.send(queryString);
}

function BISLogoutUser()
{
    xmlHttp=BISGetXmlHttpObject();
    if (xmlHttp==null)
      {
          alert ("Your browser does not support AJAX!");
          return;
      } 
    var url="Login.aspx?pid="+GetQueryStringValue("pid")+"&nid="+GetQueryStringValue("nid")+"&zid="+GetQueryStringValue("zid");
    var queryString = "&q=logoutuser&logon=na&password=na&redirecturl=na&rem=na";
    
    xmlHttp.onreadystatechange=BISDispAjaxResult;
    xmlHttp.open("POST", url, true);
    xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
    xmlHttp.send(queryString);
}

function BISValidateAccountCode(smsCode)
{
    xmlHttp=BISGetXmlHttpObject();
    if (xmlHttp==null)
      {
          alert ("Your browser does not support AJAX!");
          return;
      } 
    var url="RegisterSMS.aspx?pid="+GetQueryStringValue("pid")+"&nid="+GetQueryStringValue("nid")+"&zid="+GetQueryStringValue("zid");
    var queryString = "&q=validatesmscode&smscode="+smsCode;
    
    xmlHttp.onreadystatechange=BISDispAccountCode;
    xmlHttp.open("POST", url, true);
    xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
    xmlHttp.send(queryString);
}

function BISDispAccountCode() 
{ 
    if ((xmlHttp.readyState==4) && (xmlHttp.status==200))
    { 
        var errorMessage = "";
        var rt = xmlHttp.responseText;
        if (rt.indexOf("Error=") != -1) {
            errorMessage = rt.substring(rt.indexOf("Error=")+6);
            rt = rt.slice(6,rt.length);
            BISDisplayError(rt,"show","smscode-error");
            //alert("AJAX MSG: " + errorMessage);
        } else {
            // go to home
            //location.href = "HomePage.aspx?pid="+GetQueryStringValue("pid")+"&nid="+GetQueryStringValue("nid")+"&zid="+GetQueryStringValue("zid");
            
            // show validated window
            $("#window-smsvalidate").hide();
            $("#window-smsvalidatedty").show();
            
            // change "more about yourself" link url
            $("#linkMoreAboutYourself").attr("href", "HomePage.aspx?pid="+GetQueryStringValue("pid")+"&nid="+GetQueryStringValue("nid")+"&zid="+GetQueryStringValue("zid"));
            
            // change "provide later" link url
            $("#linkProvideLater").attr("href", "HomePage.aspx?pid="+GetQueryStringValue("pid")+"&nid="+GetQueryStringValue("nid")+"&zid="+GetQueryStringValue("zid"));
        }
    }
}

function BISReValidateAccountCode(mobileNo,smsCode)
{
    xmlHttp=BISGetXmlHttpObject();
    if (xmlHttp==null)
      {
          alert ("Your browser does not support AJAX!");
          return;
      } 
    var url="RegisterSMS.aspx?pid="+GetQueryStringValue("pid")+"&nid="+GetQueryStringValue("nid")+"&zid="+GetQueryStringValue("zid");
    var queryString = "&q=revalidatesmscode&mobileno="+mobileNo+"&smscode="+smsCode;
    
    xmlHttp.onreadystatechange=BISReDispAccountCode;
    xmlHttp.open("POST", url, true);
    xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
    xmlHttp.send(queryString);
}

function BISReDispAccountCode() 
{ 
    if ((xmlHttp.readyState==4) && (xmlHttp.status==200))
    { 
        var errorMessage = "";
        var rt = xmlHttp.responseText;
        if (rt.indexOf("Error=") != -1) {
            errorMessage = rt.substring(rt.indexOf("Error=")+6);
            rt = rt.slice(6,rt.length);
            BISDisplayError(rt,"show","smscode-error");
            //alert("AJAX MSG: " + errorMessage);
        } else {
            // go to home
            //location.href = "HomePage.aspx?pid="+GetQueryStringValue("pid")+"&nid="+GetQueryStringValue("nid")+"&zid="+GetQueryStringValue("zid");
            
            // show validated window
            $("#window-smsvalidate-nophone-start").hide();
            $("#window-smsvalidatedty-nophone-ok").show();
            
            // change "more about yourself" link url
            $("#linkReMoreAboutYourself").attr("href", "HomePage.aspx?pid="+GetQueryStringValue("pid")+"&nid="+GetQueryStringValue("nid")+"&zid="+GetQueryStringValue("zid"));
            
            // change "provide later" link url
            $("#linkReProvideLater").attr("href", "HomePage.aspx?pid="+GetQueryStringValue("pid")+"&nid="+GetQueryStringValue("nid")+"&zid="+GetQueryStringValue("zid"));
        }
    }
}

function BISDispAjaxResult() 
{ 
    if ((xmlHttp.readyState==4) && (xmlHttp.status==200))
    { 
        var errorMessage = "";
        var rt = xmlHttp.responseText;
        if (rt.indexOf("Error=") != -1) {
            errorMessage = rt.substring(rt.indexOf("Error=")+6);
            rt = rt.slice(6,rt.length);
            BISDisplayError(rt + " - please try again.","show","login-error");
            //alert("AJAX MSG: " + errorMessage);
        } else {
            // refresh page
            location.reload(true);
            //alert("RETURNED: " + rt);
        }
    }
}

function BISGetXmlHttpObject()
{
    var xmlHttp=null;
    try
      {
      // Firefox, Opera 8.0+, Safari
      xmlHttp=new XMLHttpRequest();
      }
    catch (e)
      {
      // Internet Explorer 6.0+
      try
        {
            xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
        }
      catch (e)
        {
            // Internet Explorer 5.5+
            xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
        }
    }
    return xmlHttp;
}

// --------------------------------------------------------
function ChangeMyAccountContent()
{
	if( ci_regObj.isLoggedIn > 0 )
	{
		window.location = "Register.aspx" + "?pid="+GetQueryStringValue ('pid')+"&nid="+GetQueryStringValue('nid')+"&zid="+GetQueryStringValue('zid');	 
	}
	else
	{
		window.location = "RegisterSMS.aspx" + "?pid="+GetQueryStringValue ('pid')+"&nid="+GetQueryStringValue('nid')+"&zid="+GetQueryStringValue('zid');
	}
}

NS4 = (document.layers) ? true : false;

function BISCheckEnterLogin(event)
{     
    var code = 0;
    
    if (NS4)
        code = event.which;
    else
        code = event.keyCode;
    if (code==13)
        BISSubmitLogin();
}

// forgot password div html
function BISForgotPasswordPopupHTML() {
	var htmlForgotPassword = "\n\
	<!-- forgot password? -->\n\
	<div id=\"idForgottenPassword\" style=\"display:none;\">\n\
		<div id=\"dwindow\" style=\"width:500px;\">\n\
			<h1><a href=\"#\" title=\"Close this layer\" onclick=\"$('#idForgottenPassword').closeDOMWindow();\">X</a>Forgotten Password</h1>\n\
			<div class=\"framebdy\">\n\
			<p>Have you forgotten your password?</p>\n\
			<p>Please enter your registered email address and we will send you a reminder.</p>\n\
			<div id=\"divForgottenPasswordResult\" class=\"error-validn\"></div>\n\
			<p><input type=\"text\" id=\"txtEmailFPass\" name=\"txtEmailFPass\" value=\"Enter email addresss...\" onfocus=\"this.value=''\" /></p>\n\
			<p><a href=\"#\" class=\"btnyellow\" title=\"Send Reminder\" onclick=\"BISSendEmailReminder(document.getElementById('txtEmailFPass').value);\"><span>Send Reminder</span></a></p>\n\
			<p class=\"clear-both\"></p>\n\
			</div>\n\
		</div>\n\
	</div>\n\
	";
	document.write(htmlForgotPassword);
}

// send password reminder
function BISSendEmailReminder(email)
{
    xmlHttp=BISGetXmlHttpObject();
    if (xmlHttp==null)
      {
          alert ("Your browser does not support AJAX!");
          return;
      } 
    var url = "Login.aspx?pid="+GetQueryStringValue("pid")+"&nid="+GetQueryStringValue("nid")+"&zid="+GetQueryStringValue("zid");
	var queryString = "q=forgotpassword&emailaddr="+email;
    xmlHttp.onreadystatechange=BISSendEmailReminderResult;
    xmlHttp.open("POST", url, true);
    xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
    xmlHttp.send(queryString);
}

function BISSendEmailReminderResult() 
{ 
    if (xmlHttp.readyState==4 &&  xmlHttp.status==200)
    { 
        var errorMessage = "";
        var rt = xmlHttp.responseText;
        if (rt.indexOf("Error=") != -1)
            errorMessage = rt.substring(rt.indexOf("Error=")+6);
        
        $("#divForgottenPasswordResult").html(errorMessage);
    }
}

// cancel account div html
function BISCancelAccountPopupHTML() {
	var htmlAccountCancel = "\n\
	<!-- cancel account -->\n\
	<div id=\"idCancelAccount\" style=\"display:none;\">\n\
		<div id=\"dwindow\">\n\
			<h1><a href=\"#\" title=\"Close this layer\" onclick=\"$('#idCancelAccount').closeDOMWindow();\">X</a>Cancel My Account</h1>\n\
			<div class=\"framebdy\">\n\
			<p>Are you sure you wish to cancel your account? If you do this we will remove all your details and you will no longer have access to all areas of beforeIshop.<br />\n\
			<a href=\"#\" title=\"Close Without Cancelling\" onclick=\"$('#idCancelAccount').closeDOMWindow();\">Close Without Cancelling</a></p>\n\
			<p>To cancel your account you must enter the email address and mobile phone number you used to register.</p>\n\
			<p><input type=\"text\" id=\"txtEmailAddress\" name=\"txtEmailAddress\"  value=\"Enter email addresss...\" onfocus=\"this.value=''\" /></p>\n\
			<p><input type=\"text\" id=\"txtMobileNumber\" name=\"txtMobileNumber\"  value=\"Enter mobile number...\" onfocus=\"this.value=''\" /></p>\n\
			<p><a href=\"#\" class=\"btnyellow\" title=\"Cancel My Account\" onclick=\"BISCancelAccount(document.getElementById('txtEmailAddress').value,document.getElementById('txtMobileNumber').value);\"><span>Cancel My Account</span></a></p>\n\
			<div id=\"divAccountCancelResult\" style=\"color:red;\"></div>\n\
			</div>\n\
		</div>\n\
	</div>\n\
	";
	document.write(htmlAccountCancel);
}

// send cancel account notice
function BISCancelAccount(email,mobileNo)
{
	if (isValidEmailAddress(email)==false || isValidUKMobileNo(mobileNo)==false) {
		$("#divAccountCancelResult").html("Make sure you enter valid email address and mobile number.");
	}
	else
	{
		xmlHttp=BISGetXmlHttpObject();
		if (xmlHttp==null)
		  {
			  alert ("Your browser does not support AJAX!");
			  return;
		  } 
		var url = "Login.aspx?pid="+GetQueryStringValue("pid")+"&nid="+GetQueryStringValue("nid")+"&zid="+GetQueryStringValue("zid");
		var queryString = "q=cancelaccount&emailaddr="+email+"&mobileno="+mobileNo;
		xmlHttp.onreadystatechange=BISCancelAccountResult;
		xmlHttp.open("POST", url, true);
		xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
		xmlHttp.send(queryString);
	}
}

function BISCancelAccountResult() 
{ 
    if (xmlHttp.readyState==4 &&  xmlHttp.status==200)
    { 
        var errorMessage = "";
        var rt = xmlHttp.responseText;
        if (rt.indexOf("Error=") != -1)
            errorMessage = rt.substring(rt.indexOf("Error=")+6);
        
        $("#divAccountCancelResult").html(errorMessage);
    }
}