function addEvent(elem, type, fnc) {
	if(elem.addEventListener) {
		elem.addEventListener(type, fnc, false);
	} else {
		elem.attachEvent("on" + type, fnc);
	}
}

function initIE() {
	for(var x = 0; x < document.forms[0].length; x++) {
		if(document.forms[0][x].className == "textBox") {
			addEvent(document.forms[0][x], "focus", txtOn);
			addEvent(document.forms[0][x], "blur", txtOff);
		}
	}
}

function txtOn() {
	var elem = window.event.srcElement;
	elem.style.borderColor = "8dc63f";
}

function txtOff() {
	var elem = window.event.srcElement;
	elem.style.borderColor = "";
}

var hasSubmitted = false;
function noDoubleSubmit() {
	if(! hasSubmitted) {
		hasSubmitted = true;
		return true;
	} else {
		return false;
	}
}


function getTarget(e) {
	var target;
	if(!e) var e = window.event;
	if(e.target) target = e.target;
	else if( e.srcElement) target = e.srcElement;
	if(target.nodeType == 3) target = target.parentNode;
	return target;
}

function getKey() {
	var key, domain = document.location.host;
	
	if(domain.indexOf("normanross.co.nz") != -1) {
		key = "ABQIAAAAdG3LesKXUxYbZef36ymWARSjLxcBR29iEqrwesTxHGy80ZyfMBSjeFn2So_7BUhzRvub1sctlc44sg";
	} else {
		//for dev
    key = "ABQIAAAAUq4ni_qxTl3IN4IPNt-nUBThapx7L9pb5xRAFM3Od9hPJWVsXhSi28ik4l2998y4xJvGQehTMb5S_A";
	}

	return key;
}

function writeGAScriptTag() {
	document.write("<scri" + "pt src=\"http://maps.google.com/maps?file=api&amp;v=2&amp;sensor=false&amp;key=" + getKey() + "\" type=\"text/javascript\"></scri" + "pt>");
}

function getPostCode() {
	
	if( ! document.getElementById("address1").value || ! document.getElementById("address2").value ) {
		alert( "Please fill in your address details" );
		return;
	}
	
	var address = [];
	
	if(document.getElementById("address1").value) {
		address.push(document.getElementById("address1").value);
	}
	
	if(document.getElementById("address2").value) {
		address.push(document.getElementById("address2").value);
	}
	
	if(document.getElementById("city").value) {
		address.push(document.getElementById("city").value);
	}
	
	
	address.push("New Zealand");
	
	strAddress = address.join(",");
	
	geocoder.getLocations(strAddress, writePostCode); 
}

function writePostCode(response) {
	var postcode = getPostcodeFromResponse(response)
	if( postcode ) {
		document.getElementById("postcode").value = getPostcodeFromResponse(response);
	} else {
		alert("Sorry, we could not find a postcode for that address.\nPlease check your address and try again.");
	}
}

function getPostcodeFromResponse(response) {
	if(! response) return;
	
	if( response.Status.code != 200) return;
	
	if( response.Placemark && response.Placemark.length != 1) return;
	
	if( response.Placemark[0].AddressDetails.Accuracy != 8) return;
	
	if(response.Placemark[0].AddressDetails.Country) {
		var country = response.Placemark[0].AddressDetails.Country;
		
		return findInObject(country, "PostalCode").PostalCodeNumber;
	}
}

function findInObject( object, key ) {
	var tmp;
	for( var child in object ) {
		if( child == key ) return object[key];
		if( typeof object[child] == "object" ) {
			tmp = findInObject(object[child], key);
			if(tmp != null) return tmp;
		}
	}
}

function btnOver(e) {
	var btn = getTarget(e);
	btn.src = btn.onImg;
}

function btnOut(e) {
	var btn = getTarget(e);
	btn.src = btn.offImg;
}
