function toggleDisplay(divId) {
	var div = document.getElementById(divId);
	div.style.display = (div.style.display=="block" ? "none" : "block");
} 

function ForgotPassword()
{
	if(parent.window.location.href.toLowerCase() != window.location.href.toLowerCase())
	{
		window.location.href = "/Popup/ForgotPassword.aspx";
	}
	else
	{	
		//open pop up
		OpenWindow("/Popup/ForgotPassword.aspx", 400, 250, "Forgot Password");
	}
}


function RemoveAddress(addressID)
{
	var xml = "<AJAX><ACCOUNT><ACTION>REMOVEADDRESS</ACTION>";
	xml+= "<ADDRESSID>" + addressID + "</ADDRESSID>";
	xml+= "</ACCOUNT></AJAX>";
	
	PostXML(xml, "/handlers/AjaxAccountHandler.ashx", function(xmlResponse){
		var error = $xml(xmlResponse, "ERROR");
		var MessageList = new Array(0);
		
		if(error == "")
		{
			var deletedDiv = $$("div[aid=" + addressID + "]")[0];
			
			new Effect.Opacity(deletedDiv, { duration: 1.0, from: 1.0, to: 0.0, afterFinish: function(){deletedDiv.remove();}  });
		}
		else
		{
			MessageList.push(new ValidationResult(false, error, ""));
			DisplayValidation(MessageList);
		}
	});
}

function AddAddress()
{
	var MessageList = new Array(0);

	//validate form
	IsValidReqTextBox(MessageList, FirstName, $$(".txtFirstName")[0]);
	IsValidReqTextBox(MessageList, LastName, $$(".txtLastName")[0]);
	IsValidReqTextBox(MessageList, NoAddress, $$(".txtAddress1")[0]);
	IsValidReqTextBox(MessageList, NoCity, $$(".txtCity")[0]);
	IsValidReqDDL(MessageList, NoState, $$(".ddlStates")[0]);
	IsValidZipCode(MessageList, $$(".txtZip")[0], NoValidZip, true);
	IsValidPhone(MessageList,$$(".txtDayPhone1")[0],$$(".txtDayPhone2")[0],$$(".txtDayPhone3")[0],InvalidPhone,true);
	IsValidPhone(MessageList,$$(".txtEvePhone1")[0],$$(".txtEvePhone2")[0],$$(".txtEvePhone3")[0],InvalidPhone,false);
	
	if(MessageList.find(function(v){return !v.valid;}))
	{
		DisplayValidation(MessageList, null, true, 'form');
		return;
	}
	
	//now time for AJAX validation of the home address
	var addressVal = new AddressValidation({firstname: $$(".txtFirstName")[0], lastname: $$(".txtLastName")[0],address1: $$(".txtAddress1")[0], address2: $$(".txtAddress2")[0], city: $$(".txtCity")[0],state: $$(".ddlStates")[0],zip: $$(".txtZip")[0], company: $$(".txtCompany")[0], dayarea: $$(".txtDayPhone1")[0], dayexchange: $$(".txtDayPhone2")[0], dayline: $$(".txtDayPhone3")[0], evearea: $$(".txtEvePhone1")[0], eveexchange: $$(".txtEvePhone2")[0], eveline: $$(".txtEvePhone3")[0], onReadyDelegate: addressAddValDelegate});

}

function addressAddValDelegate(event)
{
	var addressVal = event.memo.AddressValObj;
	
	if(addressVal.Valid)
	{
		var validEmail = true;
		
		//create address
		var xml = "<AJAX><ACCOUNT><ACTION>ADDADDRESS</ACTION>";
		xml += "<CMACCOUNTNUMBER>" + addressVal.GetAvs.CMAccountNumber + "</CMACCOUNTNUMBER>";
		xml += "<CMROOTNUMBER>" + addressVal.GetAvs.CMRootNumber + "</CMROOTNUMBER>";
		xml += "<CMMEMBERNUMBER>" + addressVal.GetAvs.CMMemberNumber + "</CMMEMBERNUMBER>";
		xml += "<CMADDRESSNUMBER>" + addressVal.GetAvs.CMAddressNumber + "</CMADDRESSNUMBER>";
		xml+= "<NICKNAME>" + $F($$(".txtNickname")[0]).escapeHTML() + "</NICKNAME>";
		xml+= "<FIRST>" + $F($$(".txtFirstName")[0]).escapeHTML() + "</FIRST>";
		xml+= "<LAST>" + $F($$(".txtLastName")[0]).escapeHTML() + "</LAST>";
		xml+= "<COMPANY>" + $F($$(".txtCompany")[0]).escapeHTML() + "</COMPANY>";
		xml+= "<ADDRESS1>" + addressVal.GetAvs.Address1 + "</ADDRESS1>";
		xml+= "<ADDRESS2>" + addressVal.GetAvs.Address2 + "</ADDRESS2>";
		xml+= "<CITY>" + addressVal.GetAvs.City + "</CITY>";
		xml+= "<STATE>" + addressVal.GetAvs.State + "</STATE>";
		xml+= "<ZIP>" + addressVal.GetAvs.Zip + "</ZIP>";
		xml+= "<DAYPHONE>" + $F($$(".txtDayPhone1")[0]) + $F($$(".txtDayPhone2")[0]) + "" + $F($$(".txtDayPhone3")[0]) + "</DAYPHONE>";
		xml+= "<NIGHTPHONE>" + $F($$(".txtEvePhone1")[0]) + $F($$(".txtEvePhone2")[0]) + "" + $F($$(".txtEvePhone3")[0]) + "</NIGHTPHONE>";
		xml+= window.location.href.toQueryParams().aid != null ? "<ADDRESSID>" + window.location.href.toQueryParams().aid + "</ADDRESSID>"  : "" ;
		xml+="</ACCOUNT></AJAX>";
		
		PostXML(xml, "/handlers/AjaxAccountHandler.ashx", function(xmlResponse){
			var error = $xml(xmlResponse, "ERROR");
			var MessageList = new Array(0);
			
			if(error == "")
			{
				window.location = "/Account/Addresses.aspx";
			}
			else
			{
				MessageList.push(new ValidationResult(false, error, ""));
			}
			
			DisplayValidation(MessageList, null, false, 'form');
		});
	}
}

function EditAccount()
{
	var MessageList = new Array(0);

	//validate form
	IsValidReqTextBox(MessageList, FirstName, $$(".txtFirstName")[0]);
	IsValidReqTextBox(MessageList, LastName, $$(".txtLastName")[0]);
	IsValidReqTextBox(MessageList, NoAddress, $$(".txtAddress1")[0]);
	IsValidReqTextBox(MessageList, NoCity, $$(".txtCity")[0]);
	IsValidReqDDL(MessageList, NoState, $$(".ddlStates")[0]);
	IsValidZipCode(MessageList, $$(".txtZip")[0], NoValidZip, true);
	IsValidPhone(MessageList,$$(".txtDayPhone1")[0],$$(".txtDayPhone2")[0],$$(".txtDayPhone3")[0],InvalidPhone + ' - Daytime Phone',true);
	IsValidPhone(MessageList,$$(".txtEvePhone1")[0],$$(".txtEvePhone2")[0],$$(".txtEvePhone3")[0],InvalidPhone + ' - Evening Phone',false);
	
	if(MessageList.find(function(v){return !v.valid;}))
	{
		DisplayValidation(MessageList, null, true, 'form');
		return;
	}
	
	//now time for AJAX validation of the home address
	var addressVal = new AddressValidation({firstname: $$(".txtFirstName")[0], lastname: $$(".txtLastName")[0],address1: $$(".txtAddress1")[0], address2: $$(".txtAddress2")[0], city: $$(".txtCity")[0],state: $$(".ddlStates")[0],zip: $$(".txtZip")[0], company: $$(".txtCompany")[0], dayarea: $$(".txtDayPhone1")[0], dayexchange: $$(".txtDayPhone2")[0], dayline: $$(".txtDayPhone3")[0], evearea: $$(".txtEvePhone1")[0], eveexchange: $$(".txtEvePhone2")[0], eveline: $$(".txtEvePhone3")[0], onReadyDelegate: accountUpdateValDelegate});
}

function accountUpdateValDelegate(event)
{
	var addressVal = event.memo.AddressValObj;
	
	if(addressVal.Valid)
	{
		var validEmail = true;
		
		//create account
		var xml = "<AJAX><ACCOUNT><ACTION>UPDATEACCOUNT</ACTION>";
		xml += "<CMACCOUNTNUMBER>" + addressVal.GetAvs.CMAccountNumber + "</CMACCOUNTNUMBER>";
		xml += "<CMROOTNUMBER>" + addressVal.GetAvs.CMRootNumber + "</CMROOTNUMBER>";
		xml += "<CMMEMBERNUMBER>" + addressVal.GetAvs.CMMemberNumber + "</CMMEMBERNUMBER>";
		xml += "<CMADDRESSNUMBER>" + addressVal.GetAvs.CMAddressNumber + "</CMADDRESSNUMBER>";
		xml+= "<FIRST>" + $F($$(".txtFirstName")[0]).escapeHTML() + "</FIRST>";
		xml+= "<LAST>" + $F($$(".txtLastName")[0]).escapeHTML() + "</LAST>";
		xml+= "<COMPANY>" + $F($$(".txtCompany")[0]).escapeHTML() + "</COMPANY>";
		xml+= "<ADDRESS1>" + addressVal.GetAvs.Address1 + "</ADDRESS1>";
		xml+= "<ADDRESS2>" + addressVal.GetAvs.Address2 + "</ADDRESS2>";
		xml+= "<CITY>" + addressVal.GetAvs.City + "</CITY>";
		xml+= "<STATE>" + addressVal.GetAvs.State + "</STATE>";
		xml+= "<ZIP>" + addressVal.GetAvs.Zip + "</ZIP>";
		xml+= "<DAYPHONE>" + $F($$(".txtDayPhone1")[0]) + $F($$(".txtDayPhone2")[0]) + "" + $F($$(".txtDayPhone3")[0]) + "</DAYPHONE>";
		xml+= "<NIGHTPHONE>" + $F($$(".txtEvePhone1")[0]) + $F($$(".txtEvePhone2")[0]) + "" + $F($$(".txtEvePhone3")[0]) + "</NIGHTPHONE>";
		xml+="</ACCOUNT></AJAX>";
		
		PostXML(xml, "/handlers/AjaxAccountHandler.ashx", function(xmlResponse){
			var error = $xml(xmlResponse, "ERROR");
			var MessageList = new Array(0);
			
			if(error == "")
			{
				//prefill values
				var ddlStates = $$(".ddlStates")[0];
				for(var i =0;i < ddlStates.options.length;i++)
				{
					if(ddlStates.options[i].value.toLowerCase() == addressVal.GetAvs.State.toLowerCase())
					{
						ddlStates.selectedIndex = i;
						break;
					}
				}
				$$(".txtCity")[0].value = addressVal.GetAvs.City;
				$$(".txtZip")[0].value = addressVal.GetAvs.Zip;
				$$(".txtAddress1")[0].value = addressVal.GetAvs.Address1;
				
				if(!window.location.href.toQueryParams().gc)
				{
					MessageList.push(new ValidationResult(true, "Account updated successfully", ""));
				}
				else
				{
					MessageList.push(new ValidationResult(true, "Your account has been updated. Please <a href='/Account/registerGiftCard.aspx'>register your gift card</a> now.", ""));
				}
				$$("body")[0].scrollTo();
			}
			else
			{
				MessageList.push(new ValidationResult(false, error, ""));
			}
			
			DisplayValidation(MessageList, null, false, 'form');
		});
	}

}


function CreateAccount()
{
	var MessageList = new Array(0);

	//validate form
	IsValidReqTextBox(MessageList, FirstName, "first-name");
	IsValidReqTextBox(MessageList, LastName, "last-name");
	IsValidReqTextBox(MessageList, NoAddress, "address-one");
	IsValidReqTextBox(MessageList, NoCity, "city");
	IsValidReqDDL(MessageList, NoState, $$(".ddlStates")[0]);
	IsValidZipCode(MessageList, $("zip"), NoValidZip, true);
	IsValidEmailAddress(MessageList, "email", InvalidEmailAddress, true);
	IsValidPhone(MessageList,"day-phone1","day-phone2","day-phone3",InvalidPhone,true);
	IsValidPhone(MessageList,"eve-phone1","eve-phone2","eve-phone3",InvalidPhone,false);
	IsPasswordValid($("password"),$("confirm-password"),MessageList);
	
	if(MessageList.find(function(v){return !v.valid;}))
	{
		DisplayValidation(MessageList, null, true, 'form');
		return;
	}
	
	//now time for AJAX validation of the home address
	var addressVal = new AddressValidation({firstname: $("first-name"), lastname: $("last-name"),address1: $("address-one"), address2: $("address-two"), city: $("city"),state: $$(".ddlStates")[0],zip: $("zip"), company: "company-name",	dayarea: "day-phone1", dayexchange: "day-phone2", dayline: "day-phone3", evearea: "eve-phone1", eveexchange: "eve-phone2", eveline: "eve-phone3", onReadyDelegate: accountCreateValDelegate});
}
	
function accountCreateValDelegate(event){
	
	var addressVal = event.memo.AddressValObj;
	
	if(addressVal.Valid)
	{
		var validEmail = true;
		
		//create account
		var xml = "<AJAX><ACCOUNT><ACTION>CREATEACCOUNT</ACTION>";
		xml += "<CMACCOUNTNUMBER>" + addressVal.GetAvs.CMAccountNumber + "</CMACCOUNTNUMBER>";
		xml += "<CMROOTNUMBER>" + addressVal.GetAvs.CMRootNumber + "</CMROOTNUMBER>";
		xml += "<CMMEMBERNUMBER>" + addressVal.GetAvs.CMMemberNumber + "</CMMEMBERNUMBER>";
		xml += "<CMADDRESSNUMBER>" + addressVal.GetAvs.CMAddressNumber + "</CMADDRESSNUMBER>";
		xml+= "<EMAIL>"+ $F("email") + "</EMAIL>";
		xml+= "<FIRST>" + $F("first-name").escapeHTML() + "</FIRST>";
		xml+= "<LAST>" + $F("last-name").escapeHTML() + "</LAST>";
		xml+= "<COMPANY>" + $F("company-name").escapeHTML() + "</COMPANY>";
		xml+= "<ADDRESS1>" + addressVal.GetAvs.Address1 + "</ADDRESS1>";
		xml+= "<ADDRESS2>" + addressVal.GetAvs.Address2 + "</ADDRESS2>";
		xml+= "<CITY>" + addressVal.GetAvs.City + "</CITY>";
		xml+= "<STATE>" + addressVal.GetAvs.State + "</STATE>";
		xml+= "<ZIP>" + addressVal.GetAvs.Zip + "</ZIP>";
		xml+= "<DAYPHONE>" + $F("day-phone1") + $F("day-phone2") + $F("day-phone3") + "</DAYPHONE>";
		xml+= "<NIGHTPHONE>" + $F("eve-phone1") + $F("eve-phone2") + $F("eve-phone3") + "</NIGHTPHONE>";
		xml+= "<PASSWORD>" + $F("password") + "</PASSWORD>";
		xml+= "<OPTIN>" + $("notify").checked + "</OPTIN>";
		xml+="</ACCOUNT></AJAX>";
		
		PostXML(xml, "/handlers/AjaxAccountHandler.ashx", function(xmlResponse){
			var error = $xml(xmlResponse, "ERROR");
			
			if(error == "")
			{
				parent.parent.document.fire("Account:LoggedIn",{GrID: $xml(xmlResponse, "GRID"), First: $xml(xmlResponse, "FIRST")});
				window.location = "/Account/";
			}
			else
			{
				var MessageList = new Array(0);
				MessageList.push(new ValidationResult(false, error, $("email")));
				DisplayValidation(MessageList, null, true, 'form');
			}
		
		});
	}
}

function CreateQuickAccount()
{
	var MessageList = new Array(0);

	//validate form
	IsValidReqTextBox(MessageList, FirstName, "txtFirstName");
	IsValidReqTextBox(MessageList, LastName, "txtLastName");
	IsValidZipCode(MessageList, $("txtZip"), NoValidZip, true);
	IsValidEmailAddress(MessageList, "txtEmail", InvalidEmailAddress, true);
	IsPasswordValid($("txtPassword"),$("txtPasswordConfirm"),MessageList);

	if(MessageList.find(function(v){return !v.valid;}))
	{
		DisplayValidation(MessageList, "StatusMessage2");
		return;
	}
	
		var addressVal = new AddressValidation({type: "UPS",ValidateZipOnly: true, zip: "txtZip", container: "StatusMessage2", onReadyDelegate: function(){
			if(addressVal.Valid)
			{
				//create account
				var xml = "<AJAX><ACCOUNT><ACTION>CREATEQUICKACCOUNT</ACTION>";
				xml+= "<EMAIL>"+ $F("txtEmail") + "</EMAIL>";
				xml+= "<FIRST>" + $F("txtFirstName").escapeHTML() + "</FIRST>";
				xml+= "<LAST>" + $F("txtLastName").escapeHTML() + "</LAST>";
				xml+= "<ZIP>" + $F("txtZip") + "</ZIP>";
				xml+= "<PASSWORD>" + $F("txtPassword").escapeHTML() + "</PASSWORD>";
				xml+= "<OPTIN>" + $("notify").checked + "</OPTIN>";
				xml+="</ACCOUNT></AJAX>";
				
				PostXML(xml, "/handlers/AjaxAccountHandler.ashx", function(xmlResponse){
					var error = $xml(xmlResponse, "ERROR");
					
					if(error == "")
					{
						parent.parent.document.fire("Login:AddItem",{GrID: $xml(xmlResponse, "GRID"), First: $xml(xmlResponse, "FIRST")});
						parent.parent.CloseAllWindows();
					}
					else
					{
						var MessageList = new Array(0);
						MessageList.push(new ValidationResult(false, error, $("txtEmail")));
						DisplayValidation(MessageList, "StatusMessage2", true, 'form');
					}
				
				});
			}
		}});
	
}

function EmailPasswordCrossroad()
{
	if($F("newEmail").strip() != '')
	{
		ChangeEmail();
	}
	else
	{
		ChangePassword();
	}
}

function ChangePassword()
{
    var pwd1 = $("newPass");
    var pwd2 = $("verifyPass");
    var MessageList = IsPasswordValid(pwd1, pwd2)
    
    //check if any client side errors
	if(MessageList.find(function(v){return !v.valid;}))
	{
		DisplayValidation(MessageList);
		return false;
	}
    
    UpdatePassword(pwd1.value.strip());
}

function ChangeEmail()
{
	var MessageList = [];
	IsValidEmailAddress(MessageList, "newEmail", InvalidEmailAddress, true);
	IsValidEmailAddress(MessageList, "confirmEmail", InvalidEmailAddress, true);
	IsPasswordValid($("newEmailPass"),$("newEmailConfirmPass"),MessageList);

	//verify emails match
	if($F('newEmail') != $F('confirmEmail'))
	{
		MessageList.push(new ValidationResult(false, "New email needs to match confirm email.", "newEmail"));
	}

	//check if any client side errors
	if(MessageList.find(function(v){return !v.valid;}))
	{
		DisplayValidation(MessageList);
		return false;
	}

	var xml = "<AJAX><ACTION>UPDATEEMAIL</ACTION>" +
	"<EMAIL>" + $F("newEmail").escapeHTML() + "</EMAIL>" +
	"<PASSWORD>" + $F("newEmailPass") + "</PASSWORD>" + 
	"<OPTIN>" + $('chkOptIn').checked + "</OPTIN>" +
	"</AJAX>";
	
	PostXML(xml, "/handlers/AjaxAccountHandler.ashx", function(response)
	{
		if($xml(response, "ERROR") == '')
		{ 
			$$(".currentEmail")[0].update($xml(response, "EMAIL"));
			
			MessageList.push(new ValidationResult(true, "Email updated successfully", ""));
			
		}
		else
		{
			MessageList.push(new ValidationResult(false, $xml(response, "ERROR"), ""));
		}
		
		DisplayValidation(MessageList);
	});
}

//---------------------------------------------------------------
function Init_LoginToAccount(){
//Once called AccountLogin

    //alert("AccountLogin");
    var message;
    var StatusMessage = $('StatusMessage');
    var AccountName = $$('.txtUser')[0];
    var AccountPassword = $('login-password');
    var AccountRemember= $$('.chkRemember')[0];


    var MessageList = IsValidLogin(AccountName, AccountPassword);
    var HasClientErrors = false;
    
    //check if any client side errors
    for(var iii = 0;     iii < MessageList.length; iii++) {
        if (!MessageList[iii].valid){
            HasClientErrors = true;
        }
    }
    
    //make server call (if appropriate)
    if (!HasClientErrors){
        PostXML_LoginToAccount(AccountName.value.strip().escapeHTML(), AccountPassword.value.strip().escapeHTML(), AccountRemember.checked)
    } else {
        DisplayValidation(MessageList);
    }  
}

//---------------------------------------------------------------
function AccountForgotPassword(){
    
    var AccountName = $$(".txtEmail")[0];
    
    var MessageList = new Array(0);
    var HasClientErrors = false;
    
    
    IsValidEmailAddress(MessageList, AccountName, InvalidEmailAddress, true);
   
    //check if any client side errors
    for(var iii = 0;     iii < MessageList.length; iii++) {
        if (!MessageList[iii].valid){
            HasClientErrors = true;
        }
    }
    
    //make server call (if appropriate)
    if (!HasClientErrors){
        PostXML_AccountForgotPassword(AccountName.value.strip())
    } else {
        DisplayValidation(MessageList);
    }  
}
//---------------------------------------------------------------
function RedirectToGr(grId)
{
	PostXML_SetGrIDCookie(grId);
}