function isNumeric(val) {
    var numb = '0123456789';
    for (i=0; i<val.length; i++) {
        if (numb.indexOf(val.charAt(i),0) == -1) return false;
    }
    return true;
}
 
function calc(form) {
        
    if (true) {
 
        /* Get Input fields */
		var purchase = form.ipurchase.value;  
 
		var mortgage = form.imortgage.value;  
 
		var property =  form.iproperty.selectedIndex;  
 
		var firsttime =  form.ifirsttime.selectedIndex;  
 
		var type =  form.itype.selectedIndex;  
 
		var years = form.iyears.value;    
 
		var annualinterest = form.iinterest.value;  
		if (annualinterest > 1) {annualinterest /= 100};
		var monthlyinterest = annualinterest / 12;   
		var quarterlyinterest = annualinterest / 4;   
 
		var calculate =  form.icalculate.selectedIndex;  
 
		var booking = form.ibooking.value;  
		var advocatebank = form.iadvocatebank.value;  
 
		//Calculate 4 fields
 
		if (property == 0) {    
			//Scenario 1 - Share Transfer
			
            advocateclient = (purchase * 0.01) + 5;
			search = 0;
			dutypurchase = 0;
			dutyborrow = 0;
		} else {  
			if (firsttime == 0) {           
				// Scenario 2 - Freehold - Firsttime Buyer
				
                if(purchase <= 225000) {advocateclient = (purchase * 0.005) + 5}
                else {advocateclient = (purchase * 0.01) + 5};
				
                if(purchase <= 225000) {search = 200}
                else {search = 0};
 
                if (purchase <= 250000) {
                    if (purchase <= 150000) {dutypurchase = 200}
                    else {
                        if (purchase <= 175000) {dutypurchase = ((purchase - 50000) * 0.0025) + 112.50}
                        else {
                            if (purchase <= 200000) {dutypurchase = ((purchase - 50000) * 0.005) + 175}
                            else {dutypurchase = ((purchase - 50000) * 0.0075) + 237.50}
                        }
                    }
                } else {
                    if (purchase <= 300000) {dutypurchase = ((purchase - 50000) * 0.015) + 300}
                    else {
                        if (purchase <= 500000) {dutypurchase = ((purchase - 300000) * 0.02) + 4050}
                        else {
                            if (purchase <= 700000) {dutypurchase = ((purchase - 500000) * 0.025) + 8050}
                            else {dutypurchase = ((purchase - 700000) * 0.03) + 13050}
                        }
                    }
                }
 
                
                if (purchase <= 250000) {
                    if (purchase <= 150000) {dutyborrow = 75}
                    else {
                        if (purchase <= 175000) {dutyborrow = (mortgage * 0.00125) + 50}
                        else {
                            if (purchase <= 200000) {dutyborrow = (mortgage * 0.0025) + 50}
                            else {dutyborrow = (mortgage * 0.00375) + 50}
                        }
                    }
                } else {dutyborrow = (mortgage * 0.005) + 50};
			} else {      
                // Scenario 3 - Freehold - NOT Firsttime Buyer
				
                advocateclient = (purchase * 0.01) + 5;
				
                search = 0;
                
                if (purchase <= 50000) {dutypurchase = (purchase * 0.005) + 50}
                else {
                    if (purchase <= 300000) {dutypurchase = ((purchase - 50000) * 0.015) + 300}
                    else {
                        if (purchase <= 500000) {dutypurchase = ((purchase - 300000) * 0.02) + 4050}
                        else {
                            if (purchase <= 700000) {dutypurchase = ((purchase - 500000) * 0.025) + 8050}
                            else {dutypurchase = ((purchase - 700000) * 0.03) + 13050}
                        }
                    }
                };
 
                dutyborrow = (mortgage * 0.005) + 50;
			}
		}
 
    	// Survey costs
 
		if (purchase <= 300000) {    
			if (purchase <= 100000) {survey = 150;}
			else {survey = purchase * 0.0015;}
		} else {  
			if (purchase <= 600000) {
    			if (purchase <= 360000) {survey = 450;}
    			else {survey = purchase * 0.00125;}
			} else {  
    			if (purchase <= 750000) {survey = 750;}
    			else {survey = purchase * 0.001;}
			}
		}
 
 
        totalinput = (booking * 1) + (advocatebank * 1);
        totalcalc = advocateclient + search + dutypurchase + dutyborrow + survey;
		totalpay = totalinput  + totalcalc;
 
        //Calculate Interest
 
		var basem = 1;
		var baseq = 1;
		var basea = 1;
		var mbase = 1 + monthlyinterest;
		var qbase = 1 + quarterlyinterest;
		var ybase = 1 + annualinterest;
		  
		for (i=0; i<years * 12; i++) {basem = basem * mbase;}
		
        for (i=0; i<years * 4; i++) {baseq = baseq * qbase;}
 
		for (i=0; i<years; i++) {basea = basea * ybase;}
		    
		if (type == 0) {    
            //Repayment
			if (calculate == 0) {           
				// Monthly interest
				var monthlypayment = (mortgage * monthlyinterest / ( 1 - (1/basem)));
			}
			else {
                if (calculate == 1) {
				// Quarterly interest 
				var monthlypayment = ((mortgage * monthlyinterest*4 / ( 1 - (1/baseq))/4));
                }
                else {
				    // Annual interest 
				    var monthlypayment = ((mortgage * monthlyinterest*12 / ( 1 - (1/basea))/12));
                }
			}
		}
		else {  
			//Interest only 
			var monthlypayment = (mortgage * monthlyinterest);
		}
 
        //Display on screen
 
        //var search = (purchase<30000)?150:0;
		form.iinterest.value = floor(form.iinterest.value);
		
        form.cadvocateclient.value = floor(advocateclient);
		form.csearch.value = floor(search);
		form.cdutypurchase.value = floor(dutypurchase);
		form.cdutyborrow.value = floor(dutyborrow);
		form.csurvey.value = floor(survey);
		form.ctotalfee.value = floor(totalpay);
 
        if (monthlypayment && isNumeric(monthlypayment)) {
            form.cmonthly.value = floor(monthlypayment);
        }
    } else {
        form.cadvocateclient.value = "0";
		form.csearch.value = "0";
		form.cdutypurchase.value = "0";
		form.cdutyborrow.value = "0";
		form.csurvey.value = 0;
		form.ctotalfee.value = "0";
 
		form.cmonthly.value = "0";
		form.ctotalmortgage.value = "0";
    }
}
 
 
function formvalid() {
	if (form.ipurchase.value == "") {
		alert("Please enter a purchase amount.");
		form.ipurchase.focus();
		return false;
	}
	if (isNaN(form.ipurchase.value) || form.ipurchase.value < 0 || form.ipurchase.value > 99999999) {
		alert("Please enter a valid purchase amount (1 to 99999999).");
		form.ipurchase.focus();
		return false;
	}
	if (form.imortgage.value == "") {
		alert("Please enter a mortgage amount.");
		form.imortgage.focus();
		return false;
	}
	if (isNaN(form.imortgage.value) || form.imortgage.value < 0 || form.imortgage.value > 99999999) {
		alert("Please enter a valid mortgage amount (1 to 99999999).");
		form.imortgage.focus();
		return false;
	}
 
	if (form.iyears.value == "") {
		alert("Please enter a duration.");
		form.iyears.focus();
		return false;
	}
	if (isNaN(form.iyears.value) || form.iyears.value < 0 || form.iyears.value > 99) {
		alert("Please enter a valid duration (1 to 99).");
		form.iyears.focus();
		return false;
	}
 
	if (form.iinterest.value == "") {
		alert("Please enter an interest rate.");
		form.iinterest.focus();
		return false;
	}
	if (isNaN(form.iinterest.value) || form.iinterest.value < 0 || form.iinterest.value > 100) {
		alert("Please enter a valid interest rate (0.01 to 100.00).");
		form.iinterest.focus();
		return false;
	}
 
	if (form.ibooking.value == "") {
		alert("Please enter a facility booking fee.");
		form.ibooking.focus();
		return false;
	}
	if (isNaN(form.ibooking.value) || form.ibooking.value < 0 || form.ibooking.value > 99999999) {
		alert("Please enter a valid facility booking fee (0 to 99999999).");
		form.ibooking.focus();
		return false;
	}
 
	if (form.iadvocatebank.value == "") {
		alert("Please enter a bank's advocate fee.");
		form.iadvocatebank.focus();
		return false;
	}
	if (isNaN(form.iadvocatebank.value) || form.iadvocatebank.value < 0 || form.iadvocatebank.value > 99999999) {
		alert("Please enter a valid bank's advocate fee (0 to 99999999).");
		form.iadvocatebank.focus();
		return false;
	}
 
	if (form.ipurchase.value == 0 || form.imortgage.value == 0 || form.iyears.value == 0 || form.iinterest.value == 0) {
		return false;
	}
 
	return true;
}
 
 
function resetform(form) { 
    form.ipurchase.value = "0";
    form.imortgage.value = "0";
    form.iproperty.value = "s";
    form.ifirsttime.value = "y";
    form.itype.value = "r";
    form.iyears.value = "0";
    form.iinterest.value = "0";
    form.icalculate.value = "m";
    form.cadvocateclient.value = "0";
    form.csearch.value = "0";
    form.cdutypurchase.value = "0";
    form.cdutyborrow.value = "0";
    form.csurvey.value = "0";
    form.ibooking.value = "0";
    form.iadvocatebank.value = "0";
    form.ctotalfee.value = "0";
 
    form.cmonthly.value = "0";
}
 
 
function floor(number) {
  return Math.floor(number*100)/100;
}

