/********************/
/**** Account JS ****/
/********************/
function loadEditAddress(addressId) {
	// Initialize the temporary Panel to display while waiting for external content to load
	var accountAjaxUrl = "/store/accountAddressBook/editAddress/" + addressId + "/market/" + $F('marketId');
	new Ajax.Updater('addressBody', accountAjaxUrl, {
		method: 'get', 
		evalScripts: 'true',
		onSuccess: function(response) {
			setTimeout('loadEditAddressOnSuccess()', 300);
		}
	});	
}

function loadEditAddressOnSuccess(){
	popup =  new YAHOO.widget.Panel("addressPanel",   
			{ width:"475px",  
				fixedcenter:true,  
				close:true,  
				draggable:false,  
				zindex:100, 
				modal:true, 
				visible:false 
			}  
		); 
		
	popup.render(document.body);
	popup.show();	
}

function removeAddress(addressId){
	if(confirm("Are you sure you want to remove this address?")){
		new Effect.Fade($("address_" + addressId), { duration: 1.0, from: 1, to: 0.6 });
		showAddressRemovalGif(addressId);
		var accountAjaxUrl = "/store/accountAddressBook/removeAddress/" + addressId + "/market/" + $F('marketId');
		new Ajax.Request(accountAjaxUrl, {
			method: 'get', 
			evalScripts: 'true',
			onSuccess: function(response) {
			  removeAddressOnSuccess(addressId);
			}
		});
	}
}

function removeAddressOnSuccess(addressId){
	$('addressLoadingGif').hide();
	new Effect.Fade($('address_' + addressId), { duration: 1.0, from: 0.6, to: 0, queue: 'front' });
	$('address_' + addressId).addClassName('hiddenAddress');
	
	var addresses = $$('.accountAddress');
	var hiddenAddresses = $$('.hiddenAddress');
	
	var len = addresses.length;
	var hiddenLen = hiddenAddresses.length;
	if(len == hiddenLen){
		new Effect.Appear($('noAddresses'), { duration: 1.0, queue: 'end' });
	}
	
}

function showAddressRemovalGif(addressId){
	var gif = $('addressLoadingGif');
	gif.style.left = parseInt($("address_" + addressId).positionedOffset().left + 150) + "px";
	gif.style.top = parseInt($("address_" + addressId).positionedOffset().top + 15) + "px";
	gif.show();
}

var addressServerValidationStr = "";

function validateAccountAddress(){
	var returnValue = false;
	
	var requiredItems = $$('.addressRequiredItem');
	var errStr = "";
	var tempRequiredObject;
	var tempName;
	var len = requiredItems.length;
	var residentialAddress = false;
	var submitForm = true;
	
	if($('gResidential') != null && $F('gResidential')){
		residentialAddress = true;
	}
	
	if(len > 0){
		for(var j=0; j<len; j++){
			tempRequiredObject = requiredItems[j];
			if(tempRequiredObject.value == null || tempRequiredObject.value.trim() == ""){
								
				//Ignore billing address if 'use shipping address' is checked
				if(residentialAddress && tempRequiredObject.id == "gCompanyName"){
					tempRequiredObject.removeClassName('invalidAddressItem');
					continue;
				}
				
				tempRequiredObject.addClassName('invalidAddressItem');
				tempName = tempRequiredObject.id + "_label";
				errStr += $(tempName).innerHTML.replace(":", "").replace("*", "") + " is required<br>";
			} else {
				tempRequiredObject.removeClassName('invalidAddressItem');
			}
		}
	}
	
	//Check if address correction available
	var errors = $$('.checkoutErrorIcon');
	var infos = $$('.checkoutInfoIcon');
	var tempErrorInfoObject;
	len = errors.length;
	if(len > 0){
		for(j=0; j<len; j++){
			tempErrorInfoObject = errors[j];
			if(tempErrorInfoObject.visible()){
				submitForm = false;
				errStr += "This is not a valid address.  Please correct in order to save to your account.";
				break;
			}
		}
	}
	
	if(errStr != ""){
		$('addressErrorMessage').innerHTML = errStr;
		$('addressErrorMessageContainer').show();
		window.document.body.scrollTop=0;
	} else {
		$('addressErrorMessage').innerHTML = "";
		$('addressErrorMessageContainer').hide();
	}
	
	if(errStr == "" && submitForm){
		addressServerValidationStr = "";
		validateAddressPostalCodeServerSide();
	} else {
		$('addressErrorMessage').innerHTML = errStr;
		$('addressErrorMessageContainer').show();
		window.document.body.scrollTop=0;
	}
}

function validateAddressPostalCodeServerSide() {
	AddressValidator.getInputFieldValidationMessageWithMethodName('validatePostalCodeFormat', 'address.postalCode', $F('gZip'), {
		callback: function(dataFromServer){
			validateAddressTelephoneServerSide('gZip', dataFromServer);
		}
	});
}

function validateAddressTelephoneServerSide(inputId, dataFromServer) {
	if(dataFromServer != ""){
		addressServerValidationStr += dataFromServer + "<br>";
		$(inputId).addClassName('invalidAddressItem');
	}
	
	AddressValidator.getInputFieldValidationMessage('address.residentPrimaryPhone', $F('gTelephone'), {
		callback: function(dataFromServer){
			validateAccountAddressAfterServer('gTelephone', dataFromServer);
		}
	});
}

function validateAccountAddressAfterServer(inputId, dataFromServer) {
	if(dataFromServer != ""){
		addressServerValidationStr += dataFromServer + "<br>";
		$(inputId).addClassName('invalidAddressItem');
	}
	
	if(addressServerValidationStr != ""){
		$('addressErrorMessage').innerHTML = addressServerValidationStr;
		$('addressErrorMessageContainer').show();
		window.document.body.scrollTop=0;
	} else {
		$('addressErrorMessageContainer').hide();
		$('addressForm').submit();
	}
}

function toggleResidentialInput(input){
	if(input.checked){
		$('gCompanyName').disabled = true;
	} else {
		$('gCompanyName').disabled = false;
	}
}

function loadOrdersTable(pageId) {
    var accountAjaxUrl = "/store/account" + pageId + "Table/market/" + $F('marketId');
    new Ajax.Updater('accountSubContainer', accountAjaxUrl, {
        method: 'get', 
        evalScripts: 'true'
    });    
}

function goToLogin(){
	var loginURL = "/store/login";
	var postLoginURL = window.location.href.split("://");
	postLoginURL = postLoginURL[1].substr(postLoginURL[1].indexOf("/"));
	
	//Remove postLoginAction if in URL so it isn't duplicated
	var postLoginLocation = postLoginURL.indexOf("/postLoginAction");
	if(postLoginLocation > 0){
		postLoginURL = postLoginURL.replace(postLoginURL.substr(postLoginLocation), "");
	}
	postLoginURL = postLoginURL.replace("#", "");
	
	//Get rid of "/store" in url
	postLoginURL = postLoginURL.substr(1); 
	postLoginURL = postLoginURL.substr(postLoginURL.indexOf("/"));
	if(postLoginURL.indexOf("market") < 0){
		postLoginURL += "/market/" + $F('marketId');
	}
	loginURL += "/postLoginAction" + postLoginURL;
	window.location = loginURL;
}

function goToRegister(){
	var registerURL = "/store/register";
	registerURL += "/postLoginAction/accountHome";
	window.location = registerURL;
}

function goToLogout(){
	var logoutURL = "/store/market/" + $F('marketId') + "/j_spring_security_logout";
	window.location = logoutURL;
}
