Ape.Element.Betriebskostenrechner_maincol = function(){
	var that = this;
	
	this.start = function(){
		$('.error').hide(); 			// Fehlermeldung ausblenden.
		$('.bkr_berechnung').hide(); 	// Berechnungsboxen ausblenden.
		$('#bkr_km').numeric();			// Gefahrene-Kilometer-Feld befüllungsregel.
		
		if (that.VersicherungsArt == '1' || that.VersicherungsArt == '3'){ // Schadensrabbat Dropdowns Anzeigen, wenn eine Versicherungsart gewählt ist.
			$('#div_sfr_vollk').hide();
		}else if (that.VersicherungsArt != '2'){
			$('#div_sfr_haft').hide();
			$('#div_sfr_vollk').hide();
		}
		
		if (that.Modell != 0) {
			fahrzeugdatenAnzeigen(that.Modell); // Nach Formbertragung Daten anzeigen.
		}
		
		$('#bkr_submit_button').bind('click', function(){ // Submit form
			if ($('#bkr_modell').val() != 0 && $('#versicherungsart').val() != 0){
				$('#form_aufruf').val(1);				
				$('#bkr_form').submit();
			}else if ($('#bkr_modell').val() != 0){
				errorBerechnung('Bitte Versicherungsart w&auml;hlen.');
			}else {
				errorBerechnung('Bitte Modell w&auml;hlen.');
			}
		});
		$('#bkr_back_button').bind('click', function(){ // Submit form BACK
			$('#form_aufruf').val(0);
			$('#bkr_form').submit();
		});
		
		if (that.Marke == 0){
			$('#bkr_baureihe').attr('disabled',true);
			$('#bkr_modell').attr('disabled',true);
		}else {
			$('#bkr_baureihe').attr('disabled',false);
			if (that.Baureihe == 0){
				$('#bkr_modell').attr('disabled',true);
			}else {
				$('#bkr_modell').attr('disabled',false);
			}
		}

		// Hersteller, Baureihe, Modell - Dropdowns befüllung vvvvvvv#################
		getBKRHersteller();		
		$('#bkr_marke').bind('change', function(){
			resetFahrzeugDaten();
			var hersteller = $('#bkr_marke').val();
			if ($('#bkr_marke').val() == 0){
				$('#bkr_baureihe').html('<option value="0">Bitte w&auml;hlen</option>');
				$('#bkr_baureihe').attr('disabled',true);
			}else {
				getBaureihenByMarke(hersteller);
			}
			$('#bkr_modell').html('<option value="0">Bitte w&auml;hlen</option>');
			$('#bkr_modell').attr('disabled',true);		
			that.Modell = 0;
			that.Baureihe = 0;
		});
		
		$('#bkr_baureihe').bind('change', function(){
			resetFahrzeugDaten();
			var baureihe = $('#bkr_baureihe').val();
			if ($('#bkr_baureihe').val() == 0){
				$('#bkr_modell').html('<option value="0">Bitte w&auml;hlen</option>');
				$('#bkr_modell').attr('disabled',true);
			}else {
				getModelleByBaureihe(baureihe);	
			}
			that.Modell = 0;
		});
		// Hersteller, Baureihe, Modell - Dropdowns befüllung ^^^^^^#################
		
		
		// Modellauswahl triggert Fahrzeugdaten anzeige vvvvvvvv###############
		$('#bkr_modell').bind('change', function(){
			resetFahrzeugDaten();
			fahrzeugdatenAnzeigen($('#bkr_modell').val());
		});
		// Modellauswahl triggert Fahrzeugdaten anzeige ^^^^^^^^###############
		
		// Versicherungsartauswahl schaltet Schadenfreiheitsrabatt-Dropdowns frei vvvvvvvv###############
		$('#versicherungsart').bind('change', function(){
			if ($('#versicherungsart').val() != '0'){
				if ($('#versicherungsart').val() == '2'){ 	// Haftpflicht & Vollkasko
					$('.div_sfr').hide();
					$('#div_sfr_haft').show();
					$('#div_sfr_vollk').show();
				}else { 									// Andere Fälle
					$('.div_sfr').hide();
					$('#div_sfr_haft').show();
				}
			}else{
				$('.div_sfr').hide();
			}
		});
		// Versicherungsartauswahl schaltet Schadenfreiheitsrabatt-Dropdowns frei ^^^^^^^^###############
		
		
		// Einzelne Berechnungsfelder anzeigen, abhängig davon welche Berechnung erfolgreich war vvvvvvvv###############
		if (that.Versicherung !== '0'){
			$('#bkr_berechnung_versicherung').show();
		}
		if (that.Steuer !== '0'){
			$('#bkr_berechnung_steuer').show();
		}
		if (that.Krafstoff !== '0'){
			$('#bkr_berechnung_kraftstoff').show();
		}
		if (that.Wartung !== '0'){
			$('#bkr_berechnung_wartung').show();
		}
		if (that.Wertverlust !== '0'){
			$('#bkr_berechnung_wertverlust').show();
		}
		if (that.MitWertverlust !== '&mdash;' || that.OhneWertverlust !== '&mdash;'){
			$('#gesamt_bkr_berechnung').show();
			$('#gesamt_bkr_berechnung_inhalt').show();
		}
		// Einzelne Berechnungsfelder anzeigen, abhängig davon welche Berechnung erfolgreich war ^^^^^^^^###############
		
		if (that.FormAufruf == '0'){ // Tab-Beschriftung wechsel und Berechnungsdaten verstecken beim Rückruf des Formulars
			$('.bkr_berechnung').hide();
			$('#tab_ueberschrift').html('<span>Fahrzeug ausw&auml;hlen</span>');
		}else {
			$('#tab_ueberschrift').html('<span>Fahrzeugkosten</span>');
		}
		
		
	};
	
	function fahrzeugdatenAnzeigen(modellID){
		if (modellID == '0'){
			resetFahrzeugDaten();			
		}else{
			$.getJSON('?module=markenbaum&betriebskostenrecher_modell=' + modellID,function(data){
				if (typeof data == 'object' && data.length != 0){
					$.each(data, function(i,item){
						datenUebertragen(item);						
						if (item.Hubraum){
							$('#hubraum').html(item.Hubraum +' cm&sup3;');	
						}
						if (item.Schadstoffklasse){
							$('#schadstoffklasse').html(item.Schadstoffklasse);	
						}
						if (item.EgzGesamt){
							$('#duchschn_verbrauch').html(formatNumberGerman(extround(item.EgzGesamt,10).toString())+' L/100km');	
						}
						if (item.TreibstKostEuroSUM && item.TreibstKostEuroSUM != 0){
							$('#kraftstoff_preis').html(formatNumberGerman(extround(item.TreibstKostEuroSUM,100).toString())+' Euro');	
						}
						if (item.FixkostenEuroSUM && item.Ver100EuroSUM && item.FixkostenEuroSUM != 0 &&  item.Ver100EuroSUM != 0){
							$('#inspektion_kosten').html(formatNumberGerman(extround(item.FixkostenEuroSUM/100+item.Ver100EuroSUM/100,100).toString())+' Euro');	
						}
						if (item.Oelwechskm && item.Oelwechskm != '0'){
							$('#oelwechsel_int').html(item.Oelwechskm +' km');	
						}
						if (item.Inspektkm && item.Inspektkm != '0'){
							$('#inspektion_int').html(item.Inspektkm +' km');	
						}
					});
				}else if(typeof data == 'object' && data.length == 0){
					resetFahrzeugDaten();
					if ($('#bkr_marke').val() != 0){
					errorBerechnung('Leider wurden zu diesem Modell keine Daten gefunden.');
					}
				}				
			});
		}
	}
	
	function datenUebertragen(item){
		if (item.Slnr){
			$('#slnr_feld').val(item.Slnr); // Slnr übertragen
		}
		if (item.Mlnr){
			$('#mlnr_feld').val(item.Mlnr); // Slnr übertragen
		}
	}
	
	function resetFahrzeugDaten(){
		$('#hubraum').html('&mdash;');
		$('#schadstoffklasse').html('&mdash;');
		$('#duchschn_verbrauch').html('&mdash;');
		$('#oelwechsel_int').html('&mdash;');
		$('#inspektion_int').html('&mdash;');
		$('.error').hide(); 			// Fehlermeldung ausblenden.
		$('.bkr_berechnung').hide(); 	// Berechnungsboxen ausblenden.
	}
	
	function errorBerechnung(text){
		$('.error').html(text);
		$('.error').show();
	}
	
	function getBKRHersteller(){
		$.getJSON('?module=markenbaum&marken=1',function(data){
			var hersteller = $('#bkr_marke');
			var baureihen = $('#bkr_baureihe');
			$.each(data, function(i,item){
				if (item.ID == that.Marke){
					hersteller.append('<option value="'+item.ID+'" selected="selected">'+item.Name+'</option>');	
				}else{
					hersteller.append('<option value="'+item.ID+'">'+item.Name+'</option>');	
				}
			});
			if (that.Marke !== 0){
				getBaureihenByMarke(that.Marke);
			}
		});		
	}
	
	function getBaureihenByMarke(hersteller){
		$.getJSON('?module=markenbaum&baureihen_by_marke=' + hersteller,function(data){
				var baureihen = $('#bkr_baureihe');
				baureihen.html('<option value="0">Bitte w&auml;hlen</option>');
				$.each(data, function(i,item){					
					if (item.ID == that.Baureihe) {
						baureihen.append('<option value="'+item.ID+'" selected="selected">'+item.Name+'</option>');
					} else {
						baureihen.append('<option value="'+item.ID+'">'+item.Name+'</option>');								
					}
				});
				if ($('#bkr_marke').val() == 0 && that.Marke == 0){
					baureihen.attr('disabled',true);
				}else {
					baureihen.attr('disabled',false);
				}
				$('#bkr_modell').html('<option value="0">Bitte w&auml;hlen</option>');
				
				if (that.Baureihe !== 0){
					getModelleByBaureihe(that.Baureihe);
				}
		});	
	}
	
	function getModelleByBaureihe(baureihe){
		$.getJSON('?module=markenbaum&bkr_modelle_by_baureihe='+baureihe,function(data){
			if (data != ''){
				var modelle = $('#bkr_modell');
				modelle.html('<option value="0">Bitte w&auml;hlen</option>');
				$.each(data, function(i,item){					
					if (data.length == 1 && that.FormAufruf == '1'){
						modelle.append('<option value="'+item.ID+'" selected="selected">'+item.Name+'</option>');	
					}else if (item.ID == that.Modell) {
						modelle.append('<option value="'+item.ID+'" selected="selected">'+item.Name+'</option>');					
					} else {
						modelle.append('<option value="'+item.ID+'">'+item.Name+'</option>');								
					}
				});
				if ($('#bkr_baureihe').val() == 0 && that.Baureihe == 0){				
					modelle.attr('disabled',true);
				}else {
					modelle.attr('disabled',false);
				}
			}else {
				$('#bkr_modell').html('<option value="0">Bitte w&auml;hlen</option>');
				$('#bkr_modell').attr('disabled',true);
				if ($('#bkr_marke').val() != 0){
				errorBerechnung('Leider wurden zu dieser Baureihe keine Daten gefunden.');
				}
			}
		});
	}
	
	
	
	function formatNumber(number){
		number = number.replace(/,/,".");		
		return number;
	}
	function formatNumberGerman(number){
		number = number.replace(/\./,",");		
		return number;
	}
	
	function extround(zahl,n_stelle) {
		zahl = (Math.round(zahl * n_stelle) / n_stelle);
	   	return zahl;
	}

}
