// PV.JS (c) Frank Spade 
var Revision = "11.3.0";
var muster  = /[0-9]*[,]?[0-9]{1,2}/;
var ganz    = /[0-9]*/;
var situationen_gefragt = false;
var situationen_konsistenz = false;
var situationen_wirklich = false;

function cleanCAPS(str) {
	//var ar = str.toLowerCase().split(" ");
	//for(var i=0; i<ar.length; i++)
	//  ar[i].substr(0,1).toUpperCase();
	if (str.match(/[A-ZÄÖÜ]{4,}/)) str = wordToUpper(str)
	if (str == str.toLowerCase()) str = wordToUpper(str)
	return trim(str);
}

function wordToUpper(val) {
        newVal = '';        
		val = val.toLowerCase().split(/[ -]/g); // Teststring: günter-maria von straußhöhenstätten   
		for(var c=0; c < val.length; c++) {                
		newVal += val[c].substring(0,1).toUpperCase() + val[c].substring(1,val[c].length) + ' ';        
		}        
	return newVal;
}

function countWords(str){
  return str.split(' ').length;
}

function trim(textfield){
  return textfield.replace(/^\s+/,'').replace(/\s+$/,'');
}  

function Validate(pv){
  //pv.InformationBeratung.checked = pv.Information.value != "";

  if ((trim(pv.Name.value) === "") || (pv.Name.value === "Vorname Nachname")){
    alert("Bitte tragen Sie Ihren vollen Namen ein.");
    window.location.hash="Navigation";
    window.location.hash="#Navigation";
    pv.Name.focus();
    pv.Name.select();
    return(false);
  }

  if (pv.Name.value.length < 5){
    alert("Das scheint kein vollständiger Name zu sein.\n\nBitte geben Sie Vor- und Nachnamen an!");
    window.location.hash="Navigation";
    window.location.hash="#Navigation";
    pv.Name.focus();
    return(false);
  }

  if ((trim(pv.geboren_am.value) === "") || (pv.geboren_am.value === "Geburtsdatum")){
    alert("Bitte tragen Sie Ihr Geburtsdatum ein.");
    window.location.hash="Navigation";
    window.location.hash="#Navigation";
    pv.geboren_am.focus();
    pv.geboren_am.select();
    return(false);
  }

  if (pv.geboren_am.value.length < 6){
    alert("Das scheint kein gültiges Geburtsdatum zu sein.\n\nBitte benutzen Sie das Format TT.MM.JJJJ (z.B. 23.11.1946)!");
    window.location.hash="Navigation";
    window.location.hash="#Navigation";
    pv.geboren_am.focus();
    return(false);
  }

  if ((trim(pv.wohnhaft_in.value) === "") || (pv.wohnhaft_in.value === "PLZ Ort")){
    alert("Bitte tragen Sie Ihre Anschrift ein.");
    window.location.hash="Navigation";
    window.location.hash="#Navigation";
    pv.wohnhaft_in.focus();
    pv.wohnhaft_in.select();
    return(false);
  }

  if (pv.wohnhaft_in.value.length < 9){
    alert("Das scheint keine vollständige Anschrift zu sein.\n\nBitte geben Sie PLZ und Ort an!");
    window.location.hash="Navigation";
    window.location.hash="#Navigation";
    pv.wohnhaft_in.focus();
    return(false);
  }

  if ((trim(pv.wohnhaft_in2.value) === "") || (pv.wohnhaft_in2.value === "Straße Hausnr.")){
    alert("Bitte tragen Sie Straße und Hausnr. ein.");
    window.location.hash="Navigation";
    window.location.hash="#Navigation";
    pv.wohnhaft_in2.focus();
    pv.wohnhaft_in2.select();
    return(false);
  }

  if (pv.wohnhaft_in2.value.length < 3){
    alert("Das scheint keine vollständige Anschrift zu sein.\n\nBitte geben Sie Straße und Hausnummer an!");
    window.location.hash="Navigation";
    window.location.hash="#Navigation";
    pv.wohnhaft_in2.focus();
    return(false);
  }

  if (!pv.Situation_1.checked && !pv.Situation_1_1.checked && !pv.Situation_2.checked && !pv.Situation_3.checked && !pv.Situation_4_1.checked && !pv.Situation_4_2.checked){
    alert("Bitte wählen Sie eine oder mehrere exemplarische Situationen aus, für die die Patientenverfügung gelten soll.");
    window.location.hash="Situationen";
    window.location.hash="#Situationen";
    return(false);
  }

	if (pv.Situation_4_1.checked) {
		if (pv.Zeitraum.value === "Zeitangabe?" || pv.Zeitraum.value === "") {
		alert("Wählen Sie bitte aus, für welchen Zeitraum die Situationsbeschreibung gelten soll.");
		pv.Situation_4_1.checked = false;
		window.location.hash="Hirntrauma";
		window.location.hash="#Hirntrauma";
		pv.Zeitraum.focus();
		return(false);
		}
		if (pv.Zeiteinheit.selectedIndex === 0) {
		alert("Wählen Sie bitte aus, für welche Zeiteinheit (Tage, Wochen, Monate oder Jahre) die Situationsbeschreibung gelten soll.");
		pv.Situation_4_1.checked = false;
		window.location.hash="Hirntrauma";
		window.location.hash="#Hirntrauma";
		pv.Zeiteinheit.focus();
		return(false);
	}
  }
 
  if (pv.Situation_4.checked && (trim(pv.Situationsbeschreibungen.value) === "") && !pv.Situation_4_1.checked && !pv.Situation_4_2.checked){
    alert("Wenn Sie eine eigene Situationsbeschreibung angeben möchten, tun Sie das bitte jetzt.");
    pv.Situation_4.checked = false;
    window.location.hash="Eigene";
    window.location.hash="#Eigene";
    pv.Situationsbeschreibungen.focus();
    return(false);
  }
  
  if (!pv.Schmerz_und_Symptombehandlung[0].checked && !pv.Schmerz_und_Symptombehandlung[1].checked) {
    alert("Bitte entscheiden Sie, ob Sie bewusstseinsdämpfende Mittel bei der Schmerz- und Symptombehandlung akzeptieren wollen.");
    window.location.hash="1.";
    window.location.hash="#1.";
    return(false);
  }  

  if (!pv.Lebenserhaltende_Massnahmen[0].checked && !pv.Lebenserhaltende_Massnahmen[1].checked) {
    alert("Bitte entscheiden Sie, ob Sie lebensverlängernde Maßnahmen wünschen.");
    window.location.hash="2.";
    window.location.hash="#2.";
    return(false);
  }  

  if (!pv.Kuenstliche_Ernaehrung[0].checked && !pv.Kuenstliche_Ernaehrung[1].checked) {
    alert("Bitte entscheiden Sie, ob Sie künstliche Ernährung wünschen.");
    window.location.hash="3.";
    window.location.hash="#3.";
    return(false);
  }  

  if (!pv.Antibiotika_und_Blut[0].checked && !pv.Antibiotika_und_Blut[1].checked && !pv.Antibiotika_und_Blut[2].checked) {
    alert("Bitte entscheiden Sie, ob Sie Antibiotika und Blut/Blutbestandteile wünschen.");
    window.location.hash="4.";
    window.location.hash="#4.";
    return(false);
  }  

  if (!pv.Wiederbelebung[0].checked && !pv.Wiederbelebung[1].checked) {
    alert("Bitte entscheiden Sie, ob Sie Wiederbelebungsmaßnahmen wünschen.");
    window.location.hash="5.";
    window.location.hash="#5.";
    return(false);
  }  

  if (pv.Beistand1.checked && (trim(pv.Personenbeistand.value) === "")) {
    alert("Wenn Sie eine Person angeben wollen die Ihnen Beistand leisten soll, tun Sie das bitte jetzt.");
    pv.Beistand1.checked = false;
    pv.Personenbeistand.focus();
    return(false);
  }
  
  if (pv.Beistand2.checked && (trim(pv.Weltanschauungsgemeinschaft.value) === "")) {
    alert("Wenn Sie eine Kirche oder Weltanschauungsgemeinschaft angeben wollen die Ihnen Beistand leisten soll, tun Sie das bitte jetzt.");
    pv.Beistand2.checked = false;
    pv.Weltanschauungsgemeinschaft.focus();
    return(false);
  }
  
  if (!situationen_gefragt && !pv.Situation_1_1.checked && pv.Situation_1.checked && pv.Situation_2.checked && pv.Situation_3.checked) {
    if (confirm("Möchten Sie tatsächlich im Endstadium einer unheilbaren Krankheit,\nbei der Sie auch schon die Einwilligungsfähigkeit verloren haben,\nkünstlich am Leben erhalten werden?\n\nOder haben Sie diesen Punkt lediglich übersehen?")) {
      window.location.hash="Situationen";
      window.location.hash="#Situationen";
      pv.Situation_1_1.focus();
	  situationen_gefragt = true;
      return(false);
    }  
    return(true);
  }  
  
  if (pv.Beitrag.value == 0) {
    alert("Bitte geben Sie an, welchen Beitrag Sie für diese Patientenverfügung leisten möchten.");
    window.location.hash="Gebuehr";
    window.location.hash="#Gebuehr";
    pv.Beitrag.focus();
    return(false);
  }  

  if (pv.Reduzierung.checked && ganz.exec(pv.Beitrag.value) < 6) {
    alert("Bitte beachten Sie, dass der reduzierte Mindestbeitrag 6 Euro beträgt.");
    window.location.hash="Gebuehr";
    window.location.hash="#Gebuehr";
    pv.Beitrag.focus(); 
    return(false);
  }
  
  if (!pv.Reduzierung.checked && ganz.exec(pv.Beitrag.value) < 24) {
    alert("Bitte beachten Sie, dass der empfohlene Mindestbeitrag 24 Euro beträgt.\nIn Einzelfällen können wir eine Gebührenreduzierung gewähren.\nDazu Gebührenreduzierung \"Ja\" anklicken und im Feld Begründung evtl. erläutern.\n\nAndernfalls einfach einen Betrag von 24 Euro oder mehr eintragen ...");
    window.location.hash="Gebuehr";
    window.location.hash="#Gebuehr";
    pv.Beitrag.focus();
    return(false);
  } 
    
  if (pv.Anrede.selectedIndex === 0) {
    alert("Bitte wählen Sie die korrekte Anrede aus!");
    window.location.hash="Auftraggeber";
    window.location.hash="#Auftraggeber";
    pv.Anrede.focus(); 
    return(false);
  }
  
  if (pv.Bevollmaechtigte1_Anschrift.value != "" && pv.Bevollmaechtigte1_Anschrift.value.charAt(pv.Bevollmaechtigte1_Anschrift.value.length-1) != ",") pv.Bevollmaechtigte1_Anschrift.value = pv.Bevollmaechtigte1_Anschrift.value + ",";
  if (pv.Bevollmaechtigte2_Anschrift.value != "" && pv.Bevollmaechtigte2_Anschrift.value.charAt(pv.Bevollmaechtigte2_Anschrift.value.length-1) != ",") pv.Bevollmaechtigte2_Anschrift.value = pv.Bevollmaechtigte2_Anschrift.value + ",";
  if (pv.Auftraggeber.value === "") pv.Auftraggeber.value = pv.Name.value;
  if (pv.Auftraggeber_wohnhaft_in.value === "") pv.Auftraggeber_wohnhaft_in.value = pv.wohnhaft_in.value;
  if (pv.Auftraggeber_wohnhaft_in3.value === "") pv.Auftraggeber_wohnhaft_in3.value = pv.wohnhaft_in2.value;
  if (pv.VVBefugnis.checked == true) pv.Vorsorgevollmacht1 = ", Vorsorgevollmacht";

  if (!situationen_konsistenz && pv.Lebenserhaltende_Massnahmen[1].checked && pv.Kuenstliche_Ernaehrung[1].checked && (pv.Antibiotika_und_Blut[1].checked || pv.Antibiotika_und_Blut[2].checked) && pv.Wiederbelebung[0].checked) {
    alert("Möchten Sie tatsächlich in einer Situation wiederbelebt werden, in der Sie andere medizinische Maßnahmen ablehnen?\nOder haben Sie übersehen, dass sich die Festlegung zu Wiederbelebung unter B nur auf die unter A genannten Situationen bezieht?\n\nZu Wiederbelebungsversuchen in anderen Situationen können Sie im Bereich C Festlegungen machen.") 
    window.location.hash="5.";
    window.location.hash="#5.";
    pv.Wiederbelebung[0].focus();
	situationen_konsistenz = true;
    return(false);
  }  

  if (!situationen_wirklich && pv.Situation_1.checked && pv.Lebenserhaltende_Massnahmen[0].checked && pv.Kuenstliche_Ernaehrung[0].checked && pv.Antibiotika_und_Blut[0].checked && pv.Wiederbelebung[0].checked) {
    alert("Sind Sie sicher, dass Sie im unmittelbaren Sterbeprozess - wo keinerlei Hoffnung auf Besserung mehr besteht – künstlich am Leben erhalten werden wollen? Oder haben Sie übersehen, dass die Festlegungen unter B sich nur auf die unter A genannten Situationen beziehen?\n\nZu lebensverlängernden Maßnahmen in anderen Situationen können Sie im Bereich C Festlegungen machen.") 
    window.location.hash="2.";
    window.location.hash="#2.";
    pv.Lebenserhaltende_Massnahmen[0].focus();
	situationen_wirklich = true;
    return(false);
  }    
 }
 //alert("Version: " + Revision);
