// JavaScript Document
function postcodeFinder() {
	var $ = document.id;
	if (!$('findUKAddress')) {return};
	$('findUKAddress').addEvent('click', function(e) {
	
		e = new Event(e).stop();
		
		var arRequired = $$('#container .miniRequired');
		
		for (var i=0; i<arRequired.length; i++) {
			var objInput = arRequired[i];
			var objParent = objInput.getParent('div');
			if (objInput.getProperty('value') == '' || /^[\+|\s]+$/.test(objInput.getProperty('value'))) {
				objParent.addClass('error');
				showErrorText(objInput.id, true);
				var state = 'error';
			} else {
				showErrorText(objInput.id, false);
				objParent.removeClass('error');
			}
		}
		
		var postcodeClass = 'ukpostcode';
		var housenumClass = 'ukhousenumber';
		var titleClass = 'title';
		var firstnameClass = 'firstname';
		var lastnameClass = 'lastname';
		var countryClass = 'country';
		var lineItemID = 'lineitem';
		var postcodeData = $$('input.' +postcodeClass)[0].getProperty('value');
		var housenumData = $$('input.' +housenumClass)[0].getProperty('value');
		if ($$('select.' +titleClass)[0]) {
  	   	 	var titleData = $$('select.' +titleClass)[0].getProperty('value');
  	   	} else {
  	   		var titleData = '';
  	   	}
		var firstnameData = $$('input.' +firstnameClass)[0].getProperty('value');
		var lastnameData = $$('input.' +lastnameClass)[0].getProperty('value');
  		var countryData = $$('select.' +countryClass)[0].getProperty('value');
  		var lineItemData = $$('input.' +lineItemID)[0].getProperty('value');

		//ECM-7428 Added encoding for address data
		if (state != 'error') {
			var addressData = '?' + postcodeClass  + '=' + escape(postcodeData)  + '&' + housenumClass  + '=' + escape(housenumData)  + '&' +titleClass     + '=' + escape(titleData) + '&' + firstnameClass + '=' + escape(firstnameData) + '&' +lastnameClass  + '=' + escape(lastnameData)  + '&' + countryClass   + '=' + escape(countryData) + '&' + lineItemID   + '=' + escape(lineItemData);

			if (typeof addressDoctorClientsideTimeout == "undefined") {
				TB_show('',findAddressURL+addressData+postcodeFinderDimensions,'');
			}
			else if (addressDoctorClientsideTimeout == 0) {
				TB_show('',findAddressURL+addressData+postcodeFinderDimensions,'');
			}
			else {
				var formResponse = new Request( {url:findAddressURL+addressData,method: 'get', onComplete: showPostCodeFinderPopup, timeout : addressDoctorClientsideTimeout, onTimeout : sendToManualAddressForm, onFailure : sendToManualAddressForm }).send();
			}
		}
	});
}

function showPostCodeFinderPopup(response) {
	var $ = document.id;
	new Element('div').setProperty('id', 'ajaxPostResponse').inject(document.body);
	$('ajaxPostResponse').setProperty('style','display: none;');
	$('ajaxPostResponse').set('html', response); //We need to use setHTML here as it can be overrided in contrast to innerHTML

	TB_show("","TB_inline?" + postcodeFinderDimensions + "&amp;inlineid=ajaxPostResponse", false );
}

function sendToManualAddressForm() {
	TB_remove();
	
	var theForm = document.getElementById('dwfrm_checkout_addresses');
	if (theForm == null) {
		theForm = document.getElementById('dwfrm_customeraddress');
		var submitEl = document.createElement('input');
		submitEl.type = 'hidden';
		submitEl.name = 'dwfrm_customeraddress_manualinputaddress';
		submitEl.value = 'Go';
		theForm.appendChild(submitEl);
	}
	else {
		var submitEl = document.createElement('input');
		submitEl.type = 'hidden';
		submitEl.name = 'dwfrm_checkout_addresses_shippingaddress_manualinputaddress';
		submitEl.value = 'Go';
		theForm.appendChild(submitEl);
	}
	
	clearForm();
	theForm.submit();
	return true;
}

function removeGoButtons() {
	var $ = document.id;
	if ($('selectCountry')) {
		//$$('#selectCountry input.image')[0].dispose();
		$$('#selectCountry input.image')[0].addClass("hide");
	}
	if ($('ptMultipleAddress')) {
		var inputs = $$('#ptMultipleAddress input.go');
		if (inputs[0]) {
			for (var i = 0; i <	inputs.length; i++) {
				inputs[i].dispose();
			}
		}
	}
	if ($('ptGifting')) {
		var inputs = $$('#ptGifting input.useThis');
		if (inputs[0]) {
			for (var i = 0; i <	inputs.length; i++) {
				inputs[i].dispose();
			}
		}	
	}
	/*var ptGifting = $$("#ptGifting");
	if ($('ptGifting')) {
		for (var i = 0; i < ptGifting.length; i++){
		$$('#ptGifting input.useThis')[i].addClass("hide");
		
		}
	}*/
}
	
function initSelect() {
	var $ = document.id;
	var theSelect = $$("select.selector");
	theSelect.each(function (aSelect) {
		aSelect.changed = false;
		aSelect.onfocus = selectFocussed;
		
		aSelect.addEvent('change', function(e) {
			selectChanged(this);
		});
		
		aSelect.onkeydown = selectKeyed;
		aSelect.onclick = selectClicked;
	});
	
	return true;
}
function selectChanged(theElement) {
	var $ = document.id;
	var theForm = document.getElementById('dwfrm_checkout_addresses');
	//FFS-1390
	if (theForm == null) {
		theForm = document.getElementById('dwfrm_customeraddress');
	}
	var theSelect;
	if (theElement && theElement.value) {
		theSelect = theElement;
	} else {
		theSelect = this;
	}
	if (!theSelect.changed) {
		return false;
	}
	//HOF-1350
	if(document.getElementById("CMetricAddress")!=null && document.getElementById("CMetricAddress").value=="send"){
		cmCreateManualLinkClickTag(theForm.action + '?cm_sp=CartCountryCode-_-Combobox-_-' + this.value, 'cart Country Code');
	}
	clearForm();
	jQuery("#isCountryChanged").val("is");
	theForm.submit();
	return true;
}
function selectClicked() {
	var $ = document.id;
	this.changed = true;
}
function selectFocussed(){
	var $ = document.id;
	this.initValue = this.value;	
	return true;
}
function selectKeyed(e) {
	var $ = document.id;
	var theEvent;
	var keyCodeTab = "9";
	var keyCodeEnter = "13";
	var keyCodeEsc = "27";
	if (e) {
		theEvent = e;
	} else {
		theEvent = event;
	}
	if ((theEvent.keyCode == keyCodeEnter || 
		theEvent.keyCode == keyCodeTab) && 
		this.value != this.initValue) {
			this.changed = true;
			selectChanged(this);
		}
		else if (theEvent.keyCode == keyCodeEsc) {
			this.value = this.initValue;
		} else {
			this.changed = false;
	}
	return true;
}


var deleteAddressPopups = {
	ismlURL: "/on/demandware.store/Sites-USC-Site/default/LBitest-addressactionconfirm",
	init: function() {
		var $ = document.id;
		var deleteButtons = $$("input.deleteAddressConfirm");
		for (var i = 0; i < deleteButtons.length; i++) {
			deleteButtons[i].onclick = deleteAddressPopups.showPopup;
		}
	},
	showPopup: function() {
		var $ = document.id;
		TB_show('',deleteAddressPopups.ismlURL+'?height=212&width=284','');
		return false;
	}
}

window.addEvent('domready', function(){
	var $ = document.id;
	postcodeFinder();
	removeGoButtons();
	initSelect();
	deleteAddressPopups.init();
});

function showErrorText(formId, display) {
	var $ = document.id;
	var errIdent = "err_";
	var errObj = document.getElementById(errIdent + formId);
	
	if (errObj != null) {
		if (display) {
			errObj.style.display = "block";
		}
		else {
			errObj.style.display = "none";
		}
	}
}


function clearForm(){
	var $ = document.id;
	var arClear = $$('#container .clearFieldIE');		
	for (var i=0; i<arClear.length; i++) {
		var objInput = arClear[i];
		if (objInput.getProperty('value') == '') {
			empty=true;
		} else {
		objInput.removeProperty('value')
		}
	}
}
