/* Author: Karl Schwaier (DMC 01)
 *
 * configuration and specific code for this calculator
 * needs calc.core.js!
 */

/*********************
 * CONFIGURATION
 * webservice urls, states (tabs), sliders
 *********************/	
// WEB SERVICES
var webServiceCalculate = "webservice.php";
var webServiceSubmit = "webservice.php";

// PARAMS
var anzErw = 1;
var anzKin = 0;
var zielgruppe = "0";

/*********************
 * FUNCTIONS
 * calculator specific for param checking and displaying of result
 *********************/
// PARAM CHECKING BEFORE SENDING TO WEBSERVICE
function checkParams(params, p) {
	var error = false;		
	var errorClass = "calcSliderError";
/*if (params["zielgruppe"] == '0') {
		calc.printError("Bitte w&auml;hlen Sie eine <strong>Zielgruppe</strong> aus!")
		error = true;
	}*/
	return error;
}


function onParamsSent(params, response, p) {
	var result = new Array();
	
	// first row
	result[0] = {
		td: calc.numberFormat(response.dummybetragneg, "money", true)
	}
	
	// second row
	result[1] = {
		td: calc.numberFormat(response.dummybetrag + 1000, "money", true)
	}
	
	// third row
	result[2] = {
		td: calc.numberFormat(response.dummybetrag - 1000, "money", true)
	}
	
	calc.writeResultTable(result);	
}

// DISPLAYING RESULTS AND CHART AFTER CALCULATING RESULT
function onParamsChanged(params) {

  //WORKAROUND: hide "PieChart Geldanlage" and "PieChart Wohnkosten" when user clicked on "Aktualisieren" 
  $("#doHaushaltsplanPieChartGA").hide();
	$("#doHaushaltsplanPieChartWK").hide();
	
	//if 'Aktualisieren' was hit the first time, show the charts:
	$("#doHaushaltsplanPieChart").show();
	$("#doHaushaltsplanBarChart").show();

	var result = new Array();
  var einnahmen;
  var ausgaben;

	var e_nettoeinkommen = 0;
  var e_nettoeinkommen_partner = 0;
  var e_beihilfen = 0;
  var e_sonstige = 0;
  var a_lebenshaltungskosten_erwachsene = 0;
  var a_lebenshaltungskosten_kinder = 0;
  var a_wohnkosten_betriebskosten = 0;
  var a_wohnkosten_miete = 0;
  var a_wohnkosten_strom = 0;
  var a_wohnkosten_telefon = 0;
  var a_zlebenshaltungskosten = 0;
  var a_mobilitaetskosten = 0;
  var a_finanzierungskosten = 0;
  var a_geldanlage_risikoabsicherung = 0;
  var a_geldanlage_altersvorsorge = 0;
  var a_geldanlage_vermoegensaufbau = 0;
  var a_sonstige = 0;

	if(typeof params["e_nettoeinkommen"] != 'undefined'){ e_nettoeinkommen = params["e_nettoeinkommen"]; }else{ params["e_nettoeinkommen"] = 0; }
  if(typeof params["e_nettoeinkommen_partner"] != 'undefined'){ e_nettoeinkommen_partner = params["e_nettoeinkommen_partner"]; }else{ params["e_nettoeinkommen_partner"] = 0; }
  if(typeof params["e_beihilfen"] != 'undefined'){ e_beihilfen = params["e_beihilfen"]; }else{ params["e_beihilfen"] = 0; }
  if(typeof params["e_sonstige"] != 'undefined'){ e_sonstige = params["e_sonstige"]; }else{ params["e_sonstige"] = 0; }
  if(typeof params["a_lebenshaltungskosten_erwachsene"] != 'undefined'){ a_lebenshaltungskosten_erwachsene = params["a_lebenshaltungskosten_erwachsene"]; }else{ params["a_lebenshaltungskosten_erwachsene"] = 0; }
  if(typeof params["a_lebenshaltungskosten_kinder"] != 'undefined'){ a_lebenshaltungskosten_kinder = params["a_lebenshaltungskosten_kinder"]; }else{ params["a_lebenshaltungskosten_kinder"] = 0; }
  if(typeof params["a_wohnkosten_betriebskosten"] != 'undefined'){ a_wohnkosten_betriebskosten = params["a_wohnkosten_betriebskosten"]; }else{ params["a_wohnkosten_betriebskosten"] = 0; }
  if(typeof params["a_wohnkosten_miete"] != 'undefined'){ a_wohnkosten_miete = params["a_wohnkosten_miete"]; }else{ params["e_nettoeinkommen_partner"] = 0; }
  if(typeof params["a_wohnkosten_strom"] != 'undefined'){ a_wohnkosten_strom = params["a_wohnkosten_strom"]; }else{ params["a_wohnkosten_strom"] = 0; }
  if(typeof params["a_wohnkosten_telefon"] != 'undefined'){ a_wohnkosten_telefon = params["a_wohnkosten_telefon"]; }else{ params["a_wohnkosten_telefon"] = 0; }
  if(typeof params["a_zlebenshaltungskosten"] != 'undefined'){ a_zlebenshaltungskosten = params["a_zlebenshaltungskosten"]; }else{ params["a_zlebenshaltungskosten"] = 0; }
  if(typeof params["a_mobilitaetskosten"] != 'undefined'){ a_mobilitaetskosten = params["a_mobilitaetskosten"]; }else{ params["a_mobilitaetskosten"] = 0; }
  if(typeof params["a_finanzierungskosten"] != 'undefined'){ a_finanzierungskosten = params["a_finanzierungskosten"]; }else{ params["a_finanzierungskosten"] = 0; }
  if(typeof params["a_geldanlage_risikoabsicherung"] != 'undefined'){ a_geldanlage_risikoabsicherung = params["a_geldanlage_risikoabsicherung"]; }else{ params["a_geldanlage_risikoabsicherung"] = 0; }
  if(typeof params["a_geldanlage_altersvorsorge"] != 'undefined'){ a_geldanlage_altersvorsorge = params["a_geldanlage_altersvorsorge"]; }else{ params["a_geldanlage_altersvorsorge"] = 0; }
  if(typeof params["a_geldanlage_vermoegensaufbau"] != 'undefined'){ a_geldanlage_vermoegensaufbau = params["a_geldanlage_vermoegensaufbau"]; }else{ params["a_geldanlage_vermoegensaufbau"] = 0; }
  if(typeof params["a_sonstige"] != 'undefined'){ a_sonstige = params["a_sonstige"]; }else{ params["a_sonstige"] = 0; }

  einnahmen = e_nettoeinkommen + e_nettoeinkommen_partner + e_beihilfen + e_sonstige;
  ausgaben = a_lebenshaltungskosten_erwachsene*370 + a_lebenshaltungskosten_kinder*200 +  a_wohnkosten_betriebskosten + a_wohnkosten_miete + a_wohnkosten_strom + a_wohnkosten_telefon + a_zlebenshaltungskosten + a_mobilitaetskosten + a_finanzierungskosten + a_geldanlage_risikoabsicherung + a_geldanlage_altersvorsorge + a_geldanlage_vermoegensaufbau + a_sonstige;
  params["einnahmen"] = einnahmen;
  params["ausgaben"] = ausgaben;

  // set the parameters for the chart, which will be appended to the img src
  // if site is reloaded, the String has to be cut before adding new parameters
  // draw pie chart
  if( document.getElementById('doHaushaltsplanPieChart').src.indexOf("&e_nettoeinkommen") != -1)
  {
    var ansparAnfang = document.getElementById('doHaushaltsplanPieChart').src.split("&e_nettoeinkommen");
    document.getElementById('doHaushaltsplanPieChart').src=ansparAnfang[0];
  }
  document.getElementById('doHaushaltsplanPieChart').src += "&e_nettoeinkommen="+e_nettoeinkommen+"&e_nettoeinkommen_partner="+e_nettoeinkommen_partner+"&e_beihilfen="+e_beihilfen+"&e_sonstige="+e_sonstige+"&a_lebenshaltungskosten_erwachsene="+a_lebenshaltungskosten_erwachsene+"&a_lebenshaltungskosten_kinder="+a_lebenshaltungskosten_kinder+"&a_wohnkosten_betriebskosten="+a_wohnkosten_betriebskosten+"&a_wohnkosten_miete="+a_wohnkosten_miete+"&a_wohnkosten_strom="+a_wohnkosten_strom+"&a_wohnkosten_telefon="+a_wohnkosten_telefon+"&a_zlebenshaltungskosten="+a_zlebenshaltungskosten+"&a_mobilitaetskosten="+a_mobilitaetskosten+"&a_finanzierungskosten="+a_finanzierungskosten+"&a_geldanlage_risikoabsicherung="+a_geldanlage_risikoabsicherung+"&a_geldanlage_altersvorsorge="+a_geldanlage_altersvorsorge+"&a_geldanlage_vermoegensaufbau="+a_geldanlage_vermoegensaufbau+"&a_sonstige="+a_sonstige;
  // draw bar chart
  if( document.getElementById('doHaushaltsplanBarChart').src.indexOf("&einnahmen") != -1)
  {
    var ansparAnfang = document.getElementById('doHaushaltsplanBarChart').src.split("&einnahmen");
    document.getElementById('doHaushaltsplanBarChart').src=ansparAnfang[0];
  }
  document.getElementById('doHaushaltsplanBarChart').src += "&einnahmen="+einnahmen+"&ausgaben="+ausgaben;

	// first row
	result[0] = {
		td: calc.numberFormat(einnahmen - ausgaben, "money", true)
	}
	
	// second row
	result[1] = {
		td: calc.numberFormat(einnahmen, "money", true)
	}
	
	// third row
	result[2] = {
		td: calc.numberFormat(ausgaben, "money", true)
	}
	
	calc.writeResultTable(result);	
}

function setImageMap(){
  var chartservlet_name = "haushaltsplan_pie_chart";
  var imagemapservlet_name = "haushaltsplan_pie_imagemap";
  // substitute chartservlet_name with imagemapservlet_name
  var servlet_name = $("#doHaushaltsplanPieChart").attr("src").split(chartservlet_name)[0] + imagemapservlet_name + $("#doHaushaltsplanPieChart").attr("src").split(chartservlet_name)[1];
  // calls the servlet for the image map
  $.get(servlet_name,
    {}, // no parameters here, becaue parameters are added directly to 'servlet_name'
    function(data){
      $("#imagemap").remove();
      $(".calcDiagram").append(data);
      // make imagemap visible for firefox
      $("#imagemap area").each(function(){
        $(this).attr("alt",$(this).attr("title"));
      });
      // add onclick listeners to the two sections
      $("#imagemap area[href~='#geldanlage']").click(function(){ showOtherPieChart($(this).attr("href")); });
      $("#imagemap area[href~='#wohnkosten']").click(function(){ showOtherPieChart($(this).attr("href")); });
  });
}

function setImageMapBarChart(){
  var chartservlet_name = "haushaltsplan_bar_chart";
  var imagemapservlet_name = "haushaltsplan_bar_imagemap";
  // substitute chartservlet_name with imagemapservlet_name
  var servlet_name = $("#doHaushaltsplanBarChart").attr("src").split(chartservlet_name)[0] + imagemapservlet_name + $("#doHaushaltsplanBarChart").attr("src").split(chartservlet_name)[1];
  // calls the servlet for the image map
  $.get(servlet_name,
    {}, // no parameters here, becaue parameters are added directly to 'servlet_name'
    function(data){
      $("#imagemapBarChart").remove();
      $(".calcDiagram").append(data);
      // make imagemap visible for firefox
      $("#imagemapBarChart area").each(function(){
        $(this).attr("alt",$(this).attr("title"));
      });
  });
}

function showOtherPieChart(section){
  var chartservlet_name = "haushaltsplan_pie_chart";
  var imagemapservlet_name = "haushaltsplan_pie_chart_";
  // set the servletname and hide the other pie chart (show 'wohnkosten' -> hide 'geldanlage' and vice versa)
  if(section=="#geldanlage"){
    imagemapservlet_name += "geldanlage";
    $("#doHaushaltsplanPieChartGA").attr("src", $("#doHaushaltsplanPieChart").attr("src").split(chartservlet_name)[0] + imagemapservlet_name + $("#doHaushaltsplanPieChart").attr("src").split(chartservlet_name)[1]);
  	$("#doHaushaltsplanPieChartWK").hide();
    $("#doHaushaltsplanPieChartGA").show();
  }else if(section=="#wohnkosten"){
    imagemapservlet_name += "wohnkosten";
    $("#doHaushaltsplanPieChartWK").attr("src", $("#doHaushaltsplanPieChart").attr("src").split(chartservlet_name)[0] + imagemapservlet_name + $("#doHaushaltsplanPieChart").attr("src").split(chartservlet_name)[1]);
    $("#doHaushaltsplanPieChartGA").hide();
  	$("#doHaushaltsplanPieChartWK").show();
  }
}

function sendMail(params){
  var mailservlet_name = "haushaltsplan_mail";
  var servlet_name = $("#doCaptcha").attr("src").split("?")[0]+"?action="+mailservlet_name;
  
  params["zielgruppe"]=zielgruppe;
  
  if ($("#calcInputContactEmail").is(':checked')) {
    params["contact_me"]="email";
  }else{
    params["contact_me"]="phone";
  }
  $.post(servlet_name, params); // calls the servlet to send the mail
}

$.fn.focusNextInputField = function() {
  return this.each(function() {
    var fields = $(".calcForm .calcParam").find(':input:visible');
    var index = fields.index( this );
    if ( index > -1 && ( index + 1 ) < fields.length ) {
      fields.eq( index + 1 ).focus();
      fields.eq( index + 1 ).select();
    }
    return false;
  });
};

/*********************
 * DOCUMENT READY
 * calculator specific behaviour
 *********************/
$(function(){		
	// init
	calc.init();
	
	// hide the charts for 'geldanlage' and 'wohnkosten'
	$("#doHaushaltsplanPieChart").hide();
	$("#doHaushaltsplanBarChart").hide();
  $("#doHaushaltsplanPieChartGA").hide();
	$("#doHaushaltsplanPieChartWK").hide();
	
	// fields
	var paramEinkPartner = $("#calcPageCalculate #calcParam-eNettoeinkommenPartner");
	var paramBeihilfen = $("#calcPageCalculate #calcParam-eBeihilfen");
	var paramSonstAusg = $("#calcPageCalculate #calcParam-aSonstige");
	var paramAnzErw = $("#calcPageCalculate #calcParam-aLebenshaltungskostenErwachsene");
	var paramAnzKin = $("#calcPageCalculate #calcParam-aLebenshaltungskostenKinder");
	
	// set default values
	$("#calcPageCalculate input.calcFormatMoney").val(calc.numberFormat(0, "money", true));
	$("input", paramAnzErw).val(anzErw);
	$("input", paramAnzKin).val(anzKin);
	paramAnzKin.hide();
	
/*	// enable switching to next input field by pressing 'Enter'
  $("#calcPageCalculate .calcTextInput input").keypress(function(event){
    if (event.keyCode == '13') {
      $(this).focusNextInputField();
      event.preventDefault();
    }
  });
*/
	// adapt calculator when changing 'Zielgruppe'
/*	$("#calcPageCalculate .calcTarget .calcJqTransform li a").click(function(){
		// get selected element
		var z;
		z = $(this).attr("index"); // get index of clicked link
		z = $("#calcPageCalculate .calcTarget .calcJqTransform option:eq("+z+")").attr("id"); // get id of concerning option in select list
*/
	var z;
	$("#calcParam-zielgruppe label").click(function(){
		// get selected element
		z = $(this).attr("for");
		// adaption
		var newAnzErw, newAnzKin, lblBeihilfen, lblSonstAusg;									
		switch (z) {
			case "calcZ1": //Alleinstehende(r) ohne Kinder
				paramEinkPartner.hide();
				lblBeihilfen = "Wohnzuschuss, Unterhalt, ...";				
				newAnzErw = anzErw;
				newAnzKin = 0;
        paramAnzKin.hide();
				lblSonstAusg = "Kirchenbeitrag, Zusatzausgaben, Alimente";
				zielgruppe="Alleinstehende(r) ohne Kinder";
				break;
			case "calcZ2": //Paar ohne Kinder
				paramEinkPartner.show();
				lblBeihilfen = "Wohnzuschuss, ...";								
				newAnzErw = 2;
				newAnzKin = 0;
				paramAnzKin.hide();
				lblSonstAusg = "Kirchenbeitrag, Zusatzausgaben";
				zielgruppe="Paar ohne Kinder";
				break;
			case "calcZ3": //Familie
				paramEinkPartner.show();
				lblBeihilfen = "Wohnzuschuss, Familienbeihilfe, ...";				
				newAnzErw = 2;
				newAnzKin = anzKin;
				paramAnzKin.show();
				lblSonstAusg = "Kirchenbeitrag, Zusatzausgaben, Kinderbetreuung";
				zielgruppe="Familie";
				break;
			case "calcZ4": //Alleinerzieher(in)
				paramEinkPartner.hide();
				lblBeihilfen = "Wohnzuschuss, Alimente, Beihilfe für Alleinerzieher(innen), ...";				
				newAnzErw = anzErw;
				newAnzKin = anzKin;				
				paramAnzKin.show();
				lblSonstAusg = "Kirchenbeitrag, Zusatzausgaben, Kinderbetreuung";
				zielgruppe="Alleinerzieher(in)";
				break;
			case "calcZ5": //Student(in)
				paramEinkPartner.hide();
				lblBeihilfen = "Wohnzuschuss, Stipendien, ...";				
				newAnzErw = anzErw;
				newAnzKin = 0;
				paramAnzKin.hide();
				lblSonstAusg = "Kirchenbeitrag, Zusatzausgaben";
				zielgruppe="Student(in)";
				break;
			case "calcZ6": //Pensionist(in)
				paramEinkPartner.hide();
				lblBeihilfen = "Wohnzuschuss, Pflegegeld, ...";				
				newAnzErw = anzErw;
				newAnzKin = 0;
				paramAnzKin.hide();
				lblSonstAusg = "Kirchenbeitrag, Zusatzausgaben";
				zielgruppe="Pensionist(in)";
				break;
		}			 
		$(".calcTextInput label", paramBeihilfen).text(lblBeihilfen);
		$(".calcTextInput label", paramSonstAusg).text(lblSonstAusg);
		$("input", paramAnzErw).val(newAnzErw);
		$("input", paramAnzKin).val(newAnzKin);
		
		// refresh necessary
		calc.needsRefresh();
	});
	
	// jump to next input field when hitting return
	var allFields, nextField;
	$("#calcPageCalculate input[type=text]").keypress(function (e) {		
		if (e.keyCode == 13) {			
			allFields = $("#calcPageCalculate input[type=text]:visible");			
			nextField = allFields[allFields.index(this) + 1];
			if (typeof nextField != "undefined") {
				nextField.focus();
				nextField.select();	
			}						
			return false; // prevents submitting the form
		}
	});
	
	$("#calcParam-zielgruppe label[for*=calcZ1]").click();
	
	// refresh necessary (when page is loaded the first time)
	calc.needsRefresh();
});
