var monthcount = 3;

var houseid      = '';
var aantal       = 1;
var langer1jaar  = 1;
var metbezetting = 1;
var datecolors01 = new Array();
var datecolors02 = new Array();
var datecolors03 = new Array();

function bookname(kind) {
  var nam = "";
  if (kind<=0)  nam="Leeg"; else
//  if (kind<=25) nam="1 - 25 % bezetting"; else
//  if (kind<=50) nam="25 - 50 % bezetting"; else
//  if (kind<=75) nam="50 - 75 % bezetting"; else
//  if (kind<100) nam="75 - 99 % bezetting"; else
                nam="Vol";
  return nam;
}

function bookcolor(kind) {
  var clr = "#ffffff";
  if (metbezetting==1) {
    clr = "#1fb53a";//"#ffffff";
    if (kind<=0) clr="#1fb53a"; else //clr="#ffffff"; else
                 clr="#ef6c00";
  }
//  if (kind<=0)  clr="#4cc462"; else //clr="#ffffff"; else
//  if (kind<=25) clr="#ffdddd"; else
//  if (kind<=50) clr="#ffbbbb"; else
//  if (kind<=75) clr="#ff9999"; else
//  if (kind<100) clr="#ff6666"; else
//                clr="#cc0000";
  return clr;
}

function makemonthcalendar(nr,dtm,dcol) {
  var cursor = '';
  var res = "";
  // month calendar
  res+='<table cellspacing="0" border="0">';
  res+='<tr><td bgcolor="#333366">';
    res+='<table cellspacing="1" cellpadding="3" border="0">'+
         '<col width="30" span="7">';
//         '<col width="30"><col width="30"><col width="30"><col width="30"><col width="30"><col width="30"><col width="30">';
    // month name
    res+='<tr><td colspan="7" style="color:#ffffff; font-weight:bold;">'+ARR_MONTHS[dtm.getUTCMonth()]+' '+dtm.getUTCFullYear() + '</td></tr>';
    // print weekdays titles
    res+='<tr>';
    for (var n=0; n<7; n++)
      res+='<td bgcolor="#666699" align="center"><font color="#ffffff">'+ARR_WEEKDAYS[(NUM_WEEKSTART+n)%7]+'</font></td>';
    res+='</tr>';
    // print days
    var dt_monthfirstday = new Date(dtm.getTime());
    dt_monthfirstday.setUTCDate(1 - (7 + dt_monthfirstday.getUTCDay() - NUM_WEEKSTART) % 7);
    var dt_current_day = new Date(dt_monthfirstday.getTime());
    var dt_current_day6 = new Date(dt_monthfirstday.getTime());
    dt_current_day6.setUTCDate(dt_current_day.getUTCDate()+6);
    var day1 = new Date(dt_current.getTime());
    day1.setUTCDate(1);
    var col = "#ffffff";
    var fcol = "#000000";
    var txt=txt2=txt3="";
    for (var w=0; w<6; w++) {
      // print row header
      res+='<tr>';
      for (var n_current_wday=0; n_current_wday<7; n_current_wday++) {
        var pd = dateString(dt_current_day.valueOf());
        var p=c1=c2=0;
        for (var i=0; i<dcol.length; i++) {
          if (dcol[i].date==pd) {
            c1=dcol[i].count%1000;
            c2=Math.floor(dcol[i].count/1000);
            if (c1>=aantal) p++;
          }
        }
        
        if (metbezetting==1) {
          col = "#1fb53a";
          var fgcol = '#000000';
          if (p<=0) col=bookcolor(0);
               else col=bookcolor(100);
          if (dt_current_day.getUTCMonth()!=dtm.getUTCMonth()) col="#eeeeee"; else
          if ((langer1jaar==0)&&(dt_current_day>=dt_monthyr)) col="#dddddd"; else
          if (dt_current_day<(day1)) col="#dddddd";
//          if (dt_current_day<(dt_current)) col="#dddddd";

          txt=getfeestdag(dt_current_day.getTime());
          txt2=getvakantie(dt_current_day.getTime());
          if (txt2!='') { if (txt!='') txt+=', '; txt+=txt2; }

          if (dt_current_day.getUTCDate() == dt_current.getUTCDate() &&
              dt_current_day.getUTCMonth() == dt_current.getUTCMonth() &&
              dt_current_day.getUTCFullYear() == dt_current.getUTCFullYear()) fgcol='#ff0000'; // current date
          else
          if (dt_current_day.getUTCDay() == 0 || dt_current_day.getUTCDay() == 6)
            // weekend day
            if (dt_current_day.getUTCMonth() == dtm.getUTCMonth())            fgcol='#0000ff'; // of current month
                                                              else            fgcol='#ccccff'; // of other month
          else
            // working day
            if (dt_current_day.getUTCMonth() == dtm.getUTCMonth())            fgcol='#000000'; // of current month
                                                              else            fgcol='#cccccc'; // of other month

          if ((col=="#dddddd")||(col=="#eeeeee")||(p<=0))
          res+='<td class="td_datum" bgcolor='+col+' align="center" onClick="javascript:planborddatumklik('+dt_current_day.valueOf() +')"'+cursor+' style="color:'+fgcol+';"';
          else
          if ((p>0)&&(c2==1))
          res+='<td class="td_datum" style="background-image:url(\'/images/zoekboek/yesno.gif\'); background-repeat:no-repeat; background-position:center; color:'+fgcol+';" align="center" onClick="javascript:planborddatumklik('+dt_current_day.valueOf() +')"'+cursor;
          else
          if ((p>0)&&(c2==2))
          res+='<td class="td_datum" style="background-image:url(\'/images/zoekboek/noyes.gif\'); background-repeat:no-repeat; background-position:center; color:'+fgcol+';" align="center" onClick="javascript:planborddatumklik('+dt_current_day.valueOf() +')"'+cursor;
          else
          res+='<td class="td_datum" bgcolor='+col+' align="center" onClick="javascript:planborddatumklik('+dt_current_day.valueOf() +')"'+cursor+' style="color:'+fgcol+';"';

          if (txt!='') res+=' title="'+txt+'"';
          res+='>'+dt_current_day.getUTCDate();
          res+='</td>';
        } else {
          col="#ffffff";
          if (dt_current_day.getUTCMonth()!=dtm.getUTCMonth()) col="#eeeeee";

          //background color
          txt3=getboeking(dt_current_day.getTime());
          if (txt3!='') {
            if (col=='#ffffff') col='#ef6c00';
          }

          if (dt_current_day.getUTCDay() == 0 || dt_current_day.getUTCDay() == 6) // weekend day
          if (dt_current_day.getUTCMonth() == dtm.getUTCMonth()) { // of current month
            if (col=='#ffffff') col='#ffeeff';
          }
          
          txt=getfeestdag(dt_current_day.getTime());
          if (txt!='') {
            if (col=='#ffffff') col='#ffeeff';
          }

          txt2=getvakantie(dt_current_day.getTime());
          if (txt2!='') {
            if (col=='#ffffff') col='#fff3ee';
            if (txt!='') txt+=', ';
            txt+=txt2;
          }

          if (txt3!='') {
            if (txt!='') txt3+=', ';
            txt=txt3+txt;
          }
          
          if (dt_current_day.getUTCDate() == dt_current.getUTCDate() &&
              dt_current_day.getUTCMonth() == dt_current.getUTCMonth() &&
              dt_current_day.getUTCFullYear() == dt_current.getUTCFullYear())
          // current date
            fcol='#ff0000';
          else
          if (dt_current_day.getUTCDay() == 0 || dt_current_day.getUTCDay() == 6)
            // weekend day
            if (dt_current_day.getUTCMonth() == dtm.getUTCMonth())
              // of current month
              fcol='#0000ff';
            else
              // of other month
              fcol='#ccccff';
          else
            // working day
            if (dt_current_day.getUTCMonth() == dtm.getUTCMonth())
              // of current month
              fcol='#000000';
            else
              // of other month
              fcol='#cccccc';

          res+='<td class="td_datum" align="center" style="background-color:'+col+'; color:'+fcol+';" onclick="javascript:planborddatumklik('+dt_current_day.valueOf() +')"';
          if (txt!='') res+=' title="'+txt+'"';
          res+='>';

          if (dt_current_day.getUTCMonth() == dtm.getUTCMonth())
            res+=dt_current_day.getUTCDate();
          else
            res+='&nbsp;';
          res+='</td>';
        }
        dt_current_day.setUTCDate(dt_current_day.getUTCDate()+1);
      }
      // print row footer
      res+='</tr>';
      dt_current_day6.setUTCDate(dt_current_day.getUTCDate()+6);
    }
    res+='</table>';
  res+='</td></tr>';
  res+='</table>';
  return res;
}

function dateadd(datstr,dd) {
  var ds = new String(datstr);
  var dai = 0;
  var dai0 = 0;
  var day = "1970";
  var dam = "1";
  var dad = "1";
  //jaar
  dai=ds.indexOf("-");
  if (dai!=-1) {
    day=ds.substring(0,dai);
    dai0=dai+1;
    //maand
    dai=ds.indexOf("-",dai0);
    if (dai!=-1) {
      dam=ds.substring(dai0,dai);
      dai0=dai+1;
      //dag
      dad=ds.substring(dai0,dai0+2);
    }
  }
  var dadt=new Date(Date.UTC(day,dam-1,dad));

  return dateString(dadt.getTime()+dd*86400*1000);
}

var xmlHttp_navigatie01;

function do_navigatie() {
//  getid("mededeling").innerHTML="&nbsp;De jaarkalender wordt geladen. Even geduld a.u.b. ...";

  if (monthcount>0) {
    dt_month01 = new Date(dt_firstmonth.getTime());
    getid("maand01span").innerHTML=
      '<table cellspacing="0" border="0">'
     +'<tr><td bgcolor="#333366"><font color="#ffffff">'+ARR_MONTHS[dt_month01.getUTCMonth()]+' '+dt_month01.getUTCFullYear() + '</font></td></tr>'
     +'<tr><td>wordt bijgewerkt ...</td></tr>'
     +'</table>';
  }

  if (monthcount>1) {
    dt_month02 = new Date(dt_month01.getTime());
    dt_month02.setUTCMonth(dt_month02.getUTCMonth() + 1);
    getid("maand02span").innerHTML=
      '<table cellspacing="0" border="0">'
     +'<tr><td bgcolor="#333366"><font color="#ffffff">'+ARR_MONTHS[dt_month02.getUTCMonth()]+' '+dt_month02.getUTCFullYear() + '</font></td></tr>'
     +'<tr><td>wordt bijgewerkt ...</td></tr>'
     +'</table>';
  }

  if (monthcount>2) {
    dt_month03 = new Date(dt_month02.getTime());
    dt_month03.setUTCMonth(dt_month03.getUTCMonth() + 1);
    getid("maand03span").innerHTML=
      '<table cellspacing="0" border="0">'
     +'<tr><td bgcolor="#333366"><font color="#ffffff">'+ARR_MONTHS[dt_month03.getUTCMonth()]+' '+dt_month03.getUTCFullYear() + '</font></td></tr>'
     +'<tr><td>wordt bijgewerkt ...</td></tr>'
     +'</table>';
  }

  xmlHttp_navigatie01=GetXmlHttpObject_navigatie_yc();
  if (xmlHttp_navigatie01==null) { alert ("Browser does not support HTTP Request"); return; }
  var url="/ajax/groepen_navigatie.php";
  url=url+"?d="+dateString(dt_month01);
  url=url+"&h="+houseid;
  url=url+"&sid="+Math.random();
//getid("txt").innerHTML+="<br>1="+url;
  xmlHttp_navigatie01.onreadystatechange=stateChanged_navigatie01;
  xmlHttp_navigatie01.open("GET",url,true);
  xmlHttp_navigatie01.send(null);
}

function planbordnavigatie(move) {
  if (move==0) {
    dt_firstmonth.setTime(dt_current.getTime());
    dt_firstmonth.setUTCDate(1);
  }
  dt_firstmonth.setUTCMonth(dt_firstmonth.getUTCMonth()+move);
  do_navigatie();
}

function planbordupdate(hid) {
  houseid=hid;
  do_navigatie();
}

function stateChanged_navigatie01() {
  if (xmlHttp_navigatie01.readyState==4 || xmlHttp_navigatie01.readyState=="complete") {
    var s =xmlHttp_navigatie01.responseText;
//getid("txt").innerHTML+="<br>1="+s;
    if (monthcount>0)
    processnavigatie(1,s,datecolors01,dt_month01,"maand01span");
    if (monthcount>1)
    processnavigatie(2,s,datecolors02,dt_month02,"maand02span");
    if (monthcount>2)
    processnavigatie(3,s,datecolors03,dt_month03,"maand03span");
  }
}

function processnavigatie(nr,s,dcol,dtm,spanname) {
  dcol.length=0;
  var slist = new String();
  slist=s;
  var list = new Array();
  list = slist.split(";");
  var oid = 0;
  var lh = "";
  var bd0 = "";
  var bd = "";
  var ed = "";
  var bt = 0;
  var et = 0;
  var k = -1;
  var ix = 0;
  var ix2 = 0;
  var c0 = "#ffffff";
  var i = 0;
  var ok=((i+5)<list.length);
  var a = 1;
  var c1=c2=0;
  var dh = decodeid(houseid);
  while (ok) {
    oid=list[i+0]; //occupationid
    lh=list[i+1]; //linkedhouseids
    bd=list[i+2]; //begindate
    ed=list[i+3]; //enddate
    k=list[i+4]; //kind
    bd0=bd;

    if (lh==null) ix=-1; else
    if (lh==",") ix=-1; else
    if (lh=="") ix=-1; else
    { lh=","+lh+",";
      ix=lh.indexOf(","+dh+",");
    }
    // set color
    if ((ix==-1)||(k==28)) a=1; else a=aantal; //koppeling

    while (bd<=ed) {
      ok=true;
      for (ix=0; ix<dcol.length; ix++) {
        if (dcol[ix].date==bd) { dcol[ix].color++; ix2=ix; ok=false; }
      }
      if (ok) {
        ix=dcol.length;
        dcol.length=ix+1;
        dcol[ix]=new dateColor(bd,1);
        ix2=ix;
      }
      if (dcol.length>ix2) {
        if ((k!=13)&&(k!=18)&&(k!=28)) //niet: last minute, verlopen optie of tegenboeking
//        if ((bd<ed)||(bd0==ed))
        {
          c1=dcol[ix2].count%1000;
          c2=Math.floor(dcol[ix2].count/1000);
          c1+=a;
          if (bd==bd0) { if (bd==ed) c2=3; else if (c2==0) c2=1; else if (c2==2) c2=3; } else
          if (bd==ed) { if (c2==0) c2=2; else if (c2==1) c2=3; } else
          c2=3;
          dcol[ix2].count=(c2*1000)+c1;
        }
      }
      bd=dateadd(bd,1);
    }

    //next
    i=i+5;
    ok=((i+5)<list.length);
  }

  getid(spanname).innerHTML=makemonthcalendar(nr,dtm,dcol);
//  getid("capaciteitspan").innerHTML="";
}

function GetXmlHttpObject_navigatie_yc() {
  var objXMLHttp=null;
  if (window.XMLHttpRequest) {
    objXMLHttp=new XMLHttpRequest();
  }
  else
  if (window.ActiveXObject) {
    objXMLHttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
  return objXMLHttp;
}
