<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html
  PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  <head>
    <title> Date-Element </title>
    <meta name="author" content="Administrator"/>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <link rel="stylesheet" type="text/css"
      href="html5-form-dates3.css" title="style1"/>
      

      <script type="text/javascript">
        // <![CDATA[
          "use strict;"

        function tageAbsolut(day, month, year) {
          var delta_tage = new Array(0,3,3,6,8,11,13,16,19,21,24,26);
          var k4, k100, k400;
          var f;
          if ( (day==0) || (month==0) ||(year==0) ) return 0;
          f=365.25*(year-1.0) +28.0*(month-1.0)+delta_tage[month-1]+day;
          if (month>2) {
            // 2000 ist Schaltjahr   1900 nicht
            k4=year % 4;    
            k100=year % 100; // Schaltjahr wenn = 0  1900 oder 2000
            k400=year % 400; // nun 2000  2400 
            if (  ((k4==0)&&(k100>0)) || (k400==0) ) f++;
          }
          return Math.floor(f);
         }  // tageabsolut 


	   function checkYear(year) {
            "use strict;"
	     if (year<1900 || year>2200) return false;
	     return true;
          }

	   function checkWeek(week, year) {
            "use strict;"
	     if (week<0 || week>53) return false;
	     if (year<1900 || year>2200) return false;
	     return true;
          }

	   function checkDate(day, month, year) {
            "use strict;"
            var maxtage=0;
	     if (day<0 || day>31) return false;
	     if (month<0 || month>12) return false;
	     if (year<1900 || year>2200) return false;
           switch (month) {
		case 1:
		case 3:
		case 4:
		case 7:
		case 8:
		case 10:
		case 12: maxtage=31;  
			  break;
		case 4:
		case                                                                                                                                                                                6:
		case 9:
		case 11: maxtage=30;  break;
		case 2: var rest=year % 4;
                     if (rest==0) {
                       rest=year%100;
			   if (rest==0) 
			    maxtage=29;
			   else
                        maxtage=28;
			}
			else {
		         maxtage=28;
			}
		} // switch
	      // alert("maxtage: "+maxtage);
             if (day>maxtage)
               return false;
             else
               return true;
          }  // checkDate
	 

          function  checkFormDayDate( value) {
            "use strict;"
            var values = value.split(".");
            if (values.length<3) {
                 alert("Falsches Datumsformat: \n"+value);
                 return false;
            }
            else {
              var day, month, year;
 		 if ( isNaN(values[0]) ) {
                 alert("Falsches Datumsformat: \n"+value);
                 return false;
		 }
		 else {
                day = parseInt(values[0]);
		 }
 		 if ( isNaN(values[1]) ) {
                 alert("Falsches Datumsformat: \n"+value);
                 return false;
		 }
		 else {
                month = parseInt(values[1]);
		 }
 		 if ( isNaN(values[2]) ) {
                 alert("Falsches Datumsformat: \n"+value);
                 return false;
		 }
		 else {
                year = parseInt(values[2]);
		 }

              if (checkDate(day, month, year)) {
                 alert("Day: "+day+"   Month: "+month+"   Year: "+year);
                 var wtag = getWeekDay(day, month, year);
                 alert(wtag);
                 return true;
              }
              else {
                alert("Falsches Datumsformat: \n"+value);
                 return false;
              }
            } // if (values.length<3) {
          }



		// 0=montag
          function getWeekDay(day, month, year) {
            "use strict;"
            if (!checkDate(day, month, year)) return -1;
            var zeit1, zeit2, zeit3;
            var wochentag;
            zeit1 = tageAbsolut(1, 1, 1900);  // dies ist ein Montag 
                 alert("zeit1: "+zeit1 );
            zeit2 = tageAbsolut(day, month, year);
                 alert("zeit2: "+zeit2 );
            zeit3 = zeit2 - zeit1-1;
                 alert("zeit3: "+zeit3 );
            var wochentag = zeit3 %7;
            return wochentag;            
          }





          // ]]>
        </script>
        
      </head>
      
<body>
  <h1>
    Überschrift
  </h1>
  
  <form>
    day: <input type="day" name="day" value="01.02.2015" /><br /><br />
    
   <br />
   <input type="button" value="Check Day" onclick="checkFormDayDate(day.value)"/>

    
  </form>
  
</body>


</html>


















