var ani_to, saved_amount = "";

jQuery(function($) {
	//Der Rechner muss auch angezeigt werden!
	$("form.step1").fadeIn();
	
	var t = "";
	
	//Plugins initalisieren
	initAll();
	
	//Schöneres Format für die Zahlen
	$("input.amount").number_format();
	
	
	// Wenn Browser sich was merken, dann macht das immer wieder Problemchen. Deshalb: RESET
	// Aber wenn ein Location.hash angegeben ist, dann sollten wir schon darauf reagieren!
	if(location.hash) {
	  n = location.hash.substr(1);
	  //Feld markieren
	  $("form.step1 label."+n+" input").attr("checked", "checked");
	  //Plan laden
	  //get_form(n);
	}
	else {
	  $("form").resetForm();
	}
	
	/*
	 *	Erstes Formular - Auswahl des Plans
	 */
	$("form.step1 label").click(function() {
		n = $("input", this).fieldValue()[0];
		
		$("form.step1-1").resetForm();
		$(".kvz").hide().resetForm();
		$(".plan").hide().resetForm().filter("."+n).show(1, function() {
			$(":input:first", this).focus();
		});
		
		empty_results();
	});
	
	/*
	 *	Erstes Unterformular - Auswahl von mit oder ohne KVZ
	 */
	$("form.step1-1 input").livequery('click', function() {
		v = $(this).fieldValue();
		n = $(this).attr("name");
		
		empty_results();
				
		$("#plan-container form."+n).hide().resetForm();
		$("#plan-container form."+n+v).show(1, function() {
			$(":input:first", this).focus();
			if(saved_amount) {
				$("input[name=amount]", this).val(saved_amount);
			}
		});
	});
	
	/*
	 *	Zweites Unterformular - Berechnen der Auszahldauer oder regelmäßiger Azb
	 */
	$("form.step1-2 input").livequery('click', function() {
		empty_results();
		//Formular anzeigen
		$("form.step2", $(this).parents("div.plan")).hide().resetForm().filter("."+$(this).fieldValue()[0]).show(1, function() {
			$(":input:first", this).focus();
			if(saved_amount)
				$("input[name=amount]", this).val(saved_amount);
		});
		
	});
	
	/*
	 *	Zweites Formular - Daten des eingegebenen Plans
	 *	Entweder Druck oder Abschicken
	 */
	$("form.step2 .submit input[type=button]").livequery("click", function() {
		
		doit = $(this).attr("rel");
		form = $(this).parents("form");
		
		switch(doit) {
			case "submit":
				empty_results();
				
				if(!validInput(form)) {
					return false;
				}
				
				$.ajax({
					url: $("div.plan:visible form.step2:visible").attr("action"),
					data: $("div.plan:visible form.step2:visible").serialize(),
					dataType: "html",
					cache: false,
					
					success: function(html) {
						r = html.split("---===TRENNLINIE===---");
						a = $("#response-container").html(r[0]).find("span").text();
						amount = a.substr(0, a.length-1);
						if(r[1]) {
							show_flash_diagramm(r[1], r[2]);
						}
						$("#loading").fadeOut();
					},
					error: function() {
						$("#loading").fadeOut();
						show_error("Fehler bei der Daten&uuml;bertragung. Bitte versuchen Sie es erneut.");
					},
					
					beforeSend: function() {
						$("#loading").fadeIn();
					}
					
				});
				break;
			
			case "print":
				//printcss laden
				$.get("fileadmin/template/css/renditerechner-print.css", function(css) {
					$("head").append("<style id='printstyle'>"+css+"</style>");
					$("#middle").prepend("<span class='logo degi'><img src='fileadmin/renditerechner/img/degi.jpg'></span><span class='logo aberdeen'><img src='fileadmin/renditerechner/img/aberdeen.jpg'></span><input type='button' value='Zur&uuml;ck' onClick='remove_print_style(this)' class='back'>");
				});
				//window.print();
				break;
			
			default:
				alert("Die Aktion "+doit+" wurde noch nicht definiert!");
		}
		
		return false;
		
	});
	
	
	/*
	 *	Mr. Applegate, können Sie uns da vielleicht weiterhelfen?
	 *	Tut mir leid, Justus. Ich finde ja gerade mal den Knopf um den Computer hochzufahren.
	 *
	 *	Plus-Minus-Knöpfe (PMK)
	 */
	$(".actions a").livequery("click", function() {
		
		$(this).blur();
		input = $(this).parents(".ausgabeaufschlag-ja").find("."+$(this).attr("rel"));
		i = parseFloat($(input).val().replace(/,/, "."));
		
		if($(this).hasClass("plus")) {
			if($(input).attr("max") > i)
				i = i + 0.1;
		}
		else if($(this).hasClass("minus")) {
			if($(input).attr("min") < i)
				i = i - 0.1;
		}
		
		$(input).attr("value", String(i.toFixed(2)).replace(/\./, ","));
		return false;
	});
	
	/*
	 *	Anzahl der auswählbaren Monate abhängig von der Frequenz
	 */
	/*$("#select-frequency").change(function() {
		new_frequency = $(this).val();
		form = $(this).parents("form");
		
		if($("select.active").length > 0) {
			$("select[name=months]", form).filter(".active").remove().end().show();
		}
		
		$("select[name=months]", form)
			.clone().hide().insertBefore("select[name=months]").end().addClass("active")
			.find("option").filter(function(i) { return i%new_frequency == 0 ? false : true; }).remove();
	});*/
	$(".frequency").change(function() {
		new_frequency = $(this).val();
		form = $(this).parents("form:first");
		
		if($("select.months.active", form).length > 0) {
			$("select.months", form).filter(".active").remove().end().show();
		}
		
		$("select.months", form)
			.clone().hide().insertBefore(".plan:visible select.months").end().addClass("active")
			.find("option").filter(function(i) { return i%new_frequency == 0 ? false : true; }).remove();
	});
	
	
	/*
	 *	Funktion um versteckte Felder einzublenden
	 *	Für Radiobuttons
	 */
	$("input.ausgabeaufschlag").livequery("click", function() {
		
		if($(this).fieldValue()[0] == 1) {
			$(this).parents("td").find(".toggle").fadeIn(function() {
				$("input", this).focus();
			});
		}
		else {
			$(this).parents("td").find(".toggle").fadeOut();
		}
	});
	
});


function validInput(form) {
	var valid = true;
	
	//Anlagen größer als Null?
	$("input.amount").each(function() {
		if($(this).val() <= 0) {
			show_error("Bitte geben Sie Ihren Wunschbetrag ein.");
			$(this).focus();
			valid = false;
			return false;
		}
	});
	
	//Anlage größer als regelmäßige Auszahlung?
	if($("input[name=cpi_amount]", form).length > 0) {
		//console.log(get_number($("input[name=cpi_amount]", form).val())+" > "+get_number($("input[name=amount]", form).val()));
		if(get_number($("input[name=cpi_amount]", form).val()) > get_number($("input[name=amount]", form).val())) {
			valid = false;
			show_error("Der regelm&auml;&szlig;ige Auszahlungsbetrag &uuml;bersteigt den Anlagebetrag. Bitte geben Sie einen h&ouml;heren Betrag ein.");
			$("input[name=amount]", form).focus();
		}
	}
	
	//Sind Ober- oder Untergrenzen angegeben?
	if($("input[max], input[min]", form).length > 0) {
		$("input[max], input[min]", form).each(function() {
			val = get_number($(this).val());
			max = $(this).attr("max");
			min = $(this).attr("min");
			
			//Obergrenze
			if(max && max < val) {
				valid = false;
				show_error("Bitte geben Sie einen Betrag kleiner als "+max+" ein.");
			}
			
			//Untergrenze
			if(min && min > val) {
				valid = false;
				show_error("Bitte geben Sie einen Betrag gr&ouml;&szlig;er als "+min+" ein.");
			}
			
			//Schleife abbrechen
			if(!valid) {
				$(this).focus();
				return false;
			}
			
		});
	}
	
	return valid;
}


function initAll() {
	initTooltips();
}


function initTooltips() {
	//Tooltip - eigene Entwicklung
	$("a.tooltip").each(function() {
		$(this).next(".tooltip-text").css({marginLeft: "400px"}).hide();
	});
	$("a.tooltip").mouseover(function() {
		$(this).next(".tooltip-text").css({marginLeft: $(this).parent().width()})	
			//.stop().animate({opacity: 1}, "fast");  	//leider macht der IE das nicht mit wegen transparenten PNGs. Blöde Sau.
			.show();
	});
	$("a.tooltip").mouseout(function() {
		$(this).next(".tooltip-text")	//.stop().animate({opacity: 0}, "fast");	//s.o.
			.hide();
	});
	$("a.tooltip").click(function() {
		return false;
	});
}

function empty_results() {
	$("#flashline, #response-container").html("");
	$("#loading:visible").css("display", "none");
}

function show_flash_diagramm(data, settings) {
	/*
	 *	Darstellung des Flashdiagramms
	 */
	$("#flashline").html("").flash({
		src: "fileadmin/renditerechner/flash/amline/amline.swf",
		width: 600,
		height: 350,
		allowscriptaccess: "sameDomain",
		//base: "http://localhost/faf/degi/Backup running-site/",
		base: "http://www.aberdeen-immobilien.de/",
		flashvars: {
			path: "fileadmin/renditerechner/flash/",
			chart_data: data,
			settings_file: "fileadmin/renditerechner/flash/amline_settings2.xml",
			additional_chart_settings: settings
		}
	}).prepend("<div class='desc'>Sie m&ouml;chten Ihr Anlageergebnis in einen Auszahlplan &uuml;bernehmen? Klicken Sie hier: <input type='button' value='&Uuml;bernehmen' onClick=\"show_auszahlplan('"+amount+"')\"'></div>");
}

function remove_print_style(btn) {
	$(btn).fadeOut(function() {
		$("#printstyle, span.logo").remove();
	});
}

function show_auszahlplan(amount) {
	saved_amount = amount;
	empty_results();
	$("#plan-type3").trigger("click");
	$(".plan").hide().filter(".auszahlplan").show(1, function() {
		$(":input:first", this).focus();
	});
}

function show_error(html) {
	$("#response-container").hide().html("<div style='background:red; font-weight:bold;'>"+html+"</div>").fadeIn();
}

function get_number(i) {
	if(!i)
		return 0;
	r = i.replace(/\./, "");
	r = r.replace(/,/, ".");
	return parseInt(r);
}


function createTest() {
	var label = prompt('Bitte geben Sie einen Titel ein:', $('form h3:first').text());
	var assert = prompt('Bitte geben Sie das erwartete Ergebnis ein: ', '0,00');
	var request = '';
	$('.plan:visible form:visible :input', '.content').each(function() {
		if($(this).attr('name')) {
			if($(this).is('[type=radio]')) {
				if($(this).is(':checked')) {
					request+= $(this).attr('name').replace('-', '')+':"'+$(this).attr('value')+'",';
				}
			}
			else {
				request+= $(this).attr('name').replace('-', '')+':"'+$(this).attr('value')+'",';
			}
		}
	});
	
	var test = '{label: {value: "'+label+'"},';
	test+= 'request:{'+request.substr(0, request.length-1)+'},';
	test+= 'assertResponse:{value:"'+assert+'"}},';
	
	$('div.test').append('<p style="margin:5px; background:silver">'+test+'</p>');
}

