var settings;
$(document).ready(function() { 
	settings = jQuery.extend({
		form: "#loan_calculator",
		loan_amount_min: 1499,
		loan_amount_max: 100000,
		loan_amount_error: "Incorrect loan value",
		loan_amount_default: "Loan Amount ($)",
		loan_term_min: 1,
		loan_term_max: 10,
		loan_term_error: "Incorrect loan term",
		loan_term_default: "Loan Term (yrs)",
		loan_deposit_error: "Incorrect deposit amount (0 - 50000)",
		loan_deposit_default: "Deposit Amount ($)",
		interest_rate_min: 1,
		interest_rate_max: 50,
		interest_rate_error: "Incorrect interest rate",
		interest_rate_default: "Interest Rate (%)",
		loaded: false,
		arr_field_defaults: new Array(),
		arr_field_errors: new Array()
	 }, settings);
	jQuery.checkLoanCalculatorValues( $( this ), settings );
});

jQuery.resetForm = function() {
	$('#loan_calculator input[type=text]').each(function( int_count ) {
		//alert(settings.arr_field_defaults[int_count]);
		if (typeof settings.arr_field_defaults[int_count] !== 'undefined') {
			$(this).val(settings.arr_field_defaults[int_count]);
		}
		$('#monthly_repayments').val('');
	});	
	
}


jQuery.checkLoanCalcFieldValues = function(obj, settings) {
	var str_field_max_value = eval(settings[obj.attr("id") + "_max"]);
	var str_field_min_value = eval(settings[obj.attr("id") + "_min"]);
	var str_field_error_value = settings[obj.attr("id") + "_error"];
	var bln_valid_min = false;
	var bln_valid_max = false;
	var bln_completely_valid = false;

	if (str_field_min_value) {
		if (Number(obj.val()) >= str_field_min_value) {
			bln_valid_min = true;
		}
		else {
			obj.attr({ style: "border: 2px solid red" });
			obj.attr({ value: str_field_error_value });	
		}
	}
		
	if (str_field_max_value) {
		if (Number(obj.attr("value")) <= str_field_max_value) {
			bln_valid_max = true;	
		}
		else {
			obj.attr({ style: "border: 2px solid red" });
			obj.attr({ value: str_field_error_value });
		}
	}
	
	if ((bln_valid_min) && (bln_valid_max)) {
		//Result is within range
		bln_completely_valid = true;
	}
	if (bln_completely_valid) {
		obj.attr({ style: "border: 1px solid white" });  
	}
	
	if (!str_field_max_value  && !str_field_error_value && !str_field_min_value) {
		bln_completely_valid = true;	
	}
	
	return bln_completely_valid;
}

jQuery.stripUnwantedCharacters = function(obj) {
	var tmp_value = obj.attr("value").split('%').join("");
				tmp_value = tmp_value.split('$').join("");     
				tmp_value = tmp_value.split(' ').join("");
				tmp_value = tmp_value.split(',').join("");
				obj.attr({ value: tmp_value });		

}

jQuery.checkLoanCalculatorValues = function(obj, settings) {
	if (settings.loaded == false) {
		settings.loaded = true;
		//First load
		$("#loan-calculator-container").fadeIn(1000);
		
		
		
		$('#loan_deposit').focus(function() {  
			if ($(this).val() == 'Deposit Amount ($)') {
				$(this).val("");	
			}
		});
		$('#loan_deposit').blur(function() {  
			if ($(this).val() == "") {
				$(this).val('Deposit Amount ($)');
			}
		});
		
		$(settings.form).find("input.check_field").each(function( int_count ) {
			$(this).focus(function() {  
				if ($(this).attr("value") != settings.arr_field_defaults[int_count]) {
					//We know the field has a value, now we need to check it's the correct parameters
					var str_error_value = settings[$(this).attr("id") + "_error"];
					if (str_error_value == $(this).attr("value")) {
						$(this).attr({ value: "" });
					}	
				}
				else {
					$(this).attr({ value: "" });
				}
			});
			
			$(this).change(function() {
				jQuery.stripUnwantedCharacters($(this));
			});
			
			$(this).blur(function() {
				if ($(this).val() && ($(this).val() != settings.arr_field_defaults[int_count])) {
					//We know the field has a value, now we need to check it's the correct parameters
					jQuery.checkLoanCalcFieldValues($(this), settings);
				}
				else {
					$(this).attr({ value: settings.arr_field_defaults[int_count] });
				}
			});
		});
	}
}

jQuery.calculatePayment = function() {
	var deposit = 0;
	var princ = $("#loan_amount").attr("value");

	if ($("#loan_deposit").val() != '') {
		var num_search = /^\s*\d+\s*$/;
		if (String($("#loan_deposit").val()).search (num_search) != -1) {
			deposit = $("#loan_deposit").val();
		}
	} 
	
	var final_amount = princ - Number(deposit);
	var intRate = ($("#interest_rate").attr("value") / 100) / 12;
	var months = Number($("#loan_term").attr("value") * 12);
	var formula = Math.round(Math.floor((final_amount*intRate)/(1-Math.pow(1+intRate,(-1*months)))*100)/100);

	if (!isNaN(formula)) {
		$("#monthly_repayments").attr({ 'value' : "$" + formula + " / m"});
	}
	else {
		$("#monthly_repayments").attr({ 'value' : '' });
	}
}


$(document).ready(function() {
	
	$(settings.form).find("input[type=text]").each(function() {
			//set the default field values so know whether they have changed
			//settings.arr_field_defaults[settings.arr_field_defaults.length] = $(this).attr("value");
			settings.arr_field_defaults[settings.arr_field_defaults.length] = settings[$(this).attr("id") + "_default"];
		});
		
	$("#loan_deposit").change(function() {
		jQuery.stripUnwantedCharacters($(this));
	});
	
	$('#loan_submit').click(function( event ) {
		
		event.preventDefault();
		
		var fields_with_errors = 0;
		
		$(settings.form).find("input.check_field").each(function() {
			$(this).attr({ style: "border: 1px solid white" });
				var return_value = jQuery.checkLoanCalcFieldValues( $(this), settings);
			
				if (return_value == false) {
					fields_with_errors++;	
				}
		});
		
		if ($('#loan_deposit').val() == 'Deposit Amount ($)') {
			$('#loan_deposit').val(0);	
		}

		try {
			if(typeof getStockNumberFieldValue == 'function') { 
				$('#finance_bike_stock_number').attr({ 'value' : getStockNumberFieldValue() });
			}
		} catch(e) {}

		if (fields_with_errors == 0) {
			jQuery.calculatePayment();	
		}
		
	});
	
	$("#finance-button-img").click(function() {
		var str_temp_content = "<br>";
		
		if ($("#loan_amount").attr("value") != settings.arr_field_defaults[0]) {
			str_temp_content += "Loan Amount: $" + $("#loan_amount").attr("value") + "<br>";
		}
		else {
			str_temp_content += "Loan Amount: Not entered<br>";
		}
		
		if ($("#loan_term").attr("value") != settings.arr_field_defaults[1]) {
			str_temp_content += "Loan Term: " + $("#loan_term").attr("value") + " yrs<br>";
		}
		else {
			str_temp_content += "Loan Term: Not entered<br>";
		}
		
		if ($("#interest_rate").attr("value") != settings.arr_field_defaults[2]) {
			str_temp_content += "Interest Rate: " + $("#interest_rate").attr("value") + "%<br>";
		}
		else {
			str_temp_content += "Interest Rate: Not entered<br>";
		}  
		if ($("#loan_deposit").attr("value") != settings.arr_field_defaults[3]) {
			str_temp_content += "Loan Deposit: $" + $("#loan_deposit").attr("value") + "<br>";
		}
		else {
			str_temp_content += "Loan Deposit: Not entered<br>";
		}
		if ($("#finance_bike_stock_number").val()) {
			str_temp_content += "Bike stock number: " + $("#finance_bike_stock_number").val() + "<br>";
		} else {
			str_temp_content += "Bike stock number: Not known<br>";
		}
		
		str_temp_content += "Monthly Repayments: " + $("#monthly_repayments").attr("value") + "<br>";
		
		$("#str_finance_information").attr({ value: str_temp_content });
		
		submitFormData = function() {
			if ($("#str_finance_information").val()) {
				$(settings.form).submit();
			}
		}
		tmp = setInterval("submitFormData()",500);    
	});
});
