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();

var color_oldmonth = '#dddddd';

function dateColorK(date,color) {
  this.date=date;
  this.color=color;
  this.count=0;
  this.kind=0;
}

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 = "#ffffff"; //"#1fb53a";//"#ffffff";
    if (kind<=0) clr="#ffffff"; else //clr="#1fb53a"; else //clr="#ffffff"; else
                 clr="#cc0000"; //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="27" span="7">';
//         '<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;">'+veldlijstWaarde(rss(rssMonthNameList),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">'+veldlijstWaarde(rss(rssDayCodeList),(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=k1=k2=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++;
            
            k1=Math.floor(dcol[i].kind/1000); //ochtend
            k2=dcol[i].kind%1000; //middag
          }
        }

        if (metbezetting==1) {
          col = "#ffffff";
//          col = "#1fb53a";
          var fgcol = '#000000';
          if (p<=0) col=bookcolor(0);
               else col=bookcolor(100);
          if (k1==k2)
          switch (k1) {
            case 0 : col='#ffffff'; break; //vrij
            case 1 : col='#ff9933'; break; //optie
            case 2 : col='#cc0000'; break; //bezet
          }
          if (dt_current_day.getUTCMonth()!=dtm.getUTCMonth()) col="#eeeeee"; else
          if ((langer1jaar==0)&&(dt_current_day>=dt_monthyr)) col=color_oldmonth; else
          if (dt_current_day<(day1)) col=color_oldmonth;
//          if (dt_current_day<(dt_current)) col=color_oldmonth;

          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==color_oldmonth)||(col=="#eeeeee"))
          res+='<td class="td_datum" bgcolor='+col+' align="center" onClick="javascript:planborddatumklik('+dt_current_day.valueOf() +')"'+cursor+' style="color:'+fgcol+';"';
          else
          switch (k1) {
            case 0 :
              switch (k2) {
                case 0 : res+='<td class="td_datum" bgcolor='+col+' align="center" onClick="javascript:planborddatumklik('+dt_current_day.valueOf() +')"'+cursor+' style="color:'+fgcol+';"'; break;
                case 1 : res+='<td class="td_datum" style="background-image:url(\'images/yesoption.gif\'); background-repeat:no-repeat; background-position:center; color:'+fgcol+';" align="center" onClick="javascript:planborddatumklik('+dt_current_day.valueOf() +')"'+cursor; break;
                case 2 : res+='<td class="td_datum" style="background-image:url(\'images/yesno.gif\'); background-repeat:no-repeat; background-position:center; color:'+fgcol+';" align="center" onClick="javascript:planborddatumklik('+dt_current_day.valueOf() +')"'+cursor; break;
              }
              break;
            case 1 :
              switch (k2) {
                case 0 : res+='<td class="td_datum" style="background-image:url(\'images/optionyes.gif\'); background-repeat:no-repeat; background-position:center; color:'+fgcol+';" align="center" onClick="javascript:planborddatumklik('+dt_current_day.valueOf() +')"'+cursor; break;
                case 1 : res+='<td class="td_datum" bgcolor='+col+' align="center" onClick="javascript:planborddatumklik('+dt_current_day.valueOf() +')"'+cursor+' style="color:'+fgcol+';"'; break;
                case 2 : res+='<td class="td_datum" style="background-image:url(\'images/optionno.gif\'); background-repeat:no-repeat; background-position:center; color:'+fgcol+';" align="center" onClick="javascript:planborddatumklik('+dt_current_day.valueOf() +')"'+cursor; break;
              }
              break;
            case 2 :
              switch (k2) {
                case 0 : res+='<td class="td_datum" style="background-image:url(\'images/noyes.gif\'); background-repeat:no-repeat; background-position:center; color:'+fgcol+';" align="center" onClick="javascript:planborddatumklik('+dt_current_day.valueOf() +')"'+cursor; break;
                case 1 : res+='<td class="td_datum" style="background-image:url(\'images/nooption.gif\'); background-repeat:no-repeat; background-position:center; color:'+fgcol+';" align="center" onClick="javascript:planborddatumklik('+dt_current_day.valueOf() +')"'+cursor; break;
                case 2 : res+='<td class="td_datum" bgcolor='+col+' align="center" onClick="javascript:planborddatumklik('+dt_current_day.valueOf() +')"'+cursor+' style="color:'+fgcol+';"'; break;
              }
              break;
          }

          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>'+rss(rssIsBeingUpdated_L_D)+'</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>'+rss(rssIsBeingUpdated_L_D)+'</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>'+rss(rssIsBeingUpdated_L_D)+'</td></tr>'
     +'</table>';
  }

  xmlHttp_navigatie01=GetXmlHttpObject_navigatie_yc();
  if (xmlHttp_navigatie01==null) { alert ("Browser does not support HTTP Request"); return; }
  var url="./common/common_navigatie.php";
  url+="?d="+dateString(dt_month01);
  url+="&h="+houseid;
  url+="&sid="+Math.random();
//getid("txt").innerHTML+="<br>"+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+7)<list.length);
  var a = 1;
  var c1=c2=0;
  var k1=k2=kx=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
    bt=list[i+5]; //begintime
    et=list[i+6]; //endtime
    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 dateColorK(bd,1);
        ix2=ix;
      }
      if (dcol.length>ix2) {
        if ((k!=13)&&(k!=18)&&(k!=28)) { //niet: last minute, verlopen optie of tegenboeking
          c1=dcol[ix2].count%1000;
          c2=Math.floor(dcol[ix2].count/1000);
          c1+=a;
          if ((bd==ed)&&(et>43200)) c2=3; else
          if ((bd==bd0)&&(bt<=43200)) c2=3; else
          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;
          
//getid('txt').innerHTML+='<br>ix2='+ix2+'  d='+dateString(bd,'dmy')+'  k='+k+'  k1='+k1+'  k2='+k2+'  bd='+bd+'  bd0='+bd0+'  ed='+ed+'  bt='+bt+'  et='+et;
          if (k<20) kx=1; else kx=2; //1=optie; 2=boeking
          k1=Math.floor(dcol[ix2].kind/1000); //ochtend
          k2=dcol[ix2].kind%1000; //middag
          if ((bd==ed)&&(et>43200))   { if (k1!=1) k1=kx; if (k2!=1) k2=kx; } else //middag vertrek
          if ((bd==bd0)&&(bt<=43200)) { if (k1!=1) k1=kx; if (k2!=1) k2=kx; } else //ochtend aankomst
          if (bd==bd0) { if (bd==ed)  { if (k1!=1) k1=kx; if (k2!=1) k2=kx; }      //1 hele dag
                                else  {                   if (k2!=1) k2=kx; }      //middag aankomst
                       } else
          if (bd==ed)                 { if (k1!=1) k1=kx;                   } else //ochtend vertrek
                                      { if (k1!=1) k1=kx; if (k2!=1) k2=kx; }      //hele dag tussen aankomst en vertrek
//getid('txt').innerHTML+='  --&gt;  k1='+k1+'  k2='+k2;
          dcol[ix2].kind=(k1*1000)+k2;
        }
      }
      bd=dateadd(bd,1);
    }

    //next
    i=i+7;
    ok=((i+7)<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;
}

