function getid(name) {
  if (typeof name == "string") return document.getElementById(name);
  return name;
}

function GetXmlHttpObject() {
  var objXMLHttp=null;
  if (window.XMLHttpRequest) {
    objXMLHttp=new XMLHttpRequest();
  } else
  if (window.ActiveXObject) {
    objXMLHttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
  return objXMLHttp;
}

function enterkeyevent(e) {
  var key;
  var keychar;

  if (window.event) key = window.event.keyCode; else
  if (e) key = e.which; else
  return true;

  // control keys
  if ((key==9)||(key==13)) return true;
                      else return false;
}

function ifstring(truefalse,truestring,falsestring) {
  if (truefalse) return truestring;
            else return falsestring;
}

var zeroid='id0id';

function decodeid(id) {
  id+='';
//getid("txt").innerHTML+="<br>decodeid=["+id+"]";
  if (id!='') id=id.replace(/id/g,"");
  if (id!='') id=id.replace(/_/,".");
  return id;
}

function encode_special(txt) {
  txt=String(txt);
//  txt=txt.replace(/"/g,'~d~');
//  txt=txt.replace(/'/g,'~q~');
  txt=txt.replace(/~a~/g,'~aa~');
  txt=txt.replace(/~p~/g,'~pp~');
  txt=txt.replace(/~s~/g,'~ss~');
  txt=txt.replace(/\&/g,'~a~');
  txt=txt.replace(/\+/g,'~p~');
  return txt.replace(/\|/g,'~s~');
}

function decode_special(txt) {
  txt=String(txt);
//  txt=txt.replace(/~d~/g,'"');
//  txt=txt.replace(/~q~/g,"'");
  txt=txt.replace(/~a~/g,'&');
  txt=txt.replace(/~p~/g,'+');
  txt=txt.replace(/~s~/g,'|');
  txt=txt.replace(/~aa~/g,'~a~');
  txt=txt.replace(/~pp~/g,'~p~');
  return txt.replace(/~ss~/g,'~s~');
}

function addslashes(txt) {
  txt=String(txt);
  txt=txt.replace(/"/g,'&quot;');
  return txt.replace(/'/g,"&#39;");
}

var Microsoft = (navigator.appName.indexOf('Microsoft') != -1);
// months as they appear in the calendar's title
var ARR_MONTHS = ["januari", "februari", "maart", "april", "mei", "juni",
                  "juli", "augustus", "september", "oktober", "november", "december"];
// week day titles as they appear on the calendar
var ARR_WEEKDAYS = ["zo", "ma", "di", "wo", "do", "vr", "za"];
// day week starts from (normally 0-Su or 1-Mo)
var NUM_WEEKSTART = 1;

var secsperday = 86400;

var re_url = new RegExp('datetime=(\\-?\\d+)');
var dt_current = new Date();
dt_current.setUTCMilliseconds(0);
dt_current.setUTCSeconds(0);
dt_current.setUTCMinutes(0);
dt_current.setUTCHours(0);

// get first day to display in the grid for current month
var dt_firstmonth = new Date(dt_current.getTime());
dt_firstmonth.setUTCDate(1);
var dt_monthyr = new Date(dt_firstmonth.getTime());
dt_monthyr.setUTCMonth(dt_monthyr.getUTCMonth()+13); //= 13maanden na huidige maand
dt_firstmonth.setUTCMonth(dt_firstmonth.getUTCMonth()+1); //= 1 maand na huidige maand
var dt_month01 = new Date(dt_firstmonth.getTime());
var dt_month02 = new Date(dt_firstmonth.getTime());
var dt_month03 = new Date(dt_firstmonth.getTime());

var datum20000101 = 946684800;

var DagcodeLijst = '0=zo|1=ma|2=di|3=wo|4=do|5=vr|6=za';

function dateColor(date,color) {
  this.date=date;
  this.color=color;
  this.count=0;
}

function valutainteger(    value) {
  return (value/1000).toFixed(2);
}

function geointeger(    value) {
  return (value/1000000).toFixed(6);
}

function stringDate(str) { //formaat: dd-mm-yyyy
  var dd = 1;
  var mm = 0;
  var yy = 1970;
  //dag
  var i=String(str).indexOf('-');
  if (i>=0) {
    dd=String(str).substring(0,i);
    str=String(str).substring(i+1);
  }
  if ((dd<1)||(dd>31)) dd=1;
  //maand
  var i=String(str).indexOf('-');
  if (i>=0) {
    mm=String(str).substring(0,i)-1;
    str=String(str).substring(i+1);
  }
  if ((mm<0)||(mm>11)) mm=0;
  //jaar
  yy=str-0;
  if (yy<50) yy+=2000;
  if (yy<100) yy+=1900;
  //maak datum
  var d=new Date();
  d.setUTCHours(0,0,0,0);
  d.setUTCFullYear(yy,mm,dd);
  return d.getTime();
}

function dateString(dat,format,utc) { //format-elementen: w, ymd, dmy, emy, hns, hn
  if (!format) format='';
  if (format=='') format='ymd';
  if (!utc) utc=false;
  var d = new Date(dat);
  var r = "";
  var i = 0;
  if (!utc) {
    if (format.indexOf('w')!=-1) {
                             r+=veldlijstWaarde(DagcodeLijst,d.getDay());
    }
    if (format.indexOf('ymd')!=-1) {
                             if (r!='') r+=' ';
                             r+=d.getFullYear();
      i=(d.getMonth()+1);    if (i<10) r+="-0"+i+"-"; else r+="-"+i+"-";
      i=d.getDate();         if (i<10) r+="0"+i; else r+=i;
    } else
    if (format.indexOf('dmy')!=-1) {
                             if (r!='') r+=' ';
      i=d.getDate();         if (i<10) r+="0"+i; else r+=i;
      i=(d.getMonth()+1);    if (i<10) r+="-0"+i+"-"; else r+="-"+i+"-";
                             r+=d.getFullYear();
    } else
    if (format.indexOf('d')!=-1) {
                             if (r!='') r+=' ';
      i=d.getDate();         if (i<10) r+="0"+i; else r+=i;
    } else
    if (format.indexOf('m')!=-1) {
                             if (r!='') r+=' ';
      i=(d.getMonth()+1);    if (i<10) r+="0"+i; else r+=i;
    } else
    if (format.indexOf('y')!=-1) {
                             if (r!='') r+=' ';
                             r+=d.getFullYear();
    }
    if (format.indexOf('emy')!=-1) {
                             if (r!='') r+=' ';
      i=d.getDate();         r+=i;
      i=(d.getMonth()+1);    if (i<10) r+="-0"+i+"-"; else r+="-"+i+"-";
                             r+=d.getFullYear();
    }
    if (format.indexOf('hns')!=-1) {
                             if (r!='') r+=' ';
      i=(d.getHours());      if (i<10) r+="0"+i; else r+=i;
      i=(d.getMinutes());    if (i<10) r+=":0"+i; else r+=":"+i;
      i=(d.getSeconds());    if (i<10) r+=":0"+i; else r+=":"+i;
    } else
    if (format.indexOf('hn')!=-1) {
                             if (r!='') r+=' ';
      i=(d.getHours());      if (i<10) r+="0"+i; else r+=i;
      i=(d.getMinutes());    if (i<10) r+=":0"+i; else r+=":"+i;
    }
  } else {
    if (format.indexOf('w')!=-1) {
                             r+=veldlijstWaarde(DagcodeLijst,d.getUTCDay());
    }
    if (format.indexOf('ymd')!=-1) {
                             if (r!='') r+=' ';
                             r+=d.getUTCFullYear();
      i=(d.getUTCMonth()+1); if (i<10) r+="-0"+i+"-"; else r+="-"+i+"-";
      i=d.getUTCDate();      if (i<10) r+="0"+i; else r+=i;
    } else
    if (format.indexOf('dmy')!=-1) {
                             if (r!='') r+=' ';
      i=d.getUTCDate();      if (i<10) r+="0"+i; else r+=i;
      i=(d.getUTCMonth()+1); if (i<10) r+="-0"+i+"-"; else r+="-"+i+"-";
                             r+=d.getUTCFullYear();
    } else
    if (format.indexOf('d')!=-1) {
                             if (r!='') r+=' ';
      i=d.getUTCDate();      if (i<10) r+="0"+i; else r+=i;
    } else
    if (format.indexOf('m')!=-1) {
                             if (r!='') r+=' ';
      i=(d.getUTCMonth()+1); if (i<10) r+="0"+i; else r+=i;
    } else
    if (format.indexOf('y')!=-1) {
                             if (r!='') r+=' ';
                             r+=d.getUTCFullYear();
    }
    if (format.indexOf('emy')!=-1) {
                             if (r!='') r+=' ';
      i=d.getUTCDate();      r+=i;
      i=(d.getUTCMonth()+1); if (i<10) r+="-0"+i+"-"; else r+="-"+i+"-";
                             r+=d.getUTCFullYear();
    }
    if (format.indexOf('hns')!=-1) {
                             if (r!='') r+=' ';
      i=(d.getUTCHours());   if (i<10) r+="0"+i; else r+=i;
      i=(d.getUTCMinutes()); if (i<10) r+=":0"+i; else r+=":"+i;
      i=(d.getUTCSeconds()); if (i<10) r+=":0"+i; else r+=":"+i;
    } else
    if (format.indexOf('hn')!=-1) {
                             if (r!='') r+=' ';
      i=(d.getUTCHours());   if (i<10) r+="0"+i; else r+=i;
      i=(d.getUTCMinutes()); if (i<10) r+=":0"+i; else r+=":"+i;
    }
  }
  return r;
}

function dateString_ymdhns(dat) { return dateString(dat,'ymdhns'); }

function dateString_dmy(dat) { return dateString(dat,'dmy'); }

function dateString_emy(dat) { return dateString(dat,'emy'); }

function dateString_emy_local(dat) { return dateString(dat,'emy',false); }

function dateString_dmyhns(dat) { return dateString(dat,'dmyhns'); }

function dateString_wdmyhns(dat) { return dateString(dat,'wdmyhns'); }

function dateString_wdmyhn(dat) { return dateString(dat,'wdmyhn'); }

function dateString_wdmyhn_local(dat) { return dateString(dat,'wdmyhn',false); }

function dateString_dmyhn(dat) { return dateString(dat,'dmyhn'); }

function dateString_emyhn(dat) { return dateString(dat,'emyhn'); }

function dateString_emyhn_local(dat) { return dateString(dat,'emyhn',false); }

function dateString_wdmy(dat) { return dateString(dat,'wdmy'); }

function dateString_w(dat) { return dateString(dat,'w'); }

function dateString_wd(dat) { return dateString(dat,'wd'); }

function timeString_hm(tim) {
  var sec = tim % 60;
  tim=Math.floor(tim/60);
  var min = tim % 60;
  var hrs=Math.floor(tim/60);
  var s = "";
  if (hrs<10) s=s+"0"+hrs+":"; else s=s+hrs+":";
  if (min<10) s=s+"0"+min; else s=s+min;
  return s;
}

function stringTime_hm(str) {
  var p = String(str).indexOf(":");
  var s1 = String(str).substring(0,p);
  var s2 = String(str).substring(p+1);
  return s1*3600 + s2*60;
}

function veldlijstWaardeDefault(lijst,key,defaultwaarde,keepgroup) {
  if (!keepgroup) keepgroup=false;
  var result=''+defaultwaarde;
  var s='';
  var ar=lijst.split("|");
  var ii = 0;
  for (var i=0; i<ar.length; i++) {
    s=ar[i];
    ii=s.indexOf('=');
    if (s.substring(0,ii)==key) result=s.substring(ii+1);
  }

  if (!keepgroup)
  if (result)
  if (result!='')
  if (result.indexOf('[')==0) {
    result=result.substring(1);
    ii=result.indexOf(']'); result=result.substring(ii+1);
  }

  return result;
}

function veldlijstWaarde(lijst,key) {
  return veldlijstWaardeDefault(lijst,key,key,false);
}

function assignValue(lijst,key) {
  return veldlijstWaardeDefault(lijst,key,'',true);
}

function veldlijstSelectOnchange(lijst,id,waarde,onchange) {
  var result='<select id="'+id+'" name="'+id+'"';
  if (onchange!='') result+=' onchange="'+onchange+'"';
  result+='>';
  var s=s0=s1=s2=groupname='';
  var ar=lijst.split("|");
  var ii = 0;
  for (var i=0; i<ar.length; i++) {
    s=ar[i]; s2='';
    ii=s.indexOf('='); s0=s.substring(0,ii); s1=s.substring(ii+1);
    if (s1.indexOf('[')==0) {
      s1=s1.substring(1);
      ii=s1.indexOf(']'); s2=s1.substring(0,ii); s1=s1.substring(ii+1);
    }
    if (groupname!=s2) {
      if (groupname!='') result+='</optgroup>';
      groupname=s2;
      if (groupname!='') result+='<optgroup label="'+groupname+'">';
    }
    result+='<option value="'+s0+'"'+ifstring(waarde==s0,' selected','')+'>'+s1+'</option>';
  }
  if (groupname!='') result+='</optgroup>';
  result+='</select>';
  return result;
}

function veldlijstSelect(lijst,id,waarde) {
  return veldlijstSelectOnchange(lijst,id,waarde,'');
}

function veldlijstRadio(lijst,id,waarde) {
  var result='';
  var s=s0=s1='';
  var ar=lijst.split("|");
  var ii=0;
  for (var i=0; i<ar.length; i++) {
    s=ar[i];
    ii=s.indexOf('='); s0=s.substring(0,ii); s1=s.substring(ii+1);
    result+='<input type="radio" id="'+id+s0+'" name="'+id+'" onclick="'+id+'click('+s0+')"'+ifstring(waarde==s0,' checked','')+'><label for="'+id+s0+'">'+s1+'</label>&nbsp;&nbsp;';
  }
  return result;
}

function datumedit(dagspanid,inputid,imagetitle,onfocus,onkeypress,onclick,onchange,onzeroclick,zerotitle,ontodayclick,todaytitle,showclick) {
  var s = '';
  if (dagspanid==null) dagspanid='';
  if (inputid==null) inputid='';
  if (imagetitle==null) imagetitle='';
  if (onfocus==null) onfocus='';
  if (onkeypress==null) onkeypress='';
  if (onclick==null) onclick='';
  if (onchange==null) onchange='';
  if (onzeroclick==null) onzeroclick='';
  if (zerotitle==null) zerotitle='';
  if (ontodayclick==null) ontodayclick='';
  if (todaytitle==null) todaytitle='';
  if (showclick==null) showclick=true;

  if (dagspanid!='')
  s+='<span id="'+dagspanid+'"></span>&nbsp;';
  s+='<input'+
       ' size="10"'+
       ' type="text"'+
       ' name="'+inputid+'"'+
       ' id="'+inputid+'"'+
       ' title="dd-mm-jjjj"'+
       ifstring(onfocus!='',' onfocus="'+onfocus+'()"','')+
       ifstring(onkeypress!='',' onkeypress="'+onkeypress+'(event)"','')+
       ifstring(onchange!='',' onchange="'+onchange+'(event)"','')+
     '>';
  if (showclick)
  s+='<img'+
         ifstring(imagetitle!='',' title="'+imagetitle+'"','')+
         ' src="/images/zoekboek/Enter.gif"'+
         ' border="0"'+
         ' style="vertical-align: top"'+
         ifstring(onclick!='',' onclick="'+onclick+'()"','')+
     '>';
  if (onzeroclick!='')
  s+='<img'+
         ifstring(zerotitle!='',' title="'+zerotitle+'"','')+
         ' src="/images/zoekboek/Leeg.gif"'+
         ' border="0"'+
         ' style="vertical-align: top"'+
         ' onclick="'+onzeroclick+'()"'+
     '>';
  if (ontodayclick!='')
  s+='<img'+
         ifstring(todaytitle!='',' title="'+todaytitle+'"','')+
         ' src="/images/zoekboek/Is.gif"'+
         ' border="0"'+
         ' style="vertical-align: top"'+
         ' onclick="'+ontodayclick+'()"'+
     '>';

  return s;
}

function newid(table,tableid) {
  var s = '';
  var xmlHttp_newid=GetXmlHttpObject();
  if (xmlHttp_newid==null) {
    alert ("Browser does not support HTTP Request");
    return;
  }
  var url="/ajax/groepen_newid.php";
  url+="?table="+table;
  url+="&tableid="+tableid;
  url+="&sid="+Math.random();
//getid("txt").innerHTML+="<br>{"+url+"}";
  xmlHttp_newid.open("GET",url,false);
  xmlHttp_newid.send(null);
  if (xmlHttp_newid.status==200) s=xmlHttp_newid.responseText;
//getid("txt").innerHTML+="<br>"+s;
  return s;
}


