/**
 * Proprietary JS for a very specialised bundle of forms
 *
 * @since 25.09.2007
 * @version 0.1
 * @author D.Fettel <fettel@navigate.de>
 */

var kred = {
	/**
	 * Section: Initialising
	 */
	sections : Array(),
	buttons : Array(),
	specialChecks : Array(),
	darlehen : Array("Beamtendarlehen","Festkredit","Ratenkredit","Annuit_tendarlehen"),
	curSection : 0,
	init : function() {

		kred.buttons = $('kredRoot').getElementsByTagName("BUTTON");
		j=0;
		for(var i=0;i<kred.buttons.length;i++) {
			if(!kred.buttons[i].className.match("left")) {
				kred.buttons[i].id = "button"+j.toString();
				Event.observe(kred.buttons[i],"click",kred.nextButtonClick);
				j++;
			}
		}

		kred.specialChecks["rentenversicherung"] = kred.rentenversicherungSpecialCheck;
		kred.sections.push($('kred01'));
		kred.sections.push($('kred02'));
		kred.sections.push($('kred03'));
		kred.sections.push($('kred04'));
		kred.sections.push($('kred05'));
		kred.changeDarlehensart($('kred01_Darlehensart'));
		kred.checkKreditart();
		kred.setScreen();


	},
	checkKreditart : function() {
		var val = $('kred01_Darlehensart').options[$('kred01_Darlehensart').selectedIndex].value;
		if(val == "Ratenkredit" || val=="Festkredit" || val.match(/Annuit/) ) $('Rentenversicherung').hide();
		else $('Rentenversicherung').show();
	},
	/**
	 * Section: GUI Handlers for special Elements
	 */
	changeDarlehensart : function (element) {
		var id = kred._propperName(element.options[element.selectedIndex].value);
		$(id).style.display = "block";
		for(var i=0;i<kred.darlehen.length;i++) {
			if(kred.darlehen[i] != id) $(kred.darlehen[i]).style.display = "none";
		}
		kred.checkKreditart();
	},
	titelClick : function() {
		if($('hasTitle').checked) {
			kred._showAElement($('titel'));
		} else {
			kred._hideAElement($('titel'));
		}
	},
	buergeClick : function() {
		if($('buerge_y').checked) {
			if($('buergePersonalia').style.display=="none") {
				//new Effect.toggle('buerge','BLIND',{duration: 0.4});
				$('buergePersonalia').style.display = "block";
			}
		}
		if($('buerge_n').checked) {
			if($('buergePersonalia').style.display != "none") {
				//new Effect.toggle('buerge','BLIND',{duration: 0.4});
				$('buergePersonalia').style.display = "none";
			}
		}
	},
	Kreditverbindlichkeiten_change : function(select, no) {
		var value = select.options[select.selectedIndex].value;
		var betrage = select.parentNode.getElementsByTagName("DIV")[1];
		if(value.match("Keine")) {
			betrage.style.display = "none";
			for(var i=(no+1);i<9;i++) {
				$('section_Kreditverbindlichkeiten'+(i)).style.display = "none";
			}
		} else {
			betrage.style.display = "block";
			if(no < 8) {
				$('section_Kreditverbindlichkeiten'+(no+1)).style.display = "block";
			}
		}
		if(value.match("Sonstiges")) {
			select.parentNode.getElementsByTagName("DIV")[0].style.display = "block";
		} else {
			select.parentNode.getElementsByTagName("DIV")[0].style.display = "none";
		}
	},
	Burgschaftsverpflichtungen_click : function() {
		if($('Burgschaftsverpflichtungen_y').checked) {
			$('Burgschaftsverpflichtungen_betrage').style.display = "block";
		}
		if($('Burgschaftsverpflichtungen_n').checked) {
			$('Burgschaftsverpflichtungen_betrage').style.display = "none";
		}
	},
	Gehaltsabtretungen_click : function() {
		if($('Gehaltsabtretungen_y').checked) {
			$('Gehaltsabtretungen_betrage').style.display = "block";
		}
		if($('Gehaltsabtretungen_n').checked) {
			$('Gehaltsabtretungen_betrage').style.display = "none";
		}
	},
	grundbesitz_click : function() {
		if($('grundbesitz_y').checked) {
			$('grundbesitz1').style.display = "block";
			$('grundbesitz2').style.display = "none";
			$('WeitererGrundbesitz0').style.display = "block";
			var select = $('grundbesitz1').getElementsByTagName("SELECT")[0];
			var value = select.options[select.selectedIndex].value;
			if(value.match("Sonstige")) {
				$('grundbesitz1_sonstige').style.display = "block";
			} else {
				$('grundbesitz1_sonstige').style.display = "none";
			}
		}
		if($('grundbesitz_n').checked) {
			$('grundbesitz1').style.display = "none";
			$('grundbesitz2').style.display = "block";
			$('grundbesitz1_sonstige').style.display = "none";
			kred.HideWeitererGrundbesitz(0);
		}
	},
	grundbesitz_change : function(select) {
		var value = select.options[select.selectedIndex].value;
		if(value.match("Sonstige")) {
			select.parentNode.getElementsByTagName("DIV")[0].style.display = "block";
		} else {
			select.parentNode.getElementsByTagName("DIV")[0].style.display = "none";
		}
	},
	WeitererGrundbesitz_change : function(select, no) {
		var value = select.options[select.selectedIndex].value;
		if(value.match("Sonstige")) {
			select.parentNode.getElementsByTagName("DIV")[0].style.display = "block";
		} else {
			select.parentNode.getElementsByTagName("DIV")[0].style.display = "none";
		}
		if(!value.match("Nein")) {
			select.parentNode.getElementsByTagName("DIV")[1].style.display = "block";
			if(no < 3) {
				$('WeitererGrundbesitz'+(no+1)).style.display = "block";
			}
		} else {
			kred.HideWeitererGrundbesitz(no+1);
			select.parentNode.getElementsByTagName("DIV")[1].style.display = "none";
		}
	},
	HideWeitererGrundbesitz : function (from) {
		for(var i=from;i<4;i++) {
			$('WeitererGrundbesitz'+(i)).style.display = "none";
		}
	},
	/**
	 * Section: Checking and Error-Handling
	 */
	currentSectionHasErrors : function() {
		var errors = false;
		var fieldsets = kred.sections[kred.curSection].getElementsByTagName("FIELDSET");
		for(var i=0;i<fieldsets.length;i++) {
			if(kred.fieldsetHasError(fieldsets[i])) {
				errors = true;
			}
		}
		return errors;
	},
	fieldsetHasError : function (fieldset) {
		var hasError = false;
		if(fieldset.style.display != "none" && fieldset.parentNode.style.display != "none") {
			var inputs = fieldset.getElementsByTagName("INPUT");
			for(var i=0;i<inputs.length;i++) {
				if(kred.inputInFieldsetHasError(inputs[i])) {
					hasError = true;
					inputs[i].focus();
				}
			}
			if(hasError) {
				fieldset.className += " error";
			} else {
				fieldset.className = fieldset.className.replace(" error","");
			}
		}
		return hasError;
	},
	inputInFieldsetHasError : function(input) {
		if(input.accept == "" || input.parentNode.style.display == "none" ) return false;
		else {
			switch(input.accept) {
				case "rentenversicherung":
					var dlw = kred._floatVal($('inputDarlehenswunsch').value);
					var rvs = kred._floatVal($('rentenversicherung').value);
					if(rvs < dlw) return true;
				case "money":
					var check = /^[0-9]+,?|.?[0-9]{2}?$/;
					break;
				case "year":
					var check = /^[0-9]{4}$/;
					break;
				case "money":
					var check = /^([0-9]+)(,|.)?([0-9]{1,2})?$/;
					break;
				case "num":
					var check = /^[0-9]+$/;
					break;
				case "email":
					var check = /^[_A-z0-9-]+(\.[_A-z0-9-]+)*@[A-z0-9-]+(\.[A-z0-9-]+)*(\.[A-z]{2,3})$/;
					break;
				default:
					var check = /.+/;
			}
			return !check.test(input.value);
		}
	},
	nextButtonClick : function(event) {
		var errors = kred.currentSectionHasErrors();
		var element = Event.element(event);
		//kred._showAElement($('kredPrintVersion'));
		element.form.submit();
		if(!errors) {
			var no = parseInt(element.id.substr(6,1))+1;
			kred.curSection = no;
			kred.setScreen();
		}
	},
	setScreen : function() {
		location.href="#top";
		for(var i=0;i<kred.sections.length;i++) {
			if(i==kred.curSection) {
				kred.sections[i].style.display = "block";
			} else {
				kred.sections[i].style.display = "none";
			}
		}
		switch(kred.curSection) {
			case 1:
				kred._showAElement($('kredLegend'));
				kred.titelClick();
				kred.buergeClick();
				break;
			case 2:
				kred._showAElement($('kredLegend'));
				kred.Burgschaftsverpflichtungen_click();
				kred.Gehaltsabtretungen_click();
				kred.grundbesitz_click();
				var partnerSection = $('Ehepartner');
				var familienStand = $('kred02_familienstand').options[$('kred02_familienstand').selectedIndex].value;
				var show = familienStand.match(/verheiratet|Lebensgemeinschaft/);
				if(show) {
					partnerSection.style.display = "block";
				} else {
					partnerSection.style.display = "none";
				}
				break;
			case 3:
				kred._hideAElement($('kredLegend'));

				break;
			case 4:
				kred._hideAElement($('kredLegend'));
				new Ajax.Request("emailForm.php", {
					parameters : {
						"kred04_aufmerksam":$('kred04_aufmerksam').value,
						"kred04_suchbegriff":$('kred04_suchbegriff').value,
						"kred04_nachricht":$('kred04_nachricht').value
					},
					onComplete : function() {
						kred.clearData();
					}

				});
				break;
			default:
				kred._showAElement($('kredLegend'));
				break;
		}
	},
	printForm : function() {
		new Ajax.Request("printForm.php", {
			parameters : {
				xhtml : $('kredRoot').innerHTML
			}
		});

	},

	closePrintFrame : function() {
		kred._hideAElement($('kredPrintVersion'));
	},
	showPrintFrame : function() {
		try {
			window.krdPrintVersion_iframe.location.href="printForm.php";
			kred._showAElement($('kredPrintVersion'));
		} catch(e) {
			window.open("printForm.php");
		}
	},
	printFrame : function() {
		window.kredPrintVersion_iframe.print();
	},
	gotoSection : function(section) {
		kred.curSection = section;
		kred.setScreen();
	},
	clearData : function() {
		new Ajax.Request('clearData.php');
		//var t = new Date();
		//window.location.href = "?t="+t.getMilliseconds();
	},
	_floatVal : function (germanFloat) {
		if(germanFloat) return parseFloat(germanFloat.replace(",","."));
	},
	_showAElement : function (element) {
		if(element.style) element.style.display = "block";
	},
	_hideAElement : function (element) {
		if(element.style) element.style.display = "none";
	},
	_propperName : function(input) {
		return input.replace(/\W/,"_");
	}
}
