var index = .03875;
var expectedIndex = .03875;
var margin = .01;
var rate = expectedIndex+margin;
var annualMIP = .005;
var minimumFactorRate = .055;
var MonthlyServicingFee = 30;
var closingCosts = 2000;
var origFeePcnt = .02;
var mortgageInsurancePcnt = .02;


function validateForm(){
	
}

function initOverLabels () {
  if (!document.getElementById) return;      
  var labels, id, field;
  labels = document.getElementsByTagName('label');
  for (var i = 0; i < labels.length; i++) {
    if (labels[i].className == 'overlabel') {
      id = labels[i].htmlFor || labels[i].getAttribute('for');
      if (!id || !(field = document.getElementById(id))) {
        continue;} 
      labels[i].className = 'overlabel-apply';
      if (field.value !== '') {
        hideLabel(field.getAttribute('id'), true);}
      field.onfocus = function () {
        hideLabel(this.getAttribute('id'), true);};
      field.onblur = function () {
        if (this.value === '') {
          hideLabel(this.getAttribute('id'), false);}};
      labels[i].onclick = function () {
        var id, field;
        id = this.getAttribute('for');
        if (id && (field = document.getElementById(id))) {
          field.focus();}};}}};

function hideLabel (field_id, hide) {
  var field_for;
  var labels = document.getElementsByTagName('label');
  for (var i = 0; i < labels.length; i++) {
    field_for = labels[i].htmlFor || labels[i].getAttribute('for');
    if (field_for == field_id) {
      labels[i].style.textIndent = (hide) ? '-1000px' : '0px';
      return true;}}}

var xmlHttp = null;
try{xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
}catch (e){
	try{xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
	}catch (e2){
		xmlHttp = null;}}
if(!xmlHttp && typeof XMLHttpRequest != 'undefined'){xmlHttp = new XMLHttpRequest();}
if(xmlHttp == null){alert("Could not create Request Object");}

function CanWeFrogIt(){
	if(document.getElementById("age").value.length > 0){
		if(document.getElementById("maxAmount").value.length > 0){
			if(document.getElementById("factor").value.length > 0){
				if(document.getElementById("sharedPoints").value.length > 0){
					return true;
				}
			}
		}
	}
	return false;
}

function setAge(){
	var theAge = 62;
	if(document.getElementById("PriDateOfBirth-field").value.length >= 2)
		theAge = getAgeFromDOB(document.getElementById("PriDateOfBirth-field").value);
	if(document.getElementById("SecDateOfBirth-field").value.length >= 2)
		theAge = lesserOf(theAge, getAgeFromDOB(document.getElementById("SecDateOfBirth-field").value));
	if(theAge>=62)
		document.getElementById("age").value = theAge;
	getHECMFactorPoints(document.getElementById("age"), document.getElementById("rate"));
}

function getAgeFromDOB(inDOB){
	var now = new Date()
	var born = new Date(inDOB);
	var years = Math.floor((now.getTime() - born.getTime()) / (365 * 24 * 60 * 60 * 1000));
	return(years);
}

function lesserOf(inOne, inTwo){
	var theReturn = (inOne < inTwo) ? inOne: inTwo;
	return (theReturn);
}

function resolveZip(inZipField){
	if(xmlHttp){
		if(inZipField.value.length >= 5){
			var theZip = inZipField.value.substring(0,5);
			inZipField.value = theZip;
			var URL = "zipToLocation.asp?ZipCode=" + theZip;
			xmlHttp.open("GET", URL, true);
			xmlHttp.onreadystatechange = updateZip;
			xmlHttp.send(null);}}}

function updateZip(){
	if(xmlHttp.readyState==4){
		if(xmlHttp.status==200){
			var theResponse = xmlHttp.responseXML.documentElement;
			if((theResponse.getElementsByTagName('City')[0])&&(theResponse.getElementsByTagName('State')[0])){
				var thisCity = theResponse.getElementsByTagName('City')[0].firstChild.data.toLowerCase().toTitleCase();
				document.getElementById("PropCity-field").value = thisCity;
				var thisCounty = theResponse.getElementsByTagName('County')[0].firstChild.data.toLowerCase().toTitleCase();
				document.getElementById("PropCounty-field").value = thisCounty;
				var thisState = theResponse.getElementsByTagName('State')[0].firstChild.data.toUpperCase();
				for(i = 0; i < document.getElementById("PropState-field").options.length; i++){
					if(document.getElementById("PropState-field").options[i].value == thisState){
						document.getElementById("PropState-field").options[i].selected = true;}}
				getHECMMaxAmount(document.getElementById("PropCounty-field"), document.getElementById("PropState-field"));}
		}else{
			alert("Error connecting to resource");}}}

function getHECMMaxAmount(inCountyField, inStateField){
	if(xmlHttp){
		if((inCountyField.value.length >= 2)&&(inStateField.value.length == 2)){
			var inCounty = inCountyField.value;
			var inState = inStateField.value;
			var URL = "getMaxAmount.asp?county=" + inCounty + "&state=" + inState;
			xmlHttp.open("GET", URL, true);
			xmlHttp.onreadystatechange = updateMaxAmount;
			xmlHttp.send(null);}}}

function updateMaxAmount(){
	if(xmlHttp.readyState==4){
		if(xmlHttp.status==200){
			var theResponse = xmlHttp.responseXML.documentElement;
			if(theResponse.getElementsByTagName('maxAmount')[0]){
				var maxAmount = theResponse.getElementsByTagName('maxAmount')[0].firstChild.data;
				if(document.getElementById("PropValue-field").value){
					if(document.getElementById("PropValue-field").value < maxAmount){
							maxAmount = document.getElementById("PropValue-field").value;}
					document.getElementById("maxAmount").value = maxAmount;}}
		}else{
			alert("Error connecting to resource");}}}

function getHECMFactorPoints(inAgeField, inRateField){
	if(xmlHttp){
		if((inAgeField.value.length >= 2)&&(inRateField.value.length > 0)){
			var inAge = inAgeField.value;
			if(inAge >= 62){
				if(inAge > 99)
					inAge = 99;
				var inRate = index + margin;
				if(inRate < minimumFactorRate)
					inRate = minimumFactorRate;
				inRate = inRate * 100;
				var URL = "getFactorPoints.asp?age=" + inAge + "&rate=" + inRate;
				xmlHttp.open("GET", URL, true);
				xmlHttp.onreadystatechange = updateFactorPoints;
				xmlHttp.send(null);
			}}}}

function updateFactorPoints(){
	if(xmlHttp.readyState==4){
		if(xmlHttp.status==200){
			var theResponse = xmlHttp.responseXML.documentElement;
			if((theResponse.getElementsByTagName('factor')[0])&&(theResponse.getElementsByTagName('sharedPoints')[0])){
				var factor = theResponse.getElementsByTagName('factor')[0].firstChild.data;
				document.getElementById("factor").value = factor;
				var sharedPoints = theResponse.getElementsByTagName('sharedPoints')[0].firstChild.data;
				document.getElementById("sharedPoints").value = sharedPoints;}
		}else{
			alert("Error connecting to resource");}}}

function grossBenefit(){
	if((document.getElementById("factor").value != null)&&(document.getElementById("maxAmount").value != null)){
		var thisFactor = document.getElementById("factor").value;
		var thisMaxAmount = document.getElementById("maxAmount").value;
		var thisGrossBenefit = thisFactor * thisMaxAmount;
		return (thisGrossBenefit);
	}else{
		alert("Not enough information provided");
		return 0;}}

function servicingFeeSetAside(){
	var r = (rate + annualMIP)/12;
	var tenure = (100 - document.getElementById('age').value) * 12;
	var x = (1 - Math.pow((1 + r), -(tenure)))/r;
	var theFee = Math.ceil(MonthlyServicingFee * (1 + r) * x);
	alert(theFee);
	return theFee;
}

function getOriginationFee(){
	return document.getElementById("maxAmount").value * origFeePcnt;
}

function getMortgageInsurance(){
	return document.getElementById("maxAmount").value * mortgageInsurancePcnt;
}

function netBenefit(){
	var thisGrossBenefit = grossBenefit();
	if((thisGrossBenefit > 0)&&(document.getElementById("maxAmount").value!=null)){
		var thisMaxAmount = document.getElementById("maxAmount").value;
		var origFee = getOriginationFee();
		var mortInsurance = getMortgageInsurance();
		var thisServiceFeeSetAside = servicingFeeSetAside();
		var theNetBenefit = thisGrossBenefit - origFee - mortInsurance - closingCosts - thisServiceFeeSetAside;
		return theNetBenefit;
		}else{
			return 0;}}

String.prototype.toTitleCase = function(){
	return this.replace(/\b([a-z])/g,function($0){return $0.toUpperCase()});}
	
function onloadScripts(){
	var fieldValue = readCookie("PropValue-field");
	if(fieldValue!=null)
		document.getElementById("PropValue-field").value = fieldValue;
	fieldValue = readCookie("PropZip-field");
	if(fieldValue!=null){
		document.getElementById("PropZip-field").value = fieldValue;
		resolveZip(document.getElementById("PropZip-field"));
	}
	//setTimeout(initOverLabels, 50);
}

function sayTest(){
	var thisGrossbenefit = grossBenefit();
	var thisNetBenefit = netBenefit();
	alert("maxAmount: " + document.getElementById('maxAmount').value + 
		"\nfactor: " + document.getElementById('factor').value + 
		"\nsharedPoints: " + document.getElementById('sharedPoints').value + 
		"\nAge: " + document.getElementById('age').value +
		"\nGross Benefit: " + thisGrossbenefit +
		"\nNet Benefit: " + thisNetBenefit);
	
}