Ape.Element.Co2rechner_maincol = function(){
	var that = this;
	
	this.start = function(){
		
		// Allgemein vvvv############
 		$('#modell_div').show();
		$('#individuell_div').hide();
		
		$('#modell_tab').click(function(){
			$('#modell_tab').addClass('aktiv');
			$('#individuell_tab').removeClass('aktiv');
			$('#modell_div').show();
			$('#individuell_div').hide();
		});
		$('#individuell_tab').click(function(){
			$('#modell_tab').removeClass('aktiv');
			$('#individuell_tab').addClass('aktiv');
			$('#modell_div').hide();
			$('#individuell_div').show();
		});
		// Allgemein ^^^^############

		// Modellauswahl-Tab vvvvvvv###############	
		if (that.Marke == 0){
			$('#co2_baureihe').attr('disabled',true);
			$('#co2_modell').attr('disabled',true);
		}else {
			$('#co2_baureihe').attr('disabled',false);
			if (that.Baureihe == 0){
				$('#co2_modell').attr('disabled',true);
			}else {
				$('#co2_modell').attr('disabled',false);
			}
		}
		
		getHersteller();			
		$('#co2_marke').bind('change', function(){
			var hersteller = $('#co2_marke').val();
			if ($('#co2_marke').val() == 0){
				$('#co2_baureihe').html('<option value="0">Bitte w&auml;hlen</option>');
				$('#co2_baureihe').attr('disabled',true);
			}else {
				getBaureihenByMarke(hersteller);
			}
			$('#co2_modell').html('<option value="0">Bitte w&auml;hlen</option>');
			$('#co2_modell').attr('disabled',true);				
			that.Modell = 0;
			that.Baureihe = 0;
		});
		
		$('#co2_baureihe').bind('change', function(){
			var baureihe = $('#co2_baureihe').val();
			if ($('#co2_baureihe').val() == 0){
				$('#co2_modell').html('<option value="0">Bitte w&auml;hlen</option>');
				$('#co2_modell').attr('disabled',true);
			}else {
				getModelleByBaureihe(baureihe);	
			}
			that.Modell = 0;
		});
		// Modellauswahl-Tab ^^^^^^^^###############
		
		
		// Individuell-Tab vvvvvvvvvvvv#################
		$('#individuell_result').hide();
		$('#individuell_error').hide();
		
		$('#co2_verbrauch').numeric();
		$('#co2_gefahrene_km').numeric();
		
		$('#individuell_button').bind('click', function(){
			co2Berechen();
		});		
		// Individuell-Tab ^^^^^^^^^^^^#################
		
	};
	
	function getHersteller(){
		$.getJSON('?module=markenbaum&marken=1',function(data){
			var hersteller = $('#co2_marke');
			var baureihen = $('#co2_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 = $('#co2_baureihe');
				baureihen.html('<option value="0">Bitte w&auml;hlen</option>');
				$.each(data, function(i,item){					
					if (data.length == 1 || 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 ($('#co2_marke').val() == 0 && that.Marke == 0){
					baureihen.attr('disabled',true);
				}else {
					baureihen.attr('disabled',false);
				}
				$('#co2_modell').html('<option value="0">Bitte w&auml;hlen</option>');
				if (that.Baureihe !== 0){
					getModelleByBaureihe(that.Baureihe);
				}
		});	
	}
	
	function getModelleByBaureihe(baureihe){
		$.getJSON('?module=markenbaum&modelle_by_baureihe='+baureihe,function(data){
			var modelle = $('#co2_modell');
			modelle.html('<option value="0">Bitte w&auml;hlen</option>');
			$.each(data, function(i,item){					
				if (data.length == 1 || 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 ($('#co2_baureihe').val() == 0 && that.Baureihe == 0){				
				modelle.attr('disabled',true);
			}else {
				modelle.attr('disabled',false);
			}
		});
	}
	
	function co2Berechen(){
		var verbrauch = $('#co2_verbrauch').val();
		verbrauch = formatNumber(verbrauch);
		var kilometer = $('#co2_gefahrene_km').val();
		kilometer = formatNumber(kilometer);
		if (verbrauch != ''){	
			$('#individuell_error').hide();
			switch ($('#co2_individuell_kraftstoff').val()){
				case 'benzin':
					var multiplier = 2.33;
					break;
				case 'diesel':
					var multiplier = 2.64;
					break;
				case 'autogas':
					var multiplier = 1.64;
					break;
				default:
					var multiplier = 2.33;
					break;
			}
		
			var pro100km = extround(verbrauch*10*multiplier,10);			
			if (pro100km < 120){
				$('#pro_km').removeClass('schlechter');	
				$('#auf_strecke').removeClass('schlechter');
				$('#pro_km').addClass('besser');	
				$('#auf_strecke').addClass('besser');
			}else {
				$('#pro_km').removeClass('besser');	
				$('#auf_strecke').removeClass('besser');
				$('#pro_km').addClass('schlechter');	
				$('#auf_strecke').addClass('schlechter');
			}
			
			pro100kmtext = pro100km.toString();
			pro100kmtext = formatNumberGerman(pro100kmtext);
			$('#pro_km').html(pro100kmtext+' g');
			$('#individuell_result').show();
			
			if (kilometer != ''){
				var aufStrecke = extround(pro100km/1000*kilometer,10);
				aufStrecke = aufStrecke.toString();
				aufStrecke = formatNumberGerman(aufStrecke);
				$('#auf_strecke_label').html('CO2-Aussto&szlig; auf ' + kilometer + ' km:');
				$('#auf_strecke').html(aufStrecke + ' kg');	
				$('#auf_strecke_label').show();
				$('#auf_strecke').show();	
			}else{
				$('#auf_strecke_label').hide();
				$('#auf_strecke').hide();	
			}
		}else{
			$('#individuell_result').hide();
			$('#individuell_error').show();
		}
	}
	
	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;
	}

}
