﻿//
// calMont 1.0 (c) 2006 Matt Grandis
//
// http://www.mattgrandis.net
//

addEvent(window, "load", initCal);

var calPath = "http://www.hamburg-port-authority.de";

var calDays = new Array("Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag","Sonntag");
var calMonths = new Array("Januar","Februar","M&auml;rz","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember");
var calDaysInMonth = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
var calIcons = new Array("", "icon_lesung.gif", "icon_tv.gif", "icon_radio.gif", "icon_messe.gif", "icon_schreiben.gif", "icon_veranstaltung.gif", "icon_info.gif","icon_beeint.gif");

var calDate = new Date();
var calCurrSelectedDay;
var calCurrMonth = calDate.getMonth();
var calCurrYear = calDate.getFullYear();
var thisYear = calDate.getFullYear();
var calContentDiv;
var calOverDiv;

var calHTML;
var cellWidth;  
var cellHeight;
var firstDay = 1;
var lastDay = 1;
var calRows;

var calFields;

var calLoginUser;
var calLoginPassword;

var lock = false;

function newXMLHttpRequest() {

var xmlhttp=false;
/*@cc_on @*/
/*@if (@_jscript_version >= 5)
 try {
  xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
 } catch (e) {
  try {
   xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
  } catch (E) {
   xmlhttp = false;
  }
 }
@end @*/
if ((!xmlhttp && typeof XMLHttpRequest!='undefined') || window.XMLHttpRequest) {
	try {
		xmlhttp = new XMLHttpRequest();
	} catch (e) {
		xmlhttp=false;
	}
}
if (!xmlhttp && window.createRequest) {
	try {
		xmlhttp = window.createRequest();
	} catch (e) {
		xmlhttp=false;
	}
}
return xmlhttp;
}

function addURLParam(sURL, sParamName, sParamValue) {
  sURL += (sURL.indexOf("?") == -1 ? "?" : "&");
  sURL += encodeURIComponent(sParamName) + "=" + encodeURIComponent(sParamValue);
  return sURL;
}

var bgOn = '#f3f4f6';
var bgOff = '#E4E9ED';
  
function calcDay(calcYear,calcMonth,calcDay) {
  var val1 = parseInt(calcDay, 10);
  var val2 = parseInt(calcMonth, 10);
  var val2x = parseInt(calcMonth, 10);
  var val3 = parseInt(calcYear, 10);
  if (val2 == 1) {
    val2x = 13;
    val3 = val3-1;
  }
  if (val2 == 2) {
    val2x = 14;
    val3 = val3-1;
  }
  var val4 = parseInt(((val2x+1)*3)/5, 10);
  var val5 = parseInt(val3/4, 10);
  var val6 = parseInt(val3/100, 10);
  var val7 = parseInt(val3/400, 10);
  var val8 = val1+(val2x*2)+val4+val3+val5-val6+val7+2;
  var val9 = parseInt(val8/7, 10);
  var val0 = val8-(val9*7);
  if(val0 == 0) val0 = 7;
  if(val0 == 1) val0 = 8;
  val0 -= 2;
  return val0;
}


function calSetBG(elem, col, onoff) {
  elem.style.backgroundColor = col;
}

function initCal() {
  var calDiv = "calMont";
  cellWidth = document.getElementById(calDiv).offsetWidth;  
  cellHeight = document.getElementById(calDiv).offsetHeight;
  firstDay = calcDay(calCurrYear,parseInt(calCurrMonth)+1,01);
  lastDay = calDaysInMonth[calCurrMonth];
  calContentDiv = calDiv;
  updateCal(calDiv);
}

function calChangeDate(calDiv) {
  if(!lock) {
    calCurrMonth = parseInt(document.getElementById('calCurrMonth').options[document.getElementById('calCurrMonth').selectedIndex].value);
    calCurrYear = parseInt(document.getElementById('calCurrYear').options[document.getElementById('calCurrYear').selectedIndex].value);
    firstDay = calcDay(calCurrYear,parseInt(calCurrMonth)+1,01);
    lastDay = calDaysInMonth[calCurrMonth];
    updateCal(calDiv);
  }
}

function calPrintView(showYear, showMonth) {
  window.open(calPath+'/calMont/php/calPrint.php?year='+showYear+'&month='+(showMonth+1), 'Druckvorschau', 'width=700,height=600,left=100,top=50,menubar=yes,scrollbars=yes');
}

function calPrintDayView(showYear, showMonth, showDay) {
  window.open(calPath+'/calMont/php/calPrintDay.php?year='+showYear+'&month='+(showMonth+1)+'&day='+showDay, 'Druckvorschau', 'width=700,height=600,left=100,top=50,menubar=yes,scrollbars=yes');
}

function calToggleLogin() {
  if(document.getElementById('calLoginDiv').style.visibility == 'hidden') {
    document.getElementById('calLoginDiv').style.visibility = 'visible';
  } else {
    document.getElementById('calLoginDiv').style.visibility = 'hidden';
  }
}

function updateCal(calDiv) {

  calHTML = '<div style="position: absolute; top: 0px; left: ' + ((cellWidth / 2) - 10) + 'px;"><span id="calBusy" style="visibility: hidden;"><img src="'+calPath+'/calMont/images/busy.gif" /></span></div>';
  document.getElementById(calDiv).innerHTML = calHTML;
  document.getElementById('calBusy').style.visibility = 'visible';
  var oRequest = new newXMLHttpRequest();
  var sURL = calPath+"/calMont/php/calGetDate.php";
  sURL = addURLParam(sURL, "year", calCurrYear);
  sURL = addURLParam(sURL, "month", (calCurrMonth+1));
  oRequest.open("get", sURL, false);
  oRequest.send(null);
  var calEntries;
  if(oRequest.responseText != null) {
    calEntries = oRequest.responseText.split('[~SD~]');
  } else {
    calEntries = "";
  }  
  var calEntryCount = 0;
  var calEntryNum = 0;
  var calCurrEntry;
  if(calEntries[calEntryNum] != null) {
    calCurrEntry = calEntries[calEntryNum].split('[~SH~]');
  } else {
    calCurrEntry = "";
  }
  calEntryNum++;  
  document.getElementById('calBusy').style.visibility = 'hidden';
  if(lastDay + firstDay > 35) {
    calRows = 6;
  } else {
    calRows = 5;
  }
  
  if(calCurrMonth == 1 && (calCurrYear % 400 == 0 || (calCurrYear % 4 == 0 && calCurrYear % 100 != 0))) lastDay++;
  var go = false;
  var calCurrDay = 0;
  var cols;
  
  calHTML += '<div id="calPrint"><div onclick="calPrintView('+calCurrYear+','+calCurrMonth+')" style="position: absolute; top: 0px; left: 5px; width: 100px; height: 25px; line-height: 25px; border: 1px solid #a1a1a1; text-align: center; background-color: ' + bgOff + '; cursor: pointer; cursor: hand;" onmouseover="calSetBG(this,\'' + bgOn + '\')" onmouseout="calSetBG(this,\'' + bgOff + '\')">Druckansicht</div></div>';
  calHTML += '<div class="calMenu" id="calMenu" style="position:absolute; top: 0px; left: 200px; width: ' + (cellWidth-200) + 'px; height: 40px;">';
  calHTML += '<div class="calCurrDate" id="calCurrDate" style="position: absolute; top: 0px; left: ' + (cellWidth - 455) + 'px; width: 250px; height: 25px;"><select id="calCurrMonth" onchange="calChangeDate(\''+calDiv+'\')">';
  for(cols=0; cols < 12; cols++) {
    calHTML += '<option value="' + cols + '"';
    if(cols == calCurrMonth) calHTML += ' selected="selected"';
    calHTML += '>' + calMonths[cols] + '</option>';
  }
  calHTML += '</select>&nbsp;&nbsp;<select id="calCurrYear" onchange="calChangeDate(\''+calDiv+'\')">';
  for(cols=0; cols < 5; cols++) {
    calHTML += '<option value="' + (cols + thisYear) + '"';
    if(cols + thisYear == calCurrYear) calHTML += ' selected="selected"';
    calHTML += '>' + (cols + thisYear) + '</option>';
  }
  calHTML += '</select></div>';
  calHTML += '</div>';
  
  calHTML += '<div style="position: absolute; top: '+(cellHeight-32)+'px; left: '+(cellWidth+5)+'px;" onclick="calToggleLogin()"><img src="'+calPath+'/calMont/images/lock.gif" border="0" /></div>';
  calHTML += '<div class="calLogin" id="calLoginDiv" style="position:absolute; top: 0px; left: 5px; width: 350px; height: 40px; visibility: hidden;">';
  calHTML += '<div style="position: absolute; top: 0px; left: 0px; border: 1px solid #a1a1a1; font-weight: bold; padding: 3px; background-color: #fff;" id="calLogin">Login:&nbsp;<input type="text" size="15" maxlength="25" id="calLoginUser" onchange="calLoginUser=document.getElementById(\'calLoginUser\').value" />&nbsp;&nbsp;&nbsp;Passwort:&nbsp;<input type="password" size="15" maxlength="25"  id="calLoginPassword" onchange="calLoginPassword=(document.getElementById(\'calLoginPassword\').value)" /></div>';
  calHTML += '</div>';

  
  calHTML += '<div id="calCalView" style="position: absolute; top: 40px; left: 0px; width: ' + cellWidth + 'px; height: ' + (cellHeight - 60) + 'px;">';
  for(cols=0; cols < 7 ; cols++) {
    calHTML += '<div style="position: absolute; top: 0px; left: ' + parseInt(cols * (cellWidth / 7)) + 'px; width: ' + parseInt(cellWidth / 7) + 'px; height: 20px;" class="calDays">';
    calHTML += calDays[cols];
    calHTML += '</div>'; 
  }
  var is_dead = false;
  for(var rows=0; rows < calRows; rows++) {
    for(cols=0; cols < 7; cols++) {
      calHTML += '<div style="position: absolute; top: ' + parseInt(20 + (rows * ((cellHeight - 60) / calRows))) + 'px; left: ' + parseInt(cols * (cellWidth / 7)) + 'px; width: ' + parseInt(cellWidth / 7) + 'px; height: ' + parseInt((cellHeight - 60) / calRows) + 'px;" ';
      if(!go) {
        if(cols == firstDay) {
          calHTML += 'class="calCell" onmouseover="calSetBG(this,\'' + bgOn + '\')" onmouseout="this,calSetBG(this,\'' + bgOff + '\')"';
          calHTML += ' onclick="calShowDate(\'' + calDiv + '\', ' + calCurrYear + ', ' + calCurrMonth + ', ' + (calCurrDay+1) + ', ' + cols + ', ' + rows + ')"';
          calHTML += '><div align="right">' + (calCurrDay+1) + '&nbsp;</div>';
          go = true;
          calCurrDay+=2;
        } else {
          calHTML += 'class="calDeadCell">';
        }
      } else {
        if(calCurrDay > lastDay) {
          calHTML += 'class="calDeadCell">';
		  is_dead = true;
        } else {
		  is_dead = false;
          if(calCurrDay == calDate.getDate() && calCurrMonth == calDate.getMonth() && calCurrYear == calDate.getFullYear()) {
            calHTML += 'class="calCellToday" ';
          } else {
            calHTML += 'class="calCell" ';
          }
          calHTML += 'onmouseover="calSetBG(this,\'' + bgOn + '\')" onmouseout="calSetBG(this,\'' + bgOff + '\')"';
          calHTML += ' onclick="calShowDate(\'' + calDiv + '\', ' + calCurrYear + ', ' + calCurrMonth + ', ' + calCurrDay + ', ' + cols + ', ' + rows + ')"';          
          calHTML += '><div align="right">' + calCurrDay + '&nbsp;</div>';
          calCurrDay++;
        }
      }

      if(calEntryNum <= calEntries.length && calCurrEntry[0] != "" && !is_dead) {
        while(calCurrEntry[0] <= (calCurrDay-1) && calEntryCount < 4 && calEntryNum <= calEntries.length) {
          calHTML += '<table cellpadding="0" cellspacing="0" width="100%" style="font-size:10px;"><tr><td width="18px" height="14px"><img src="'+calPath+'/calMont/images/' + calIcons[calCurrEntry[2]] +'" border="0"></td>';      
          calHTML += '<td width="' + (parseInt(cellWidth / 7) - 18) + 'px" height="14px">' + calCurrEntry[1].substr(0,14).replace(/ /g,'&nbsp;') + '</td></tr></table>'; 
          calEntryCount++;
          if(calEntryNum < calEntries.length) calCurrEntry = calEntries[calEntryNum].split('[~SH~]');
          calEntryNum++;
        }
      }
      if(calEntryCount >= 4) {
        calHTML += '<table cellpadding="0" cellspacing="0" width="100%" style="font-size:10px;"><tr><td width="18px"></td><td>(...)</td></tr></table>';
      }
      calEntryCount = 0;
      calHTML += '</div>';
    }
  }
  calHTML += '<div id="calShowDate" class="calShowDate" style="position: absolute; top: 0px; left: 0px; width: ' + parseInt(cellWidth / 7) + 'px; height: ' + parseInt((cellHeight - 60) / calRows) + 'px; line-height: ' + parseInt((cellHeight - 60) / calRows) + 'px; visibility: hidden;"></div>';
  calHTML += '</div>';  
  document.getElementById(calDiv).innerHTML = calHTML;
}

function calShowDate(calDiv, showYear, showMonth, showDay, cols, rows) {
  if(lock == false) {
    calCurrSelectedDay = showDay;
    lock = true;
    document.getElementById('calShowDate').style.top = parseInt(20 + (rows * ((cellHeight - 60) / calRows))) + 'px';
    document.getElementById('calShowDate').style.left = parseInt(cols * (cellWidth / 7)) + 'px';
    document.getElementById('calShowDate').style.visibility = 'visible';
    flashDiv('calShowDate', 5, bgOn, bgOff, cols, rows, showYear, showMonth, showDay);
    calHTML = '<div id="calBack" onclick="closeCalShow(\'calShowDate\', ' + cols + ', ' + rows + ')" style="position: absolute; top: -40px; left: ' + (cellWidth - 355) + 'px; width: 150px; height: 25px; line-height: 25px; border: 1px solid #a1a1a1; text-align: center; background-color: ' + bgOff + '; cursor: pointer; cursor: hand;" onmouseover="calSetBG(this,\'' + bgOn + '\')" onmouseout="calSetBG(this,\'' + bgOff + '\')">Zur&uuml;ck zur &Uuml;bersicht</div>';
    calHTML += '<div class="calCurrDate" id="calCurrDate" style="position: absolute; top: 0px; left: ' + (cellWidth - 455) + 'px; width: 250px; height: 25px;"><select id="calCurrMonth" onchange="calChangeDate(\''+calDiv+'\')">';
    for(var i=0; i < 12; i++) {
      calHTML += '<option value="' + i + '"';
      if(i == calCurrMonth) calHTML += ' selected="selected"';
      calHTML += '>' + calMonths[i] + '</option>';
    }
    calHTML += '</select>&nbsp;&nbsp;<select id="calCurrYear" onchange="calChangeDate(\''+calDiv+'\')">';
    for(i=0; i < 5; i++) {
      calHTML += '<option value="' + (i + thisYear) + '"';
      if(i + thisYear == calCurrYear) calHTML += ' selected="selected"';
      calHTML += '>' + (i + thisYear) + '</option>';
    }
    calHTML += '</select></div>';    
    document.getElementById('calMenu').innerHTML = calHTML;
    calDropMenu('calBack', 'calCurrDate', 20, 2);
  }
}

function calDropMenu(id1,id2,count,steps) {
  document.getElementById(id1).style.top = (parseInt(document.getElementById(id1).style.top) + steps) + 'px';
  document.getElementById(id2).style.top = (parseInt(document.getElementById(id2).style.top) + steps) + 'px';
  count--;
  if(count > 0) {
    window.setTimeout('calDropMenu(\''+id1+'\',\''+id2+'\','+count+','+steps+')',20);
  } else {
    document.getElementById(id2).style.top = '-40px';
  }
}

function flashDiv(oDiv, count, col1, col2, cols, rows, showYear, showMonth, showDay) {
  if(count %2 == 0) {
    document.getElementById(oDiv).style.backgroundColor = col1;
  } else {
    document.getElementById(oDiv).style.backgroundColor = col2;
  }
  count--;
  if(count > 0) {
    window.setTimeout('flashDiv(\''+oDiv+'\', \''+count+'\', \''+col1+'\', \''+col2+'\', \'' + cols + '\', \'' + rows + '\', ' + showYear + ', ' + showMonth + ', ' + showDay + ')', 50);
  } else {
    zoomDiv(oDiv, cols, rows, showYear, showMonth, showDay);
  }
}

function zoomDiv(oDiv, cols, rows, showYear, showMonth, showDay) {
  var steps = 15;
  var top = (parseInt(document.getElementById(oDiv).style.top));
  var topPrec = parseInt(document.getElementById(oDiv).style.top);
  var bottom = (cellHeight-40) - (parseInt(document.getElementById(oDiv).style.height));
  var bottomPrec = parseInt(document.getElementById(oDiv).style.height);
  var left = parseInt(document.getElementById(oDiv).style.left);
  var leftPrec = parseInt(document.getElementById(oDiv).style.left);
  var right = (cellWidth) - (parseInt(document.getElementById(oDiv).style.width));
  var rightPrec = parseInt(document.getElementById(oDiv).style.width);
  top = (top / steps);
  bottom = (bottom / steps);
  left = (left / steps);       
  right = (right / steps);
  document.getElementById(oDiv).style.backgroundColor = '#E4E9ED';
  doZoomDiv(oDiv, top, topPrec, bottom, bottomPrec, left, leftPrec, right, rightPrec, steps, cols, rows, showYear, showMonth, showDay);
}

function doZoomDiv(oDiv, top, topPrec, bottom, bottomPrec, left, leftPrec, right, rightPrec, count, cols, rows, showYear, showMonth, showDay) {
  topPrec = (topPrec - top);
  if(topPrec < 0) topPrec = 0;
  document.getElementById(oDiv).style.top = parseInt(topPrec) + 'px';
  bottomPrec = (bottomPrec + bottom);
  document.getElementById(oDiv).style.height = parseInt(bottomPrec) + 'px';
  leftPrec = (leftPrec - left);
  if(leftPrec < 0) leftPrec = 0;
  document.getElementById(oDiv).style.left = parseInt(leftPrec) + 'px';
  rightPrec = (rightPrec + right);
  document.getElementById(oDiv).style.width = parseInt(rightPrec) + 'px';   
  count--;
  if(count > 0) {
    window.setTimeout('doZoomDiv(\'' + oDiv + '\', ' + top + ', ' + topPrec + ', ' + bottom + ', ' + bottomPrec + ', ' + left + ', ' + leftPrec + ', ' + right + ', ' + rightPrec + ', ' + count + ', ' + cols + ', ' + rows + ', ' + showYear + ', ' + showMonth + ', ' + showDay+ ')', 15);
  } else {
    document.getElementById(oDiv).style.top = '0px';
    document.getElementById(oDiv).style.left = '0px';
    document.getElementById(oDiv).style.height = (cellHeight-40) + 'px';
    document.getElementById(oDiv).style.width = cellWidth + 'px';
    document.getElementById('calBusy').style.visibility = 'visible';    
    calShowDateDetails(oDiv, cols, rows, showYear, showMonth, showDay);
  }     
}

function calShowDateDetails(oDiv, cols, rows, showYear, showMonth, showDay) {
  calOverDiv = oDiv;  
  calHTML = '<div style="position: absolute; top: 5px; left: 5px; line-height: 12px; padding: 3px;">';
  var oRequest = new newXMLHttpRequest();
  sURL= calPath+"/calMont/php/calPermission.php";
  sURL = addURLParam(sURL, "calLoginUser", calLoginUser);
  sURL = addURLParam(sURL, "calLoginPassword", calLoginPassword);
  oRequest.open("get", sURL, false);
  oRequest.send(null);
  var calUserType = oRequest.responseText.split("|"); 
  if(calUserType[0] == 'OK' || calUserType[0] == 'ADMIN') {
    calHTML += '<div id="calFormAdd" onclick="calFormAdd('+showYear+','+showMonth+','+showDay+',\''+calUserType[1]+'\');" style="width: 100px; height: 25px; line-height: 25px; border: 1px solid #a1a1a1; background-color: #E4E9ED; cursor: pointer; cursor: hand; text-align: center;" onmouseover="calSetBG(this,\''+ bgOn + '\')" onmouseout="calSetBG(this,\'' + bgOff + '\')">Neuer Termin</div><br /><br />';
  }
  
  var oRequest = new newXMLHttpRequest();
  var sURL = calPath+"/calMont/php/calShowDay.php";
  sURL = addURLParam(sURL, "year", showYear);
  sURL = addURLParam(sURL, "month", (showMonth+1));  
  sURL = addURLParam(sURL, "day", showDay);
  sURL = addURLParam(sURL, "calUserType", calUserType[0]);  
  sURL = addURLParam(sURL, "calUser", calUserType[1]);  
  oRequest.open("get", sURL, false);
  oRequest.send(null);
  calHTML += oRequest.responseText;  
  calHTML += '</div>';
  document.getElementById(oDiv).innerHTML = calHTML;
  calHTML = '<div onclick="calPrintDayView('+calCurrYear+','+calCurrMonth+', '+calCurrSelectedDay+')" style="position: absolute; top: 0px; left: 5px; width: 100px; height: 25px; line-height: 25px; border: 1px solid #a1a1a1; text-align: center; background-color: ' + bgOff + '; cursor: pointer; cursor: hand;" onmouseover="calSetBG(this,\'' + bgOn + '\')" onmouseout="calSetBG(this,\'' + bgOff + '\')">Druckansicht</div>';
  document.getElementById('calPrint').innerHTML = calHTML;
  document.getElementById('calBusy').style.visibility = 'hidden';
}

function closeCalShow(oDiv, cols, rows) {
  document.getElementById(oDiv).innerHTML = '';
  var steps = 15;
  var top = -1 * ( parseInt(20 + (rows * ((cellHeight - 60) / calRows))) );
  var left = -1 * ( parseInt(cols * (cellWidth / 7)) );
  var right = -1 * ( cellWidth - parseInt(cellWidth / 7) );
  var bottom = -1 * ( (cellHeight) - parseInt((cellHeight - 60) / calRows) );
  var topPrec = parseInt(document.getElementById(oDiv).style.top);
  var bottomPrec = parseInt(document.getElementById(oDiv).style.height);
  var leftPrec = parseInt(document.getElementById(oDiv).style.left);
  var rightPrec = parseInt(document.getElementById(oDiv).style.width);  
  top = top / steps;
  left = left / steps;
  right = right / steps;
  bottom = bottom / steps;
  doZoomOutDiv(oDiv, top, topPrec, bottom, bottomPrec, left, leftPrec, right, rightPrec, steps, cols, rows);
  calDropMenu('calCurrDate', 'calBack', 20, 2); 
}

function doZoomOutDiv(oDiv, top, topPrec, bottom, bottomPrec, left, leftPrec, right, rightPrec, count, cols, rows) {
  topPrec = (topPrec - top);
  if(topPrec < 0) topPrec = 0;
  document.getElementById(oDiv).style.top = parseInt(topPrec) + 'px';
  bottomPrec = (bottomPrec + bottom);
  document.getElementById(oDiv).style.height = parseInt(bottomPrec) + 'px';
  leftPrec = (leftPrec - left);
  if(leftPrec < 0) leftPrec = 0;
  document.getElementById(oDiv).style.left = parseInt(leftPrec) + 'px';
  rightPrec = (rightPrec + right);
  document.getElementById(oDiv).style.width = parseInt(rightPrec) + 'px';   
  count--;
  if(count > 0) {
    window.setTimeout('doZoomOutDiv(\'' + oDiv + '\', ' + top + ', ' + topPrec + ', ' + bottom + ', ' + bottomPrec + ', ' + left + ', ' + leftPrec + ', ' + right + ', ' + rightPrec + ', ' + count + ', ' + cols + ', ' + rows + ')', 15);
  } else {
    document.getElementById(oDiv).style.top = parseInt(60 + (rows * ((cellHeight - 60) / calRows))) + 'px';
    document.getElementById(oDiv).style.left = parseInt(cols * (cellWidth / 7)) + 'px';
    document.getElementById(oDiv).style.height = parseInt((cellHeight - 60) / calRows) + 'px';
    document.getElementById(oDiv).style.width = parseInt(cellWidth / 7) + 'px';
    calHTML = '<div onclick="calPrintView('+calCurrYear+','+calCurrMonth+')" style="position: absolute; top: 0px; left: 5px; width: 100px; height: 25px; line-height: 25px; border: 1px solid #a1a1a1; text-align: center; background-color: ' + bgOff + '; cursor: pointer; cursor: hand;" onmouseover="calSetBG(this,\'' + bgOn + '\')" onmouseout="calSetBG(this,\'' + bgOff + '\')">Druckansicht</div>';
    document.getElementById('calPrint').innerHTML = calHTML;
    document.getElementById(oDiv).style.visibility = 'hidden';
    lock = false;
  }     
}

function calUpdateForm() {
  var calCat = parseInt(document.getElementById('calChangeCat').options[document.getElementById('calChangeCat').selectedIndex].value);
  if(calCat > 0) {
    document.getElementById('calBusy').style.visibility = 'visible';
    var oRequest = new newXMLHttpRequest();
    var sURL = calPath+"/calMont/php/calGetLayout.php";
    sURL = addURLParam(sURL, "calCat", calCat);
    oRequest.open("get", sURL, false);
    oRequest.send(null);
    var response = oRequest.responseText;
    response = response.split("[~~SPLITHERE~~]");
    document.getElementById('calFormContent').style.width = cellWidth+'px';
    document.getElementById('calFormContent').style.height = (cellHeight-100)+'px';
    document.getElementById('calFormContent').innerHTML = response[0];
    document.calForm.calAddDay.selectedIndex = (parseInt(document.calForm.calAddDay.options[0].value) + (calCurrSelectedDay - 2));
    document.calForm.calAddMonth.selectedIndex = (parseInt(document.calForm.calAddMonth.options[0].value) + (calCurrMonth-1));
    document.calForm.calAddYear.selectedIndex = (calCurrYear - parseInt(document.calForm.calAddYear.options[0].value));
    document.calForm.calAddEndDay.selectedIndex = (parseInt(document.calForm.calAddEndDay.options[0].value) + (calCurrSelectedDay - 2));
    document.calForm.calAddEndMonth.selectedIndex = (parseInt(document.calForm.calAddEndMonth.options[0].value) + (calCurrMonth-1));
    document.calForm.calAddEndYear.selectedIndex = (calCurrYear - parseInt(document.calForm.calAddEndYear.options[0].value));
    calFields = response[1];
    var oRequest = new newXMLHttpRequest();
    sURL= calPath+"/calMont/php/calPermission.php";
    sURL = addURLParam(sURL, "calLoginUser", calLoginUser);
    sURL = addURLParam(sURL, "calLoginPassword", calLoginPassword);
    oRequest.open("get", sURL, false);
    oRequest.send(null); 
    var calUserType = oRequest.responseText.split("|"); 
    if(calUserType[0] == 'OK' || calUserType[0] == 'ADMIN') {
      document.getElementById('calFormDelete').style.visibility = 'visible';
    }
    document.getElementById('calFormSubmit').style.visibility = 'visible';
    document.getElementById('calBusy').style.visibility = 'hidden';    
  } else {
    document.getElementById('calFormContent').innerHTML = '';
    document.getElementById('calFormSubmit').style.visibility = 'hidden';
    document.getElementById('calFormDelete').style.visibility = 'hidden';
  }
}

function calFillForm(titel,beschreibung,datum,datum_ende,beginn,ende,adresse,adresse2,plz,ort,land,kontakt,tel,fax,email,url,rubrik) {
  document.getElementById('calBusy').style.visibility = 'visible'; 
  var oRequest = new newXMLHttpRequest();
  var sURL = calPath+"/calMont/php/calGetLayout.php";
  sURL = addURLParam(sURL, "calCat", rubrik);
  oRequest.open("get", sURL, false);
  oRequest.send(null);
  var response = oRequest.responseText;
  response = response.split("[~~SPLITHERE~~]");
  document.getElementById('calFormContent').style.width = cellWidth+'px';
  document.getElementById('calFormContent').style.height = (cellHeight-100)+'px';
  document.getElementById('calFormContent').innerHTML = response[0];
  var calDate = datum.split("-");
  var calDateEnd = datum_ende.split("-");
  var calBegin = beginn.split(":");
  var calEnd = ende.split(":");

  document.calForm.calAddDay.selectedIndex = (parseInt(document.calForm.calAddDay.options[0].value) + (parseInt(calDate[2],10) - 2));
  document.calForm.calAddMonth.selectedIndex = (parseInt(document.calForm.calAddMonth.options[0].value) + (parseInt(calDate[1],10) -2));
  document.calForm.calAddYear.selectedIndex = (parseInt(calDate[0]) - parseInt(document.calForm.calAddYear.options[0].value));
  document.calForm.calAddEndDay.selectedIndex = (parseInt(document.calForm.calAddEndDay.options[0].value) + (parseInt(calDateEnd[2],10) - 2));
  document.calForm.calAddEndMonth.selectedIndex = (parseInt(document.calForm.calAddEndMonth.options[0].value) + (parseInt(calDateEnd[1],10) -2));
  document.calForm.calAddEndYear.selectedIndex = (parseInt(calDateEnd[0]) - parseInt(document.calForm.calAddEndYear.options[0].value));
  document.calForm.calAddBeginHour.selectedIndex = Number(calBegin[0]); //(parseInt(document.calForm.calAddBeginHour.options[0].value) + parseInt(calBegin[0]));
  document.calForm.calAddBeginMinute.selectedIndex = parseInt(calBegin[1] / 5, 10); //(parseInt(document.calForm.calAddBeginMinute.options[0].value) + (parseInt(calBegin[1]) / 5));
  document.calForm.calAddEndHour.selectedIndex = Number(calEnd[0]); //(parseInt(document.calForm.calAddEndHour.options[0].value) + parseInt(calEnd[0]));
  document.calForm.calAddEndMinute.selectedIndex = parseInt(calEnd[1] / 5, 10); //(parseInt(document.calForm.calAddEndMinute.options[0].value) + (parseInt(calEnd[1])/5));
  document.calForm.calAddTitle.value = calDecodeHTML(titel);
  document.calForm.calAddDesc.value = calDecodeHTML(beschreibung);
  document.calForm.calAddAddress1.value = calDecodeHTML(adresse);
  document.calForm.calAddAddress2.value = calDecodeHTML(adresse2);
  document.calForm.calAddPostCode.value = plz;
  document.calForm.calAddCity.value = calDecodeHTML(ort);
  document.calForm.calAddCountry.value = calDecodeHTML(land);
  document.calForm.calAddContact.value = calDecodeHTML(kontakt);
  document.calForm.calAddPhone.value = tel;
  document.calForm.calAddFax.value = fax;
  document.calForm.calAddEmail.value = email;
  document.calForm.calAddURL.value = url;
  document.getElementById('calChangeCat').disabled = 'disabled';
  calFields = response[1];
  var oRequest = new newXMLHttpRequest();
  sURL= calPath+"/calMont/php/calPermission.php";
  sURL = addURLParam(sURL, "calLoginUser", calLoginUser);
  sURL = addURLParam(sURL, "calLoginPassword", calLoginPassword);
  oRequest.open("get", sURL, false);
  oRequest.send(null); 
  var calUserType = oRequest.responseText.split("|"); 
  if(calUserType[0] == 'OK' || calUserType[0] == 'ADMIN') {
    document.getElementById('calFormDelete').style.visibility = 'visible';
  }
  document.getElementById('calFormSubmit').style.visibility = 'visible';
  document.getElementById('calBusy').style.visibility = 'hidden';    
}

function calSave(calTask, calId, calUser) {
  var checkFields = calFields.split(';');
  var error = false;
  for(var i=0; i < checkFields.length; i++) {
    if(eval('document.calForm.'+ checkFields[i] + '.value') == '') {
      error = true;
      eval('document.calForm.'+ checkFields[i] + '.style.backgroundColor=\'#f3f4f6\';');
    } else {
      eval('document.calForm.'+ checkFields[i] + '.style.backgroundColor=\'#ffffff\';');
    }
  }

  document.calForm.calAddDay.style.backgroundColor = '#ffffff';
  document.calForm.calAddMonth.style.backgroundColor = '#ffffff';
  document.calForm.calAddYear.style.backgroundColor = '#ffffff';
  document.calForm.calAddEndDay.style.backgroundColor = '#ffffff';
  document.calForm.calAddEndMonth.style.backgroundColor = '#ffffff';
  document.calForm.calAddEndYear.style.backgroundColor = '#ffffff';
/*
  errorDate = true;
  if( document.calForm.calAddDay.value <= document.calForm.calAddEndDay.value) {  
    if( document.calForm.calAddMonth.value <= document.calForm.calAddEndMonth.value) {  
      if( document.calForm.calAddYear.value <= document. calForm.calAddEndYear.value) {
        errorDate = false;        
      }
    }
  }
  */
  var unixtimeBegin = new Date(document.calForm.calAddYear.value,document.calForm.calAddMonth.value - 1,document.calForm.calAddDay.value);
  var unixtimeEnd = new Date(document.calForm.calAddEndYear.value,document.calForm.calAddEndMonth.value - 1,document.calForm.calAddEndDay.value);

  errorDate = (unixtimeBegin > unixtimeEnd);
 
  error = error || errorDate;  
  if(errorDate) {
        document.calForm.calAddDay.style.backgroundColor = '#f3f4f6';
        document.calForm.calAddMonth.style.backgroundColor = '#f3f4f6';
        document.calForm.calAddYear.style.backgroundColor = '#f3f4f6';
        document.calForm.calAddEndDay.style.backgroundColor = '#f3f4f6';
        document.calForm.calAddEndMonth.style.backgroundColor = '#f3f4f6';
        document.calForm.calAddEndYear.style.backgroundColor = '#f3f4f6';  
  }
  
  if(document.calForm.calAddDay.value == document.calForm.calAddEndDay.value && document.calForm.calAddMonth.value == document.calForm.calAddEndMonth.value && document.calForm.calAddYear.value == document.calForm.calAddEndYear.value) {
    if( (document.calForm.calAddBeginHour.value == "00" && document.calForm.calAddBeginMinute.value == "00" && document.calForm.calAddEndHour.value == "00" && document.calForm.calAddEndMinute.value == "00" ) || (document.calForm.calAddBeginHour.value > document.calForm.calAddEndHour.value) || (document.calForm.calAddBeginHour.value == document.calForm.calAddEndHour.value && document.calForm.calAddBeginMinute.value > document.calForm.calAddEndMinute.value)) {
      error = true;
     document.calForm.calAddBeginHour.style.backgroundColor = '#f3f4f6';
      document.calForm.calAddBeginMinute.style.backgroundColor = '#f3f4f6';
      document.calForm.calAddEndHour.style.backgroundColor = '#f3f4f6';
      document.calForm.calAddEndMinute.style.backgroundColor = '#f3f4f6';
    } else {
      document.calForm.calAddBeginHour.style.backgroundColor = '#ffffff';
      document.calForm.calAddBeginMinute.style.backgroundColor = '#ffffff';
      document.calForm.calAddEndHour.style.backgroundColor = '#ffffff';
      document.calForm.calAddEndMinute.style.backgroundColor = '#ffffff';
    }
  }
  if(error) {
    alert('Bitte überprüfen Sie die markierten Felder!');
  } else {
    var calCat = parseInt(document.getElementById('calChangeCat').options[document.getElementById('calChangeCat').selectedIndex].value);
    document.getElementById('calBusy').style.visibility = 'visible';
    var oRequest = new newXMLHttpRequest();
    var sURL = calPath+"/calMont/php/calSave.php";
    sURL = addURLParam(sURL, "calTask", calTask);    
    sURL = addURLParam(sURL, "calCat", calCat);
    sURL = addURLParam(sURL, "calDiv", calContentDiv);    
    var tmp = calEncodeHTML(document.calForm.calAddTitle.value);
    sURL = addURLParam(sURL, "calAddTitle", tmp);
    tmp = calEncodeHTML(document.calForm.calAddDesc.value);
    sURL = addURLParam(sURL, "calAddDesc", tmp);
    sURL = addURLParam(sURL, "calAddDate", document.calForm.calAddYear.value+'-'+document.calForm.calAddMonth.value+'-'+document.calForm.calAddDay.value);
    sURL = addURLParam(sURL, "calAddEndDate", document.calForm.calAddEndYear.value+'-'+document.calForm.calAddEndMonth.value+'-'+document.calForm.calAddEndDay.value);    
    sURL = addURLParam(sURL, "calAddBegin", document.calForm.calAddBeginHour.value+':'+document.calForm.calAddBeginMinute.value+':00');
    sURL = addURLParam(sURL, "calAddEnd", document.calForm.calAddEndHour.value+':'+document.calForm.calAddEndMinute.value+':00');
    tmp = calEncodeHTML(document.calForm.calAddAddress1.value);
    sURL = addURLParam(sURL, "calAddAddress1", tmp);
    tmp = calEncodeHTML(document.calForm.calAddAddress2.value);
    sURL = addURLParam(sURL, "calAddAddress2", tmp);
    sURL = addURLParam(sURL, "calAddPostCode", document.calForm.calAddPostCode.value);
    tmp = calEncodeHTML(document.calForm.calAddCity.value);
    sURL = addURLParam(sURL, "calAddCity", tmp);
    tmp = calEncodeHTML(document.calForm.calAddCountry.value);
    sURL = addURLParam(sURL, "calAddCountry", tmp);
    tmp = calEncodeHTML(document.calForm.calAddContact.value);
    sURL = addURLParam(sURL, "calAddContact", tmp);
    sURL = addURLParam(sURL, "calAddPhone", document.calForm.calAddPhone.value);
    sURL = addURLParam(sURL, "calAddFax", document.calForm.calAddFax.value);
    sURL = addURLParam(sURL, "calAddEmail", document.calForm.calAddEmail.value);
    sURL = addURLParam(sURL, "calAddURL", document.calForm.calAddURL.value);
    sURL = addURLParam(sURL, "calTask", calTask);
    sURL = addURLParam(sURL, "calId", calId);
    sURL = addURLParam(sURL, "calUser", calUser);         
    oRequest.open("get", sURL, false);
    oRequest.send(null);
    if(oRequest.responseText != 'ok') {
      alert("Es gab einen Fehler bei der Datenübertragung:\n" + oRequest.responseText);
    } else {
      document.getElementById('calBusy').style.visibility = 'hidden';
      lock = false;
      updateCal(calContentDiv);
    }
    document.getElementById('calBusy').style.visibility = 'hidden';
  }
}

function calDelete(calId) {
  var confirmed = window.confirm("Wollen Sie diesen Termin wirklich löschen?");

  if (confirmed) {
    var oRequest = new newXMLHttpRequest();
    var sURL = calPath+"/calMont/php/calDelete.php";
    sURL = addURLParam(sURL, "calId", calId);     
    oRequest.open("get", sURL, false);
    oRequest.send(null);
    if(oRequest.responseText != 'OK') {
      alert("Fehler:\n"+oRequest.responseText);
    }
    document.getElementById('calBusy').style.visibility = 'hidden';
    lock = false;
    updateCal(calContentDiv);
  }  
}

function calCancel() {
  document.getElementById('calBusy').style.visibility = 'hidden';
  lock = false;
  updateCal(calContentDiv);
}

function calEncodeHTML(sVal) {
  sVal = sVal.replace(/ä/g,'&auml;');
  sVal = sVal.replace(/ü/g,'&uuml;');
  sVal = sVal.replace(/ö/g,'&ouml;');
  sVal = sVal.replace(/ß/g,'&szlig;');
  sVal = sVal.replace(/Ä/g,'&Auml;');
  sVal = sVal.replace(/Ü/g,'&Uuml;');
  sVal = sVal.replace(/Ö/g,'&Ouml;');
  sVal = sVal.replace(/\"/g,'&quot;');
  return sVal;
}

function calDecodeHTML(sVal) {
  sVal = sVal.replace(/&auml;/g,'ä');
  sVal = sVal.replace(/&uuml;/g,'ü');
  sVal = sVal.replace(/&ouml;/g,'ö');
  sVal = sVal.replace(/&szlig;/g,'ß');
  sVal = sVal.replace(/&Auml;/g,'Ä');
  sVal = sVal.replace(/&Uuml;/g,'Ü');
  sVal = sVal.replace(/&Ouml;/g,'Ö');
  sVal = sVal.replace(/&quot;/g,'\"');
  return sVal;
}

function calFormAdd(showYear, showMonth, showDay, calUser) {
  var oRequest = new newXMLHttpRequest();
  var sURL = calPath+"/calMont/php/calAdd.php";
  sURL = addURLParam(sURL, "calUser", calUser);    
  oRequest.open("get", sURL, false);
  oRequest.send(null);
  document.getElementById(calContentDiv).innerHTML = oRequest.responseText;  
}

function calEdit(calId, calUser) {
  var oRequest = new newXMLHttpRequest();
  var sURL = calPath+"/calMont/php/calAdd.php";
  sURL = addURLParam(sURL, "edit", 1);
  sURL = addURLParam(sURL, "calId", calId);
  sURL = addURLParam(sURL, "calUser", calUser);          
  oRequest.open("get", sURL, false);
  oRequest.send(null);
  document.getElementById(calContentDiv).innerHTML = oRequest.responseText;
  oRequest = new newXMLHttpRequest();
  sURL = calPath+"/calMont/php/calEdit.php";
  sURL = addURLParam(sURL, "calId", calId);  
  oRequest.open("get", sURL, false);
  oRequest.send(null);
  var calEntries = oRequest.responseText.split('[~SH~]');
  //document.getElementById('calChangeCat').selectedIndex = parseInt(calEntries[16]);
  for (var i = 0; i < document.getElementById('calChangeCat').length; ++i)
    if (document.getElementById('calChangeCat').options[i].value == parseInt(calEntries[16]))
      document.getElementById('calChangeCat').selectedIndex = i;
  calFillForm(calEntries[0], calEntries[1], calEntries[2], calEntries[3], calEntries[4], calEntries[5], calEntries[6], calEntries[7],calEntries[8], calEntries[9], calEntries[10], calEntries[11], calEntries[12], calEntries[13], calEntries[14], calEntries[15], calEntries[16]);    
}

function addEvent(elm, evType, fn, useCapture)
// addEvent and removeEvent
// cross-browser event handling for IE5+,  NS6 and Mozilla
// By Scott Andrew
{
  if (elm.addEventListener){
    elm.addEventListener(evType, fn, useCapture);
    return true;
  } else if (elm.attachEvent){
    var r = elm.attachEvent("on"+evType, fn);
    return r;
  } else {
    //alert("Handler could not be removed");
  }
}


