	/* Javascript Page Extras -- Copyright Grovelawn 2005-2007 */
var mcalc={};
var Page={
	bookmarkURL:"http://www.best-uk-mortgages.co.uk",
	bookmarkTitle:"Best UK mortgage deals",
	addBookmark:function(){
		if( document.all ) { window.external.AddFavorite( Page.bookmarkURL, Page.bookmarkTitle ); } else
		{ alert( 'Netscape / Firefox users - Press CTRL-D to bookmark' ); }
	},
	tellAFriend_ctrl:false,
	tellAFriend:function(e){
		if( !e ) var e = window.event;
		var p = document.getElementById('tellafriend');
		var i = document.getElementById('tellmessage');
		var x = ( i && i.value ? i.value : '' );
		if( p && p.innerHTML ) {
			p.innerHTML = '<form name=tellafriend method=post action="/scripts/send.php"><table border=0 cellpadding=0 cellspacing=6 align=center>'+
				'<tr><td>Your friend&#39;s email:</td><td><input type=text name=email style="width:300px"></td></tr>'+
				'<tr><td>Your message:</td><td><textarea name=message id=extra style="width:300px;height:100px">'+x+'</textarea></td></tr>'+
				'<tr><td>&nbsp;</td><td><input type=hidden name=page value="'+window.location.href+'"><input type=submit value=Send>&nbsp;<input type=button value=Cancel onclick="Page.tellAFriend(this.event);"</td></tr>'+
				'</table></form>';
			p.style.position = 'absolute';
			p.style.left = '100px';
			p.style.width = '500px';
			p.style.border = '1px solid #000';
			p.style.backgroundColor = '#64de08';
			Page.tellAFriend_ctrl = ( Page.tellAFriend_ctrl ? false : true );
			if( true == Page.tellAFriend_ctrl ) {
				if( e.pageY ) p.style.top = ( e.pageY - 100 ) + 'px'; else
				if( document.documentElement && document.documentElement.scrollTop && e.clientY ) p.style.top = ( e.clientY + document.documentElement.scrollTop - 100 ) + 'px'; else
				if( document.body && e.clientY ) p.style.top = ( e.clientY + document.body.scrollTop - 100 ) + 'px'; else
					p.style.top = '900px';
		} else {
			p.style.top = '-500px';
		}
	}	},
	scrollText_f:function( id, td, ht ) {
		var i = ( document.getElementById ? document.getElementById(id) : document.all[id] )
		var m = parseInt( i.style.marginTop ) - 1
		if( m > -ht ) { i.style.marginTop = ( m - 1 ) + 'px'; } else { i.style.marginTop = '100px'; }
		setTimeout( 'Page.scrollText_f("' + id + '",' + td + ',' + ht + ')', td );
	},
	scrollText:function( id, td, ht ) {
		var i = ( document.getElementById ? document.getElementById(id) : document.all[id] );
		var s = ( '' + i.innerHTML ).replace( '<ul>', '' ).replace( '</ul>', '' ).replace( '</li>', '' ).split( '<li>' );
		if( 2 > s.length ) { s = ( '' + i.innerHTML ).replace( '<UL>', '' ).replace( '</UL>', '' ).replace( '</LI>', '' ).split( '<LI>' ); }
		i.innerHTML = '<table border=0 cellpadding=0 cellspacing=0 width="100%"><tr class="scc"><td style="height:' + ht + 'px" align="center">' + s.join( '</td></tr><tr class="scc"><td style="height:' + ht + 'px" align="center">' ) + '</td></tr></table>';
		i.style.marginTop = '60px';
		setTimeout( 'Page.scrollText_f("' + id + '",' + td + ',' + ( ht * s.length ) + ')', td );
	},
	extra:[],
	esLink3:function(l) { var n; var c; var r=''; for( n=0; n<Page.extra.length && n<l; ++n ) { c = Page.extra[n]; r += '<div class=miva style="clear:both"><a onmouseover="window.status=\''+c[2]+'\';return true" onmouseout="window.status=\'\';return true" target="_blank" href="'+c[3]+'"><img src="'+c[4]+'" alt="'+c[2]+'"></a><h3>'+c[0]+'</h3><p><a onmouseover="window.status=\''+c[2]+'\';return true" onmouseout="window.status=\'\';return true" target="_blank" href="'+c[3]+'">'+c[1]+'</a></p></div>'; } return '<div style="border-bottom:1px dotted #ccc;margin-bottom:3px"><em>Sponsored Links...</em></div>'+r; },
	esColumn:function(l) { var n; var c; var r=''; for( n=0; n<Page.extra.length && n<l; ++n ) { c = Page.extra[n]; r += '<div class=mivacol style="clear:both"><h3><a onmouseover="window.status=\''+c[2]+'\';return true" onmouseout="window.status=\'\';return true" target="_blank" href="'+c[3]+'">'+c[0]+'</a></h3><a onmouseover="window.status=\''+c[2]+'\';return true" onmouseout="window.status=\'\';return true" target="_blank" href="'+c[3]+'"><img src="'+c[4]+'" alt="'+c[2]+'"></a></div>'; } return r; },
	esColumn3:function(l) { var n; var c; var r=''; for( n=0; n<Page.extra.length && n<l; ++n ) { c = Page.extra[n]; r += '<div class=mivacol style="clear:both"><h3><a onmouseover="window.status=\''+c[2]+'\';return true" onmouseout="window.status=\'\';return true" target="_blank" href="'+c[3]+'">'+c[0]+'</a></h3>'+(n<3?'<a onmouseover="window.status=\''+c[2]+'\';return true" onmouseout="window.status=\'\';return true" target="_blank" href="'+c[3]+'"><img src="'+c[4]+'" alt="'+c[2]+'"></a></div>':'</div>'); } return r; },
//	extras:function( key ) { document.write( '<sc' + 'ript type="text/javascript" src="/scripts/miva.js?q='+( key ? key : 'mortgages' )+'"></sc' + 'ript>' ); },
	sizeMenu:function() {
		var m = document.getElementById('menu');
		var b = document.getElementById('body');
		var e = m.getElementsByTagName('UL');
		if( m.offsetHeight < ( b.offsetHeight - 50 ) ) e[0].style.height = ( b.offsetHeight - 50 ) + 'px';
		e[0].onmouseover = Page.sizeMenu;
		return true;
	},
	load:function() {
		if( document.getElementById )
		{
			var l = document.getElementById('date'); var t = new Date;
			var nd = new Array('Sunday','Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday');
			var nm = new Array('Janurary', 'Feburary', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');
			if( l ) l.innerHTML = nd[t.getDay()] + ',&nbsp; ' + t.getDate() + '&nbsp;' + nm[t.getMonth()] + ' ' + (t.getYear()%100+2000);
			l = document.getElementById('scroll');	if( l ) Page.scrollText('scroll',150,14);
			l = document.getElementById('scroll2');	if( l ) Page.scrollText('scroll2',150,50);
			l = document.getElementById('apr');	if( l ) l.innerHTML = '4.50%';
		//	l = document.getElementById('extras');
			window.setTimeout( Page.sizeMenu, 250 );
		//	if( 'function'==typeof(get_extras) && l )
		//	{
		//		Page.extra = get_extras();
		//		if( !l.className ) l.innerHTML = Page.esLink3(3);
		//		else if( 'link3'==l.className ) l.innerHTML = Page.esLink3(3);
		//		else if( 'column'==l.className ) l.innerHTML = Page.esColumn(8);
		//		else if( 'column3'==l.className ) l.innerHTML = Page.esColumn3(3);
		//	}
		}
		var n;
		for( n=0; n<document.forms.length; ++n ) if( document.forms[n].className = 'calculator' )
		{
			mcalc = new Calculators( document.forms[n] );
		}
		return true;
}	};
google_ad_client	= 'pub-1568843168671928';
google_ad_slot		= '9628736141';
google_ad_width		= 120;
google_ad_height	= 600;
function checkNumber(num)
{
	var n = num.value.replace( /[, ]/g, '' );
	if( isNaN( n - 0 ) )
	{
	//	alert( 'Sorry, the number you entered does not appear to be valid' );
		num.value = num.value.replace( /[^0-9]/g, '' );
	}
}
var Calculators=function( frm )
{
	/* Defaults */
	var	stamp_duty_normal		= [ 125000, 0.01, 250000, 0.03, 500000, 0.04 ],
		stamp_duty_disadvantaged	= [ 150000, 0.01, 250000, 0.03, 500000, 0.04 ],
		borrow_single_min = 350,	borrow_joint_min = 275,		borrow_ltv = 90,
		borrow_single_max = 500,	borrow_joint_max = 550,		borrow_bonus_ratio = 100,
		buy_to_let_pay_rate_pc = 100,	buy_to_let_interest_rate_pc = 5.19,
		buy_to_let_maximum_ltv = 75,
		early_repayment_charge = 800;

	/* Helpers */
	function getInt(n)	{ var x = frm[n].value; return Math.round( x.replace( /[^0-9.]/g, '' )-0 ); }
	function getNum(n)	{ var x = frm[n].value; return x.replace( /[^0-9.]/g, '' )-0.0; }
	function getTxt(n)	{ return ( frm[n].selectedIndex ? frm[n].options[ frm[n].selectedIndex ].value : frm[n].value ); }
	function setInt(n,i)	{ if( frm && frm[n] ) { frm[n].value = Math.round(i-0); } }
	function setMny(n,i)	{ if( frm && frm[n] ) { frm[n].value = Math.round((i-0)*100)/100; } }
	function setNum(n,i)	{ if( frm && frm[n] ) { frm[n].value = i-0.0; } }
	function setTxt(n,t)	{ if( frm && frm[n] ) { frm[n].value = t; } }
	function getChk(n)	{ if( frm && frm[n] ) { return frm[n].checked ? true : false; } return false; }
	function getRepay( price, rate, term )
	{
		var n, r=rate/12.0, t=term*12, tp=1;
		for( n=0; n<t; ++n ) tp *= ( 1+(r/100) );
		return ( price*r/100 ) / ( 1-(1/tp) );
	}
	function getInterest( price, rate, term )
	{
		var r=rate/12.0, t=term*12;
		return ( price*r/100 );
	}

	/* Calculators */
	this.stampDuty = function ()
	{
		var n, r=0.0, v=getInt( 'price' ), a=( frm.disadv[0].checked ? stamp_duty_disadvantaged : stamp_duty_normal );
		for( n=0; n<a.length; n+=2 ) if( a[n]<v ) r=a[n+1]; else break;
		setInt( 'total', v*r );
		setTxt( 'tell', 'Stamp Duty on a £' + v + ' property would be approx £' + Math.round(v*r) );
	};
	this.mortgageRepayment = function ()
	{
		var n, p=getInt( 'price' ), r=getNum( 'rate' ), t=getInt( 'term' );
		var p1=getRepay( p,r,t ), i1=getInterest( p,r,t ), p2=getRepay( p,r+1,t ), i2=getInterest( p,r+1,t );
		setMny( 'month', p1 );		setMny( 'monthp1', p2 );
		setMny( 'intrs', i1 );		setMny( 'intrsp1', i2 );
		setMny( 'total', t*p1*12 );	setMny( 'totalp1', t*p2*12 );
		setTxt( 'tell', 'Mortgage repayment on a £' + p + ' loan over ' + t + ' years at ' + r + '% would be £' + p1 + ' pcm (£' + t*p1*12 + ' total) or £' + i1 + ' pcm (£' + t*i1*12 + ' total)' );
	};
	this.remortgageRepayment = function ()
	{
		var n, p=getInt( 'price' ), r=getNum( 'rate' ), t=getInt( 'term' )*12;
		var np=getNum( 'nprice' ), nr=getNum( 'nrate' ), nt=getInt( 'nterm' )*12;
		var p1=getRepay( p,r,t/12 ), p2=getRepay( p,r+1,t/12 ), p1n=getRepay( np,nr,nt/12 ), p2n=getRepay( np,nr+1,nt/12 );
		var s1=t*p1-nt*p1n, s2=t*p2-nt*p2n, s1y=(t<24?t:24)*p1-(nt<24?nt:24)*p1n, s2y=(t<24?t:24)*p2-(nt<24?nt:24)*p2n;
		setMny( 'month', p1 );		setMny( 'monthp1', p2 );
		setMny( 'nmonth', p1n );		setMny( 'nmonthp1', p2n );
		setTxt( 'saves', ( 0<=s1 ? Math.round(s1) + ' saving' : (0-Math.round(s1)) + ' more' ) );
		setTxt( 'save2', ( 0<=s1y ? Math.round(s1y) + ' saving' : (0-Math.round(s1y)) + ' more' ) );
		setTxt( 'savesp1', ( 0<=s2 ? Math.round(s1) + ' saving' : (0-Math.round(s2)) + ' more' ) );
		setTxt( 'save2p1', ( 0<=s2y ? Math.round(s1y) + ' saving' : (0-Math.round(s2y)) + ' more' ) );
		setTxt( 'tell', 'By remortgaging there would be ' + ( 0<=s1 ? ' a £' + Math.round(s1) + ' saving' : ' £' + (0-Math.round(s1)) + ' more' ) + ' when changing the term to ' + t + ' years at ' + r + '%' );
	};
	this.howMuchBorrow = function ()
	{
		var m=getInt( 'maxltv' ), p=getInt( 'property' );
		var i1=getInt( 'incomem' ), i2=getInt( 'incomep' ), b1=getInt( 'bonusm' ), b2=getInt( 'bonusp' );
		var xx=getNum( 'mulbonus' ), xj=getNum( 'muljoint' ), xb=getNum( 'mulbest' );
		var d, a=xj*( i1+i2+xx*(b1+b2) ), am=xb*( i1+xx*b1 ), ap=xb*( i2+xx*b2 );
		d = ( ( p-( a = Math.max( a, Math.max( am, ap ) ) ) )/100 + 1 ) * 100;
		setInt( 'deposit', d>0 ? d:'none (' + d + ')' );
		setInt( 'borrow', Math.min( a, p ) );
		setTxt( 'tell', 'A mortgage of upto £' + Math.min( a, p ) + ' with a typical deposit of around £' +
			(d>0?d:0) + ' should be availiable for your wages (subject to terms and conditions)' );
	};
	this.howMuchBorrow2 = function ()
	{
		var i1=getInt('income1')+getInt('bonus1')*borrow_bonus_ratio/100, i2=getInt('income2')+getInt('bonus2')*borrow_bonus_ratio/100;
		setInt( 'borrow', Math.floor( ( frm.joint.checked ? (i1+i2)*borrow_joint_min : i1*borrow_single_min )*borrow_ltv/10000 ) );
		setInt( 'borrowmax', Math.floor( ( frm.joint.checked ? (i1+i2)*borrow_joint_max : i1*borrow_single_max )*borrow_ltv/10000 ) );
	};
	this.howMuchBorrowBTL = function ()
	{
		var p=getInt( 'property' ), r=getNum( 'rent' );
		var ml=p*buy_to_let_maximum_ltv/100, mx=(r*12/(buy_to_let_pay_rate_pc/100.0))/(buy_to_let_interest_rate_pc/100.0);
		setInt( 'maxloan', Math.floor( mx<ml?mx:ml ) );
	};
	this.requiredRentalBTL = function ()
	{
		var b=getInt( 'property' )-getInt( 'deposit' );
		setInt( 'rent', Math.ceil( ((b*(buy_to_let_interest_rate_pc/100.0))/12.0) * (buy_to_let_pay_rate_pc/100.0) ) );
	};
	this.requiredRate = function ()
	{
		var l=getInt( 'loan' ), r=getNum( 'rate' ), t=getInt( 'term' ), p=getNum( 'penalty' );
		if( 'p'==getTxt( 'type' ) ) { p=l*(p/100); }
		setNum( 'nofee', getChk( 'addv' ) ? ((l*r/100*(t/12))-p) / (((t/12)/100)*(l+p)) : r-((p/l)*1200)/t );
		setNum( 'payfee', getChk( 'addv' ) ? ((l*r/100*(t/12))-p-early_repayment_charge) / (((t/12)/100)*(l+p)) : r-((((early_repayment_charge*100)/l)+(p/l)*100)*12)/t );
	};
};
window.onload = Page.load;
function changeCallMe() {
	var f = document.callme; var d = new Date; var w = 'today';
	var fd = f.dated.selectedIndex+1; var fm = f.datem.selectedIndex;
	if( d.getDate() < fd || d.getMonth() < fm ) { w = 'on ' + fd + ' ' + f.datem.options[ fm ].text; }
	f.info.value = w + ' between ' + f.time.options[ f.time.selectedIndex ].text;
}
function checkCallMe() {
	var f = document.callme; var e = '';
	if( '' == f.name.value )	{ e = 'Please enter your name\n' + e; }
	if( '' == f.telephone.value )	{ e = 'Please enter your telephone number\n' + e; }
	if( '' != e )			{ alert( e ); return false; } return true;
}
function checkRemindMe() {
	var f = document.remindme; var e = '';
	if( '' == f.telephone.value )	{ e = 'Please enter your telephone number\n' + e; }
	if( '' == f.email.value )	{ e = 'Please enter your email\n' + e; }
	if( '' == f.name.value )	{ e = 'Please enter your name\n' + e; }
	if( '' != e )			{ alert( e ); return false; } return true;
}
function updateForms() {
	var f = document.callme; var g = document.remindme; var d = new Date;
	var m = ['Janurary','Feburary','March','April','May','June','July','August','September','October','November','December'];
	f.time.selectedIndex = d.getHours()-9;
	f.dated.selectedIndex = d.getDate()-1;	g.dated.selectedIndex = d.getDate()-1;
	f.datem.selectedIndex = d.getMonth();	g.datem.selectedIndex = d.getMonth();
	f.datem.options.length = 0;		g.datem.options.length = 0;
	for( var n = d.getMonth(); n < 6 + d.getMonth(); ++n ) {
		f.datem.options[ f.datem.options.length ] = new Option( m[ n%12 ] + ' ' + ( 2000 + ( 12 < n ? d.getYear()+1 : d.getYear() ) % 100 ), 1 + n % 12 );
		g.datem.options[ g.datem.options.length ] = new Option( m[ n%12 ] + ' ' + ( 2000 + ( 12 < n ? d.getYear()+1 : d.getYear() ) % 100 ), 1 + n % 12 );
	}
	changeCallMe();
}

