  <form name="punkte" action="<?=$REQUEST_URI?>" method="POST">

      <input type="hidden" name="userId" value="<?=$userId?>" />
      <input type="hidden" name="state" value="<?=$state?>" />
      <input type="hidden" name="accountId" value="<?=$accountId?>" />

      <fieldset class="fieldset"><legend>Kontoeintrag</legend>
        <?=formfield::show('datum','Datum','date',$datum?$datum:date('d.m.Y H:i',time()));?>
        <?=formfield::show('datumerwerb','Datum des Erwerbs','date',$datumerwerb?convertdatefromsql($datumerwerb):'');?>
        <?=formfield::show('datumbescheinigung','&Auml;rztliche Bescheinigung (kurativ gilt nur innerhalb eines Jahres)','date',$client->arztbescheinigung?convertdatefromsql($client->arztbescheinigung):'');?>
<? if($action == 'account') { ?>
        <?=formfield::show('unterkategorie','Ma&szlig;nahme','select','', Array(), 'onChange="fillValues()"');?>
<? } else { ?>
        <?=formfield::show('unterkategorie','Ma&szlig;nahme','select','', Array(), 'onChange="fillValues();checkkinderbonus();checkkinderuntersuchungen()"');?>
<? } ?>
        <?=formfield::show('kommentar','Kommentar','textarea',$kommentar,null,'class="inputtext"');?>
        <?=formfield::show('beschreibung','Beschreibung','textarea',$beschreibung,null,'class="inputtext"');?>
        <?=formfield::show('wert','Punkte','text',$wert);?>
        <?=formfield::show('aendern','','submit','Eintragen');?>
      </fieldset>
    </form>

    <script language="JavaScript">
        document.forms.punkte.unterkategorie.focus()
        subcategory = new Array()
        description = new Array()
        points = new Array()
        disabled = new Array()
        now =  '<?=date("Y-m-d", time())?>';
<?
       $konto = $client->konto;
       echo "        subcategory = new Array()\n";
       echo "        subcategoryid = new Array()\n";
       echo "        category = new Array()\n";
       echo "        description = new Array()\n";
       echo "        points = new Array()\n";
       echo "        disabled = new Array()\n";
       $kindervorsorgeuntersuchung = false;
       $jugendvorsorgeuntersuchung = false;
       $i=0;
       foreach ($subCategories as $subCategory) {
           if (! $client->checkoverfive()) {
               continue;
           }
           if ($action == 'addpoints' &&
                   $client->checklegalage() &&  /* Erwachsene */
                   $subCategory->u18 &&  /* U18-Praemie */
                   ! preg_match("/vorsorgeuntersuchung [JU][0-9]/", $subCategory->name) ) /* U-Untersuchung */
           {
               continue;
           } elseif ($client->checklegalage() && $subCategory->u18) {
               continue;
           }

           if (!($client->checklegalage() || $subCategory->u18)) {
               continue; /* Jugendliche / Kinder sehen keine Erwachsenen-Kategorien */
           }
           if ($action == 'addpoints' && preg_match('/Kindervorsorgeuntersuchung [JU]/', $subCategory->name)) {
               if ($kindervorsorgeuntersuchung) {
                   continue;
               } else {
                   $kindervorsorgeuntersuchung = true;
                   $subCategory->beschreibung = 'Kinder/Jugendvorsorgeuntersuchung';
                   $subCategory->name = 'Kinder/Jugendvorsorgeuntersuchung';
               }
           }

           if ($action == 'addpoints' && preg_match('/Kindervorsorgeuntersuchung J/', $subCategory->name)) {
               if ($kindervorsorgeuntersuchung) { /* Zeige Kinder/Jugenvorsorgeuntersuchung nur einmal */
                   continue;
               } else {
                   $jugendvorsorgeuntersuchung = true;
                   $subCategory->beschreibung = 'Jugendvorsorgeuntersuchung';
                   $subCategory->name = 'Jugendvorsorgeuntersuchung';
               }
           }

           $j = $subCategory->id;
           if ($state == 'insert') {
               if ($konto->bonuslimit($j)) {
                   // Kategorie nicht anzeigen, wenn das Limit (jährl., halbjährl.)
                   // fuer diese Kategorie bereits erreicht wurde
                   print "        disabled[$i] = '1'\n";
               } else {
                   print "        disabled[$i] = '0'\n";
               }
           }

           print "        subcategory[$i] = '" .  $subCategory->name;
           if (! $client->checklegalage()) {
               print " (U18)";
           }
           if ($subCategory->pluskurativ) {
               print " - auch " . $subCategory->punktekurativ . " Punkte in kurativ vergeben";
           }

           print "'\n";
           print "        description[$i] = '";
           if ($subCategory->beschreibung == '') {
               print str_replace("\r",' ',(str_replace("\n",'',$subCategory->name)));
           } else {
               print str_replace("\r",'\r',(str_replace("\n",'\n',$subCategory->beschreibung)));
           }
           print  "'\n";
           print "        points[$i] = '" . $subCategory->punkte .  "'\n";
           print "        category[$i] = '" . $subCategory->kategorie .  "'\n";
           print "        subcategoryid[$i] = '$j'\n";
           $i++;
       }
?>
        unterkategorie=document.forms.punkte.unterkategorie
        unterkategorie.length=0
        k=0;
        selectedindex = 0;
        for (i=0; i<subcategory.length; i++) {
            if (subcategory[i] != null && subcategory.length>0)
            {
                if ( !disabled[i] || disabled[i] == '0') {
                    selected = false
                    if(subcategoryid[i]=='<?=$unterkategorie?>') {
                        selectedindex = i;
                        selected = true;
                    }
                    newEntry = new Option(subcategory[i],subcategoryid[i],false,selected)
                    unterkategorie.options[k]=newEntry
                    k++;
                }
            }
        }
        unterkategorie.selectedIndex=selectedindex

        function fillSubCategory() {
            datumbescheinigung = document.forms.punkte.datumbescheinigung.value;
            dates = datumbescheinigung.split('.');
            day = dates[0];
            if (!day) {
                day = '00';
            }
            day = '0' + day;
            day = day.substr(day.length -2,2);
            month = dates[1];
            if (!month) {
                month = '00';
            }
            month = '0' + month;
            month = month.substr(month.length -2,2);
            year = dates[2];
            if (!year) {
                year = '0000';
            } else {
              year++;
            }

            datumbescheinigung = year + '-' + month + '-' + day;
            unterkategorie=document.forms.punkte.unterkategorie;
            subcatnr = unterkategorie.value
            catnr = category[subcatnr];
            if (catnr == 3) { // FIXME: 3 = kurativ : hardcoded!
                if (datumbescheinigung < now) {
                    unterkategorie.options.length=0
                    alert("Es liegt keine Aerztliche Bescheinigung vor, oder das angegebene Datum ist aelter als 1 Jahr. Es koennen keine Punkte im Bereich 'kurativ' vergeben werden");
                    return;
                }
            }
        }

        function fillValues() {
            unterkategorienr=<?=$unterkategorie?$unterkategorie:0?>;
            wert=<?=$wert?$wert:0?>;
            beschreibung='<?=($beschreibung != '')?$beschreibung:''?>';
            if (unterkategorie.options.length) {
                j = unterkategorie.options[unterkategorie.selectedIndex].value

                for(i=0;i<subcategory.length;i++)
                {
                    if (subcategoryid[i]==j) {
                        break;
                    }
                }
                document.forms.punkte.beschreibung.value = description[i]
                document.forms.punkte.wert.value = points[i]
                if (unterkategorie.options[unterkategorie.selectedIndex].value == unterkategorienr) {
                    document.forms.punkte.wert.value = wert;
                    document.forms.punkte.beschreibung.value = beschreibung;
                }
            } else {
                document.forms.punkte.beschreibung.value = ''
                document.forms.punkte.wert.value = '0'
            }
        }

        function checkkinderbonus()
        {
           unterkategorie=document.forms.punkte.unterkategorie;
           text=unterkategorie.options[unterkategorie.selectedIndex].text;
           value=unterkategorie.options[unterkategorie.selectedIndex].value;
           datumerwerb=document.forms.punkte.datumerwerb.value;
           if (text.indexOf('Kinderbonus') == 0) {
               location = window.location + '&sub=kinderbonus' + '&catnr=' + value + '&datumerwerb=' + datumerwerb;
           }
        }
        function checkkinderuntersuchungen()
        {
           unterkategorie=document.forms.punkte.unterkategorie;
           text=unterkategorie.options[unterkategorie.selectedIndex].text;
           value=unterkategorie.options[unterkategorie.selectedIndex].value;
           if (text.match(/Kinder\/Jugendvorsorgeuntersuchung/) ) {
               location = window.location + '&sub=kinderuntersuchung' + '&catnr=' + value + '&datumerwerb=' + datumerwerb;
           }
           if (text == 'Jugendvorsorgeuntersuchung') {
               location = window.location + '&sub=jugenduntersuchung' + '&catnr=' + value + '&datumerwerb=' + datumerwerb;
           }
        }
        function setIndex(unterkategorienr) {
            fillSubCategory();
            unterkategorie=document.forms.punkte.unterkategorie
            for (i=0; i < unterkategorie.length;i++) {
                if (unterkategorie[i].value == unterkategorienr) {
                    unterkategorie.selectedIndex=i;
//                    fillValues();
                }
            }
        }
        //fillSubCategory();
        fillValues();
    </script>
    <? if ($kategorie && $unterkategorie) { ?>
    <script type="text/javascript">
        setIndex(<?=$unterkategorie?>);
        fillValues();
    </script>
    <? } ?>
