function MM_preloadImages() {
  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() {
  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) {
  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() {
  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];}
}

var FadeDurationMS=1000;

function SetOpacity(object,opacityPct) {
	object.style.filter = 'alpha(opacity=' + opacityPct + ')';
	object.style.MozOpacity = opacityPct/100;
	object.style.opacity = opacityPct/100;
}

function ChangeOpacity(id,msDuration,msStart,fromO,toO) {
	var element=document.getElementById(id);
	var msNow = (new Date()).getTime();
	var opacity = fromO + (toO - fromO) * (msNow - msStart) / msDuration;
	if (opacity>=100) {
		SetOpacity(element,100);
		element.timer = undefined;
	}
	else if (opacity<=0) {
		SetOpacity(element,0);
		element.timer = undefined;
	} else {
		SetOpacity(element,opacity);
		element.timer = window.setTimeout("ChangeOpacity('" + id + "'," + msDuration + "," + msStart + "," + fromO + "," + toO + ")",10);
	}
}

function FadeInImage(foregroundID,newImage,backgroundID) {
	var foreground=document.getElementById(foregroundID);
	if (foreground.timer) window.clearTimeout(foreground.timer);

	if (backgroundID) {
		var background=document.getElementById(backgroundID);
		if (background) {
			if (background.src) {
				foreground.src = background.src;	
				SetOpacity(foreground,100);
			}
			background.src = newImage;
			background.style.backgroundImage = 'url(' + newImage + ')';
			background.style.backgroundRepeat = 'no-repeat';
			var startMS = (new Date()).getTime();
			foreground.timer = window.setTimeout("ChangeOpacity('" + foregroundID + "'," + FadeDurationMS + "," + startMS + ",100,0)",10);
		}
	} else {
		foreground.src = newImage;
	}
}

var slideCache = new Array();

function RunSlideShow(pictureID,backgroundID,imageFiles,displaySecs) {
	var imageSeparator = imageFiles.indexOf(";");
	var nextImage = imageFiles.substring(0,imageSeparator);
	if (slideCache[nextImage] && slideCache[nextImage].loaded) {
		FadeInImage(pictureID,nextImage,backgroundID);
		var futureImages = imageFiles.substring(imageSeparator+1,imageFiles.length)
			+ ';' + nextImage;
		setTimeout("RunSlideShow('"+pictureID+"','"+backgroundID+"','"+futureImages+"',"+displaySecs+")",
			displaySecs*1000);
		imageSeparator = futureImages.indexOf(";");
		nextImage = futureImages.substring(0,imageSeparator);
	} else {
		setTimeout("RunSlideShow('"+pictureID+"','"+backgroundID+"','"+imageFiles+"',"+displaySecs+")",
			250);
	}
	if (slideCache[nextImage] == null) {
		slideCache[nextImage] = new Image;
		slideCache[nextImage].loaded = false;
		slideCache[nextImage].onload = function(){this.loaded=true};
		slideCache[nextImage].src = nextImage;
	}
}

function Left(str, n) {
   if (n <= 0)
         return "";
   else if (n > String(str).length)
         return str;
   else
         return String(str).substring(0,n);
}

function Right(str, n) {
      if (n <= 0)
          return "";
      else if (n > String(str).length)
          return str;
      else
   {
          var iLen = String(str).length;
          return String(str).substring(iLen, iLen - n);
      }
}

function roundNumber(num, dec) {
	var result = Math.round(num*Math.pow(10,dec))/Math.pow(10,dec);
	return result;
}

function FormatNumberBy3(num) {
  sep = ",";
  decpoint = ".";
  
  num = num.toString();
  
  a = num.split(decpoint);
  x = a[0];
  y = a[1];
  z = "";


  if (typeof(x) != "undefined") {
    
    for (i=x.length-1;i>=0;i--)
      z += x.charAt(i);
    
    z = z.replace(/(\d{3})/g, "$1" + sep);
    if (z.slice(-sep.length) == sep)
      z = z.slice(0, -sep.length);
    x = "";
    
    for (i=z.length-1;i>=0;i--)
      x += z.charAt(i);
    
    if (typeof(y) != "undefined" && y.length > 0)
      x += decpoint + y;
  }
  return x;
}

function onlyNumbers(evt) {
	var e = event || evt;
	var charCode = e.which || e.keyCode;
	if (charCode > 31 && (charCode < 48 || charCode > 57))
		return false;
	return true;
}

function formatCurrency(num) {
	var old_value = num.replace(/£/, "");
	var new_value = old_value.replace(/,/g, "");
	if (parseInt(new_value) < 1 || parseInt(new_value) > 10000000) {
		alert("Please enter an amount between £1 and £10,000,000")
		document.contactForm.mortgageAmount.value = ("");
	} else {
		document.contactForm.mortgageAmount.value = ("\u00A3" + FormatNumberBy3(new_value));
	}
}

function formatValue(num) {
	var old_value = num.replace(/£/, "");
	var new_value = old_value.replace(/,/g, "");
	document.contactForm.propertyValue.value = ("\u00A3" + FormatNumberBy3(new_value));
}

function formatYears(num) {
	var new_value;
	new_value = num.replace(/yrs/, "");
	if (parseInt(new_value) < 1 || parseInt(new_value) > 50) {
		alert("Please enter an amount between 1 and 50 years")
		document.contactForm.mortgageTerm.value = ("");
	} else {
		document.contactForm.mortgageTerm.value = (new_value + "yrs");
	}
}

function showsplit() {
    var repaymentmethod = document.contactForm.repaymentmethod.value;
    if (repaymentmethod != 'Split') {
        document.getElementById("intonlyamount").disabled = true;
		document.getElementById("intonlyamount").style.backgroundColor = "#CCC";
    } else {
        document.getElementById("intonlyamount").disabled = false;
		document.getElementById("intonlyamount").style.backgroundColor = "#FFF";
    }
}

function showHide(x) {
	mortgageAmount = document.getElementById('mortgageAmount').value;
	propertyValue = document.getElementById('propertyValue').value;
	mortgageLender = document.getElementById('mortgageLender').value;
	mortgageTerm = document.getElementById('mortgageTerm').value;
	
	for (i = 0; i < document.contactForm.step2a.length; i++) {
		if (document.contactForm.step2a[i].checked) {
			step2a = document.contactForm.step2a[i].value;
		}
	}
	
	app1Forname = document.getElementById('app1Forename').value;
	app1Surname = document.getElementById('app1Surname').value;
	app1DOB = document.getElementById('app1DOB').value;
	app2Forname = document.getElementById('app2Forename').value;
	app2Surname = document.getElementById('app2Surname').value;
	app2DOB = document.getElementById('app2DOB').value;
	homePhone = document.getElementById('homePhone').value;
	mobilePhone = document.getElementById('mobilePhone').value;
	
	switch(x) {
		case "step2" :
			if ((mortgageAmount == "") || (propertyValue == "") || (mortgageLender == "") || (mortgageTerm == "")) {
				alert("Please ensure all fields are complete");
				break;
			} else {
				document.getElementById('step2').style.visibility = "visible";
				document.getElementById('step1').style.visibility = "hidden";
				document.getElementById('step3').style.visibility = "hidden";
				break;
			}
		case "step3" :
			if (step2a == "no") {
				if ((app1Forname == "") || (app1Surname == "") || (app1DOB == "") || (homePhone == "") || (mobilePhone == "")) {
					alert("Please ensure all fields are complete");
					break;
				} else {
					document.getElementById('step3').style.visibility = "visible";
					document.getElementById('step1').style.visibility = "hidden";
					document.getElementById('step2').style.visibility = "hidden";
					break;
				}
			} else {
				if ((app1Forname == "") || (app1Surname == "") || (app1DOB == "") || (app2Forname == "") || (app2Surname == "") || (app2DOB == "") || (homePhone == "") || (mobilePhone == "")) {
					alert("Please ensure all fields are complete");
					break;
				} else {
					document.getElementById('step3').style.visibility = "visible";
					document.getElementById('step1').style.visibility = "hidden";
					document.getElementById('step2').style.visibility = "hidden";
					break;
				}
			}
	}
}

function toggleApp(x) {
	if (x == "y") {
		document.getElementById('app2F').style.visibility = "visible";
		document.getElementById('app2S').style.visibility = "visible";
		document.getElementById('app2D').style.visibility = "visible";
	} else {
		document.getElementById('app2F').style.visibility = "hidden";
		document.getElementById('app2S').style.visibility = "hidden";
		document.getElementById('app2D').style.visibility = "hidden";
	}
}

function validateForm() {
	for (i = 0; i < document.contactForm.step3a.length; i++) {
		if (document.contactForm.step3a[i].checked) {
			step3a = document.contactForm.step3a[i].value;
		}
	}
	
	for (i = 0; i < document.contactForm.step3b.length; i++) {
		if (document.contactForm.step3b[i].checked) {
			step3b = document.contactForm.step3b[i].value;
		}
	}
	
	for (i = 0; i < document.contactForm.step3c.length; i++) {
		if (document.contactForm.step3c[i].checked) {
			step3c = document.contactForm.step3c[i].value;
		}
	}
	
	address = document.getElementById('address').value;
	postCode = document.getElementById('postCode').value;
	
	if ((address == "") || (postCode == "")) {
		alert("Please ensure all fields are complete");
		return false;
	} else {
		return true;
	}
}

function formatCurrency_intOnly(num) {
	var new_value;
	var mortgageAmount_old = document.contactForm.mortgageAmount.value;
	var mortgageAmount_new = mortgageAmount_old.replace("£", "");
	var mortgageAmount = mortgageAmount_new.replace(/,/g, "");
	new_value = num.replace("£", "");
	if (parseInt(new_value) < 1 || parseInt(new_value) > 10000000) {
		alert("Please enter an amount between £1 and £10,000,000")
		document.contactForm.intonlyamount.value = ("");
	} else {
		if (parseInt(new_value) < parseInt(mortgageAmount)) {
			document.contactForm.intonlyamount.value = ("\u00A3" + FormatNumberBy3(new_value));
		} else {
			alert("Please enter an amount less then " + mortgageAmount_old);
			document.contactForm.intonlyamount.value = ("");
		}
	}
}

function calculateRepayment() {
	var mortgageAmount_old = document.contactForm.mortgageAmount.value;
	var mortgageAmount_new = mortgageAmount_old.replace("£", "");
	var mortgageAmount = mortgageAmount_new.replace(/,/g, "");
	var interestrate_old = document.contactForm.interestrate.value;
	var interestrate = interestrate_old.replace("%","");
	var loanmortgageTerm_old = document.contactForm.mortgageTerm.value;
	var loanmortgageTerm = loanmortgageTerm_old.replace("yrs","");
	var intonlyamount_old = document.contactForm.intonlyamount.value;
	var intonlyamount_new = intonlyamount_old.replace("£", "");
	var intonlyamount = intonlyamount_new.replace(/,/g, "");
	var repaymentmethod = document.contactForm.repaymentmethod.value;

    if (repaymentmethod != 'Split') {
		if (repaymentmethod != 'Interest Only') {
			var repayment = FormatNumberBy3(roundNumber(mortgageAmount * (interestrate / 1200) / (1 - (Math.pow(1/(1 + (interestrate / 1200)), (loanmortgageTerm*12)))),2));
			document.contactForm.monthlyrepayment.value = "\u00A3" + repayment;
		} else {
			var interestonly = FormatNumberBy3(roundNumber((mortgageAmount*interestrate)/1200,2));
			document.contactForm.monthlyrepayment.value = "\u00A3" + interestonly;
		}
    } else {
		var repayment = (mortgageAmount-intonlyamount) * (interestrate / 1200) / (1 - (Math.pow(1/(1 + (interestrate / 1200)), (loanmortgageTerm*12))));
		var interestonly = (intonlyamount*interestrate)/1200;
		var splitpayment = FormatNumberBy3(roundNumber(repayment + interestonly,2));
		document.contactForm.monthlyrepayment.value = "\u00A3" + splitpayment;
    }
}
