
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: 235.00, sachleistung: 450.00 },
		{stufe: 2, pflegegeld: 440.00, sachleistung: 1100.00 },
		{stufe: 3, pflegegeld: 700.00, sachleistung: 1550.00 },
		{stufe: 4, pflegegeld: 921.00, sachleistung: 1918.00 }
	],
	table: [
		{id: 1, lst_kurz: 'Erw. kl. Körperpflege',
				lst_lang: "Erweiterte kleine Körperpflege (LK 1)",
				lst_beschreibung:
									"1. Hilfe beim Aufsuchen oder Verlassen des Bettes|"+
									"2. An-/Auskleiden|"+
									"3. Teilwaschen|"+
									"4. Mundpflege und Zahnpflege|"+
									"5. Kämmen",
				lst_preis: 13.04 },
		{id: 2, lst_kurz: 'Kleine Körperpflege',
				lst_lang: 'Kleine Körperpflege (LK 2)',
				lst_beschreibung:
									"1. An-/Auskleiden|"+
									"2. Teilwaschen|"+
									"3. Mundpflege und Zahnpflege|"+
									"4. Kämmen",
				lst_preis: 8.69},
		{id: 3, lst_kurz: 'Erw. gr. Körperpflege a)',
				lst_lang: 'Erweiterte große Körperpflege <u>ohne</u> Baden (LK 3a)',
				lst_beschreibung:
									"1. Hilfe beim Aufsuchen oder Verlassen des Bettes|"+
									"2. An-/Auskleiden|"+
									"3. Waschen/Duschen|"+
									"4. Rasieren|"+
									"5. Mundpflege und Zahnpflege|"+
									"6. Kämmen|",
				lst_preis: 19.56},
		{id: 4, lst_kurz: 'Erw. gr. Körperpflege b)',
				lst_lang: 'Erweiterte große Körperpflege <u>mit</u> Baden (LK 3b)',
				lst_beschreibung:
									"1. Hilfe beim Aufsuchen oder Verlassen des Bettes|"+
									"2. An-/Auskleiden|"+
									"3. Waschen/Duschen/Baden|"+
									"4. Rasieren|"+
									"5. Mundpflege und Zahnpflege|"+
									"6. Kämmen|",
				lst_preis: 26.08},
		{id: 5, lst_kurz: 'Große Körperpflege',
				lst_lang: 'Große Körperpflege (LK 4)',
				lst_beschreibung: 
									"1. An-/Auskleiden|"+
									"2. Waschen/Duschen|"+
									"3. Rasieren|"+
									"4. Mundpflege und Zahnpflege|"+
									"5. Kämmen|",
				lst_preis: 17.39},
		{id: 6, lst_kurz: 'Lagern / Betten',
				lst_lang: 'Lagern / Betten (LK 5)',
				lst_beschreibung: 
				                    "1. Lagern, Bett machen/richten|"+
									"2. Mobilisieren beim Betten|"+
									"<i>Hinweis:</i> Diese Leistung ist nur in Verbindung mit mind. einer anderen "+
									"Leistung abrechenbar.",
				lst_preis: 4.35},
		{id: 7, lst_kurz: 'Nahrungsaufnahme',
				lst_lang: 'Hilfe bei der Nahrungsaufnahme (LK 6)',
				lst_beschreibung:
									"1. Hilfe beim Aufsuchen und Verlassen des Essenplatzes|"+
									"2. Hilfe/Beaufsichtigung beim Essen und Trinken|"+
									"3. Hygiene im Zusammenhang mit der Nahrungsaufnahme",
				lst_preis: 10.87},
		{id: 8, lst_kurz: 'Darm/Blasenentleerung a)',
				lst_lang: 'Darm- und Blasenentleerung (LK 7a)',
				lst_beschreibung:
									"a)	Darm- und Blasenentleerung beinhaltet insbesondere:|"+
									" Hilfen/Unterstützung bei der Blasen- und/oder Darmentleerung einschl. "+
									" Entsorgung von Ausscheidungen|"+
									"<i>Hinweis:</i> Diese Leistung ist nur in Verbindung mit mind. einer anderen "+
									"Leistung abrechenbar.",
				lst_preis: 3.48},
		{id: 9, lst_kurz: 'Darm/Blasenentleerung b)',
				lst_lang: 'Darm- und Blasenentleerung (LK 7b)',
				lst_beschreibung:
									"b) Darm- und Blasenentleerung beinhaltet insbesondere:|"+
									"1. An-/Auskleiden|"+
									"2. Hilfen/Unterstützung bei der Blasen- und/oder Darmentleerung, "+
									"   z. B. Inkontinenzversorgung, zur Toilette bringen, Entsorgung von Ausscheidungen|"+
									"3. Intimpflege|"+
									"<i>Hinweis:</i> Diese Leistung ist abbrechenbar, wenn <u>keine</u> der Leistungen 1. - 4. gewählt wird.",
				lst_preis: 8.69},
		{id: 10, lst_kurz: 'Wohnung verlass.',
				lst_lang: 'Hilfestellung beim Verlassen oder Wieder-aufsuchen der Wohnung (LK 8)',
				lst_beschreibung:
								"1. An-/Auskleiden im Zusammenhang mit dem Verlassen oder Wiederaufsuchen der Wohnung|"+
								"2. Treppensteigen",
				lst_preis: 3.04},
		{id: 11, lst_kurz: 'Begleitung a. Haus',
				lst_lang: 'Begleitung außer Haus (LK 9)',
				lst_beschreibung:
								"Begleitung bei Aktivitäten, bei denen das persönliche Erscheinen erforderlich "+
								" und ein Hausbesuch nicht möglich ist (keine Spaziergänge, kulturelle Veranstaltungen)",
				lst_preis: 26.08},
		{id: 12, lst_kurz: 'Heizen ',
				lst_lang: 'Beheizen der Wohnung (LK 10)',
				lst_beschreibung:
								"1. Beschaffung des Heizmaterials aus einem Vorrat im Haus|"+
								"2. Entsorgung der Verbrennungsrückstände|"+
								"3. Heizen",
				lst_preis: 5.22},
		{id: 13, lst_kurz: 'kl. Reinigung',
				lst_lang: 'Reinigen der Wohnung (LK 11a)',
				lst_beschreibung:
							"a)	Aufräumen der Wohnung, Trennung/Entsorgung des Abfalls, Spülen/Aufräumen|"+
							"<i>Hinweis:</i> LK 11a ist nur in Kombination mit mindestens einem anderen Leistungskomplex abrechenbar.",
				lst_preis: parseFloat(3.91)},
		{id: 14, lst_kurz: 'gr. Reinigung',
				lst_lang: 'Reinigen der Wohnung (LK 11b)',
				lst_beschreibung:
							"b)	Reinigung der Wohnung, Trennung/Entsorgung des Abfalls, Reinigung Bad, Toilette, Küche, Wohn-/Schlafbereich, Staubsaugen/Nassreinigung, Spülen/Staubwischen|"+
							"<i>Hinweis:</i> LK 11a und 11b sind nicht nebeneinander abrechenbar.",
				lst_preis: 11.74},
		{id: 15, lst_kurz: 'Wäschepflege',
				lst_lang: 'Wechseln und Waschen der Wäsche und Kleidung (LK 12)',
				lst_beschreibung:
							"Wechseln der Wäsche, auch Bettwäsche, "+
							"Pflege der Wäsche und Kleidung (z. B. auch Bügeln, Ausbessern) sowie Einräumen der Wäsche",
				lst_preis: 20.87},
		{id: 16, lst_kurz: 'Einkaufen ',
				lst_lang: 'Einkaufen (LK 13)',
				lst_beschreibung:
							"Erstellen des Einkaufs- und Speiseplanes, "+
							"Einkaufen von Lebensmitteln und sonstigen Dingen des persönlichen Bedarfes sowie Einräumen der eingekauften Gegenstände",
				lst_preis: 10.43},
		{id: 17, lst_kurz: 'Mittag kochen',
				lst_lang: 'Zubereitung einer warmen Mahlzeit in der Häuslichkeit des Pflegebedürftigen (LK 14)',
				lst_beschreibung:
							"1. Kochen|"+
							"2. Aufwärmen des Tiefkühlmittagstisches|"+
							"3. Spülen des bei den Mahlzeiten verwendeten Geschirrs|"+
							"4. Reinigen des Arbeitsbereiches|"+
							"<i>Hinweis:</li> nicht bei warmem Essen auf Rädern!",
				lst_preis: 11.74},
		{id: 18, lst_kurz: 'kl. Mahlzeit',
				lst_lang: 'Zubereitung einer sonstigen Mahlzeit in der Häuslichkeit des Pflegebedürftigen  (LK 15)',
				lst_beschreibung:
							"1.	Zubereitung warm angelieferter Kost oder einer sonstigen Mahlzeit|"+
							"2.	Spülen des bei den Mahlzeiten verwendeten Geschirrs|"+
							"3.	Reinigen des Arbeitsbereiches|"+
							"<i>Hinweis:</li> u. a. auch bei Essen auf Rädern!",
				lst_preis: 3.91}
	]
};

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) + " €");
	}
}

