

var oJson = new DHL.FORMAT.JSON();
var objSendDataHttpRequest = new DHL.NET.HTTPREQUEST();
var blnSending = false;
var ptCallbackFunction = "";
var dtCurrentDate = new Date();
var arrMonth = new Array("January", "February", "March", "April",
	"May", "June", "July", "August", "September", "October", "November",
	"December"
);
var arrDateReminder = new Array();
var arrDatePage = new Array();
var strCurrentDivKey = "";

function dom_getElements(node, elt) {
	
	arrReturn = new Object();
	if(node) {
		
   	var list = node.getElementsByTagName(elt);
   	if(!list.length) {
   		list = node.getElementsByTagNameNS("*", elt);
   	}
		
   	var arrReturn = new Object();
   	if(list.length) {
	  		for(intIndex in list) {
	  			if(
	  				list[intIndex] &&
	  				list[intIndex].id
	  			) {
	  				arrReturn[list[intIndex].id] = list[intIndex];
	  			}
	  		}
	  	}
	  	
	 }
   	return  arrReturn;
}

function dhlSendData(strParamKey, varToSend, ptFunctionToCallback) {
	if(!blnSending) {
		blnSending = true;
		var objUrlToSend = new DHL.NET.URL('/schedule_admin.htm');

		if(typeof varToSend == 'object') {
			strAttributes = strParamKey + '=' + oJson.stringify(varToSend);
		}
		else {
			strAttributes = strParamKey + '=' + varToSend; 
		}

		objSendDataHttpRequest.open('POST', objUrlToSend, true);

		objSendDataHttpRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
		objSendDataHttpRequest.setRequestHeader('Content-length', strAttributes.length);
		objSendDataHttpRequest.setRequestHeader('Connection', 'close');

		objSendDataHttpRequest.onreadystatechange(dhlReceiveData);
		objSendDataHttpRequest.send(strAttributes);
		ptCallbackFunction = ptFunctionToCallback;
	}
}

function dhlReceiveData() {
	if(objSendDataHttpRequest.getReadyState() == 4) {
		//response has been received
		blnSending = false;
		if(
			objSendDataHttpRequest.getStatus() == 200 && 
			ptCallbackFunction
		) {
			ptCallbackFunction(objSendDataHttpRequest.getResponseText());
		}
	}
}

function generateDateReminderArray() {
	arrDateReminder = new Array();
	for(intIndex in arrReminder) {
		var objReminder = arrReminder[intIndex];
		if(objReminder) {
			var objToRemind = objReminder.getToRemind();
			var objReminderDate = objToRemind.getDate();
			
			if(!arrDateReminder[objReminderDate.getYear()]) {
				arrDateReminder[objReminderDate.getYear()] = new Array();
			}
			
			if(!arrDateReminder[objReminderDate.getYear()][objReminderDate.getMonth()]) {
				arrDateReminder[objReminderDate.getYear()][objReminderDate.getMonth()] = new Array();
			}
			
			if(!arrDateReminder[objReminderDate.getYear()][objReminderDate.getMonth()][objReminderDate.getDate()]) {
				arrDateReminder[objReminderDate.getYear()][objReminderDate.getMonth()][objReminderDate.getDate()] = new Array();
			}
			arrDateReminder[objReminderDate.getYear()][objReminderDate.getMonth()][objReminderDate.getDate()].push(objReminder);
		}
		
	}
}

function addEvent(obj, strEvent, ptFunction) {
	if(obj.addEventListener) {
		obj.addEventListener(strEvent, ptFunction, false);
	}
	else if(obj.attachEvent) {
		obj.attachEvent("on" + strEvent, ptFunction);
	}
	else {
		eval("obj.on" + strEvent + " = ptFunction;");
	}
}

function dhlDisplayReminder(objContainer) {
	var objTemplate = document.getElementById('tmplReminder');
	var arrDateInfo = dom_getElements(objContainer, '*');
	
	var intNbReminder = 1;
	var intNbPerPage = 2;
	var arrReminder = objContainer.arrReminder;
	
	//Clear Container
	if(
		arrDateInfo["container"] &&
		arrDateInfo["container"].firstChild
	) {
		while(arrDateInfo["container"].firstChild) {
			arrDateInfo["container"].removeChild(arrDateInfo["container"].firstChild);
		}
	}
	
	if(arrDateInfo["container"] && arrReminder) {
		for(strKey in arrReminder) {
				var objReminder = arrReminder[strKey];
				var objToRemind = objReminder.getToRemind();
				var objReminderDate = objToRemind.getDate();
				var objNewDiv = objTemplate.cloneNode(true);
				
				objContainer.appendChild(objNewDiv);
				objNewDiv.onmouseover = function () {
						if(strCurrentDivKey != this.id) {
							strCurrentDivKey = this.id;
							displayShowDetail(this);
						}
				};
				objNewDiv.onmouseout = function(e) {
					hideShowDetail(e, this);
				};
				
				switch(objToRemind.className) {
					case 'DHL.REMINDER.USER_REMINDER_SCHEDULETHEMED':
						if(
							objContainer &&
							dtCurrentDate.getFullYear() == objReminderDate.getFullYear() &&
							dtCurrentDate.getMonth() == objReminderDate.getMonth()
						) {
							arrDateInfo["container"].appendChild(objNewDiv);
							
							var arrInfo = dom_getElements(objNewDiv, '*');
							var objModel = objToRemind.getModel();
							
							if(objModel) {
								arrInfo["modelNick"].style.display = "block";
								arrInfo["modelNick"].innerHTML = objModel.getVariable('nickName');
								arrInfo["modelNick"].nickName = objModel.getVariable('nickName');
								arrInfo["modelNick"].onclick = function() {
									document.location = "/" + this.nickName;
								}
							}
							
							arrInfo["title"].innerHTML = DHL.HTML.CONVERSION.encode(shortenString(objToRemind.getVariable('title'), 15, '...'));
							arrInfo["title"].objToRemind = objToRemind;
							arrInfo["time"].innerHTML = (
								(objReminderDate.getHours() < 10 ? "0" + objReminderDate.getHours(): objReminderDate.getHours()) + ":" + 
								(objReminderDate.getMinutes() < 10 ? "0" + objReminderDate.getMinutes(): objReminderDate.getMinutes())
							);
							arrInfo["notify"].src = (objReminder.getVariable('isActive') == 1 ? "/images/icon_alarm_on.gif": "/images/icon_alarm_off.gif");
						}
					break;
					case 'DHL.REMINDER.USER_REMINDER_SCHEDULE':
						if(
							objContainer &&
							dtCurrentDate.getFullYear() == objReminderDate.getFullYear() &&
							dtCurrentDate.getMonth() == objReminderDate.getMonth()
						) {
							arrDateInfo["container"].appendChild(objNewDiv);
							
							var arrInfo = dom_getElements(objNewDiv, '*');
							var objModel = objToRemind.getModel();
							
							//Cancel mouse over
							objNewDiv.onmouseover = null;
							objNewDiv.onmouseout = null;
							
							if(objModel) {
								arrInfo["modelNick"].style.display = "block";
								arrInfo["modelNick"].innerHTML = objModel.getVariable('nickName');
								arrInfo["modelNick"].nickName = objModel.getVariable('nickName');
								arrInfo["modelNick"].onclick = function() {
									document.location = "/" + this.nickName;
								}
							}
							arrInfo["title"].style.display = "none";
							objFromDate = objToRemind.getFromDate();
							objToDate= objToRemind.getToDate();
							
							arrInfo["time"].innerHTML = (
								(objFromDate.getHours() < 10 ? "0" + objFromDate.getHours(): objFromDate.getHours()) + ":" + 
								(objFromDate.getMinutes() < 10 ? "0" + objFromDate.getMinutes(): objFromDate.getMinutes()) + " - " + 
								(objToDate.getHours() < 10 ? "0" + objToDate.getHours(): objToDate.getHours()) + ":" + 
								(objToDate.getMinutes() < 10 ? "0" + objToDate.getMinutes(): objToDate.getMinutes())
							);
							arrInfo["notify"].src = (objReminder.getVariable('isActive') == 1 ? "/images/icon_alarm_on.gif": "/images/icon_alarm_off.gif");
						}
					break;
					case 'DHL.REMINDER.USER_REMINDER_USERSITENOTE':
						//Get the container from the day of the month
						if(
							objContainer &&
							dtCurrentDate.getFullYear() == objReminderDate.getFullYear() &&
							dtCurrentDate.getMonth() == objReminderDate.getMonth()
						) {
							//Add the div to the form
							arrDateInfo["container"].appendChild(objNewDiv);
							var arrInfo = dom_getElements(objNewDiv, '*');
							
							arrInfo["notify"].src = (objReminder.getVariable('isActive') == 1 ? "/images/icon_alarm_on.gif": "/images/icon_alarm_off.gif");
	
							if(objToRemind.getVariable('title')) {
								arrInfo["title"].objContainer = objContainer;
								arrInfo["title"].objReminder = objReminder;
								arrInfo["title"].innerHTML = DHL.HTML.CONVERSION.encode(shortenString(objToRemind.getVariable('title'), 16, '...'));
								arrInfo["title"].onclick = function () {
									//hideShowDetail(e);
									displayNoteFromReminder(this.objReminder, this.objContainer);
								}
								arrInfo["title"].style.cursor="pointer";
							}
							if(objToRemind.getVariable('note')) {
								arrInfo["description"].objContainer = objContainer;
								arrInfo["description"].objReminder = objReminder;
								arrInfo["description"].innerHTML = DHL.HTML.CONVERSION.encode(shortenString(objToRemind.getVariable('note'), 19, '...'));
								arrInfo["description"].style.display = "block";
								arrInfo["description"].onclick = function () {
									//hideShowDetail();
									displayNoteFromReminder(this.objReminder, this.objContainer);
								}
								arrInfo["description"].style.cursor="pointer";
							}
							
							arrInfo["time"].innerHTML = (
								(objReminderDate.getHours() < 10 ? "0" + objReminderDate.getHours(): objReminderDate.getHours()) + ":" + 
								(objReminderDate.getMinutes() < 10 ? "0" + objReminderDate.getMinutes(): objReminderDate.getMinutes())
							);
						}
					break;
					default:
						alert("Display ToRemind not supported : " + objToRemind.className);
				}
				
				if(objNewDiv) {
					objNewDiv.id = objReminder.getObjectKey();
					objNewDiv.objReminder = objReminder;
					
					arrInfo["removeLink"].objDiv = objNewDiv;
					if(
						intNbReminder <= 2 * arrDatePage[objContainer.id] &&
						intNbReminder > 2 * arrDatePage[objContainer.id]-2
					) {
						objNewDiv.style.display="block";
					}
					else {
						objNewDiv.style.display="none";
					}
				}
				intNbReminder++;
			
		}
		
		if(intNbReminder-1 > 2) {
			objContainer.intNbReminder = intNbReminder-1;
			arrDateInfo["pageCursor"].innerHTML = arrDatePage[objContainer.id] + "/" + Math.ceil(objContainer.intNbReminder / 2);
			arrDateInfo["pageControl"].objDate = objContainer;
			arrDateInfo["pageControl"].style.display = "block";
		}
		else {
			arrDateInfo["pageControl"].style.display = "none";
		}
		
	}
}

function displayNoteFromReminder(objReminder, objElement) {
	var objForm = document.getElementById("frmAddNote");
	var arrForm = dom_getElements(objForm, '*');
	var objToRemind = objReminder.getToRemind();
	var objReminderDate = objToRemind.getDate();
	
	
	arrForm["title"].value = objToRemind.getVariable('title');
	arrForm["note"].value =	objToRemind.getVariable('note');
	arrForm["noteTime"].selectedIndex = findOptionIndex(arrForm["noteTime"], (objReminderDate.getHours()*60+objReminderDate.getMinutes()));
	
	arrElementInfo = dom_getElements(objElement, '*');
	
	dhlDisplayAddNote(arrElementInfo["divDisplayAddNote"], objReminderDate, objReminder);
}

function nextDatePage(objDate) {
	 
	if(arrDatePage[objDate.id]+1 <= Math.ceil(objDate.intNbReminder / 2)) {
		arrDatePage[objDate.id] += 1
		dhlGenerateCalendar();
	}
}

function previousDatePage(objDate) {
	if(arrDatePage[objDate.id]-1 > 0) {
		arrDatePage[objDate.id]-=1;
		dhlGenerateCalendar();
	}
}

function dhlAddNewDate(objContainer, dtToAdd) {
	if(dtToAdd.getMonth() == dtCurrentDate.getMonth()) {
		var objTd = document.getElementById("tmplDate");
		objNewTd = objTd.cloneNode(true);
		objContainer.appendChild(objNewTd);

		var dtToday = new Date();
		dtToday.setHours(0);
		dtToday.setMinutes(0);
		dtToday.setSeconds(0);
		var arrInfo = dom_getElements(objNewTd, '*');

		objNewTd.id = "date" + dtToAdd.getDate();
		objNewTd.date = dtToAdd;
		objNewTd.style.width="135px";
		if(!arrDatePage[objNewTd.id]) {
			arrDatePage[objNewTd.id] = 1;
		}

		if(arrInfo["title"]) {
			arrInfo["title"].innerHTML = dtToAdd.getDate();
		}

		if(
			Date.parse(dtToday) > Date.parse(dtToAdd)
		) {
			arrInfo["divDisplayAddNote"].style.display = "none";
		}
	}
	else {
		var objNewTd = document.createElement('td');
		objContainer.appendChild(objNewTd);
	}
	return objNewTd;
}

function dhlGenerateCalendar() {
	//remove all reminder
	var objContainer = document.getElementById("calendarContainer");
	if(objContainer.firstChild) {
		while(objContainer.firstChild) {
			objContainer.removeChild(objContainer.firstChild);
		}
	}

	document.getElementById("monthTitle").innerHTML = arrMonth[dtCurrentDate.getMonth()] + " " + dtCurrentDate.getFullYear();

	//Get the number of day in the current month
	intNbDayInMonth = 32 - new Date(dtCurrentDate.getFullYear(), dtCurrentDate.getMonth(), 32).getDate();
	
	var dtFirstDate = new Date(dtCurrentDate.getFullYear(), dtCurrentDate.getMonth(), 1);
	var dtFirstWeekDay = new Date(dtFirstDate.getFullYear(), dtFirstDate.getMonth(), dtFirstDate.getDate()-dtFirstDate.getDay());
	

	//Clear The Calendar
	intDate = 1;
	while(objToRemove = document.getElementById("date"+intDate)) {
		objToRemove.parentNode.removeChild(objToRemove);
		intDate++;
	}

	//Generate the new Calendar
	var intNbPerRow = 7;

	var objTr = document.createElement('tr');
	objContainer.appendChild(objTr);

	intNbDayInMonth += dtFirstDate.getDay();
	for(intI = 0; intI < intNbDayInMonth; intI++) {
		var dtToDraw = new Date(dtFirstWeekDay.getFullYear(), dtFirstWeekDay.getMonth(), dtFirstWeekDay.getDate() + intI);

		if(intI % intNbPerRow == 0 && intI > 1) {
			objTr = document.createElement('tr');
			objContainer.appendChild(objTr);
		}

		objDate = dhlAddNewDate(objTr, dtToDraw);
		
		if(
			typeof arrDateReminder[dtToDraw.getYear()] != 'undefined' &&
			typeof arrDateReminder[dtToDraw.getYear()][dtToDraw.getMonth()] != 'undefined' &&
			typeof arrDateReminder[dtToDraw.getYear()][dtToDraw.getMonth()][dtToDraw.getDate()] != 'undefined' &&
			dtToDraw.getMonth() == dtCurrentDate.getMonth()
		) {
			objDate.arrReminder = arrDateReminder[dtToDraw.getYear()][dtToDraw.getMonth()][dtToDraw.getDate()];
			dhlDisplayReminder(objDate);
		}
	}
}

function getReminderFromKey(strObjectKey) {
	objReminder = null;
	if(arrReminder) {	
		for(intIndex in arrReminder) {
			if(arrReminder[intIndex].getObjectKey() == strObjectKey) {
				objReminder = arrReminder[intIndex];
				break;
			}
		}
	}
	return objReminder;
}

function replaceReminder(objReminder) {
	if(arrReminder) {	
		for(intIndex in arrReminder) {
			if(arrReminder[intIndex].getObjectKey() == objReminder.getObjectKey()) {
				arrReminder[intIndex] = objReminder;
				break;
			}
		}
	}
}

function findOptionIndex(objSelect, strValue) {
	intSelectedIndex = 0;
	if(objSelect.options) {
		for(intI =0; intI < objSelect.options.length; intI++) {
			if(objSelect.options[intI].value == strValue) {
				intSelectedIndex = intI;
				break;
			}
		}
	}
	return intSelectedIndex;
}

/**
 * This function will trucate the string to a specified length and add a endString to it if specified
 *
 * @param string	strToShorten
 * @param int	intLen
 * @param string strEndChar
 *
 */
function shortenString(strToShorten, intLen, strEndChar) {
	strReturn = strToShorten;
	if(strReturn.length > intLen) {
		strReturn = strToShorten.substr(0, ((strEndChar? strEndChar.length*-1: 0)+intLen)) + strEndChar;
	}
	return strReturn;
}

/**
 * This function will force the string to have at least one space in the string
 *
 * @param string strToForce
 * @param int	intAtChar
 *
 */
function forceChar(strToForce, intAtChar, strChar) {
	strReturn = (strToForce != null ? strToForce: "");
	intStartIndex = 0;
	if(strToForce != null) {
		while(
			strToForce != null &&
			strToForce.substr(intStartIndex).length > intAtChar &&
			(
				strToForce.indexOf(strChar, intStartIndex) > intAtChar ||
				strToForce.indexOf(strChar, intStartIndex) == -1 
			)
		) {
			//alert(strToForce.substr(intStartIndex).length);
			strReturn = strReturn.substr(0, intStartIndex+intAtChar) + strChar + strReturn.substr(intStartIndex+intAtChar);
			intStartIndex += intAtChar;
		}
	}
	
	return strReturn;
}

function changeMonth(intMonth) {
	hideNote();
	dtCurrentDate.setMonth(intMonth);
	dhlGenerateCalendar();
}

////////////////////////////////////
// Activate / De-activate Reminder
////////////////////////////////////
function dhlOnReminderChange(strResponse) {
	eval("var objReminder = " + strResponse + ";");
	if(typeof objReminder == 'object') {
		objDivReminder = document.getElementById(objReminder.getObjectKey());
		var arrInfo = dom_getElements(objDivReminder, '*');
		arrInfo["notify"].src = (objReminder.getVariable('isActive') == 1 ? "/images/icon_alarm_on.gif": "/images/icon_alarm_off.gif");
	}
}

function dhlChangeActive(objDiv) {
	
	objReminder = getReminderFromKey(objDiv.id);
	if(objReminder) {
		objReminder.setVariable('isActive', (objReminder.getVariable('isActive') == 1 ? 0: 1));
		dhlSendData('arrReminder', objReminder, dhlOnReminderChange);
	}
}

////////////////////////////////////
// Add a Note
////////////////////////////////////
function hideNote() {
	var objDiv = document.getElementById("divAddNote");
	var objForm = document.getElementById("frmAddNote");
	
	objDiv.style.display = "none";
	objForm.reset();
	
}

function dhlDisplayAddNote(element, dtDate, objReminder) {
	var intPosX = DOM_getX(element);
	var intPosY = DOM_getY(element);
	var objDiv = document.getElementById("divAddNote");
	var blnDisplayLeft = true;
	var blnAlignTop = true;
	var arrWindowSize = getViewportSize();
	var arrScrollSize = getScrollXY();
	
	var intX = intPosX-60;
	var intY = intPosY-80;
	
	
	if(intPosY+200 > (arrWindowSize['height'] + arrScrollSize['offY'])) {
		intY = intPosY-290;
		blnAlignTop = false;
	}
	

	if(intPosX+160 > (arrWindowSize['width'] + arrScrollSize['offX'])) {
		intX = intPosX-290;
		blnDisplayLeft = false;
	}

	objDiv.style.top = intY + "px";
	objDiv.style.left = intX + "px";
	objDiv.style.display = "block";
	var objForm = document.getElementById("frmAddNote");
	var arrForm = dom_getElements(objForm, '*');
	var objDivDate = document.getElementById("date" + dtCurrentDate.getDate());
	var arrDate = dom_getElements(objDivDate, '*');
	
	if(objReminder) {
		arrForm["userReminderId"].value = objReminder.getId();
	}
	else {
		objForm.reset();
	}

	if(blnDisplayLeft) {
		document.getElementById('leftArrow').style.display = "block";
		document.getElementById("rightArrow").style.display = "none";
		objArrow = document.getElementById('leftArrow');
	}
	else {
		document.getElementById("rightArrow").style.display = "block";
		document.getElementById('leftArrow').style.display = "none";
		objArrow = document.getElementById("rightArrow");
	}
	
	objArrow.parentNode.vAlign = "top";
	if(!blnAlignTop) {
		objArrow.parentNode.vAlign = "bottom";
	}

	if(dtDate) {
		arrForm["currentDate"].value = dtDate.getFullYear() + '-' + (dtDate.getMonth()+1) + '-' + dtDate.getDate();
	}
	else {
		arrForm["currentDate"].value = dtCurrentDate.getFullYear() + '-' + (dtCurrentDate.getMonth()+1) + '-' + element.parentNode.parentNode.parentNode.parentNode.parentNode.date.getDate();
	}
	checkMaxLength(arrForm["note"]);
}

function dhlAddNote() {
	var objForm = document.getElementById("frmAddNote");
	var arrForm = dom_getElements(objForm, '*');
	var objUserNote = new DHL.REMINDER.USER_REMINDER_USERSITENOTE();
	var objDiv = document.getElementById("divAddNote");
	String.prototype.trim = function() { return this.replace(/^\s+|\s+$/, ''); };
	
	if(arrForm["title"].value.trim() != "") {
		objUserNote.setVariable('timeDate', 
			arrForm["currentDate"].value + ' ' +
			Math.floor((arrForm["noteTime"].value / 60)) + ':' +
			arrForm["noteTime"].value % 60
		);
		objUserNote.setVariable('note', arrForm["note"].value);
		objUserNote.setVariable('title', arrForm["title"].value);
		if(arrForm["userReminderId"].value) {
			objUserNote.setVariable('userReminderId', arrForm["userReminderId"].value);
		}
		dhlSendData('arrUserNote', objUserNote, dhlOnUserSiteNoteChange);
		objDiv.style.display="none";
	}
	else {
		alert("Sorry, your note need a title.");
	}
}

function dhlOnUserSiteNoteChange(strCallback) {
	eval("var objReminder = " + strCallback + ";");
	if(typeof objReminder == 'object') {
		objCurrentReminder = getReminderFromKey(objReminder.getObjectKey());
		if(objCurrentReminder) {
			replaceReminder(objReminder);
		}
		else {
			arrReminder.push(objReminder);
		}
		var objToRemind = objReminder.getToRemind();
		objReminderDate = objToRemind.getDate();
		generateDateReminderArray();

		var objDate = document.getElementById("date" + objReminderDate.getDate());
		
		if(objDate.intNbReminder) {
			objDate.intNbReminder++;
		}
		else {
			objDate.intNbReminder = 1;
		}
		
		arrDatePage[objDate.id] = Math.ceil(objDate.intNbReminder / 2);
		objDate.arrReminder = arrDateReminder[objDate.date.getYear()][objDate.date.getMonth()][objDate.date.getDate()];
		dhlDisplayReminder(objDate);
	}
}

function dhlActivateAll() {
	dhlSendData('allActiveSatus', 1);
	if(arrReminder) {
		for(intIndex in arrReminder) {
			var objDivReminder = document.getElementById(arrReminder[intIndex].getObjectKey());
			arrReminder[intIndex].setVariable('isActive', 1);
			if(objDivReminder) {
				arrInfo = dom_getElements(objDivReminder, '*');
				arrInfo["notify"].innerHTML = 'Active';
				arrInfo["notify"].src = "/images/icon_alarm_on.gif";
			}
		}
	}
	return false;
}

function dhlDeactivateAll() {
	if(confirm("Are you sure you want to turn off all your reminder ?")) {
		dhlSendData('allActiveSatus', 0);
		if(arrReminder) {
			for(intIndex in arrReminder) {
				var objDivReminder = document.getElementById(arrReminder[intIndex].getObjectKey());
				arrReminder[intIndex].setVariable('isActive', 0);
				if(objDivReminder) {
					arrInfo = dom_getElements(objDivReminder, '*');
					arrInfo["notify"].src = "/images/icon_alarm_off.gif";
				}
			}
		}
	}
	return false;
}

function dhlDeleteAllEvent() {
	if(confirm("Are you sure you want to delete all your event(s) ?")) {
		dhlSendData('deleteAllReminder', 1);
		arrReminder = new Array();
		arrDateReminder = new Array();
		
		dhlGenerateCalendar();
		
	}
	return false;
}

function dhlDeleteEvent(objEvent) {
	blnReturn = false;
	
	if(objEvent && confirm("Are you sure you want to delete this schedule")) {
		dhlSendData('deleteReminder', objEvent.objReminder.getId());

		//Remove the Answer
		removeReminder(objEvent.objReminder);
		generateDateReminderArray();

		var objToRemind = objEvent.objReminder.getToRemind();
		var objReminderDate = objToRemind.getDate();
		var objDate = document.getElementById("date" + objReminderDate.getDate());
		if(
			objDate.intNbReminder && 
			objDate.intNbReminder-1 > 0
		) {
			objDate.intNbReminder--;
		}
		else {
			objDate.intNbReminder = 0;
		}

		arrDatePage[objDate.id] = Math.ceil(objDate.intNbReminder / 2);
		if(
			arrDateReminder[objDate.date.getYear()] &&
			arrDateReminder[objDate.date.getYear()][objDate.date.getMonth()] &&
			arrDateReminder[objDate.date.getYear()][objDate.date.getMonth()][objDate.date.getDate()]
		) {
			objDate.arrReminder = arrDateReminder[objDate.date.getYear()][objDate.date.getMonth()][objDate.date.getDate()];
		}
		else {
			objDate.arrReminder = null;
		}
		dhlDisplayReminder(objDate);

		blnReturn = true;
	}
	
	return blnReturn;
}

function removeReminder(objReminder) {
	var arrTemp = arrReminder;
	arrReminder = new Array();
	for(intIndex in arrTemp) {
		if(arrTemp[intIndex].getObjectKey() != objReminder.getObjectKey()) {
			arrReminder.push(arrTemp[intIndex]);
		}
	}
}

function displayShowDetail(objElement) {
	var objDiv = document.getElementById("tmplReminderMouseOver");
	var arrInfo = dom_getElements(objDiv, '*');
	if(objElement.objToRemind) {
		var objToRemind = objElement.objToRemind;
	}
	else if(objElement.objReminder) {
		var objToRemind = objElement.objReminder.getToRemind();
	}
	var objReminderDate = objToRemind.getDate();
	
	arrInfo["modelNick"].innerHTML = "";
	arrInfo["title"].innerHTML = "";
	arrInfo["description"].innerHTML = "";
	arrInfo["time"].innerHTML = "";
	switch(objToRemind.className) {
		case 'DHL.REMINDER.USER_REMINDER_SCHEDULETHEMED':
			if(objToRemind.getModel) {
				objModel = objToRemind.getModel();
				arrInfo["modelNick"].parentNode.style.display = "block";
				arrInfo["modelNick"].innerHTML = objModel.getVariable('nickName');
				arrInfo["modelNick"].onclick = function() {
					document.location = "/" + objModel.getVariable('nickName');
				};
				
			}
			
			arrInfo["title"].innerHTML = DHL.HTML.CONVERSION.encode(objToRemind.getVariable('title'));
			arrInfo["description"].innerHTML = DHL.HTML.CONVERSION.encode(objToRemind.getVariable('description'));
			arrInfo["time"].innerHTML = (
				(objReminderDate.getHours() < 10 ? "0" + objReminderDate.getHours(): objReminderDate.getHours()) + ":" + 
				(objReminderDate.getMinutes() < 10 ? "0" + objReminderDate.getMinutes(): objReminderDate.getMinutes())
			);
		break;
		case 'DHL.REMINDER.USER_REMINDER_USERSITENOTE':
			arrInfo["title"].innerHTML = DHL.HTML.CONVERSION.encode(objToRemind.getVariable('title'));
			arrInfo["description"].innerHTML = forceChar(DHL.HTML.CONVERSION.encode(objToRemind.getVariable('note')), 60, "<br>");
			arrInfo["time"].innerHTML = (
				(objReminderDate.getHours() < 10 ? "0" + objReminderDate.getHours(): objReminderDate.getHours()) + ":" + 
				(objReminderDate.getMinutes() < 10 ? "0" + objReminderDate.getMinutes(): objReminderDate.getMinutes())
			);
		break;
	}

	var intX = DOM_getX(objElement) - 80;
	var intY = DOM_getY(objElement) + 45;
	var arrSize = getViewportSize();
	var intToRemove = (!document.all ? 360: 300);
	
	if(DOM_getX(objElement)+intToRemove > arrSize['width']) {
		intX = arrSize['width'] - intToRemove;
	}
	if(intX < 0) {
		intX = 0;
	}
	
	objDiv.style.left = intX + 'px';
	objDiv.style.top = intY + 'px';
	objDiv.style.display = "block";
}

function hideShowDetail(e, div) {
	blnReturn = false;
	blnHideDiv = true;
	
	if (!e) var e = window.event;
	if(e) {
		var tg = (window.event) ? e.srcElement : e.target;
		if(tg.nodeName == "DIV") {
			var reltg = (e.relatedTarget) ? e.relatedTarget : e.toElement;
			if(reltg) {
				while (reltg.id != div.id && reltg.nodeName != 'BODY') {
					reltg= reltg.parentNode
				}
	
				if (reltg.id == div.id) {
					blnHideDiv = false;
				}
			}
		}
	}
	
	if(blnHideDiv) {
		var objDiv = document.getElementById("tmplReminderMouseOver");
		objDiv.style.display = "none";
		blnReturn = true;
		strCurrentDivKey = "";
	}
	return blnReturn;
}



///////////////////////////////
// FROM : http://www.quirksmode.org/dom/maxlength.html
//////////////////////////////
function setMaxLength() {
	var x = document.getElementsByTagName('textarea');
	var counter = document.createElement('div');
	counter.className = 'counter';
	for (var i=0;i<x.length;i++) {
		if (x[i].getAttribute('maxlength')) {
			var counterClone = counter.cloneNode(true);
			counterClone.relatedElement = x[i];
			counterClone.innerHTML = '<span>0</span>/'+x[i].getAttribute('maxlength') + '';
			x[i].parentNode.insertBefore(counterClone,x[i].nextSibling);
			x[i].relatedElement = counterClone.getElementsByTagName('span')[0];
			
			x[i].onkeyup = x[i].onchange = function() {
				checkMaxLength(this);
			};
			x[i].onkeyup();
		}
	}
}

function checkMaxLength(obj) {
	
	var maxLength = obj.getAttribute('maxlength');
	var currentLength = obj.value.length;

	if (currentLength > maxLength) {
		obj.relatedElement.className = 'toomuch';
		alert('this field is limited to ' + maxLength + ' character');
		obj.value = obj.value.substr(0, 100);
		currentLength = 100;
	}
	else
		obj.relatedElement.className = 'camsters_legendTxt';

	obj.relatedElement.firstChild.nodeValue = currentLength;
	
	// not innerHTML
}
//////////////////////////////////////

