function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

function showCalc() {
	//alert('Show Calculator');
	//alert('Show Calculator');
	Effect.toggle($('calculator'),"blind");
}

function addCommas(nStr)
{
	nStr += '';
	x = nStr.split('.');
	x1 = x[0];
	x2 = x.length > 1 ? '.' + x[1] : '';
	var rgx = /(\d+)(\d{3})/;
	while (rgx.test(x1)) {
		x1 = x1.replace(rgx, '$1' + ',' + '$2');
	}
	return x1 + x2;
}

function removeCommas(nStr)
{
	return nStr.replace(/,/,'');
}

function getResTd(element) {
	var f = false;
	if (element.tagName == 'TD' && element.className == 'input') {
		return element;
	}
	for (var i=0; i<element.childNodes.length; i++) {
		if (f = getResTd(element.childNodes[i])) {
			break;
		}
	}
	return f;
}

function calcMaxMort() {
	var gas = parseFloat(removeCommas($('mortCalc').gas.value));
	if(isNaN(gas)) {
		alert("Please enter a numeric 'Gross Annual Salary' and try again");
		return;
	}
	$('mmaRes').show();
	getResTd($('mmaRes')).innerHTML = '&pound;'+addCommas((gas * 10).toFixed(2));
}

function calcStamp() {
	var pp = parseFloat(removeCommas($('mortCalc').pp.value));
	if(isNaN(pp)) {
		alert("Please enter a numeric 'Property Price' and try again");
		return;
	}
	var result = 0;
	if (pp < 125000) result = 0;
	else if (pp < 250000) result = 0.01;
	else if (pp < 500000) result = 0.03;
	else result = 0.04;
	$('sdRes').show();
	getResTd($('sdRes')).innerHTML = '&pound;'+addCommas((result*pp).toFixed(2));
}

function calcRemort() {
	var lar = parseFloat(removeCommas($('mortCalc').lar.value));
	var rtl = parseFloat(removeCommas($('mortCalc').rtl.value));
	var prt = parseFloat(removeCommas($('mortCalc').prt.value));
	var cir = parseFloat(removeCommas($('mortCalc').cir.value));
	var bbir = parseFloat(removeCommas($('mortCalc').bbir.value));
	var erc = parseFloat(removeCommas($('mortCalc').erc.value));
	
	if (isNaN(lar)||isNaN(rtl)||isNaN(prt)||isNaN(cir)||isNaN(bbir)||isNaN(erc)) {
		alert("Please ensure all values are numberic and try again");
	}
	
	var rPay = (lar/rtl) * cir;
	var bbPay = ((lar/prt) * bbir) - erc;
	
	$('rcRes').show();
	$('bbRes').show();

	getResTd($('rcRes')).innerHTML = '&pound;'+addCommas(rPay.toFixed(2));
	getResTd($('bbRes')).innerHTML = '&pound;'+addCommas(bbPay.toFixed(2));
}

function initContactPopUp() {
	var popup;
	popup = new Popup(document.getElementById('contactPopup'));
	popup.attatchOpenHandle(document.getElementById('launchContact'));
	//launchContact
	//popup.show();
}

function initPCL()
{
	var pcl_button = $('pcl');
	addEvent(pcl_button,'click',performLookup);
}

function performLookup()
{
	var pcl_val = $('pcp').value;
	var pcn_val = $('pcn').value;
	
	if (pcl_val && pcn_val) {
		$('pcl').disabled = true;
		x_postcodeLookup(pcn_val,pcl_val,lookupResult);
	}
	else {
		alert("Please enter a house number and postcode");
	}
}

function lookupResult(result)
{
	$('pcl').disabled = false;
	var res = result.parseJSON();
	
	if (!res) {
		alert("No matches were found for that address");
	}
	else {
		var cont = $('addrList');
		var ul;
		if (!cont.childNodes.length) {
			ul = document.createElement('ul');
			cont.appendChild(ul);
		}
		else {
			ul = cont.childNodes[0];
		}
		var li = document.createElement('li');
		li.appendChild(document.createTextNode(res));
		ul.appendChild(li);
	}
}

function fill3Year()
{
	var input = $('cr3y');
	
	var cont = $('addrList');
	if (cont.childNodes.length) {
		var ul = cont.childNodes[0];
		for (var i=0; i<ul.childNodes.length; i++) {
			input.value += ul.childNodes[i].innerHTML+";";
		}
	}
}

/**
 *	AddEvent
 *	Cross Browser event support
 */
function addEvent( obj, type, fn ) {
	if (obj.addEventListener) {
		obj.addEventListener( type, fn, false );
		EventCache.add(obj, type, fn);
	}
	else if (obj.attachEvent) {
		obj["e"+type+fn] = fn;
		obj[type+fn] = function() { obj["e"+type+fn]( window.event ); }
		obj.attachEvent( "on"+type, obj[type+fn] );
		EventCache.add(obj, type, fn);
	}
	else {
		obj["on"+type] = obj["e"+type+fn];
	}
}

/**
 *  Form Validation.
 */

function validate_callback_form ( )
{
    valid = true;
	
    if ( document.global_callback_main.contact_callback_name.value == "" )
    {
        alert ( "Please fill in the 'Your Name'" );
        valid = false;
    }else if ( document.global_callback_main.contact_callback_number.value == "" )
    {
        alert ( "Please fill in the 'Your Number'" );
        valid = false;
    }

    return valid;
}

function validate_callback_form2 ( frm )
{
    valid = true;
	
    if ( document.global_callback.contact_callback_name.value == "" )
    {
        alert ( "Please fill in the 'Your Name'" );
        valid = false;
    }else if ( document.global_callback.contact_callback_number.value == "" )
    {
        alert ( "Please fill in the 'Your Number'" );
        valid = false;
    }

    return valid;
}

/**
 *	EventCache
 *	Event Caching
 */
var EventCache = function(){
	var listEvents = [];
	return {
		listEvents : listEvents,
		add : function(node, sEventName, fHandler){
			listEvents.push(arguments);
		},
		flush : function(){
			var i, item;
			for(i = listEvents.length - 1; i >= 0; i = i - 1){
				item = listEvents[i];
				if(item[0].removeEventListener){
					item[0].removeEventListener(item[1], item[2], item[3]);
				};
				if(item[1].substring(0, 2) != "on"){
					item[1] = "on" + item[1];
				};
				if(item[0].detachEvent){
					item[0].detachEvent(item[1], item[2]);
				};
				item[0][item[1]] = null;
			};
		}
	};
}();
addEvent(window,'unload',EventCache.flush);

//-------------------------POPUP WINDOW FUNCTIONS---------------------------//



/**
 *	popupWindow
 *	Open a new popup window with supplied width/height
 */
function popupWindow(url, w, h) {
	window.open(url,'win','height=' + h + ',width='+w+',toolbar=no,scrollbars=yes');
}


/**
 * externalLinks
 * sets the target of external links to _blank
 * example: <a href="http://www.someexternalsite.com/" rel="external">Click HERE</a>
 */
function externalLinks() {
	if (!document.getElementsByTagName) return;
	var anchors = document.getElementsByTagName("a");
	for (var i=0; i<anchors.length; i++) {
		var anchor = anchors[i];
		if (
			anchor.getAttribute("href") && ( 
			anchor.getAttribute("rel") == "external" || 
			anchor.getAttribute("rel") == "external nofollow" || 
			anchor.getAttribute("rel") == "nofollow external" )
			)
		anchor.target = "_blank";
	}
}
window.onload = function() {
	externalLinks();
}
