// -----------------------------------------------------------------------------------------
// A C H T U N G   ! ! !
// kann nur verwendet werden, wenn im aufrufenden Script auch datum.inc.php includiert wurde
// -----------------------------------------------------------------------------------------
var jll_min_perioden_len = 2;


function f_prfdatum ( as_obj )
{
 dat_wert="";
 dat_wert = as_obj.value.toUpperCase();

 if ( dat_wert == 'HEUTE' || dat_wert == 'HE' || dat_wert == 'H' || dat_wert=='*')
 { as_obj.value = ld_date_heute; }
 if ( dat_wert == 'MORGEN' || dat_wert == 'MO' || dat_wert == 'M' || dat_wert=='>')
 { as_obj.value = ld_date_morgen; }

 if ( dat_wert == 'GESTERN' || dat_wert == 'GE' || dat_wert == 'G' || dat_wert=='<')
 { as_obj.value = ld_date_gestern; }

 if ( dat_wert == 'MB' || dat_wert=='<*')
 { as_obj.value = ld_date_monats_beginn; }

  if ( dat_wert == 'ME' || dat_wert=='>*')
 { as_obj.value = ld_date_monats_ende; }


 var ls_date = as_obj.value;
 var ls_fehler = jls_date_msg[2];
 var ls_fehlercode = "";
 var lb_fehler = false;

 //alert(ls_date + "\rlen: "+ ls_date.length);
 if ( ls_date.length == 3 && ls_date.indexOf(".")==1)
 { // Datum wurde im Format T.M   -> TTMM
   ls_date = "0" + ls_date.substr(0,1) + "0" + ls_date.substr(2,1);
 }
 if ( ls_date.length == 4 && ls_date.indexOf(".") > 0 )
 { // Datum wurde im Format TT.M oder T.M. eingegeben -> TTMM
   la_help = ls_date.split(".");
   ls_date = "";
   for (i=0; i<la_help.length; i++)
   { //alert(i + ": " + la_help[i]);
     ls_help = la_help[i];
     if ( ls_help.length > 0 )
     {
	      if ( ls_help.length == 1 )
	      { ls_date = ls_date + "0" + ls_help; }
	      else
	      { ls_date = ls_date + ls_help; }
     }
   }
 }

 //alert( ls_date );

 while ( ls_date.search(/[^0-9]/) != -1 )
 { ls_date = ls_date.replace(/[^0-9]/, ""); }


 if ( ls_date.length > 8 || ls_date.length < 4 )
 { lb_fehler = true; ls_fehlercode = "001";}
 else
 { li_tt = ls_date.substr(0, 2);
   li_mm = ls_date.substr(2, 2);
   if (li_tt <= 0 || li_tt > 31 || li_mm <= 0 || li_mm > 12)
   { lb_fehler = true;ls_fehlercode="002"; }
   else
   { if(ls_date.length == 4)
     { var ld_jetzt = new Date();
       var li_jj = ld_jetzt.getFullYear();
       as_obj.value = li_tt + "." + li_mm + "." + li_jj;
       ld_date = as_obj.value;
     }
     else
     {

      if(ls_date.length != 6 && ls_date.length != 8)
       { lb_fehler = true; ls_fehlercode ="003";}
       else
       {
         if(ls_date.length == 6 )
         {
           if (ls_date.substr(4, 2) <= 70)
           { li_jj = "20"+ ls_date.substr(4, 2);}
           else
           { li_jj = "19"+ ls_date.substr(4, 2);}

         }
         else
         { li_jj = ls_date.substr(4, 4); }

         ld_date = li_tt + "." + li_mm + "." + li_jj;
         as_obj.value = ld_date;

       }

     }

     if(!lb_fehler)
     {
       if (!date_validate ( ld_date ))
       { lb_fehler = true; ls_fehlercode = "004"; }
     }

   }
 }
	if(lb_fehler)
	{
   	alert(ls_fehler +  "\rErrorcode: " + ls_fehlercode);
		as_obj.value = "";
		return false;
	}
	return true;

} // end-function f_prfdatum


function date_validate( as_date )
{
    var chk    = 0;
    var maxDay = 0;
    var ls_help ="";
    ls_help = as_date.split(".");
    if (ls_help.length != 3)
    { return false ;}

    var dd = ls_help[0];
    var mm = ls_help[1];
    var yyyy = ls_help[2];

    // calling function to get maximum day for this month
    maxDay = max_day(mm, yyyy);

    if((dd <= 0) || (dd > maxDay))
    { chk = 1;}
    else if((mm <= 0) || (mm > 12))
    { chk = 1;}
    else if((yyyy <= 0))
    { chk = 1;}

    if(chk == 1)
    { return false ;}
    else
    { return true;}
}

// function for calculating maximum day
function max_day(mn, yr)
{
  var mDay;
  if((mn == 4) || (mn == 6) || (mn == 9) || (mn == 11))
  {mDay = 30;}
  else if(mn == 2)
  {
   //calling leap year function
   mDay = isLeapYear(yr) ? 29 : 28;
  }
  else
  { mDay = 31; }
  return mDay;
}

// function to check leap year
function isLeapYear(yr)
{
 if (yr % 2 == 0) {return true;}
 else {return false;}
}

function f_convert_date ( as_vonformat, as_datum, as_nachformat )
{

 ls_splitter = as_datum.split(".");
 if (ls_splitter.length != 3)
	 return as_datum;

 switch(as_vonformat)
 {
    case 'MTJ':
      tt = ls_splitter[1];
      mm = ls_splitter[0];
      jj = ls_splitter[2];
      break;
    case 'MJT':
      tt = ls_splitter[2];
      mm = ls_splitter[0];
      jj = ls_splitter[1];
      break;
    case 'TMJ':
      tt = ls_splitter[0];
      mm = ls_splitter[1];
      jj = ls_splitter[2];
      break;
    case 'TJM':
      tt = ls_splitter[0];
      mm = ls_splitter[2];
      jj = ls_splitter[1];
      break;
    case 'JMT':
      tt = ls_splitter[2];
      mm = ls_splitter[1];
      jj = ls_splitter[0];
      break;
    case 'JTM':
      tt = ls_splitter[1];
      mm = ls_splitter[2];
      jj = ls_splitter[0];
      break;
    default:
      return as_datum; // Kein gÃ¼ltiges Ausgangsformat
      break;
  }

 ls_rtn="";
 switch(as_nachformat)
 {
    case 'MTJ':
      ls_rtn = mm + "." + tt + "." + jj;
      break;
    case 'MJT':
      ls_rtn = mm + "." + jj + "." + tt;
      break;
    case 'TMJ':
      ls_rtn = tt + "." + mm + "." + jj;
      break;
    case 'TJM':
      ls_rtn = tt + "." + jj + "." + mm;
      break;
    case 'JMT':
      ls_rtn = jj + "." + mm + "." + tt;
      break;
    case 'JTM':
      ls_rtn = jj + "." + tt + "." + mm;
      break;
    default:
      return as_datum; // Kein gÃ¼ltiges Ausgangsformat
      break;
  }

  return ls_rtn;
}

function f_chkperiode ( as_obj, as_help_obj )
{
 var ls_val = as_obj.value;
 var ls_datval = "";
 var ll_len = 0;
 var lb_punkt = false;
 var lb_datprf = true;
 var lb_jahr = false;
 var lb_rtn = true;

 // Mit "#" sollen alle Perioden angezeigt werden
 // ---------------------------------------------
 if ( ls_val == "#" )
 {
   document.form1.submit();
   return;
 }

 // Mit "*" soll die aktuelle Periode angezeigt werden
 // --------------------------------------------------
 if ( ls_val == "*" )
 {
	  ls_val = ld_date_heute.substr(3,7);
   as_obj.value = ls_val;
 }

 // Mit "<" soll die Vorperiode angezeigt werden
 // --------------------------------------------------
 if ( ls_val == "<" )
 {
	  ls_val = ld_date_vormonat.substr(3,7);
   as_obj.value = ls_val;
 }

 // Mit ">" soll die Folgeperiode angezeigt werden
 // ----------------------------------------------
 if ( ls_val == ">" )
 {
	  ls_val = ld_date_folgemonat.substr(3,7);
   as_obj.value = ls_val;
 }

 ll_len = ls_val.length; // Länger ermitteln

 if (ll_len < jll_min_perioden_len)
 { alert( jls_date_msg[3] );
   return false;
 }


 // Ziel ist es aus der eingegebenen Periode immer ein Datum zu machen, dass
 // in der Datumsprüfroutine geprüft werden kann. (dd.mm.yy, ddmmyy, dd.mm.yyyy, ddmmyyyy)
 // --------------------------------------------------------------------------------------
 if (ls_val.search(/\./g)> 0) { lb_punkt = true; } // Punkt ist enthalten
 switch(ll_len)
 {
   case 2:
   	// Format yy
      ls_datval = "0101" + ls_val;
      lb_jahr = true;
	     break;
	  case 3:
   	// Format myy
      ls_datval = "010" + ls_val;
	     break;
	  case 4:
   	// Format mmyy oder m.yy oder yyyy
      if (lb_punkt)
      { ls_datval = "01.0" + ls_val; }
      else
      { // Kein punkt enthalten. Kann jetzt mmyy oder yyyy sein. Wenn erstes Zeichen = 2, dann ist es yyyy
        // -----------------------------------------------------------------------------------------------
        if ( ls_val.substr(0,1) == "2" )
        { ls_datval = "01.01." + ls_val;
          lb_jahr = true;
        }
        else
        { ls_datval = "01" + ls_val; }
      }
	     break;
	  case 5:
   	// Format mm.yy oder myyyy
      if (lb_punkt)
      { ls_datval = "01." + ls_val; }
      else
      { ls_datval = "01" + ls_val; }
	     break;
	  case 6:
   	// Format m.yyyy oder mmyyyy
      if (lb_punkt)
      { ls_datval = "01.0" + ls_val; }
      else
      { ls_datval = "01" + ls_val; }
	     break;
	  case 7:
   	// Format mm.yyyy
      ls_datval = "01." + ls_val;
	     break;
	  default:
      lb_datprf = false;
		alert(jls_date_msg[3]);
	  break;
	}


 if (lb_datprf == true)
 {
   as_help_obj.value = ls_datval;
   if ( f_prfdatum ( as_help_obj, ls_val, "mm.yyyy")== true )
   { ls_val = as_help_obj.value;
     if (lb_jahr == true )
     { as_obj.value = ls_val.substr(6, 4); }
     else
     { as_obj.value =  ls_val.substr(3, 7); }
   }
   else
   { lb_rtn = false; }
 }
 else
 { lb_rtn = false; }

 return lb_rtn;

}
