
var ns6=document.getElementById&&!document.all
var ie4=document.all
var targetname = "";

var Selected_Month;
var Selected_Year;
var Current_Date = new Date();
var Current_Month = Current_Date.getMonth();

var Days_in_Month = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
var Month_Label = new Array('Januari', 'Februari', 'Maart', 'April', 'Mei', 'Juni', 'July', 'Augustus', 'September', 'October', 'November', 'December');

var Current_Year = Current_Date.getYear();
if (Current_Year < 1000)
Current_Year+=1900


var Today = Current_Date.getDate();

function Header(Year, Month) {

   if (Month == 1) {
   Days_in_Month[1] = ((Year % 400 == 0) || ((Year % 4 == 0) && (Year % 100 !=0))) ? 29 : 28;
   }
   var Header_String = Month_Label[Month] + ' ' + Year;
   return Header_String;
}

function lpad(v){
  return (v<10)? "0"+v : v
}

function slDy(value){
  var m = parseInt(lpad(document.getElementById("when_month").value))+1;  
  document.getElementById(targetname).value=lpad(value)+"-"+lpad(m)+"-"+lpad(document.getElementById("when_year").value);  
  document.getElementById("when_calendar").style.display="none";  
}

function Make_Calendar(Year, Month) {
   var First_Date = new Date(Year, Month, 1);
   var Heading = Header(Year, Month);
   var First_Day = First_Date.getDay() + 1;
   if (((Days_in_Month[Month] == 31) && (First_Day >= 6)) ||
       ((Days_in_Month[Month] == 30) && (First_Day == 7))) {
      var Rows = 6;
   }
   else if ((Days_in_Month[Month] == 28) && (First_Day == 1)) {
      var Rows = 4;
   }
   else {
      var Rows = 5;
   }
   
   
   var HTML_String = '<table><tr><td><input type="button" title="Een jaar terug" style="width:20px" value="<<" onClick="Skipy(\'-\')"><input type="button" style="width:20px" title="Een maand terug" value="<" onClick="Skipm(\'-\')"></td><td></td><td><input="hidden" id="when_month" name="when_month"><span id="span.when_month">'+transMonth(Month)+'</span>';

   //for (j=0;j<Month_Label.length;j++) {
   //      HTML_String+='<option value=' + j + '>' + Month_Label[j];
  // }

  
   HTML_String +='</select></td><td><input type="hidden" id="when_year" name="when_year"><span id="span.when_year">'+Year+'</span></td>'
               +'<td> </td><td><input type="button" value=">" title="Een maand verder" style="width:20px" onClick="Skipm(\'+\')"><input type="button" title="Een jaar verder" value=">>" style="width:20px" onClick="Skipy(\'+\')"></td></tr></table>';

   
   HTML_String += '<table><tr><td valign="top"><table BORDER=4 CELLSPACING=1 cellpadding=2 FRAME="box" BGCOLOR="C0C0C0" BORDERCOLORLIGHT="808080">';

   //HTML_String += '<tr><th colspan=7 BGCOLOR="FFFFFF" BORDERCOLOR="000000">' + Heading + '</font></th></tr>';

   HTML_String += '<tr><th ALIGN="CENTER" BGCOLOR="FFFFFF" BORDERCOLOR="000000">Zo</th><th ALIGN="CENTER" BGCOLOR="FFFFFF" BORDERCOLOR="000000">Ma</th><th ALIGN="CENTER" BGCOLOR="FFFFFF" BORDERCOLOR="000000">Di</th><th ALIGN="CENTER" BGCOLOR="FFFFFF" BORDERCOLOR="000000">Wo</th>';

   HTML_String += '<th ALIGN="CENTER" BGCOLOR="FFFFFF" BORDERCOLOR="000000">Do</th><th ALIGN="CENTER" BGCOLOR="FFFFFF" BORDERCOLOR="000000">Vr</th><th ALIGN="CENTER" BGCOLOR="FFFFFF" BORDERCOLOR="000000">Za</th></tr>';

   var Day_Counter = 1;
   var Loop_Counter = 1;
   for (var j = 1; j <= Rows; j++) {
      HTML_String += '<tr ALIGN="left" VALIGN="top">';
      for (var i = 1; i < 8; i++) {
         if ((Loop_Counter >= First_Day) && (Day_Counter <= Days_in_Month[Month])) {
            if ((Day_Counter == Today) && (Year == Current_Year) && (Month == Current_Month)) {
               HTML_String += '<td style="cursor:hand;background-color:#dadada" onclick="slDy('+Day_Counter+')">' + Day_Counter + '</td>';
            }
            else {
               HTML_String += '<td style="cursor:hand;background-color:#fff" onclick="slDy('+Day_Counter+')">'+ Day_Counter + '</td>';
            }
            Day_Counter++;    
         }
         else {
            HTML_String += '<td BORDERCOLOR="C0C0C0"> </td>';
         }
         Loop_Counter++;
      }
      HTML_String += '</tr>';
   }
   HTML_String += '</table></td></tr></table>';
   cross_el=ns6? document.getElementById("when_calendar") : document.all.when_calendar;
   cross_el.innerHTML = HTML_String;
   //alert(HTML_String);
   
   //document.getElementById("span.when_month").innerHTML=transMonth(Month);
   //document.getElementById("span.when_year").innerHTML=Year;
   
}


function Check_Nums() {
   if ((event.keyCode < 48) || (event.keyCode > 57)) {
      return false;
   }
}



function On_Year() {
   var Year = document.getElementById("when_year").value;
   if (Year.length == 4) {
      Selected_Month = document.getElementById("when_month").value;
      Selected_Year = Year;
      Make_Calendar(Selected_Year, Selected_Month);
   }
}

function On_Month() {
   var Year = document.getElementById("when_year").value;
   Selected_Month = document.getElementById("when_month").value;
   Selected_Year = Year;
   Make_Calendar(Selected_Year, Selected_Month);
}

function transMonth(i){
 months = ["Januari","Februari","Maart","April","Mei","Juni","Juli","Augustus","September","Oktober","November","December"];
 return months[i];
}

function findPosX(obj){
var curleft = 0;
if (obj.offsetParent){
	
  while(1){
   curleft+=obj.offsetLeft;
   if (!obj.offsetParent){break}
    obj=obj.offsetParent;
  }
 }
 else if(obj.x){curleft+=obj.x}
 return curleft;
}
	
function findPosY(obj){
 var curtop = 0;
  if (obj.offsetParent){
  while(1){
    curtop+=obj.offsetTop;
    if (!obj.offsetParent){break}
      obj=obj.offsetParent;
  }
	}else if(obj.y){curtop+=obj.y}
 return curtop;
}

function show_calendar(requestURI, _targetname) {
   if (!ie4&&!ns6)
   return;
   targetname = _targetname;
   var calpopup = document.getElementById("when_calendar");
   var posx = findPosX(document.getElementById(targetname))+30;
   var posy = findPosY(document.getElementById(targetname))+20;
   //alert(targetname+" " + posx+" " +posy);
   calpopup.style.left = posx + "px";
   calpopup.style.top = posy + "px";
   calpopup.style.display="inline";
   
   Make_Calendar(Current_Year, Current_Month);
   document.getElementById("when_month").value = Current_Month;
   document.getElementById("span.when_month").innerHTML= transMonth(Current_Month);
   document.getElementById("when_year").value = Current_Year;
   document.getElementById("span.when_year").innerHTML= Current_Year;
   Selected_Month = Current_Month;
   Selected_Year = Current_Year;
}

function Skipy(Direction) {
   if (Direction == '+') 
     Selected_Year++;   
   else 
     Selected_Year--;   
   Make_Calendar(Selected_Year, Selected_Month);
   document.getElementById("when_month").value= Selected_Month;
   document.getElementById("when_year").value = Selected_Year;
}

function Skipm(Direction) {
   if (Direction == '+') {
      if (Selected_Month == 11) {
         Selected_Month = 0;
         Selected_Year++;
      }
      else {
         Selected_Month++;
      }
   }
   else {
      if (Selected_Month == 0) {
         Selected_Month = 11;
         Selected_Year--;
      }
      else {
         Selected_Month--;
      }
   }
   Make_Calendar(Selected_Year, Selected_Month);
   document.getElementById("when_month").value= Selected_Month;
   document.getElementById("when_year").value = Selected_Year;
}

function hideCalendar(){
  // FIXME: uitrekenen of we in de cal zitten; Opera werkt niet
  document.getElementById("when_calendar").style.display="none";
}

function checkdate(pbirth) {

  v_dag       = pbirth.substring(0, 2);
  v_maand     = pbirth.substring(3, 5);
  v_jaar      = pbirth.substring(6,10);
  v_jaar_deel = pbirth.substring(8,10);

  if (  isDigit(pbirth.substring(0, 1))
     && isDigit(pbirth.substring(1, 2))
     && isDigit(pbirth.substring(3, 4))
     && isDigit(pbirth.substring(4, 5))
     && isDigit(pbirth.substring(6, 7))
     && isDigit(pbirth.substring(7, 8))
     && isDigit(pbirth.substring(8, 9))
     && isDigit(pbirth.substring(9, 10))
     )
  {
  }
  else return false;

    if (pbirth.length != 10)
     { return false;  }

    if (v_dag <1)
    { return false;  }

    if (v_dag>31)
    { return false;  }

    if (pbirth.substring(2, 3)!= "-")
    { return false;  }

    if (pbirth.substring(5, 6)!= "-")
    { return false;  }

    if (v_maand <1 )
    { return false;  }

    if (v_maand >12 )
    { return false;  }

    if (v_maand== 4 || v_maand ==6|| v_maand ==9 || v_maand==11) {
       if (v_dag ==31)
                    { return false;  }
                      }

    if (v_maand==2){

        var g=parseInt(v_jaar_deel/4)
        if (isNaN(g)) {
            return false;
        }

        if (v_dag>29) {return false;}
        if (v_dag==29 && ((v_jaar_deel/4)!=parseInt(v_jaar_deel/4))) {return false;}
    }

    return true;
}
function isDigit(num) {
    var string="1234567890";
    if (string.indexOf(num) != -1)
    {    return true; }
    return false;
}

function isDatum(naam, field) {

    datum = field.value;
    prefix = '';

    //Eerst kijken of er groter dan en kleiner dan tekes in staan (bij searchfields)
    if (datum.indexOf('>') == 0 || datum.indexOf('<') == 0) {
      prefix = datum.substring(0,1)
      datum = datum.substring(1)
    }
    
    if (datum == "") return true;

    var hyphenIndex = datum.indexOf('-');
    
    if (hyphenIndex==-1) {
      //Er zijn geen streepjes ingevoerd

      if (datum.length<6) {

         alert( "Ongeldige datum.\n(Opmaak dd-mm-jjjj)" );
         field.focus();
         return false;

      } else if (datum.length==6) {

        field.value = datum.substring(0, 2)+"-"+datum.substring(2, 4)+"-20"+datum.substring(4);

      } else if (datum.length==8) {

        field.value = datum.substring(0, 2)+"-"+datum.substring(2, 4)+"-"+datum.substring(4);

      } else {
        alert( "Ongeldige datum.\n(Opmaak dd-mm-jjjj)" );
        field.focus();
        return false;
      }

    } else {
      //Er zijn streepjes ingevoerd
      
      dag = datum.substring(0, hyphenIndex)/1;
      if (dag<10)
        dag = "0" + dag;
      maandjaar = datum.substring(hyphenIndex + 1);
      hyphenIndex = maandjaar.indexOf('-');
      maand = maandjaar.substring(0, hyphenIndex)/1;
      if (maand<10)
        maand = "0" + maand;
      jaar = maandjaar.substring(hyphenIndex+1)/1;
      if (jaar<10)
        jaar = "200" + jaar;
      else if (jaar<100)
        jaar = "20" + jaar;
      datum = dag + "-" + maand + "-" + jaar;
      if (checkdate(datum))
        field.value = prefix + datum;
      else {
        alert( "Ongeldige datum.\n(Opmaak dd-mm-jjjj)" );
        field.focus();
        return false;
      }
    }

    return true;
}
