MTable      = new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");
MMaxTable   = new Array("31", "28", "31", "30", "31", "30", "31", "31", "30", "31", "30", "31");

function checkCalendar(e) {
  if (document.getElementById('calendar').style.display=='block'){
    var t = ( !IE ? e.target : window.event.srcElement );
    while((t.parentNode)&&(t.parentNode != null)){
  
      if(t.id=='calendar'){
        return true;
      }
      t = t.parentNode;
    }
    hideCalendar();
  }
  if (document.getElementById('ajaxWindow').style.display=='block'){
    var t = ( !IE ? e.target : window.event.srcElement );
    while(t.parentNode != null){
      if(t.id=='ajaxWindow'){
        return true;
      }
      t = t.parentNode;
    }
    MessDisplay('ajaxWindow',0,0,0,'yes');
  }
  if (window.rMU) {
    rMU()
  };
}
  
function SetNewMonth(MonthAdd) {
  var DefYYYY = document.getElementById('SelYYYY').value;
  var DefMM   = document.getElementById('SelMM').value;
  var DefDD   = document.getElementById('SelDD').value;
  if (DefDD > MMaxTable[(Number(DefMM)+Number(MonthAdd))]) {
    DefDD = MMaxTable[(Number(DefMM)+Number(MonthAdd))];
  }
  var SelDate = new Date(DefYYYY,DefMM,DefDD);
  SelDate.setMonth(SelDate.getMonth() + MonthAdd)
  document.getElementById('SelYYYY').value = SelDate.getFullYear();
  document.getElementById('SelMM').value   = SelDate.getMonth();
  document.getElementById('SelDD').value   = SelDate.getDate();
  BuildCalendar()
}

function SetNewYear(YearAdd) {
  var DefYYYY = document.getElementById('SelYYYY').value;
  var DefMM   = document.getElementById('SelMM').value;
  var DefDD   = document.getElementById('SelDD').value;
  var SelDate = new Date(DefYYYY,DefMM,DefDD);
  SelDate.setYear(SelDate.getFullYear() + YearAdd)
  document.getElementById('SelYYYY').value = SelDate.getFullYear();
  document.getElementById('SelMM').value   = SelDate.getMonth();
  document.getElementById('SelDD').value   = SelDate.getDate();
  BuildCalendar()
}

function SetValue(DateVal) {
  if (document.getElementById('retTime').value=='yes') {
    DateVal += " " + document.getElementById('tHH').value + ":" + document.getElementById('tMM').value
  }
  document.getElementById(document.getElementById('retTo').value).value = DateVal;
  hideCalendar();
}

function hideCalendar() {
  MessDisplay('calendar',0,0,0,'yes')
  if (document.getElementById('execProc').value) {
    eval(document.getElementById('execProc').value);
  }
  document.getElementById('calendar').innerHTML = "";
}


function BuildCalendar() {
  var hval;
  var mval;
  var sep     = document.getElementById('sep').value;
  var DefYYYY = document.getElementById('SelYYYY').value;
  var DefMM   = document.getElementById('SelMM').value;
  var DefDD   = document.getElementById('SelDD').value;
  var Defhr   = document.getElementById('Selhr').value;
  var Defmin  = document.getElementById('Selmin').value;
  var SelDate = new Date(DefYYYY,DefMM,DefDD);
  var datfrmt = document.getElementById('datform').value;
  var sq      = String.fromCharCode(39);
  var cr      = String.fromCharCode(13);
  var YYYY    = SelDate.getFullYear();
  var MM      = SelDate.getMonth();
  var DD      = SelDate.getDate();
  if (((parseInt(YYYY / 4)) * 4) == YYYY) {
    MMaxTable[1] = 29;
  } else {
    MMaxTable[1] = 28;
  }
  var Mth   = MTable[DefMM];
  var TTop  = "";
  TTop += '<table align="center" cellspacing="0">' + cr;
  TTop += ' <tr>' + cr;
  TTop += '  <td class="month" style="width:10px;cursor:pointer" onclick="SetNewMonth(-1)" title="Back 1 Month">&nbsp;<<</td>' + cr;
  TTop += '  <td class="month" style="width:130px">' + Mth + ' ' + YYYY + '</td>' + cr;
  TTop += '  <td class="month" style="width:10px;cursor:pointer" onclick="SetNewMonth(+1)" title="Forward 1 Month">&nbsp;&nbsp;>></td>' + cr;
  TTop += ' </tr>' + cr;
  TTop += '</table>' + cr;
  TTop += '<table class="weh" align="center">' + cr;
  TTop += ' <tr>' + cr;
  TTop += '  <td class="weh" style="width:22px">S</td>' + cr;
  TTop += '  <td class="mwh" style="width:21px">M</td>' + cr;
  TTop += '  <td class="mwh" style="width:21px">T</td>' + cr;
  TTop += '  <td class="mwh" style="width:21px">W</td>' + cr;
  TTop += '  <td class="mwh" style="width:21px">T</td>' + cr;
  TTop += '  <td class="mwh" style="width:21px">F</td>' + cr;
  TTop += '  <td class="weh" style="width:22px">S</td>' + cr;
  TTop += ' </tr>' + cr;
  var row = 1;
  var FirstDate = new Date(DefYYYY,DefMM,(-6));
  for (x=0; (x<10)&&(FirstDate.getDay()!=0); x++) {
    FirstDate = new Date(FirstDate.getFullYear(),FirstDate.getMonth(),(FirstDate.getDate()+1));
  }
  var FirstDay  = FirstDate.getDay();
  WorkDate = new Date(FirstDate.getFullYear(),FirstDate.getMonth(),FirstDate.getDate());
  CalBld  = '<tr>' + cr;
  for (x=0; x<42; x++) {
    if ((DefYYYY == WorkDate.getFullYear()) && (MM == WorkDate.getMonth()) && (DD == WorkDate.getDate())){
      cls = "cd"
    } else {
      if ((WorkDate.getDay() == 0) || (WorkDate.getDay() == 6)) {
        cls = "we";
      } else {
        cls = "mw";
      }
    }
    if (WorkDate.getMonth()==DefMM) {
      bi="<b>"
      bo="</b>"
    } else {
      bi=""
      bo=""
    }
    DispMM = ('0'+ (WorkDate.getMonth()+1));
    DispMM = DispMM.substr(((DispMM.length)-2),2);
    DispDD = ('0'+ WorkDate.getDate());
    DispDD = DispDD.substr(((DispDD.length)-2),2);
    DispYY = WorkDate.getFullYear();
    if ( (datfrmt == "D-M-Y") || (datfrmt == "D/M/Y" ) ) {
      CalBld += ' <td class="' + cls + '" style="cursor:pointer" onclick="SetValue(' + sq + DispDD + sep + DispMM + sep + DispYY + sq +')">'+ bi + WorkDate.getDate()+ bo + '</td>' + cr;
    } else {
      CalBld += ' <td class="' + cls + '" style="cursor:pointer" onclick="SetValue(' + sq + DispYY + sep + DispMM + sep + DispDD + sq +')">'+ bi + WorkDate.getDate()+ bo + '</td>' + cr;
    }

    if (WorkDate.getDay()==6) {
      CalBld+= '</tr><tr>' + cr;
    }
    
    WorkDate = new Date(WorkDate.getFullYear(),WorkDate.getMonth(),(WorkDate.getDate()+1));
  }
  CalBld+= '</tr>' + cr;
  TBot  = '</table>' + cr;
  if (document.getElementById('retTime').value=='yes') {
    TTime  = '<table><tr><td class="mw">HH:</td><td><select id="tHH" class="time">' + cr;
    for (h=0; h<24; h++) {
      hval = ("0"+h);
      hval = hval.substr((hval.length-2),2);
      if (Defhr == hval) {
        sel = " selected";
      } else {
        sel = "";
      }
      TTime += '<option value="' + hval + '"' + sel + '>' + hval + '</option>' + cr;
    }
    TTime += '</select></td>'
    TTime += '<td class="mw">&nbsp;&nbsp;MM:</td><td><select id="tMM" class="time">'
    for (m=0; m<60; m++) {
      mval = ("0"+m);
      mval = mval.substr((mval.length-2),2);
      if (Defmin == mval) {
        sel = " selected";
      } else {
        sel = "";
      }
      TTime += '<option value="' + mval + '"' + sel + '>' + mval + '</option>' + cr;
    }
    TTime += '</select></td></tr></table>';
    TBot += TTime;
  }
  document.getElementById('ajaxCalendar').innerHTML = TTop + CalBld + TBot;
}

function GetVarDate(elementToChange,DefaultDate,time,execProc) {
  loadDiv("calendar","ajax.php?incmod=includes/Calendar.php&DD=" + DefaultDate,true)
  document.getElementById('retTime').value = time;
  document.getElementById('retTo').value = elementToChange;
  document.getElementById('execProc').value = execProc;
  BuildCalendar();
  MessDisplay('calendar',1,'x-110','y+10','yes')
  if (document.getElementById('tHH')) {
    document.getElementById('tHH').style.visibility = "visible";
    document.getElementById('tMM').style.visibility = "visible";
  }
}
