
Array.prototype.remove=function(s){
  for(i=0;i<this.length;i++){
    //alert(s+'('+typeof s + '):' + this[i] + '(' + typeof this[i] + ')|' + (s==this[i]));
    if(s==this[i]) this.splice(i, 1);
  }
}

var Days ;
$(document).ready(function(){
		
// 		Days = $('#days').Accordion({
// 		  header: '.title',
// 		  animated : false
// 		});
//
 		Calc.init();
	});

var data = {
	name: 'Pflegeleistungen',
	pflege_stufe: 0,
	summe_monat: 0.00,
	stufe_betrag: 0.00,
	rest_eigen: 0.00,
	rest_pflege: 0.00,
	stufe: [
        {stufe: 0, pflegegeld: 0.00, sachleistung: 0.00 },
		{stufe: 1, pflegegeld: 225.00, sachleistung: 440.00 },
		{stufe: 2, pflegegeld: 430.00, sachleistung: 1040.00 },
		{stufe: 3, pflegegeld: 685.00, sachleistung: 1510.00 },
		{stufe: 4, pflegegeld: 0.00, sachleistung: 1918.00 }
	],
	table: [

		{id: 1, lst_kurz: 'Erstbes.',
				lst_lang: "Erstbesuch (LK 1)",
				lst_beschreibung:
									"1. Erkennen von Problemen und Ressourcen|"+
									"2. Festlegen der Pflegeziele|"+
									"3. Planen der Maßnahmen|"+
									"4. Anlegen der Dokumentation",
				lst_preis: 24.60 },

		{id: 2, lst_kurz: 'Folgebes.',
				lst_lang: 'Folgebesuch (LK 2)',
				lst_beschreibung:
									"1. Erkennen von Problemen und Ressourcen|"+
									"2. Festlegen der Pflegeziele|"+
									"3. Planen der Maßnahmen|"+
									"4. Anlegen der Dokumentation",
				lst_preis: 12.30},

		{id: 3, lst_kurz: 'kl. Pflege',
				lst_lang: 'Kleine Pflege Grundpflege GP (LK 3)',
				lst_beschreibung:
									"1. An-/Auskleiden|"+
									"2. Teilwaschen|"+
									"3. Mund-/Zahnpflege",
				lst_preis: 9.02},

		{id: 4, lst_kurz: 'Gr. Pflege I',
				lst_lang: 'Große Pflege Grundpflege I GP (LK 4)',
				lst_beschreibung:
									"1. An-/Auskleiden|"+
									"2. Waschen (Ganzkörperwaschung)/Duschen|"+
									"3. Mund-/Zahnpflege",
				lst_preis: 14.76},

		{id: 5, lst_kurz: 'Gr. Pflege II',
				lst_lang: 'Große Pflege Grundpflege II GP (LK 5)',
				lst_beschreibung:
									"1. An-/Auskleiden|"+
									"2. Ganzkörperwaschung im Vollbad|"+
									"3. Mund-/Zahnpflege",
				lst_preis: 18.45},

		{id: 6, lst_kurz: 'Kämmen und Rasieren',
				lst_lang: 'Kämmen und Rasieren Grundpflege GP (LK 6)',
				lst_beschreibung:
				          "1. Kämmen|"+
									"2. Rasieren|"+
									"<u>Hinweis:</u> Dieser Leistungskomplex ist nur mit den Leistungskomplexen 3 - 5 wählbar "+
									"Leistung abrechenbar",
				lst_preis: 2.87},

		{id: 8, lst_kurz: 'Hilfe beim Bettverlassen mit Körperpflege',
				lst_lang: 'Hilfen bei Aufsuchen und Verlassen des Bettes im Zusammenhang mit der Körperpflege GP (LK 8)',
				lst_beschreibung:
									"1. Hilfe beim Aufsuchen bzw. Verlassen des Bettes / des Rollstuhles o. ä.|"+
									"2. Machen und Richten des Bettes|"+
									"3. ggf. Teilwechseln der Bettwäsche|"+
									"4. Maßnahmen zum körper- und situationsgerechten Liegen und Sitzen|"+
									"<u>Hinweis:</u> Dieser Leistungskomplex ist nur mit den Leistungskomplexen 3 - 5 wählbar "+
									"Leistung abrechenbar",
				lst_preis: 2.05},

		{id: 9, lst_kurz: 'Hilfen beim Bettverlassen',
				lst_lang: 'Hilfen beim Aufsuchen und Verlassen des Bettes GP (LK 9)',
				lst_beschreibung:
                  "1. Hilfe beim Aufsuchen bzw. Verlassen des Bettes / des Rollstuhles o. ä.|"+
									"2. Machen und Richten des Bettes|"+
									"3. ggf. Teilwechseln der Bettwäsche|"+
									"4. Maßnahmen zum körper- und situationsgerechten Liegen und Sitzen|"+
									"<u>Hinweis:</u> Der Leistungskomplex 9 kann nicht im Zusammenhang mit den Leistungskomplexen 3 - 6 sowie 8, 10 und 11 gewählt werden "+
									"Leistung abrechenbar",
				lst_preis: 4.10},

		{id: 10, lst_kurz: 'spez. Lagerung mit Körperpflege',
				lst_lang: 'Spezielle Lagerung bei Immobilität im Zusammenhang mit der Körperpflege GP (LK 10)',
				lst_beschreibung:
                  "1. Spezielle Lagerungsmaßnahmen|"+
									"2. ggf. mit Hilfe beim Verlassen und Aufsuchen des Bettes|"+
									"3. ggf. Teilwechsel der Wäsche und Bett machen/richten|"+
									"<u>Hinweis:</u> Dieser Leistungskomplex ist nur mit den Leistungskomplexen 3 - 5 wählbar "+
									"Leistung abrechenbar",
				lst_preis: 4.10},

		{id: 11, lst_kurz: 'spez. Lagerung ohne Körperpflege',
				lst_lang: 'Spezielle Lagerung bei Immobilität GP (LK 11)',
				lst_beschreibung:
								  "1. Spezielle Lagerungsmaßnahmen|"+
									"2. ggf. mit Hilfe beim Verlassen und Aufsuchen des Bettes|"+
									"3. ggf. Teilwechsel der Wäsche und Bett machen/richten|"+
									"<u>Hinweis:</u> Dieser Leistungskomplex 11 kann allein oder in Zusammenhang mit den Leistungskomplexen 12 – 16 und 19 gewählt werden "+
									"Leistung abrechenbar",
				lst_preis: 8.20},

		{id: 12, lst_kurz: 'Einfa. Hilfe bei der Nahrungsaufnahme',
				lst_lang: 'Einfache Hilfe bei der Nahrungsaufnahme GP (LK 12)',
				lst_beschreibung:
								  "1. Mundgerechtes Zubereiten der Nahrung|"+
								  "2. Hilfen beim Essen und Trinken/sonstige Mahlzeit|"+
								  "3. Hygiene im Zusammenhang mit der Nahrungsaufnahme|"+
								  "<u>Hinweis:</u> Der Leistungskomplex 12 kann in einem Einsatz nicht neben dem Leistungskomplex 13 vom Pflegebedürftigen gewählt werden"+
								  "Leistung abrechenbar",
				lst_preis: 4.10},


		{id: 13, lst_kurz: 'Umfangr. Hilfe bei der Nahrungsaufnahme',
				lst_lang: 'Umfangreiche Hilfe bei der Nahrungsaufnahme GP (LK 13)',
				lst_beschreibung:
								  "1. Mundgerechtes Zubereiten der Nahrung|"+
								  "2. Hilfen beim Essen und Trinken/Hauptmahlzeit|"+
								  "3. Hygiene im Zusammenhang mit der Nahrungsaufnahme|"+
								  "<u>Hinweis:</u> Der Leistungskomplex 13 kann in einem Einsatz nicht neben dem Leistungskomplex 12 vom Pflegebedürftigen gewählt werden"+
								  "Leistung abrechenbar",
				lst_preis: 12.30},

		{id: 14, lst_kurz: 'Nahrungszufuhr durch Verabr. von Sondenkost',
				lst_lang: 'Nahrungszufuhr durch Verabreichung von Sondenkost GP (LK 14)',
				lst_beschreibung:
							"1.	Verabreichung der Sondennahrung|"+
							"2.	Sondennahrung auf Körpertemperatur erwärmen|"+
							"3.	Pflegebedürftigen ggf. in halbsitzende Position bringen|"+
							"4.	Überprüfung der Lage der Sonde|"+
							"5. Spülen der Sonde nach Applikation|"+
							"6. ggf. Reinigung des verwendeten Mehrfachsystems",
				lst_preis: parseFloat(4.10)},

		{id: 15, lst_kurz: 'Ergän. Hilfe b. Ausscheidungen',
				lst_lang: 'Ergänzende Hilfe bei Ausscheidungen im Zusammenhang mit der Körperpflege GP (LK 15)',
				lst_beschreibung:
							" 1. Hilfen/Unterstützung bei Ausscheidungen, die über das Maß der physiologischen Blasen- und Darmentleerung hinausgehen|"+
							" 2. Kontinenztraining|"+
							" 3. Hilfe bei Erbrechen|"+
							"<u>Hinweis:</u> Dieser Leistungskomplex ist nur mit den Leistungskomplexen 3 - 5 wählbar "+
							"Leistung abrechenbar",
				lst_preis: 3.28},

		{id: 16, lst_kurz: 'Umfangr. Hilfe b. Ausscheidungen',
				lst_lang: 'Umfangreiche Hilfe bei Ausscheidungen GP (LK 16)',
				lst_beschreibung:
							" 1. An- und Auskleiden, ggf. An- und Ablegen von Körperersatzstücken|"+
							" 2. Begleitung zu und von der Toilette|"+
							" 3. Hilfen/Unterstützung bei Ausscheidungen|"+
							" 4. Hilfen/Unterstützung bei Ausscheidungen, die über das Maß der Blasen- und Darmentleerung hinausgehen|"+
							" 5. Kontinenztraining|"+
							" 6. Hilfe bei Erbrechen|"+
							" 7. Entsorgung von Ausscheidungen|"+
							" 8. Teilwaschen|"+
							"<u>Hinweis:</u> Der Leistungskomplex 16 kann bei einem Einsatz nicht in Verbindung mit den Leistungskomplexen 3 – 5 sowie 15 gewählt werden "+
							"Leistung abrechenbar",
				lst_preis: 8.20},

		{id: 17, lst_kurz: 'Hilfest. b. Verlassen o. Wiederaufsuchen d. Wohnung',
				lst_lang: 'Hilfestellung beim Verlassen oder Wiederaufsuchen der Wohnung GP (LK 17)',
				lst_beschreibung:
							"1. An-/Auskleiden|"+
							"2. Hilfestellung beim Verlassen und Wiederaufsuchen der Wohnung|"+
							"<u>Hinweis:</u> Der Leistungskomplex 17 kann bei einem Einsatz nicht in Verbindung mit Leistungskomplex 18 gewählt werden "+
							"Leistung abrechenbar",
				lst_preis: 3.28},

		{id: 18, lst_kurz: 'Begleitung bei Aktivitäten',
				lst_lang: 'Begleitung bei Aktivitäten GP (LK 18)',
				lst_beschreibung:
							"1. An-/Auskleiden|"+
							"2. Hilfestellung beim Verlassen und Wiederaufsuchen der Wohnung|"+
							"3. Begleitung bei Aktivitäten|"+
							"<u>Hinweis:</u> Dieser Leistungskomplex kann bei einem Einsatz nicht in Verbindung mit Leistungskomplex 17 gewählt werden"+
							"Leistung abrechenbar",
				lst_preis: 24.60},

		{id: 19, lst_kurz: 'Hausw. Versorgung',
				lst_lang: 'Hauswirtschaftliche Versorgung (LK 19)',
				lst_beschreibung:
							"1.	Aufräumen und Reinigung der Wohnung|"+
							"2.	Vor- und Zubereitung von Mahlzeiten|"+
							"3.	Einkaufen|"+
							"4.	Pflege der Wäsche und Kleidung|"+
							"5.	Beheizen der Wohnung",
				lst_preis: 3.28}
	]
};

var Calc = {
	
	SelectedItems : new Array(),
// 	GetActiveDayID : function() { return $("#days div.selected").parent("div")[0].id; },
// 	GetActiveTable : function() { return $("#days div.selected").siblings("div.daycontent").children("table"); },
	
	init : function() {
// 	    if($wf2.isInitialized){
//             this.InitLeistungen();
// 		}else{
            this.initTimeOut = window.setTimeout( "Calc.InitLeistungen()", 200);
// 			alert(this.initTimeOut )
// 		}
//
        //$("div.daycontent").append( "<table>" + this.DayTableHeaderRow + this.DayTableDataRow + "</table>");
	},
	
	InitLeistungen : function () {

		// Leistungstitel + Beschreibungen(Tooltips)
		$.each( data.table, function(i,n){
			$("#lst"+eval(i+1)).append(
				"	<span class=\"lt_text\">"+n.lst_kurz+"</span>" +
				"	<span class=\"help\" title=\""+n.lst_lang+"|"+n.lst_beschreibung+"||<b>Einzelpreis</b>: "+n.lst_preis.toFixed(2)+" €\">&nbsp;?&nbsp;</span>")
		});
		
		// Click-Buttons + -
		$("#daytable button.add").bind("click", {calc:this}, this.DayCountAdd) ;
		$("#daytable button.del").bind("click", {calc:this}, this.DayCountDel) ;
		
		// Click-Buttons + - für Pflegestufe
		$("#pflegetable #stufe_buttons button.add").bind("click", {calc:this}, this.StufeCountAdd);
		$("#pflegetable #stufe_buttons button.del").bind("click", {calc:this}, this.StufeCountDel);

		// Help Tooltip
		$('#daytable span[@title]').cluetip({
		  splitTitle: '|',
		  width: 325,
		  arrows: true,
		  dropShadow: false,
		  dropShadowSteps: 2,
		  cluetipClass: 'jTip'}
		);
	},
	
	DayCountAdd : function(e){
	    var valElement = $(this).siblings("input");
        var value = valElement.val();

        if(value.length==0) value = 0;
		value=parseInt(value);

		if(value>=4){
			value = 4;
		}else{
			value++;
			e.data.calc.aktualisiereTag(this, e);
			valElement.addClass("value")
		};
		this.blur();
		valElement.val( value);
		return false;
	},
	DayCountDel : function(e){
		var valElement = $(this).siblings("input");
		var value = valElement.val();

		if(value.length==0) value = 0;
		value=parseInt(value);
		
		if(value<=0){
			value = 0;
		}else{
			value--;
			e.data.calc.aktualisiereTag(this, e);
		};
		if(value==0)valElement.removeClass("value");
		this.blur();
		valElement.val( (value=="0")?"":value );
		return false;
	},
	
	aktualisiereTag : function(obj, e) {
		var dayString = $(obj).parent("td").attr("class");
		var activeRowID = $(obj).parents("tr").attr("repeat");

		if( e.data.calc.SelectedItems[dayString]){}else{ e.data.calc.SelectedItems[dayString]="0.0"}

		var activeDaySum = parseFloat( e.data.calc.SelectedItems[dayString] );

		if($(obj).attr("class")=="add"){
            activeDaySum += data.table[parseInt(activeRowID)-1].lst_preis;
		}
		if($(obj).attr("class")=="del"){
            activeDaySum -= data.table[parseInt(activeRowID)-1].lst_preis;
		}
		e.data.calc.SelectedItems[dayString] = activeDaySum.toFixed(2);
		e.data.calc.AktualisiereSummen( e, dayString);
	},
	
	AktualisiereSummen : function(e, activeDay) {

		// Tagessumme aktualisieren
		$("#summery td."+activeDay).empty().append(e.data.calc.SelectedItems[activeDay] + " €");

        // Monatssumme aktualisieren
		var month = 0;
		for(var mDay in e.data.calc.SelectedItems) {
			if( typeof(e.data.calc.SelectedItems[mDay])=="string"){
				month += parseFloat(e.data.calc.SelectedItems[mDay]);
			}
		};
		month *= 4.3;
		data.summe_monat = month;
		e.data.calc.AktualisiereCalc( e);
	},
	
	StufeCountAdd : function(e) {
        var valElement = $(this).siblings("input");
        var value = valElement.val();

        if(value.length==0) value = 0;
        if(value=="3e")value=4;
		value=parseInt(value);

		if(value>=4){
			value = 4;
		}else{
            value++;
            valElement.addClass("value")
		};

		data.pflege_stufe = value;
		e.data.calc.AktualisiereCalc( e);
		this.blur();
		valElement.val( (value==4)?"3e":value );
		return false;
	},
	StufeCountDel : function(e) {
        var valElement = $(this).siblings("input");
        var value = valElement.val();

        if(value.length==0) value = 0;
        if(value=="3e")value=4;
		value=parseInt(value);

		if(value<=0){
			value = 0;
		}else{
            value--;
		};
		data.pflege_stufe = value;
		e.data.calc.AktualisiereCalc( e);
		this.blur();
		if(value==0)valElement.removeClass("value")
		valElement.val( (value=="0")?"":value );
		return false;
	},
	
	AktualisiereCalc : function(e) {

		data.stufe_betrag = data.stufe[ data.pflege_stufe].sachleistung;

		// Berechnung Rest-Eigenanteil
		if(data.summe_monat > data.stufe_betrag) {
			data.rest_eigen = data.summe_monat - data.stufe_betrag;
			data.rest_pflege = 0.00;
		}else{
			data.rest_eigen = 0.00;
            // Berechnung Rest-Pflegegeld
			var x = data.summe_monat / data.stufe_betrag * 100
			var y = (x<100) ? 100-x : 0;
			data.rest_pflege = y/100 * data.stufe[ data.pflege_stufe].pflegegeld;
		}
		
		$("#summe_monat").empty().append( data.summe_monat.toFixed(2) + " €");
		$("#stufe_betrag").empty().append( data.stufe_betrag.toFixed(2) + " €");
		$("#rest_eigen").empty().append( data.rest_eigen.toFixed(2) + " €");
		$("#rest_pflege").empty().append( data.rest_pflege.toFixed(2) + " €");
	}
}

