/*! PIE Calculator v1 <http://nvinteractive.co.nz>
	Copyright (c) NV Interactive
	
	References:
		jquery-1.2.6.js
		
	Release Notes:

		
*/

/* [ Ad declarations ] */
/* Only one replace will occur per page, order is important. */


pie_calculator = function(){
	
	var init = function(){
		
		$("#call_term_select").bind("change", update_investment_types);
		
		$("#investment_type_1").bind("change", clear_ratefield_nonpie);
		$("#investment_type_2").bind("change", clear_ratefield_pie);
		$("#interest_rate").bind("keyup", update_both_fields);
		
		$(".pie :input").bind("change", update);
		$(".pie :input").bind("change", update);
		$(".non :input").bind("change", update);

		
		update_both_fields();
		update();
		
	}

	
	var update = function(evt){
		
		var ir = $("#interest_rate").attr("value").replace(/[^0-9.]/g, "");
		$("#interest_rate").attr("value", ir);
		
		var initial = $("#initial_investment").attr("value");
		
		initial = initial.replace(/[^0-9.]/g, "");
		$("#initial_investment").attr("value", initial);
		
		
		var rwt = $("#RWT").attr("value") / 100;
		var pir = $("#PIR").attr("value") / 100;
		//var rate = $("#interest_rate").attr("value") / 100;	
		
		var rate_type_1 = $("#investment_type_1").attr("value");		
		var rate_type_2 = $("#investment_type_2").attr("value");
		
		var rate_1 = get_rate(rate_type_1) / 100;
		var rate_2 = get_rate(rate_type_2) / 100;
		//alert(rate_1);
		//alert(rate_2);
		
		/* Option 1 */
		var type_1 = $("#investment_type_1").attr("value");		
		var result_1 = calculate(initial, rwt, pir, rate_1, type_1);
		var currency_result_1 = result_1.value;
		
		$("#result_value_1").html( formatCurrency(result_1.value) );
		$("#result_tax_1").html( formatCurrency(result_1.tax) );
		$("#result_interest_1").html( formatCurrency(result_1.interest) );		
		
		/* Option 2 */
		var type_2 = $("#investment_type_2").attr("value");		
		var result_2 = calculate(initial, rwt, pir, rate_2, type_2);
		
		var currency_result_2 = result_2.value;
		var final_result = formatCurrency((currency_result_2 - currency_result_1));
		
		$("#result_value_2").html( formatCurrency(result_2.value) );
		$("#result_tax_2").html(formatCurrency(result_2.tax) );
		$("#result_interest_2").html( formatCurrency(result_2.interest) );
		
		/* Savings Calculations */
		var tax_saving = result_1.tax - result_2.tax;
		if((currency_result_2 - currency_result_1) > 0){
			final_result = "+ " + final_result;
			//alert('this');
		}
		
		// $("#result_tax_saving").html( formatCurrency( tax_saving ) );
		$("#result_tax_saving").html( final_result );
		
		var percent_less_tax_original = (100 * tax_saving / result_1.tax);
		var percent_less_tax_2dec = Math.round(percent_less_tax_original * 100) / 100;
		$("#result_percentage_less_tax").html( percent_less_tax_2dec + "%" );
		
		var non_PIE_return = 100 * rate_1 * ( ( 1 - pir ) / (1 - rwt) )
		var non_PIE_return_2dec = Math.round(non_PIE_return * 100) / 100;
		$("#result_non_PIE_return").html( non_PIE_return_2dec + "%" )
		
	}
	
	var calculate = function(initial, rwt, pir, rate, type){
		
		var result = {}
		
		switch(type){
			case "term":
				result.value = initial * Math.pow( 1 + (rate / 4) * (1 - rwt), 4)
				result.tax = (result.value - initial) * (rwt / (1-rwt) )
				break;
			case "pie_term":
				result.value = initial * Math.pow( 1 + (rate / 4) * (1 - pir), 4)
				result.tax = (result.value - initial) * (pir / (1-pir) )				
				break;
			case "call":
				result.value = initial * Math.pow( 1 + (rate / 12) * (1 - rwt), 12)
				result.tax = (result.value - initial) * (rwt / (1-rwt) )				
				break;
			case "pie_call":
				result.value = initial * Math.pow( 1 + (rate / 12) * (1 - pir), 12)
				result.tax = (result.value - initial) * (pir / (1-pir) )				
				break;
		}
		
		result.interest = result.value - initial - result.tax;
		
		return result;
	}
	
	function update_investment_types(evt){
	 		if($('#call_term_select').attr('value') == "term"){
				$("#pie_term").attr("selected", "selected");
				$("#non_term").attr("selected", "selected");
				$("#interest_rate").attr("value" ,6.50);
			}else{
				$("#pie_call").attr("selected", "selected");
				$("#non_call").attr("selected", "selected");
				$("#interest_rate").attr("value" ,"5.00");
			}
			
			clear_rate_fields();
						
	}
	
	function clear_rate_fields(){
		clear_ratefield_nonpie();
		clear_ratefield_pie();
	}
	
	function clear_ratefield_pie(){
		$('#interest_rate_pie').attr('value',"");
	}
	
	function clear_ratefield_nonpie(){
		$('#interest_rate_nonpie').attr('value',"");
	}
	
	function get_rate(rate){
		var return_rate;
		switch(rate){
			case "pie_call":
				non_rate = $("#interest_rate_pie").attr("value");
				if(non_rate != "" || non_rate == 5.00){
					return_rate =  non_rate;
				}else{
					 return_rate = 5.00;
					 $("#interest_rate_pie").attr("value" , "5.00");
				}
			return return_rate;
			break;
			
			case "pie_term":
				non_rate = $("#interest_rate_pie").attr("value");
				if(non_rate != "" || non_rate == "6.25"){
					return_rate = non_rate;
				}else{
					 return_rate = 6.25;
					 $("#interest_rate_pie").attr("value" , "6.25");
				}
			return return_rate;
			break;			
			
			case "call":
				non_rate = $("#interest_rate_nonpie").attr("value");
				if(non_rate != "" || non_rate == "4.50"){
					return_rate = non_rate;
				}else{
					if($("#initial_investment").attr("value") > 50000){
						return_rate = 4.50;
						$("#interest_rate_nonpie").attr("value" , "4.50");
					}else{
						 return_rate = 4.50;
						 $("#interest_rate_nonpie").attr("value" , "4.50");
					}
				}
			return return_rate;
			break;
			
			
			case "term":
				non_rate = $("#interest_rate_nonpie").attr("value");
				if(non_rate != "" || non_rate == "6.75"){
					return_rate = non_rate;
				}else{
					return_rate =  6.75;
					$("#interest_rate_nonpie").attr("value" , "6.75");
				}
			return return_rate;
			break;
		}
	}
	
	function check_rate_input(type){
		if(type == "non"){
			non_rate = $("#interest_rate_pie").attr("value");
			if(non_rate != ""){
				return non_rate;
			}else{
				return false;
			}
			
		}
	}
	
	
	function update_both_fields(){
		var top_rate = $('#interest_rate').attr("value");
		$("#interest_rate_pie").attr("value", top_rate);		
		$("#interest_rate_nonpie").attr("value" ,top_rate);
	}
	
	var formatCurrency = function(num) {
		num = num.toString().replace(/\$|\,/g,'');
		if(isNaN(num))
		num = "0";
		sign = (num == (num = Math.abs(num)));
		num = Math.floor(num*100+0.50000000001);
		cents = num%100;
		num = Math.floor(num/100).toString();
		if(cents<10)
		cents = "0" + cents;
		for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
		num = num.substring(0,num.length-(4*i+3))+','+
		num.substring(num.length-(4*i+3));
		return (((sign)?'':'- ') + '$' + num + '.' + cents);
	}	
	
	return {
	/* Public API
	*/
	init: init
	}
		
}();

$(document).ready(pie_calculator.init);