// Author: Matthias Büsing, info@grafix-nation.de
// Version 11/2008

//
Event.observe(window, 'load',
	function() {
		tooltips();
	}
);

//
var submit_data = function()
{
	var submit = true;
	
	if ( $('step') && 'individualisieren_2' == $('step').value ) {
		var kfz_wrapper = $$('div.kfz_wrapper');
				
		for ( var i = 0; i < kfz_wrapper.length; i++ ) {
			var id = kfz_wrapper[i].id;
			var kfz_id = id.replace('container_kfz_', '');
								
			if ( 
				'' == $('mo_kfz_' + kfz_id + '_klasse').value       ||
				'' == $('mo_kfz_' + kfz_id + '_zustand').value      ||
				'' == $('mo_kfz_' + kfz_id + '_kraftstoff').value   ||
				'' == $('mo_kfz_' + kfz_id + '_laufleistung').value
			) {
				// Show Error Message
          		if ( 'none' == $('container_kfz_error2_' + kfz_id).style.display ) {
          			Effect.BlindDown($('container_kfz_error2_' + kfz_id));
          		}
								
				submit = false;
			}
			else {
				// Fade Error Message
          		if ( 'none' != $('container_kfz_error2_' + kfz_id).style.display ) {
          			Effect.BlindUp($('container_kfz_error2_' + kfz_id), {
          				afterFinish: function() {
      						$('container_kfz_error2_' + kfz_id).style.display = 'none';
      					}
          			});
          		}
			}
		}
	}
		
	if ( submit ) {
		new Ajax.Request('input.php', {
			method: 'post',
			parameters: $('f').serialize(true),
			onSuccess: function(t) {
				var r = t.responseText;
			
				if ( r.isJSON() )
					update_content(r.evalJSON());
				else
					alert(r);
			}
		});
	}
}

//
var go = function(step, data_typ)
{
	new Ajax.Request('go.php', {
    	method: 'post',
    	parameters: {
    		step: step,
    		data_typ: data_typ
    	},
    	onSuccess: function(t) {
      		var r = t.responseText;
      		
      		if ( r.isJSON() )
      			update_content(r.evalJSON());
      		else
      			alert(r);
		}
	});
}

//
var update_ha_typ = function()
{ 
	new Ajax.Request('ajax_requests.php?action=update_ha_typ', {
    	method: 'post',
    	parameters: $('f').serialize(true),
    	onSuccess: function(t) {
      		$('container_ha_typ').innerHTML = t.responseText;
    	}
	});
}

//
var update_content = function(r)
{	
	if (r.content) {
		$('content').innerHTML = r.content;
	}
	
	if ( r.content2 ) {
		Effect.Fade($('content2'), {
			afterFinish: function() {
				$('content2').innerHTML = r.content2;
				scrollToAnchor("top");
				tooltips();
				Effect.Appear($('content2'), {
					afterFinish: function() {
						if ( r.update_kfz_arbeitswege ) {
							// Update KFZ Arbeitswege
							var kfz_wrapper = $$('div.kfz_wrapper');
							for ( var i = 0; i < kfz_wrapper.length; i++ ) {
								var id = kfz_wrapper[i].id;
								var kfz_id = id.replace('container_kfz_', '');
								
								if ( '0' == $('mo_kfz_' + kfz_id + '_distanz_beruf').value ) {
									errechne_kfz_distanz_beruf(kfz_id);
								}
							}
						}
						
						if ( r.update_oev_arbeitswege ) {
							// Update OEV Arbeitswege
							var oev_wrapper = $$('div.oev_wrapper');
							for ( var i = 0; i < oev_wrapper.length; i++ ) {
								var id = oev_wrapper[i].id;
								var strecken_id = id.replace('container_oev_', '');
								
								if ( '0' == $('mo_oev_strecken_' + strecken_id + '_distanz_beruf').value ) {
									update_arbeitsweg(strecken_id);
								}
							}
						}
					}
				});
			}
		});
	}
	
	if( r.breadcrump ) {
		$('breadcrump').innerHTML = r.breadcrump;
	}
	
	if ( r.update_statistik_bilder ) {
  		var now = new Date();
    	$('auswertung_grafik_wohnkosten').src = 'grafik_wohnkosten.php?' + encodeURIComponent(now);
    	$('auswertung_grafik_mobilitaetskosten').src = 'grafik_mobilitaetskosten.php?' + encodeURIComponent(now);
	}
}

// 
var toggle_element_visibility = function(idContainer)
{
	var idPfeil = $('arrow_' + idContainer);
	
	if ( $(idPfeil) ) {
		switch( $(idContainer).style.display ) {
			case 'none':
				$(idPfeil).src = 'gfx/arr_open.jpg';
				break;
			default:
				$(idPfeil).src = 'gfx/arr.jpg';
		}
	}
	
	Effect.toggle($(idContainer), 'blind');
} 

//
var setze_element_sichtbarkeit = function(e, v)
{
	if ( $(e) ) {
		switch ( v ) {
			case false:
				if ( $(e).style.display != 'none' )
					Effect.BlindUp($(e));
				break;
				
			default:
				if ( $(e).style.display == 'none' )
					Effect.BlindDown($(e));
		}
	}
}

//
var toggle_element_sichtbarkeit = function(e)
{	
	if ( $('container_' + e + '_aktiv') ) {
		if ( $('container_' + e + '_aktiv').style.display == 'none' ) {
			Effect.BlindDown($('container_' + e + '_aktiv'));
			
			if ( $('pfeil_' + e + '_aktiv') )
				$('pfeil_' + e + '_aktiv').src = 'gfx/pfeil_open.gif';
		}
		else {
			Effect.BlindUp($('container_' + e + '_aktiv'));
			
			if ( $('pfeil_' + e + '_aktiv') )
				$('pfeil_' + e + '_aktiv').src = 'gfx/pfeil_close.gif';
		}
	}
	
	if ( $('container_' + e + '_vergleich') ) {
		if ( $('container_' + e + '_vergleich').style.display == 'none' ) {
			Effect.BlindDown($('container_' + e + '_vergleich'));
			
			if ( $('pfeil_' + e + '_vergleich') )
				$('pfeil_' + e + '_vergleich').src = 'gfx/pfeil_open.gif';
		}
		else {
			Effect.BlindUp($('container_' + e + '_vergleich'));
			
			if ( $('pfeil_' + e + '_vergleich') )
				$('pfeil_' + e + '_vergleich').src = 'gfx/pfeil_close.gif';
		}
	}
}

//
var wechsle_container_sichtbarkeit = function(e)
{	
	if ( $('container_' + e) ) {
		if ( 'none' == $('container_' + e).style.display ) {
			Effect.BlindDown($('container_' + e));
			
			if ( $('pfeil_' + e) )
				$('pfeil_' + e).src = 'gfx/pfeil_open.gif';
		}
		else {
			Effect.BlindUp($('container_' + e), {
				afterFinish: function() {
					$('container_' + e).style.display = 'none';
				}
			});
			
			if ( $('pfeil_' + e) )
				$('pfeil_' + e).src = 'gfx/pfeil_close.gif';
		}
	}
}

//
var tooltips = function()
{
	var t = document.getElementsByName('tooltip');
  
	for( var i = 0; i < t.length; i++ ) {
    	var h = t[i].id.replace('element', 'text');
    
    	if ( $(h) )
    		new Tip(t[i].id, $(h).value, { effect : 'appear' });
	} 
}

//
var number_format = function(number, decimals, dec_point, thousands_sep)
{
	var exponent = '';
	var numberstr = number.toString();
	var eindex = numberstr.indexOf('e');
  
	if ( eindex >- 1 ) {
    	exponent = numberstr.substring(eindex);
    	number   = parseFloat(numberstr.substring(0, eindex));
  	}
  
  	if ( decimals != null ) {
    	var temp = Math.pow(10, decimals);
    	number = Math.round(number * temp) / temp;
  	}
  	
  	var sign       = number < 0 ? '-' : '';
  	var integer    = (number > 0 ? Math.floor(number) : Math.abs(Math.ceil(number))).toString();
  	var fractional = number.toString().substring(integer.length + sign.length);
  
  	dec_point  = dec_point != null ? dec_point : '.';
  	fractional = ( decimals !=null && decimals > 0 || fractional.length > 1 ) ? (dec_point + fractional.substring(1)) : '';
  
	if ( decimals != null && decimals > 0 ) {
    	for( var i = fractional.length - 1, z = decimals; i < z; ++i ) {
      		fractional += '0';
  		}
	}
  
	thousands_sep = ( thousands_sep != dec_point || fractional.length == 0 ) ? thousands_sep : null;
  
  	if ( thousands_sep != null && thousands_sep != '' ) {
		for( i = integer.length - 3; i > 0; i -= 3 ) {
	  		integer = integer.substring(0, i) + thousands_sep + integer.substring(i);
  		}
  	}
  
  	return sign + integer + fractional + exponent;
}

//
var step2_check_bebauung = function()
{
	var wohntyp_a_etw      = ( $('wo_wohntyp_a_etw').checked      == 'checked' || $('wo_wohntyp_a_etw').checked      == true ) ? true : false;
	var wohntyp_a_efh      = ( $('wo_wohntyp_a_efh').checked      == 'checked' || $('wo_wohntyp_a_efh').checked      == true ) ? true : false;
	var wohntyp_b_miete    = ( $('wo_wohntyp_b_miete').checked    == 'checked' || $('wo_wohntyp_b_miete').checked    == true ) ? true : false;
	var wohntyp_b_eigentum = ( $('wo_wohntyp_b_eigentum').checked == 'checked' || $('wo_wohntyp_b_eigentum').checked == true ) ? true : false;
	var wohntyp_c_bestand  = ( $('wo_wohntyp_c_bestand').checked  == 'checked' || $('wo_wohntyp_c_bestand').checked  == true ) ? true : false;
	var wohntyp_c_neubau   = ( $('wo_wohntyp_c_neubau').checked   == 'checked' || $('wo_wohntyp_c_neubau').checked   == true ) ? true : false;
	
	if ( ( wohntyp_a_etw || wohntyp_a_efh ) && ( wohntyp_b_miete || wohntyp_b_eigentum ) && ( wohntyp_c_bestand || wohntyp_c_neubau ) ) {
		var wohntyp_a = wohntyp_a_etw     ? 'etw'     : 'efh';
		var wohntyp_b = wohntyp_b_miete   ? 'miete'   : 'eigentum';
		var wohntyp_c = wohntyp_c_bestand ? 'bestand' : 'neubau';
		
		var bebauung = $('bebauung_' + wohntyp_b + '_' + wohntyp_a + '_' + wohntyp_c).value;
		var hinweistext_bebauung_visible = ( $('hinweistext_bebauung').style.display == 'none' ) ? false : true;
		
		if ( bebauung == '1' ) {
			if ( hinweistext_bebauung_visible ) {
				Effect.BlindUp($('hinweistext_bebauung'));
				Effect.Fade($('label_miet_kaufpreis'));
				Effect.Fade($('input_miet_kaufpreis'));
			}
		}
		else
		{
			if ( !hinweistext_bebauung_visible ) {
				Effect.BlindDown($('hinweistext_bebauung'));
				Effect.Appear($('label_miet_kaufpreis'));
				Effect.Appear($('input_miet_kaufpreis'));
			}
		}
	}
}

//
var set_region = function(region)
{
	new Ajax.Request('input.php', {
    	method: 'post',
    	parameters: {
    		step: 'set_region',
    		region: region},
			onSuccess: function(t) {
        		var r = t.responseText;
        	
        		if ( r.isJSON() )
					update_content(r.evalJSON());
				else
					alert(r);
			}
	});
}

//
var set_standort_from_map = function(st_id)
{
	for(var i = 0; i < $('ha_st_id').options.length; i++ ) {
    	$('ha_st_id').options[i].selected = ( $('ha_st_id').options[i].value == st_id ) ? true : false;
	}
}

//
var set_standort_from_autocomplete = function(st_id)
{
	for(var i = 0; i < $('ha_st_id').options.length; i++ ) {
    	$('ha_st_id').options[i].selected = ( $('ha_st_id').options[i].value == st_id ) ? true : false;
	}
	
	Effect.Fade($('ha_st_name_autocomplete_options'));
	$('ha_st_name_autocomplete_input').value = '';
}

//
var getStandorteListeAutoComplete = function()
{
	var input = $('ha_st_name_autocomplete_input').value;
	
	if ( '' == input ) {
		Effect.Fade($('ha_st_name_autocomplete_options'));
	}
	else {
		new Ajax.Request('ajax_requests.php', {
    		method: 'post',
    		parameters: {
    			action: 'getStandorte',
    			input: input
    		},
			onSuccess: function(t) {
				$('ha_st_name_autocomplete_options').innerHTML = t.responseText;
				Effect.Appear($('ha_st_name_autocomplete_options'));
        	}
		});
	}
}

//
var ergebnis_drucken = function()
{
	var height  = "600";
	var width   = "800";
	var padding = ( navigator.appName == "Microsoft Internet Explorer" ) ? 10 : 0;
	var screenw = screen.availWidth;
	var screenh = screen.availHeight;
	var winw    = width + 15 + padding;
	var winh    = height + 15 + padding;
	var posx    = screenw / 2 - winw / 2;
	var posy    = screenh / 2 - winh / 2;
	var mywin   = window.open('/ergebnis_drucken.php',"mywin","top=" + posy + ",left=" + posx + ",width=" + winw + ",height=" + winh + ",menubar=no,locationbar=no,statusbar=no,resizable=no,toolbar=no,dependent=yes,scrollbars=yes");
	mywin.focus(); 
}
//
var varianten_drucken = function()
{
	var height  = "600";
	var width   = "800";
	var padding = ( navigator.appName == "Microsoft Internet Explorer" ) ? 10 : 0;
	var screenw = screen.availWidth;
	var screenh = screen.availHeight;
	var winw    = width + 15 + padding;
	var winh    = height + 15 + padding;
	var posx    = screenw / 2 - winw / 2;
	var posy    = screenh / 2 - winh / 2;
	var mywin   = window.open('/varianten_drucken.php',"mywin","top=" + posy + ",left=" + posx + ",width=" + winw + ",height=" + winh + ",menubar=no,locationbar=no,statusbar=no,resizable=no,toolbar=no,dependent=yes,scrollbars=yes");
	mywin.focus(); 
}

/* KFZ */
var errechne_kfz_distanz_beruf = function(kfz_id)
{
	var plz_von    = $('mo_kfz_' + kfz_id + '_arbeitsweg_von_plz').value;
	var plz_nach   = $('mo_kfz_' + kfz_id + '_arbeitsweg_nach_plz').value;
	var exp        = /^\d{5}$/;
  	var frequenz   = parseInt($('mo_kfz_' + kfz_id + '_arbeitsweg_frequenz').value);
	var arbeitsweg = 0;
  
 	if ( plz_von == plz_nach && exp.test(plz_von) && exp.test(plz_nach) ) {
		distanz = 1.5;
		arbeitsweg = Math.round(distanz * frequenz * 8);
		mo_set_arbeitsweg(kfz_id, arbeitsweg);
	}
	else if( exp.test(plz_von) && exp.test(plz_nach) && GBrowserIsCompatible() ) {
    	new Ajax.Request('ajax_requests.php', {
      		method: 'post',
      		parameters: {
      			action: 'get_distanz_plz',
      			plz_1: plz_von,
      			plz_2: plz_nach
      		},
      		onSuccess: function(t) {
        		var distanz = parseFloat(t.responseText);
        
        		if ( distanz > -1 ) {
          			arbeitsweg = Math.round(distanz * frequenz * 8);
          			mo_set_arbeitsweg(kfz_id, arbeitsweg);
          			
          			// Fade Error Message
          			if ( 'none' != $('container_kfz_error_' + kfz_id).style.display ) {
          				Effect.BlindUp($('container_kfz_error_' + kfz_id), {
          					afterFinish: function() {
      							$('container_kfz_error_' + kfz_id).style.display = 'none';
      						}
          				});
          			}
        		}
        		else {
          			if ( GBrowserIsCompatible() ) {
            			var map  = new GMap2($('map_canvas_fake'));
            			var gdir = new GDirections(map);
            
            			var handleErrors = function() {
              				$('mo_kfz_' + kfz_id + '_arbeitsweg_von_plz').blur();
              				$('mo_kfz_' + kfz_id + '_arbeitsweg_nach_plz').blur();
              				mo_set_arbeitsweg(kfz_id, 0);
              				
              				// Show Error Message
          					if ( 'none' == $('container_kfz_error_' + kfz_id).style.display ) {
          						//$('container_kfz_error_' + kfz_id).style.display = 'block';
          						Effect.BlindDown($('container_kfz_error_' + kfz_id));
          					}
            			}
            
            			var onGDirectionsLoad = function(gdir) {
              				distanz    = parseInt(gdir.getDistance().meters) / 1000;
              				arbeitsweg = Math.round(distanz * frequenz * 8);
              				mo_set_arbeitsweg(kfz_id, arbeitsweg);
              				
              				// Fade Error Message
          					if ( 'none' != $('container_kfz_error_' + kfz_id).style.display ) {
          						Effect.BlindUp($('container_kfz_error_' + kfz_id), {
          							afterFinish: function() {
      									$('container_kfz_error_' + kfz_id).style.display = 'none';
      								}
          						});
          					}
              				              				              				              				              
              				new Ajax.Request('ajax_requests.php', {
                				method: 'post',
                				parameters: {
                					action: 'save_distanz_plz',
                					plz_1: plz_von,
                					plz_2: plz_nach,
                					distanz: distanz
                				}
              				});
            			}
            
            			GEvent.addListener(gdir, "load", onGDirectionsLoad);
            			GEvent.addListener(gdir, "error", handleErrors);
            			gdir.load("from:" + plz_von + ",Deutschland to:" + plz_nach + ",Deutschland", {"locale":"de"});
      				}
      			}
      		} 
    	});
	}
	else {
    	$('mo_kfz_' + kfz_id + '_arbeitsweg_von_plz').value  = plz_von.replace(/\D/g,'');
    	$('mo_kfz_' + kfz_id + '_arbeitsweg_nach_plz').value = plz_nach.replace(/\D/g,'');
    	mo_set_arbeitsweg(kfz_id, 0);
	}
}

//
var mo_set_arbeitsweg = function(kfz_id, arbeitsweg)
{
	$('mo_kfz_' + kfz_id + '_distanz_beruf').value = number_format(String(arbeitsweg),0,',','.');
}

//
var ermittle_kfz_kennzahlen = function(kfz_id)
{
	var klasse         = $('mo_kfz_' + kfz_id + '_klasse').value;
	var zustand        = $('mo_kfz_' + kfz_id + '_zustand').value;
	var kraftstoff     = $('mo_kfz_' + kfz_id + '_kraftstoff').value;
	var laufleistung   = $('mo_kfz_' + kfz_id + '_laufleistung').value;
	var distanz_beruf  = $('mo_kfz_' + kfz_id + '_distanz_beruf').value;
		
	if( klasse != '' && zustand != '' && kraftstoff != '' && laufleistung != '' ) {
    	new Ajax.Request('ajax_requests.php', {
      		method: 'post',
      		parameters: {
      			action: 'ermittle_kfz_kennzahlen',
      			klasse: klasse,
      			zustand: zustand,
      			kraftstoff: kraftstoff,
      			laufleistung: laufleistung,
      			distanz_beruf: distanz_beruf,
      			distanz_andere: 0
      		},
      		onSuccess: function(t) {
        		var r = t.responseText;
        		
        		if ( r.isJSON() ) {
          			r = r.evalJSON();
          			$('mo_kfz_' + kfz_id + '_wertverlust').value        = r.wertverlust;
          			$('mo_kfz_' + kfz_id + '_versicherung').value       = r.versicherung;
         			$('mo_kfz_' + kfz_id + '_steuer').value             = r.steuer;
          			$('mo_kfz_' + kfz_id + '_sonstige_fixkosten').value = r.sonstige_fixkosten;
        		}
        		else
        			alert(r);
  			}
  		});
  	}
	else {
		$('mo_kfz_' + kfz_id + '_wertverlust').value        = '0';
		$('mo_kfz_' + kfz_id + '_versicherung').value       = '0';
		$('mo_kfz_' + kfz_id + '_steuer').value             = '0';
		$('mo_kfz_' + kfz_id + '_sonstige_fixkosten').value = '0';
	}
}

//
var mo_tabelle_kfz_zeile_neu = function()
{    	
  	new Ajax.Request('ajax_requests.php', {
    	method: 'post',
    	parameters: { action: 'getNewKfz' },
    	onSuccess: function(t) {
      		var r = t.responseText;
      		
      		if ( r.isJSON() ) {
      			r = r.evalJSON();
      			      			
      			var id         = document.createAttribute('id');
      			id.nodeValue   = 'container_kfz_' + r.kfz_id;
      			
      			var div        = document.createElement('div');
      			div.setAttributeNode(id);
      			div.className  = 'kfz_wrapper';
      			div.style.display = 'none';
      			div.innerHTML     = r.html;
      			
      			$('container_kfz_table_individuell_aktiv_kfz').appendChild(div);
      			
      			Effect.BlindDown(div, {
      				afterFinish: function() {
      					if ( $('please_add_pkw') && $('please_add_pkw').style.display != 'none' )
      						$('please_add_pkw').style.display = 'none';
      				}
      			});
      			rename_kfz();
      		}
      		else
      			alert(r);
      			
      		tooltips();
		}
	});
}

//
var mo_tabelle_kfz_zeile_loeschen = function(kfz_id)
{	
	var id = 'container_kfz_' + kfz_id;
	
	Effect.Fade($(id), {
		afterFinish: function() {
			$('container_kfz_table_individuell_aktiv_kfz').removeChild($(id));
			rename_kfz();
		}
	});
}

//
var rename_kfz = function()
{
	var kfz      = $$('div.kfz_wrapper');
	var labels_a = $$('span.label_kfz_a');
	var labels_b = $$('span.label_kfz_b');
	
	for ( var i = 0; i < kfz.length; i++ ) {
		labels_a[i].innerHTML = labels_b[i].innerHTML = String(i + 1);
	}
}

//
var mo_kfz_arbeit_ja = function(kfz_id)
{
	errechne_kfz_distanz_beruf(kfz_id);
  	$('mo_kfz_' + kfz_id + '_arbeitsweg_frequenz').disabled = '';
  	$('mo_kfz_' + kfz_id + '_arbeitsweg_von_plz').disabled  = '';
  	$('mo_kfz_' + kfz_id + '_arbeitsweg_nach_plz').disabled = '';
  	$('mo_kfz_' + kfz_id + '_distanz_beruf').disabled       = '';
}

//
var mo_kfz_arbeit_nein = function(kfz_id)
{
	$('mo_kfz_' + kfz_id + '_distanz_beruf').value          = '0';
	$('mo_kfz_' + kfz_id + '_arbeitsweg_frequenz').disabled = 'disabled';
	$('mo_kfz_' + kfz_id + '_arbeitsweg_von_plz').disabled  = 'disabled';
	$('mo_kfz_' + kfz_id + '_arbeitsweg_nach_plz').disabled = 'disabled';
	$('mo_kfz_' + kfz_id + '_distanz_beruf').disabled       = 'disabled';
}

//
var mo_update_kfz_besitz_art = function(art)
{
	switch ( art ) {
    	case 'copy':
    		// Delete old Entrys
        	var go = true;
        	while ( true == go ) {
        		if ( $('container_kfz_table_individuell_aktiv_kfz').hasChildNodes() ) {
        			var Knoten = $('container_kfz_table_individuell_aktiv_kfz').firstChild;
        			$('container_kfz_table_individuell_aktiv_kfz').removeChild(Knoten);
        		}
        		else
        			go = false;
        	}
        	$('container_kfz_besitz_art_individuell').style.display = 'none';
        	setze_element_sichtbarkeit('container_kfz_besitz_art_typisch', false);
        	    	
    		new Ajax.Request('ajax_requests.php', {
      			method: 'post',
      			parameters: {
      				action: 'kfz_copy'
      			},
      			onSuccess: function(t) {
        			var r = t.responseText;
        			        			
        			if ( r.isJSON() ) {
      					r = r.evalJSON();
      					
      					for ( var i = 0; i < r.length; i++ ) {
      						var id         = document.createAttribute('id');
      						id.nodeValue   = 'container_kfz_' + r[i].kfz_id;
      			
      						var div        = document.createElement('div');
      						div.setAttributeNode(id);
      						div.className  = 'kfz_wrapper';
      						div.innerHTML  = r[i].html;
      			
      						$('container_kfz_table_individuell_aktiv_kfz').appendChild(div);
      						errechne_kfz_distanz_beruf(r[i].kfz_id);
      					}
        			}
        			else
        				alert(r);	
  				}
  			});
  			
  			Effect.BlindDown($('container_kfz_besitz_art_individuell'));
    		break;
    	case 'individuell':
      		setze_element_sichtbarkeit('container_kfz_besitz_art_individuell', true);
      		setze_element_sichtbarkeit('container_kfz_besitz_art_typisch', false);
      		break;
    	case 'typisch':
     		setze_element_sichtbarkeit('container_kfz_besitz_art_typisch', true);
      		setze_element_sichtbarkeit('container_kfz_besitz_art_individuell', false);
      		break;
    	default:
      		setze_element_sichtbarkeit('container_kfz_besitz_art_typisch', false);
      		setze_element_sichtbarkeit('container_kfz_besitz_art_individuell', false);
	}
}

/* OEV */

//
var set_oev_rahmen = function(override_karten)
{
	var oev_angaben_art;
  
  	if ( $('mo_oev_angaben_art_individuell').checked == 'checked' || $('mo_oev_angaben_art_individuell').checked == true )
  		oev_angaben_art='individuell';
	else if ( $('mo_oev_angaben_art_typisch').checked == 'checked' || $('mo_oev_angaben_art_typisch').checked == true )
		oev_angaben_art = 'typisch';
	else if ( $('mo_oev_angaben_art_copy') && ( $('mo_oev_angaben_art_copy').checked == 'checked' || $('mo_oev_angaben_art_copy').checked == true ) )
		oev_angaben_art = 'copy';
	else
		oev_angaben_art = 'null';    
  
	var oev_benutzung_zeitkarten = ( $('mo_oev_benutzung_zeitkarten_ja').checked == 'checked' || $('mo_oev_benutzung_zeitkarten_ja').checked == true ) ? 'ja' : 'nein';
  
	if ( 'null' == oev_angaben_art ) {
    	if ( $('container_oev_general_aktiv') && $('container_oev_general_aktiv').style.display != 'none' ) {
    		Effect.BlindUp($('container_oev_general_aktiv'));	
    	}
    	
    	if ( $('container_oev_general_vergleich') && $('container_oev_general_vergleich').style.display != 'none' ) {
    		Effect.BlindUp($('container_oev_general_vergleich'));	
    	}
    	
    	if ( $('container_frage_oev_benutzung_zeitkarten').style.display != 'none' ) {
    		Effect.BlindUp($('container_frage_oev_benutzung_zeitkarten'));	
    	}
	}
	else {
    	setze_element_sichtbarkeit('container_oev_general_aktiv', true);
    	setze_element_sichtbarkeit('container_oev_general_vergleich', true);
    	
    	if ( 'typisch' == oev_angaben_art ) {
    		// Typisch
      		if ( $('container_frage_oev_benutzung_zeitkarten').style.display != 'none' )
    			Effect.BlindUp($('container_frage_oev_benutzung_zeitkarten'));
    			
    		if ( $('mo_oev_kosten_sonstige_gesamt').style.display != 'none' )
    			Effect.BlindUp($('mo_oev_kosten_sonstige_gesamt'));
    			
    		if ( $('mo_oev_kosten_sonstige_gesamt_unveraenderbar').style.display == 'none' )
    			Effect.BlindDown($('mo_oev_kosten_sonstige_gesamt_unveraenderbar'));
    		
    		if ( $('mo_oev_kosten_normal_gesamt').style.display != 'none' )
    			Effect.BlindUp($('mo_oev_kosten_normal_gesamt'));
    		
    		if ( $('mo_oev_kosten_normal_gesamt_unveraenderbar').style.display == 'none' )
    			Effect.BlindDown($('mo_oev_kosten_normal_gesamt_unveraenderbar'));
    			
    		if ( $('mo_oev_kosten_ermaessigt_gesamt').style.display != 'none' )
    			Effect.BlindUp($('mo_oev_kosten_ermaessigt_gesamt'));
    		
    		if ( $('mo_oev_kosten_ermaessigt_gesamt_unveraenderbar').style.display == 'none' )
    			Effect.BlindDown($('mo_oev_kosten_ermaessigt_gesamt_unveraenderbar'));
    			
    		if ( $('container_mo_oev_angaben_art_individuell').style.display != 'none' )
    			Effect.BlindUp($('container_mo_oev_angaben_art_individuell'));	 		
    		
    		$('mo_oev_kosten_normal_gesamt_unveraenderbar').innerHTML         = $('mo_oev_kosten_normal_gesamt_standard').value + ' &euro; / Monat';
    		$('mo_oev_kosten_ermaessigt_gesamt_unveraenderbar').innerHTML     = $('mo_oev_kosten_ermaessigt_gesamt_standard').value + ' &euro; / Monat';
      		$('mo_oev_kosten_normal_gesamt').value                            = $('mo_oev_kosten_normal_gesamt_standard').value;      		
      		$('mo_oev_kosten_ermaessigt_gesamt').value                        = $('mo_oev_kosten_ermaessigt_gesamt_standard').value;
    	}
    	else if ( 'copy' == oev_angaben_art && !override_karten ) {
    	
    		if ( $('container_frage_oev_benutzung_zeitkarten').style.display == 'none' )
    			Effect.BlindDown($('container_frage_oev_benutzung_zeitkarten'));
    		
    		$('mo_oev_benutzung_zeitkarten_ja').checked = 'checked';
    			
    		$('mo_oev_kosten_sonstige_gesamt_unveraenderbar').style.display = 'none';
    		$('mo_oev_kosten_sonstige_gesamt').style.display = 'block';
    		    		
    		// Delete old Entrys
        	var go = true;
        	while ( true == go ) {
        		if ( $('container_oev_table_individuell_aktiv_strecken').hasChildNodes() ) {
        			var Knoten = $('container_oev_table_individuell_aktiv_strecken').firstChild;
        			$('container_oev_table_individuell_aktiv_strecken').removeChild(Knoten);
        		}
        		else
        			go = false;
        	}
        	        	    	
    		new Ajax.Request('ajax_requests.php', {
      			method: 'post',
      			parameters: {
      				action: 'oev_copy'
      			},
      			onSuccess: function(t) {
        			var r = t.responseText;
        			        			
        			if ( r.isJSON() ) {
      					r = r.evalJSON();
      					
      					var karten = r.karten;
      					for ( var i = 0; i < karten.length; i++ ) {
      						var id         = document.createAttribute('id');
      						id.nodeValue   = 'container_oev_' + karten[i].strecken_id;
      			
      						var div        = document.createElement('div');
      						div.setAttributeNode(id);
      						div.className  = 'oev_wrapper';
      						div.innerHTML  = karten[i].html;
      			
      						$('container_oev_table_individuell_aktiv_strecken').appendChild(div);
      						
      						oev_update_zeitkarte(karten[i].strecken_id, true)
      					}
      					
      					rename_oev();
        			}
        			else {
        				alert(r);
        			}
        			
        			$('mo_oev_kosten_normal_gesamt_input').value     = number_format(r.oev_kosten_normal_gesamt, 0, ',', '.');
					$('mo_oev_kosten_ermaessigt_gesamt_input').value = number_format(r.oev_kosten_ermaessigt_gesamt, 0, ',', '.');
					$('mo_oev_kosten_sonstige_gesamt_input').value   = number_format(r.oev_kosten_sonstige_gesamt, 0, ',', '.');
        				
        			if ( $('container_mo_oev_angaben_art_individuell').style.display == 'none' )
        				Effect.BlindDown($('container_mo_oev_angaben_art_individuell'));
        			        		
        			$('mo_oev_kosten_normal_gesamt').style.display              = 'block';
        			$('mo_oev_kosten_ermaessigt_gesamt').style.display          = 'block';
        		
        			$('mo_oev_kosten_normal_gesamt_unveraenderbar').style.display     = 'none';
        			$('mo_oev_kosten_ermaessigt_gesamt_unveraenderbar').style.display = 'none';
  				}
  			});
    	}
    	else {
    		// Individuell
      		if ( $('container_frage_oev_benutzung_zeitkarten').style.display == 'none' )
    			Effect.BlindDown($('container_frage_oev_benutzung_zeitkarten'));
    			
    		$('mo_oev_kosten_sonstige_gesamt_unveraenderbar').style.display = 'none';
    		$('mo_oev_kosten_sonstige_gesamt').style.display = 'block';
    		      
      		if ( oev_benutzung_zeitkarten == 'ja' ) {
        		if ( $('container_mo_oev_angaben_art_individuell').style.display == 'none' )
        			Effect.BlindDown($('container_mo_oev_angaben_art_individuell'));
        		
        		$('mo_oev_kosten_normal_gesamt').style.display              = 'block';
        		$('mo_oev_kosten_ermaessigt_gesamt').style.display          = 'block';
        		
        		$('mo_oev_kosten_normal_gesamt_unveraenderbar').style.display     = 'none';
        		$('mo_oev_kosten_ermaessigt_gesamt_unveraenderbar').style.display = 'none';
        		
        		update_zeitkarten_preis_ausgabe();
     		}
     		else {
        		if ( $('container_mo_oev_angaben_art_individuell').style.display != 'none' )
        			Effect.BlindUp($('container_mo_oev_angaben_art_individuell'));
        		
        		$('mo_oev_kosten_normal_gesamt').style.display              = 'none';
        		$('mo_oev_kosten_ermaessigt_gesamt').style.display          = 'none';
        		
        		$('mo_oev_kosten_normal_gesamt').value                        = '0';
        		$('mo_oev_kosten_normal_gesamt_unveraenderbar').innerHTML     = '0' + ' &euro; / Monat';
        		$('mo_oev_kosten_ermaessigt_gesamt').value                    = '0';
        		$('mo_oev_kosten_ermaessigt_gesamt_unveraenderbar').innerHTML = '0' + ' &euro; / Monat';
        		
        		$('mo_oev_kosten_normal_gesamt_unveraenderbar').style.display     = 'block';
        		$('mo_oev_kosten_ermaessigt_gesamt_unveraenderbar').style.display = 'block';
			}
		}
	}
}

//
var oev_update_zeitkarte = function(strecken_id, override_preis)
{
	if ( override_preis )
		update_oev_strecke_preis(strecken_id);	
	else
		update_zeitkarten_preis_ausgabe();
  
	var benutzung_arbeit = ( $('mo_oev_strecken_' + strecken_id + '_benutzung_arbeit_ja').checked == 'checked' || $('mo_oev_strecken_' + strecken_id + '_benutzung_arbeit_ja').checked == true ) ? true : false;
  
	if ( benutzung_arbeit ) {
		$('mo_oev_strecken_' + strecken_id + '_arbeitsweg_frequenz').disabled = '';
		$('mo_oev_strecken_' + strecken_id + '_arbeitsweg_von_plz').disabled  = '';
		$('mo_oev_strecken_' + strecken_id + '_arbeitsweg_nach_plz').disabled = '';
		$('mo_oev_strecken_' + strecken_id + '_distanz_beruf').disabled       = '';
	}
  	else {
  		$('mo_oev_strecken_' + strecken_id + '_arbeitsweg_frequenz').disabled = 'disabled';
  		$('mo_oev_strecken_' + strecken_id + '_arbeitsweg_von_plz').disabled  = 'disabled';
  		$('mo_oev_strecken_' + strecken_id + '_arbeitsweg_nach_plz').disabled = 'disabled';
  		$('mo_oev_strecken_' + strecken_id + '_distanz_beruf').disabled       = 'disabled';
  	}
}

//
var update_oev_strecke_preis = function(strecken_id)
{
	var start_region = $('mo_oev_strecken_' + strecken_id + '_start_region').value;
	var ziel_region  = $('mo_oev_strecken_' + strecken_id + '_ziel_region').value;
	var tarif        = $('mo_oev_strecken_' + strecken_id + '_tarif').value;
	var e            = $('mo_oev_strecken_' + strecken_id + '_preis');
  
	if ( parseInt(start_region) > 0 && parseInt(ziel_region) > 0 ) {
    	new Ajax.Request('ajax_requests.php', {
      		method: 'post',
      		parameters: {
      			action: 'ermittle_oev_preis',
      			start_region: start_region,
      			ziel_region: ziel_region,
      			tarif: tarif
      		},
      		onSuccess: function(t) {
        		e.value = t.responseText;
        		update_zeitkarten_preis_ausgabe();
  			}
  		});
  	}
  	else {
    	e.value = '0';
    	update_zeitkarten_preis_ausgabe();
	}
}

//
var oev_update_standort = function(strecken_id, typ, st_id)
{
	new Ajax.Request('ajax_requests.php', {
    	method: 'post',
    	parameters: {
    		action: 'get_plz_from_st_id',
    		st_id: st_id
    	},
    	onSuccess: function(t) {
      		var plz = t.responseText;
      		$('mo_oev_strecken_' + strecken_id + '_arbeitsweg_' + typ + '_plz').value = plz;
      		$('mo_oev_strecken_' + strecken_id + '_arbeitsweg_' + typ + '_plz_sicherung').value = plz;
      		var plz_von  = $('mo_oev_strecken_' + strecken_id + '_arbeitsweg_von_plz').value;
      		var plz_nach = $('mo_oev_strecken_' + strecken_id + '_arbeitsweg_nach_plz').value;
      		var exp=/^\d{5}$/;
      
      		if ( plz_von != plz_nach && exp.test(plz_von) && exp.test(plz_nach) && GBrowserIsCompatible() ) {
        		var frequenz   = parseInt($('mo_oev_strecken_' + strecken_id + '_arbeitsweg_frequenz').value);
        		var arbeitsweg = 0;
        		new Ajax.Request('ajax_requests.php', {
          			method: 'post',
          			parameters: {
          				action: 'get_distanz_plz',
          				plz_1: plz_von,
          				plz_2: plz_nach
          			},
          			onSuccess: function(t) {
            			var distanz = parseFloat(t.responseText);
           				if ( distanz > -1 ) {
              				arbeitsweg = Math.round(distanz * frequenz * 8);
              				oev_set_arbeitsweg(strecken_id, arbeitsweg);
              				
              				// Fade Error Message
          					if ( 'none' != $('container_oev_error_' + strecken_id).style.display ) {
          						Effect.BlindUp($('container_oev_error_' + strecken_id), {
          							afterFinish: function() {
      									$('container_oev_error_' + strecken_id).style.display = 'none';
      								}
          						});
          					}
            			}
            			else {
              				var map = new GMap2($('map_canvas_fake'));
              				var gdir = new GDirections(map);
              
              				var handleErrors = function() {
                				$('mo_oev_strecken_' + strecken_id + '_arbeitsweg_von_plz').blur();
                				$('mo_oev_strecken_' + strecken_id + '_arbeitsweg_nach_plz').blur();
                				oev_set_arbeitsweg(strecken_id, 0);
                				
								// Show Error Message
          						if ( 'none' == $('container_oev_error_' + strecken_id).style.display ) {
          							Effect.BlindDown($('container_oev_error_' + strecken_id));
          						}
              				}
              
              				var onGDirectionsLoad = function(gdir) {
                				distanz = parseInt(gdir.getDistance().meters) / 1000;
                				arbeitsweg = Math.round(distanz * frequenz * 8);
                				oev_set_arbeitsweg(strecken_id, arbeitsweg);
                				
                				// Fade Error Message
          						if ( 'none' != $('container_oev_error_' + strecken_id).style.display ) {
          							Effect.BlindUp($('container_oev_error_' + strecken_id), {
          								afterFinish: function() {
      										$('container_oev_error_' + strecken_id).style.display = 'none';
      									}
          							});
          						}
                				
                				new Ajax.Request('ajax_requests.php', {
                  					method:'post',
                  					parameters: {
                  						action: 'save_distanz_plz',
                  						plz_1: plz_von,
                  						plz_2: plz_nach,
                  						distanz: distanz
                  					}
                				});
              				}
              
              				GEvent.addListener(gdir, "load", onGDirectionsLoad);
              				GEvent.addListener(gdir, "error", handleErrors);
              				gdir.load("from:" + plz_von + ",Deutschland to:" + plz_nach + ",Deutschland",{"locale":"de"});
          				}
          			}
        		});
     		}
     		else {
        		oev_set_arbeitsweg(strecken_id, 0);
			}
		}
	});
}

//
var update_arbeitsweg = function(strecken_id)
{
	var plz_von  = $('mo_oev_strecken_' + strecken_id + '_arbeitsweg_von_plz').value;
	var plz_nach = $('mo_oev_strecken_' + strecken_id + '_arbeitsweg_nach_plz').value;
	var exp      = /^\d{5}$/;
	
	if ( plz_von != plz_nach && exp.test(plz_von) && exp.test(plz_nach) && GBrowserIsCompatible() ) {
    	var frequenz = parseInt($('mo_oev_strecken_' + strecken_id + '_arbeitsweg_frequenz').value);
    	var arbeitsweg = 0;
    
    	new Ajax.Request('ajax_requests.php', {
      		method: 'post',
      		parameters: {
      			action: 'get_distanz_plz',
      			plz_1: plz_von,
      			plz_2: plz_nach
      		},
      		onSuccess: function(t) {
        		var distanz = parseFloat(t.responseText);
        
        		if ( distanz > -1 ) {
          			arbeitsweg = Math.round(distanz * frequenz * 8);
          			oev_set_arbeitsweg(strecken_id, arbeitsweg);
          			
          			// Fade Error Message
          			if ( 'none' != $('container_oev_error_' + strecken_id).style.display ) {
          				Effect.BlindUp($('container_oev_error_' + strecken_id), {
          					afterFinish: function() {
      							$('container_oev_error_' + strecken_id).style.display = 'none';
      						}
          				});
          			}
        		}
        		else {  
          			var map  = new GMap2($('map_canvas_fake'));
          			var gdir = new GDirections(map);
          
          			var handleErrors = function() {
            			$('mo_oev_strecken_' + strecken_id + '_arbeitsweg_von_plz').blur();
            			$('mo_oev_strecken_' + strecken_id + '_arbeitsweg_nach_plz').blur();
            			oev_set_arbeitsweg(strecken_id, 0);
            			
            			// Show Error Message
          				if ( 'none' == $('container_oev_error_' + strecken_id).style.display ) {
          					Effect.BlindDown($('container_oev_error_' + strecken_id));
          				}
          			}
          			
          			var onGDirectionsLoad = function(gdir) {
            			distanz    = parseInt(gdir.getDistance().meters) / 1000;
            			arbeitsweg = Math.round(distanz * frequenz * 8);
            			oev_set_arbeitsweg(strecken_id, arbeitsweg);
            			
            			// Fade Error Message
          				if ( 'none' != $('container_oev_error_' + strecken_id).style.display ) {
          					Effect.BlindUp($('container_oev_error_' + strecken_id), {
          						afterFinish: function() {
      								$('container_oev_error_' + strecken_id).style.display = 'none';
      							}
          					});
          				}
            
            			new Ajax.Request('ajax_requests.php', {
              				method: 'post',
              				parameters: {
              					action: 'save_distanz_plz',
              					plz_1: plz_von,
              					plz_2: plz_nach,
              					distanz:distanz
              				}
            			});
          			}
          			
          			GEvent.addListener(gdir, "load", onGDirectionsLoad);
          			GEvent.addListener(gdir, "error", handleErrors);
          			gdir.load("from:" + plz_von + ",Deutschland to:" + plz_nach + ",Deutschland", {"locale":"de"});
      			}
      		}
    	});
	}
	else {
    	oev_set_arbeitsweg(strecken_id, 0);
	} 
}

//
var oev_set_arbeitsweg = function(strecken_id, arbeitsweg)
{
	$('mo_oev_strecken_' + strecken_id + '_distanz_beruf').value = number_format(String(arbeitsweg), 0, ',', '.');
}

//
var update_zeitkarten_preis_ausgabe = function()
{
	var preis_zeitkarten_normal_summe     = 0;
	var preis_zeitkarten_ermaessigt_summe = 0;
	var strecken_ids = document.getElementsByName('strecken_ids');
    
  	for ( var i = 0; i < strecken_ids.length; i++ ) {
  		var strecken_id = strecken_ids[i].value;
  		
  		var preis = parseFloat($('mo_oev_strecken_' + strecken_id + '_preis').value.replace(',', '.'));
  		
  		if ( $('mo_oev_strecken_' + strecken_id + '_tarif').options[0].selected == 'selected' || $('mo_oev_strecken_' + strecken_id + '_tarif').options[0].selected == true )
  			preis_zeitkarten_normal_summe += preis;
  		else
  			preis_zeitkarten_ermaessigt_summe += preis;
	}
	
	$('mo_oev_kosten_normal_gesamt_input').value     = number_format(preis_zeitkarten_normal_summe, 0, ',', '.');
	$('mo_oev_kosten_ermaessigt_gesamt_input').value = number_format(preis_zeitkarten_ermaessigt_summe, 0, ',', '.');
}

//
var mo_tabelle_oev_zeile_neu = function()
{
	new Ajax.Request('ajax_requests.php', {
    	method: 'post',
    	parameters: { action: 'getNewOev' },
    	onSuccess: function(t) {
      		var r = t.responseText;
      		
      		if ( r.isJSON() ) {
      			r = r.evalJSON();
      			      			
      			var id         = document.createAttribute('id');
      			id.nodeValue   = 'container_oev_' + r.strecken_id;
      			
      			var div        = document.createElement('div');
      			div.setAttributeNode(id);
      			div.className  = 'oev_wrapper';
      			div.style.display = 'none';
      			div.innerHTML     = r.html;
      			
      			$('container_oev_table_individuell_aktiv_strecken').appendChild(div);
      			
      			Effect.BlindDown(div, {
      				afterFinish: function() {
      					if ( $('please_add_oev') && $('please_add_oev').style.display != 'none' )
      						$('please_add_oev').style.display = 'none';
      				}
      			});
      			rename_oev();
      			update_zeitkarten_preis_ausgabe();
      		}
      		else
      			alert(r);
		}
	});
}

//
var mo_tabelle_oev_zeile_loeschen = function(strecken_id)
{
	var id = 'container_oev_' + strecken_id;
	
	Effect.Fade($(id), {
		afterFinish: function() {
			$('container_oev_table_individuell_aktiv_strecken').removeChild($(id));					
			rename_oev();
			update_zeitkarten_preis_ausgabe();
		}
	});
}

//
var rename_oev = function()
{
	var oev    = $$('div.oev_wrapper');
	var labels = $$('span.label_oev_a');
	
	for ( var i = 0; i < oev.length; i++ ) {
		labels[i].innerHTML = String(i + 1);
	}
}

// Page Scroller
var scrollInt;
var scrTime, scrSt, scrDist, scrDur, scrInt;

var scrollPage = function()
{
	scrTime += scrInt;
	if (scrTime < scrDur) {
		window.scrollTo( 0, easeInOut(scrTime, scrSt, scrDist, scrDur) );
	}else{
		window.scrollTo( 0, scrSt + scrDist );
		clearInterval(scrollInt);
	}
}

var easeInOut = function(t, b, c, d)
{
	return c / 2 * (1 - Math.cos(Math.PI * t / d)) + b;
}

var scrollToAnchor = function(aname)
{
	var anchors, i, ele;
	
	if (!document.getElementById)
		return;
		
	// get anchor
	anchors = document.getElementsByTagName("a");
	for ( i = 0; i < anchors.length; i++ ) {
		if ( anchors[i].name == aname ) {
			ele = anchors[i];
			i = anchors.length;
		}
	}
		
	// set scroll target
	if ( window.scrollY )
		scrSt = window.scrollY;
	else if ( document.documentElement.scrollTop )
		scrSt = document.documentElement.scrollTop;
	else
		scrSt = document.body.scrollTop;
	
	scrDist = ele.offsetTop - scrSt;
	scrDur = 200;
	scrTime = 0;
	scrInt = 10;
		
	// set interval
	clearInterval(scrollInt);
	scrollInt = setInterval(scrollPage, scrInt);
}

var openResetDialog = function()
{
	var checkov = confirm('Sollen die bisher eingegebenen Daten gelöscht werden?');
	
	if ( checkov )
		document.location.href = '/index.php?clearData=1';
	else
		document.location.href = '/';
}
