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() {
	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.indexOf('input') != -1) {
		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 prt = parseFloat(removeCommas($('mortCalc').prt.value));
	var bbir = parseFloat(removeCommas($('mortCalc').bbir.value));
	
	//alert ("lar = " + lar + "  prt = " + prt + "   bbir = " + bbir);
	
	if (isNaN(lar)||isNaN(prt)|isNaN(bbir)) {
		alert("Please ensure all values are numberic and try again");
	}
	
	
	var monthly_rate = (bbir/100) / 12;
	var period = prt * 12;
		//alert ("monthly_rate = " + monthly_rate + "  period = " + period);
	
	var bbPay = lar * (monthly_rate / (1 - Math.pow((1+ monthly_rate),-period)));
	

	$('bbRes').show();
	getResTd($('bbRes')).innerHTML = '&pound;'+addCommas(bbPay.toFixed(2))+'&nbsp;<span style="font-weight: normal;text-decoration: none;">per month</span>';
}


function calcIntOnly () {
	var lar = parseFloat(removeCommas($('mortCalc').lar.value));
	var prt = parseFloat(removeCommas($('mortCalc').prt.value));
	var bbir = parseFloat(removeCommas($('mortCalc').bbir.value));
	
	//alert ("lar = " + lar + "  prt = " + prt + "   bbir = " + bbir);
	
	if (isNaN(lar)||isNaN(prt)|isNaN(bbir)) {
		alert("Please ensure all values are numberic and try again");
	}
	
	var intPay = (lar * (bbir/100) / 12);
	
	$('intRes').show();
	getResTd($('intRes')).innerHTML = '&pound;'+addCommas(intPay.toFixed(2))+'&nbsp;<span style="font-weight: normal;text-decoration: none;">per month</span>';;	
}


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+";"+$('pcp').value;
		}
	}
}

/**
 *	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);

function OpenLender(id, name)
{
	window.open('lenderinfo.php?id='+id+'&name='+name, '_new', 'width=800, height=500, scrollbars=1, resizable=1, location=1, toolbar=0, menubar=0, directories=0, status=0');
	return false;	
}

   
function rollerF1()
{
	if (!$('scrDiv1').visible()) {
    	Effect.BlindUp($('scrDiv2'));
    	Effect.BlindUp($('scrDiv3'));
    	Effect.BlindDown($('scrDiv1'));
	}
}    

function rollerF2()
{
	if (!$('scrDiv2').visible()) {
    	Effect.BlindUp($('scrDiv1'));
    	Effect.BlindUp($('scrDiv3'));
    	Effect.BlindDown($('scrDiv2'));
	}
}    

function rollerF3()
{
	if (!$('scrDiv3').visible()) {
    	Effect.BlindUp($('scrDiv1'));
    	Effect.BlindUp($('scrDiv2'));
    	Effect.BlindDown($('scrDiv3'));
	}
}