//User variables
var settingHeaderDateFormat = 'd.m';
var quickSave = true;
var get_items_from_db = 'Getitems.aspx';
var save_item_to_db = 'UpdateEvent.aspx';
var delete_item_from_db = 'DeleteEvent.aspx';
var openWindowUrl = 'EditEvent.aspx';
var txt_deleteEvent = 'Click OK to delete this event';
var itemnewtobedeleted;
var appointMarginSize = 5;
var initilizeTopHours = 8;
var initilizeMinutes = 15;
var snapMinutes = 15;
var CalenderStartHour=8;
var flagcol;
var inlineTextAreaEnable = false;
var demo_container = false;
var demo_cal_appointments = false;
var SetnewAppointmentCounter = -1;
var SetToMoveAppointmentCounter = -1;
var SetToResizeAppointmentCounter = -1;
var SetToResizeAppointmentInitHeight = false;
var el_x;
var el_y;
var mouse_x;
var mouse_y;
var elWidth;
var displaycurrentAppointmentDiv = false;
var displaycurrentAppointmentContentDiv = false;
var SetcurrentTimeDiv = false;
var SetappointmentsOffsetTop = false;
var SetappointmentsOffsetLeft = false;
var currentZIndex = 20000;
var dayPositionArr = new Array();
var dayDateArr = new Array();
var Calender_ajaxObjects = new Array();
var SetdateStartOfWeek = false;
var SetnewAppointmentWidth = false;
var SetstartIdOfNewItems = 500000000;
var SetcontentEditInProgress = false;
var SettoggleViewCount = -1;
var SetobjectToTogg = false;
var SetcurrentEditableText = false;
var SetappointmentProp = new Array();
var opera = navigator.userAgent.toLowerCase().indexOf('opera')>=0?true:false;
var SetactiveEventObj;
function trimString(sInString) {
sInString = sInString.replace( /^\s+/g, "" );
return sInString.replace( /\s+$/g, "" );
}
function editEventWindow(e,inputDiv)
{
if(!inputDiv)inputDiv = this;
if(!openWindowUrl)return;
if(inputDiv.id.indexOf('new_')>=0)
{
return;
}
var editEvent = window.open(openWindowUrl + '?id=' + inputDiv.id,'editEvent','width=500,height=550,status=no');
editEvent.focus();
}
function setElementActive(e,inputDiv)
{
if(!inputDiv)inputDiv = this;
var subDivs = inputDiv.getElementsByTagName('DIV');
for(var no=0;no<subDivs.length;no++){
if(subDivs[no].className=='demo_appoint_header'){
subDivs[no].className = 'demo_appoint_headerActive';
}
}
itemnewtobedeleted = inputDiv.id;
if(SetactiveEventObj && SetactiveEventObj!=inputDiv){
setElementInactive(SetactiveEventObj);
}
SetactiveEventObj = inputDiv;
}
function setElement_txt(id,text)
{
var ta = document.getElementById(id).getElementsByTagName('TEXTAREA')[0]
ta.value = text;
transferTextAreaContent(false,ta);
}
function setElement_delete(id)
{
deletethisitemOpener(id);
}
function deletethisitemOpener(divDel)
{
var splitstr= divDel.split('-');
if(splitstr[1]=='' && splitstr[2]=='')
{
var ajaxIndex = Calender_ajaxObjects.length;
Calender_ajaxObjects[ajaxIndex] = new sack();
Calender_ajaxObjects[ajaxIndex].requestFile = delete_item_from_db + '?eventToDeleteId=' + splitstr[0];
Calender_ajaxObjects[ajaxIndex].runAJAX(); // Execute AJAX function
document.getElementById(splitstr[0]).parentNode.removeChild(document.getElementById(splitstr[0]));
}
}
var globalcol;
function setElement_color(id,color)
{
document.getElementById(id).style.backgroundColor=color;
SetappointmentProp[id]['bgColorCode'] = color;
globalcol = color;
flagcol = true;
}
function setElementInactive(inputDiv)
{
var subDivs = inputDiv.getElementsByTagName('DIV');
for(var no=0;no<subDivs.length;no++){
if(subDivs[no].className=='demo_appoint_headerActive'){
subDivs[no].className = 'demo_appoint_header';
}
}
}
var hhkey;
function parseItemsFromServer(ajaxIndex)
{
var itemsToBeCreated = new Array();
var items = Calender_ajaxObjects[ajaxIndex].response.split(/<item>/g);
Calender_ajaxObjects[ajaxIndex] = false;
for(var no=1;no<items.length;no++){
var lines = items[no].split('*');
itemsToBeCreated[no] = new Array();
for(var no2=0;no2<lines.length;no2++){
var key = lines[no2].replace(/<([^>]+)>.*/g,'$1');
if(key)key = trimString(key);
var pattern = new RegExp("<\/?" + key + ">","g");
var value = lines[no2].replace(pattern,'').replace("</item>","");
value = trimString(value);
hhkey = key;
if(key=='eventStartDate' || key=='eventEndDate'){
var d = new Date(value);
value = d;
}
itemsToBeCreated[no][key] = value;
}
if(itemsToBeCreated[no]['id']){
var dayDiff = itemsToBeCreated[no]['eventStartDate'].getTime() - SetdateStartOfWeek.getTime();
dayDiff = Math.floor(Number(dayDiff) / (1000*60*60*24));
el_x = dayPositionArr[dayDiff];
topPos = getYPositionFromTime(itemsToBeCreated[no]['eventStartDate'].getHours(),itemsToBeCreated[no]['eventStartDate'].getMinutes());
var elHeight = (Number(itemsToBeCreated[no]['eventEndDate'].getTime()) - Number(itemsToBeCreated[no]['eventStartDate'].getTime())) / (60 * 60*1000);
elHeight = Math.round((Number(elHeight) * (Number(itemRowHeight) + 1)) - 2);
displaycurrentAppointmentDiv = createNewAppointmentDiv((el_x - SetappointmentsOffsetLeft),topPos,(SetnewAppointmentWidth-(appointMarginSize*2)),itemsToBeCreated[no]['description'],elHeight,itemsToBeCreated[no]['id']);
displaycurrentAppointmentDiv.id = itemsToBeCreated[no]['id'];
currentZIndex = Number(currentZIndex) + 1;
displaycurrentAppointmentDiv.style.zIndex = currentZIndex;
SetcurrentTimeDiv = getSetcurrentTimeDiv(displaycurrentAppointmentDiv);
SetcurrentTimeDiv.style.display='block';
if(itemsToBeCreated[no]['bgColorCode'] && itemsToBeCreated[no]['bgColorCode'].match(/^#[0-9A-F]{6}$/)){
displaycurrentAppointmentDiv.style.backgroundColor = itemsToBeCreated[no]['bgColorCode'];
}
displaycurrentAppointmentContentDiv = getdisplaycurrentAppointmentContentDiv(displaycurrentAppointmentDiv);
displaycurrentAppointmentContentDiv.style.height = (Number(elHeight)-20) + 'px';
displaycurrentAppointmentContentDiv.style.backgroundColor = itemsToBeCreated[no]['bgColorCode'].replace("</item>","").replace("</root>","");
SetcurrentTimeDiv.innerHTML = '<span>' + getTime(displaycurrentAppointmentDiv) + '</span>';
autoResizeAppointment();
displaycurrentAppointmentDiv = false;
SetcurrentTimeDiv = false;
var newIndex = itemsToBeCreated[no]['id'];
SetappointmentProp[newIndex] = new Array();
SetappointmentProp[newIndex]['id'] = itemsToBeCreated[no]['id'];
SetappointmentProp[newIndex]['description'] = itemsToBeCreated[no]['description'];
SetappointmentProp[newIndex]['bgColorCode'] = itemsToBeCreated[no]['bgColorCode'];
SetappointmentProp[newIndex]['eventStartDate'] = itemsToBeCreated[no]['eventStartDate'];
SetappointmentProp[newIndex]['eventEndDate'] = itemsToBeCreated[no]['eventEndDate'];
SetappointmentProp[newIndex]['object'] = displaycurrentAppointmentDiv;
}
}
}
function updateSetappointmentProp(id)
{
var obj = document.getElementById(id);
var timeArray = getTimeAsArray(obj);
var startDate = getAppointmentDate(obj);
var endDate = new Date();
endDate.setTime(startDate.getTime());
startDate.setHours(timeArray[0]);
startDate.setMinutes(timeArray[1]);
endDate.setHours(timeArray[2]);
endDate.setMinutes(timeArray[3]);
SetappointmentProp[obj.id]['eventStartDate'] = startDate;
SetappointmentProp[obj.id]['eventEndDate'] = endDate;
if(quickSave && SetappointmentProp[obj.id]['description'].length>0){
saveAnItemToServer(obj.id);
}
}
function getYPositionFromTime(hour,minute){
return Math.floor((Number(hour) - Number(CalenderStartHour)) * (Number(itemRowHeight)+1) + (Number(minute)/60 * (Number(itemRowHeight)+1)));
}
function getItemsFromDBServer()
{
var ajaxIndex = Calender_ajaxObjects.length;
Calender_ajaxObjects[ajaxIndex] = new sack();
Calender_ajaxObjects[ajaxIndex].requestFile = get_items_from_db + '?year=' + SetdateStartOfWeek.getFullYear() + '&month=' + (SetdateStartOfWeek.getMonth()/1+1) + '&day=' + SetdateStartOfWeek.getDate(); // Specifying which file to get
Calender_ajaxObjects[ajaxIndex].onCompletion = function(){ parseItemsFromServer(ajaxIndex); }; // Specify function that will be executed after file has been found
Calender_ajaxObjects[ajaxIndex].runAJAX();
}
function getSetcurrentTimeDiv(inputObj)
{
var subDivs = inputObj.getElementsByTagName('DIV');
for(var no=0;no<subDivs.length;no++){
if(subDivs[no].className=='demo_appoint_time'){
return subDivs[no];
}
}
}
function getdisplaycurrentAppointmentContentDiv(inputDiv)
{
var divs = inputDiv.getElementsByTagName('DIV');
for(var no=0;no<divs.length;no++){
if(divs[no].className=='demo_appoint_txt')return divs[no];
}
}
function getAppointmentDate(inputObj)
{
var leftPos = getLeftPos(inputObj);
var d = new Date();
var tmpTime = SetdateStartOfWeek.getTime();
tmpTime = Number(tmpTime) + (1000*60*60*24 * Math.floor((Number(leftPos)-Number(SetappointmentsOffsetLeft)) / (Number(dayPositionArr[1]) - Number(dayPositionArr[0]))));
d.setTime(tmpTime);
return d;
}
function getTimeAsArray(inputObj)
{
var startTime = (Number(getTopPos(inputObj)) - Number(SetappointmentsOffsetTop)) / (Number(itemRowHeight)+1) + Number(CalenderStartHour);
if(startTime>23)startTime = Number(startTime) - 24;
var startHour = Math.floor(Number(startTime));
var startMinute = Math.floor((Number(startTime) - Number(startHour)) *60);
var endTime = (Number(getTopPos(inputObj)) + Number(inputObj.offsetHeight) - Number(SetappointmentsOffsetTop)) / (Number(itemRowHeight)+1) + Number(CalenderStartHour);
if(endTime>23)endTime = Number(endTime) - 24;
var endHour = Math.floor(Number(endTime));
var endMinute = Math.floor((Number(endTime) - Number(endHour)) *60);
return Array(startHour,startMinute,endHour,endMinute);
}
var gettimtosave;
function getTime(inputObj)
{
var startTime = (Number(getTopPos(inputObj)) - Number(SetappointmentsOffsetTop)) / (Number(itemRowHeight)+1) + Number(CalenderStartHour);
if(startTime>23)startTime = Number(startTime) - 24;
var startHour = Math.floor(Number(startTime));
var hourPrefix = "";
if(startHour<10)hourPrefix = "0";
var startMinute = Math.floor((Number(startTime) - Number(startHour)) *60);
var startMinutePrefix = "";
if(startMinute<10)startMinutePrefix="0";
var endTime = (Number(getTopPos(inputObj)) + Number(inputObj.offsetHeight) - Number(SetappointmentsOffsetTop)) / (Number(itemRowHeight)+1) + Number(CalenderStartHour);
if(endTime>23)endTime = Number(endTime) - 24;
var endHour = Math.floor(Number(endTime));
var endHourPrefix = "";
if(endHour<10)endHourPrefix = "0";
var endMinute = Math.floor((Number(endTime) - Number(endHour)) *60);
var endMinutePrefix = "";
if(endMinute<10)endMinutePrefix="0";
var helfs = settimeforAMPM(hourPrefix + startHour) + ':' + startMinutePrefix + "" + startMinute + '-' + settimeforAMPM(endHourPrefix + endHour)+ ':' + endMinutePrefix + "" + endMinute;
gettimtosave = helfs;
return helfs;
}
function settimeforAMPM(val)
{
if(val>12)
{
val = Number(val) -12;
}
return val;
}
function initNewAppointment(e,inputObj)
{
if(document.all)e = event;
if(!inputObj)inputObj = this;
SetnewAppointmentCounter = 0;
el_x = getLeftPos(inputObj);
el_y = getTopPos(inputObj);
elWidth = inputObj.offsetWidth;
mouse_x = e.clientX;
mouse_y = e.clientY;
timerNewAppointment();
return false;
}
function timerNewAppointment()
{
if(SetnewAppointmentCounter>=0 && SetnewAppointmentCounter<10){
SetnewAppointmentCounter = Number(SetnewAppointmentCounter) + 1;
setTimeout('timerNewAppointment()',30);
return;
}
if(SetnewAppointmentCounter==10){
if(initilizeMinutes){
var topPos = Number(mouse_y) - Number(SetappointmentsOffsetTop) + Number(document.documentElement.scrollTop) + Number(document.getElementById('demo_cal_content').scrollTop);
topPos = Number(topPos) - (Number(getMinute(topPos)) % Number(initilizeMinutes));
var rest = (Number(getMinute(topPos)) % Number(initilizeMinutes));
if(rest!=0){
topPos = Number(topPos) - (Number(getMinute(topPos)) % Number(initilizeMinutes));
}
}else{
var topPos = (Number(el_y) - Number(SetappointmentsOffsetTop));
}
displaycurrentAppointmentDiv = createNewAppointmentDiv((el_x - SetappointmentsOffsetLeft),topPos,(Number(elWidth)-(Number(appointMarginSize)*2)),'');
displaycurrentAppointmentDiv.id = 'new_' + SetstartIdOfNewItems;
SetappointmentProp[displaycurrentAppointmentDiv.id] = new Array();
SetappointmentProp[displaycurrentAppointmentDiv.id]['description'] = "";
SetappointmentProp[displaycurrentAppointmentDiv.id]['object'] = displaycurrentAppointmentDiv;
SetappointmentProp[displaycurrentAppointmentDiv.id]['id'] = displaycurrentAppointmentDiv.id;
SetstartIdOfNewItems++;
displaycurrentAppointmentContentDiv = getdisplaycurrentAppointmentContentDiv(displaycurrentAppointmentDiv);
currentZIndex = Number(currentZIndex) + 1;
displaycurrentAppointmentDiv.style.zIndex = currentZIndex;
displaycurrentAppointmentDiv.style.height='20px';
SetcurrentTimeDiv = getSetcurrentTimeDiv(displaycurrentAppointmentDiv);
SetcurrentTimeDiv.style.display='block';
}
}
function initResizeAppointment(e)
{
if(document.all)e = event;
displaycurrentAppointmentDiv = this.parentNode;
displaycurrentAppointmentContentDiv = getdisplaycurrentAppointmentContentDiv(displaycurrentAppointmentDiv);
currentZIndex = Number(currentZIndex) + 1;
displaycurrentAppointmentDiv.style.zIndex = currentZIndex;
SetToResizeAppointmentCounter = 0;
el_x = getLeftPos(displaycurrentAppointmentDiv);
el_y = getTopPos(displaycurrentAppointmentDiv);
mouse_x = e.clientX;
mouse_y = e.clientY;
SetToResizeAppointmentInitHeight = displaycurrentAppointmentDiv.style.height.replace('px','')/1;
timerResizeAppointment();
return false;
}
function timerResizeAppointment()
{
if(SetToResizeAppointmentCounter>=0 && SetToResizeAppointmentCounter<10){
SetToResizeAppointmentCounter = Number(SetToResizeAppointmentCounter) + 1;
setTimeout('timerResizeAppointment()',10);
return;
}
if(SetToResizeAppointmentCounter==10){
SetcurrentTimeDiv = getSetcurrentTimeDiv(displaycurrentAppointmentDiv);
SetcurrentTimeDiv.style.display='block';
}
}
function initMoveAppointment(e,inputObj)
{
if(document.all)e = event;
if(!inputObj)inputObj = this.parentNode;
displaycurrentAppointmentDiv = inputObj;
displaycurrentAppointmentContentDiv = getdisplaycurrentAppointmentContentDiv(displaycurrentAppointmentDiv);
currentZIndex = Number(currentZIndex) + 1;
displaycurrentAppointmentDiv.style.zIndex = currentZIndex;
SetToMoveAppointmentCounter = 0;
el_x = getLeftPos(inputObj);
el_y = getTopPos(inputObj);
elWidth = inputObj.offsetWidth;
mouse_x = e.clientX;
mouse_y = e.clientY;
timerMoveAppointment();
return false;
}
function timerMoveAppointment()
{
if(SetToMoveAppointmentCounter>=0 && SetToMoveAppointmentCounter<10){
SetToMoveAppointmentCounter = Number(SetToMoveAppointmentCounter) + 1;
setTimeout('timerMoveAppointment()',10);
return;
}
if(SetToMoveAppointmentCounter==10){
SetcurrentTimeDiv = getSetcurrentTimeDiv(displaycurrentAppointmentDiv);
SetcurrentTimeDiv.style.display='block';
}
}
function getMinute(topPos)
{
var time = (Number(topPos)) / (Number(itemRowHeight)+1);
var hour = Math.floor(Number(time));
var minute = Math.floor((Number(time) - Number(hour)) *60);
return minute;
}
function schedulerMouseMove(e)
{
if(document.all)e = event;
if(SetnewAppointmentCounter==10){
if(!displaycurrentAppointmentDiv)return;
var tmpHeight = Number(e.clientY) - Number(mouse_y);
displaycurrentAppointmentDiv.style.height = Math.max(20,Number(tmpHeight)) + 'px';
SetcurrentTimeDiv.innerHTML = '<span>' + getTime(displaycurrentAppointmentDiv) + '</span>';
}
if(SetToMoveAppointmentCounter==10){
var topPos = (Number(e.clientY) - Number(mouse_y) + Number(el_y) - Number(SetappointmentsOffsetTop));
displaycurrentAppointmentDiv.style.top = topPos + 'px';
var destinationLeftPos = false;
for(var no=0;no<dayPositionArr.length;no++){
if(e.clientX>dayPositionArr[no])destinationLeftPos = dayPositionArr[no];
}
displaycurrentAppointmentDiv.style.left = (Number(destinationLeftPos) + Number(appointMarginSize) -2) + 'px';
SetcurrentTimeDiv.innerHTML = '<span>' + getTime(displaycurrentAppointmentDiv) + '</span>';
}
if(SetToResizeAppointmentCounter==10){
displaycurrentAppointmentContentDiv.style.height = (Math.max((Number(SetToResizeAppointmentInitHeight) + Number(e.clientY) - Number(mouse_y)),10)-8) + 'px';
displaycurrentAppointmentDiv.style.height = Math.max((Number(SetToResizeAppointmentInitHeight) + Number(e.clientY) - Number(mouse_y)),10) + 'px';
SetcurrentTimeDiv.innerHTML = '<span>' + getTime(displaycurrentAppointmentDiv) + '</span>';
}
}
function repositionFooter(inputDiv)
{
var subDivs = inputDiv.getElementsByTagName('DIV');
for(var no=0;no<subDivs.length;no++){
if(subDivs[no].className=='demo_appoint_footer'){
subDivs[no].style.bottom = '-1px';
}
}
}
function transferTextAreaContent(e,inputObj,discardContentUpdate)
{
if(!inputObj)inputObj = this;
inputObj.style.display='none';
var spans = inputObj.parentNode.getElementsByTagName('DIV');
spans[2].style.backgroundColor=globalcol;
for(var no=0;no<spans.length;no++){
if(spans[no].className=='demo_appoint_txt'){
if(!discardContentUpdate){
SetappointmentProp[inputObj.parentNode.id]['description'] = inputObj.value;
spans[no].innerHTML = '<span style="float:right;">     </span>' + inputObj.value.replace(/\n/g,'<br>');
}
spans[no].style.display='block';
}
if(spans[no].className=='demo_appoint_footer'){
spans[no].style.display='block';
}
if(spans[no].className=='demo_appoint_time'){
spans[no].style.display='block';
}
}
SetcontentEditInProgress = false;
SetcurrentEditableText = false;
repositionFooter(inputObj.parentNode);
if(quickSave && SetappointmentProp[inputObj.parentNode.id]['description'].length>0){
saveAnItemToServer(inputObj.parentNode.id);
}
}
function saveAnItemToServer_complete(index,oldId)
{
if(oldId.indexOf('new_')>=0){
SetappointmentProp[oldId]['id'] = Calender_ajaxObjects[index].response;
SetappointmentProp[oldId]['object'].id = Calender_ajaxObjects[index].response.replace(/\s/g,'');
SetappointmentProp[Calender_ajaxObjects[index].response] = SetappointmentProp[oldId];
Calender_ajaxObjects[index] = false;
if(!inlineTextAreaEnable){
editEventWindow(false,SetappointmentProp[oldId]['object']);
}
}
}
function clearAppointments()
{
for(var prop in SetappointmentProp){
if(SetappointmentProp[prop]['id']){
if(document.getElementById(SetappointmentProp[prop]['id'])){
var obj = document.getElementById(SetappointmentProp[prop]['id']);
obj.parentNode.removeChild(obj);
}
SetappointmentProp[prop]['id'] = false;
}
}
}
function saveAnItemToServer(inputId)
{
if(!SetappointmentProp[inputId]['description'])SetappointmentProp[inputId]['description']='';
if(!SetappointmentProp[inputId]['bgColorCode'])SetappointmentProp[inputId]['bgColorCode']='';
if(!SetappointmentProp[inputId]['eventStartDate'])updateSetappointmentProp(inputId);;
var saveString;
if(flagcol == true)
{
saveString = "?saveAnItem=true&id=" + SetappointmentProp[inputId]['id']
+ '&description=' + escape(SetappointmentProp[inputId]['description'])
+ '&bgColorCode=' + escape(globalcol)
+ '&eventStartDate=' + SetappointmentProp[inputId]['eventStartDate'].toGMTString().replace('UTC','GMT')
+ '&eventEndDate=' + SetappointmentProp[inputId]['eventEndDate'].toGMTString().replace('UTC','GMT');
flagcol = false;
}
else
{
saveString = "?saveAnItem=true&id=" + SetappointmentProp[inputId]['id']
+ '&description=' + escape(SetappointmentProp[inputId]['description'])
+ '&bgColorCode=' + escape(SetappointmentProp[inputId]['bgColorCode'].replace("</item>","").replace("</root>",""))
+ '&eventStartDate=' + SetappointmentProp[inputId]['eventStartDate'].toGMTString().replace('UTC','GMT')
+ '&eventEndDate=' + SetappointmentProp[inputId]['eventEndDate'].toGMTString().replace('UTC','GMT');
}
if(SetappointmentProp[inputId]['id'].indexOf('new_')>=0){
saveString = saveString + '&newItem=1';
}
var ajaxIndex = Calender_ajaxObjects.length;
Calender_ajaxObjects[ajaxIndex] = new sack();
Calender_ajaxObjects[ajaxIndex].requestFile = save_item_to_db + saveString;
Calender_ajaxObjects[ajaxIndex].onCompletion = function(){ saveAnItemToServer_complete(ajaxIndex,SetappointmentProp[inputId]['id']); }; // Specify function that will be executed after file has been found
Calender_ajaxObjects[ajaxIndex].runAJAX();
itemnewtobedeleted = SetappointmentProp[inputId]['id'];
}
function ffEndEdit(e)
{
if(!SetcurrentEditableText)return;
if (e.target) source = e.target;
else if (e.srcElement) source = e.srcElement;
if (source.nodeType == 3)
source = source.parentNode;
if(source.tagName.toLowerCase()!='textarea')SetcurrentEditableText.blur();
}
function initToggleView(e)
{
if(document.all)e = event;
if (e.target) source = e.target;
else if (e.srcElement) source = e.srcElement;
if (source.nodeType == 3)
source = source.parentNode;
if(source.className && source.className!='demo_appoint_txt' && source.className!='demo_cal_anAppointment'){
return;
}
SettoggleViewCount = 0;
SetobjectToTogg = this;
timerToggleView();
}
function timerToggleView()
{
if(SettoggleViewCount>=0 && SettoggleViewCount<10){
SettoggleViewCount = Number(SettoggleViewCount) + 1;
setTimeout('timerToggleView()',50);
}
if(SettoggleViewCount==10){
SettoggleViewCount = -1;
toggleAppointmentView(false,SetobjectToTogg);
}
}
function toggleAppointmentView(e,inputObj)
{
if(document.all)e = event;
if(!inlineTextAreaEnable)return;
if(!inputObj){
inputObj = this;
}
if(e){
if (e.target) source = e.target;
else if (e.srcElement) source = e.srcElement;
if (source.nodeType == 3)
source = source.parentNode;
if(source.tagName.toLowerCase()=='textarea')return;
if(SetcontentEditInProgress && source.tagName=='DIV'){
transferTextAreaContent(false,displaycurrentAppointmentDiv.getElementsByTagName('TEXTAREA')[0]);
return;
}
if(source.className && source.className!='demo_cal_anAppointment' && source.className!='demo_appoint_txt')return;
}
displaycurrentAppointmentDiv = inputObj;
var spans = inputObj.getElementsByTagName('DIV');
var tmpValue = "";
for(var no=0;no<spans.length;no++){
if(spans[no].className=='demo_appoint_txt'){
spans[no].style.display='none';
tmpValue = SetappointmentProp[inputObj.id]['description'];
}
if(spans[no].className=='demo_appoint_footer'){
spans[no].style.display='none';
}
if(spans[no].className=='demo_appoint_time'){
spans[no].style.display='none';
}
}
var ta = displaycurrentAppointmentDiv.getElementsByTagName('TEXTAREA')[0];
ta.style.width = (displaycurrentAppointmentDiv.clientWidth - 6) + 'px';
ta.style.height = (displaycurrentAppointmentDiv.offsetHeight-14) + 'px';
ta.style.display='inline';
ta.value = tmpValue;
SetcontentEditInProgress = true;
SetcurrentEditableText = ta;
ta.focus();
}
function keyboardEventTextarea(e)
{
if(document.all)e = event;
if(e.keyCode==27){
transferTextAreaContent(false,this,true);
}
}
function deletethisitem(divDel)
{
if(confirm(txt_deleteEvent))
{
var ajaxIndex = Calender_ajaxObjects.length;
Calender_ajaxObjects[ajaxIndex] = new sack();
if(divDel==undefined)
{
Calender_ajaxObjects[ajaxIndex].requestFile = delete_item_from_db + '?eventToDeleteId=' + itemnewtobedeleted;
}
else
{
Calender_ajaxObjects[ajaxIndex].requestFile = delete_item_from_db + '?eventToDeleteId=' + divDel;
}
Calender_ajaxObjects[ajaxIndex].onCompletion = function(){ deleteEventFromView(ajaxIndex); }; // Specify function that will be executed after file has been found
Calender_ajaxObjects[ajaxIndex].runAJAX();
}
}
function createNewAppointmentDiv(leftPos,topPos,width,contentHTML,height,divids)
{
var div = document.createElement('DIV');
div.onclick = setElementActive;
div.ondblclick = editEventWindow;
div.className='demo_cal_anAppointment';
div.style.left = leftPos + 'px';
div.style.top = topPos + 'px';
div.style.width = width + 'px';
div.onmousedown = initToggleView;
if(height)div.style.height = height + 'px';
var timeDiv = document.createElement('DIV');
timeDiv.className='demo_appoint_time';
timeDiv.innerHTML = '<span></span>';
div.appendChild(timeDiv);
var header = document.createElement('DIV');
header.className= 'demo_appoint_header';
header.innerHTML = "<span><img style='cursor:hand' onclick='deletethisitem("+divids+");' height='10px' width='10px' src='images/icon-delete.gif' alt='Delete' /></span>";
header.onmousedown = initMoveAppointment;
header.style.cursor = 'move';
header.style.height = '8px';
div.appendChild(header);
var span = document.createElement('DIV');
var innerSpan = document.createElement('SPAN');
innerSpan.innerHTML = '<span style="float:right;">     </span>' + contentHTML;
span.appendChild(innerSpan);
span.className = 'demo_appoint_txt';
div.appendChild(span);
var textarea = document.createElement('TEXTAREA');
textarea.className='demo_appoint_textarea';
textarea.style.display='none';
textarea.onblur = transferTextAreaContent;
textarea.onkeyup = keyboardEventTextarea;
div.appendChild(textarea);
var colorCodeDiv = document.createElement('DIV');
colorCodeDiv.className='weekScheduler_appointment_colorCodes';
div.appendChild(colorCodeDiv);
var footerDiv = document.createElement('DIV');
footerDiv.className='demo_appoint_footer';
footerDiv.style.cursor = 'n-resize';
footerDiv.innerHTML = '<span></span>';
footerDiv.onmousedown = initResizeAppointment;
div.appendChild(footerDiv);
demo_cal_appointments.appendChild(div);
return div;
}
function schedulerMouseUp()
{
if(SetnewAppointmentCounter>=0){
if(SetnewAppointmentCounter==10){
if(!displaycurrentAppointmentDiv)return;
if(inlineTextAreaEnable){
var spans = displaycurrentAppointmentDiv.getElementsByTagName('DIV');
for(var no=0;no<spans.length;no++){
if(spans[no].className=='demo_appoint_txt'){
spans[no].style.display='none';
}
if(spans[no].className=='demo_appoint_footer'){
spans[no].style.display='none';
}
if(spans[no].className=='demo_appoint_time'){
spans[no].style.display='none';
}
}
var ta = displaycurrentAppointmentDiv.getElementsByTagName('TEXTAREA')[0];
ta.style.width = (Number(displaycurrentAppointmentDiv.clientWidth) - 6) + 'px';
ta.style.height = (Number(displaycurrentAppointmentDiv.offsetHeight)-14) + 'px';
ta.style.display='inline';
ta.focus();
}
else{
saveAnItemToServer(displaycurrentAppointmentDiv.id);
}
}
}
if(snapMinutes && displaycurrentAppointmentDiv && SetToMoveAppointmentCounter==10){
topPos = Number(getTopPos(displaycurrentAppointmentDiv)) - Number(SetappointmentsOffsetTop);
var minute = getMinute(topPos);
var rest = (minute % snapMinutes);
if(rest>(snapMinutes/2)){
topPos = Number(topPos) + (Number(snapMinutes)/60*(Number(itemRowHeight)+1)) - ((Number(rest)/60)*(Number(itemRowHeight)+1));
}else{
topPos = Number(topPos) - ((Number(rest)/60)*(Number(itemRowHeight)+1));
}
var minute = getMinute(topPos);
var rest = (Number(minute) % Number(snapMinutes));
if(rest!=0){
topPos = Number(topPos) - ((Number(rest)/60)*(Number(itemRowHeight)+1));
}
var minute = getMinute(topPos);
var rest = (Number(minute) % Number(snapMinutes));
if(rest!=0){
topPos = Number(topPos) - ((Number(rest)/60)*(Number(itemRowHeight)+1));
}
displaycurrentAppointmentDiv.style.top = topPos + 'px';
SetcurrentTimeDiv.innerHTML = '<span>' + getTime(displaycurrentAppointmentDiv) + '</span>';
}
if(displaycurrentAppointmentDiv && snapMinutes && (SetToResizeAppointmentCounter==10 || SetnewAppointmentCounter)){
autoResizeAppointment();
}
if(displaycurrentAppointmentDiv && !SetcontentEditInProgress){
repositionFooter(displaycurrentAppointmentDiv);
updateSetappointmentProp(displaycurrentAppointmentDiv.id);
}
displaycurrentAppointmentDiv = false;
SetcurrentTimeDiv = false;
SetToMoveAppointmentCounter = -1;
SetToResizeAppointmentCounter = -1;
SetnewAppointmentCounter = -1;
SettoggleViewCount = -1;
}
var getiid;
function autoResizeAppointment()
{
getiid=displaycurrentAppointmentDiv.id
var tmpPos = getTopPos(displaycurrentAppointmentDiv) - SetappointmentsOffsetTop + displaycurrentAppointmentDiv.offsetHeight;
var startPos = tmpPos;
var minute = getMinute(tmpPos);
var rest = (Number(minute) % Number(snapMinutes));
var height = displaycurrentAppointmentDiv.style.height.replace('px','')/1;
if(rest>(Number(snapMinutes)/2)){
tmpPos = Number(tmpPos) + Number(snapMinutes) - (Number(minute) % Number(snapMinutes));
}else{
tmpPos = Number(tmpPos) - (Number(minute) % Number(snapMinutes));
}
var minute = getMinute(tmpPos);
if((minute % snapMinutes)!=0){
tmpPos = Number(tmpPos) - (Number(minute) % Number(snapMinutes));
}
var minute = getMinute(tmpPos);
if((Number(minute) % Number(snapMinutes))!=0){
tmpPos = Number(tmpPos) - (Number(minute) % Number(snapMinutes));
}
displaycurrentAppointmentDiv.style.height = (Number(height) + Number(tmpPos) - Number(startPos)) + 'px';
SetcurrentTimeDiv.innerHTML = '<span>' + getTime(displaycurrentAppointmentDiv) + '</span>';
}
function deleteEventFromView(index)
{
if(Calender_ajaxObjects[index].response=='OK'){
SetactiveEventObj.parentNode.removeChild(SetactiveEventObj);
SetactiveEventObj = false;
}else{
alert('Could not confirm that event has been deleted. Make sure that the script is configured correctly');
}
}
function schedulerKeyboardEvent(e){
if(document.all)e = event;
if(e.keyCode==46 && SetactiveEventObj){
if(confirm(txt_deleteEvent)){
var ajaxIndex = Calender_ajaxObjects.length;
Calender_ajaxObjects[ajaxIndex] = new sack();
Calender_ajaxObjects[ajaxIndex].requestFile = delete_item_from_db + '?eventToDeleteId=' + SetactiveEventObj.id;
Calender_ajaxObjects[ajaxIndex].onCompletion = function(){ deleteEventFromView(ajaxIndex); }; // Specify function that will be executed after file has been found
Calender_ajaxObjects[ajaxIndex].runAJAX(); // Execute AJAX function
}
}
}
function getTopPos(inputObj)
{
var returnValue = inputObj.offsetTop;
while((inputObj = inputObj.offsetParent) != null){
if(inputObj.tagName!='HTML')returnValue += inputObj.offsetTop;
}
return returnValue;
}
function getLeftPos(inputObj)
{
var returnValue = inputObj.offsetLeft;
while((inputObj = inputObj.offsetParent) != null){
if(inputObj.tagName!='HTML')returnValue += inputObj.offsetLeft;
}
return returnValue;
}
function cancelSelectionEvent(e)
{
if(document.all)e = event;
if (e.target) source = e.target;
else if (e.srcElement) source = e.srcElement;
if (source.nodeType == 3)
source = source.parentNode;
if(source.tagName.toLowerCase()=='input' || source.tagName.toLowerCase()=='textarea')return true;
return false;
}
function initCalendar()
{
demo_container = document.getElementById('demo_container');
if(!document.all)demo_container.onclick = ffEndEdit;
demo_cal_appointments = document.getElementById('demo_cal_appointments');
var subDivs = demo_cal_appointments.getElementsByTagName('DIV');
for(var no=0;no<subDivs.length;no++){
if(subDivs[no].className=='demo_appointHour'){
subDivs[no].onmousedown = initNewAppointment;
if(!SetnewAppointmentWidth)SetnewAppointmentWidth = subDivs[no].offsetWidth;
}
if(subDivs[no].className=='demo_appoint_day'){
dayPositionArr[dayPositionArr.length] = getLeftPos(subDivs[no]);
}
}
if(initilizeTopHours > CalenderStartHour)document.getElementById('demo_cal_content').scrollTop = ((initilizeTopHours - CalenderStartHour)*(itemRowHeight+1));
SetappointmentsOffsetTop = getTopPos(demo_cal_appointments);
SetappointmentsOffsetLeft = 2 - Number(appointMarginSize);
document.documentElement.onmousemove = schedulerMouseMove;
document.documentElement.onselectstart = cancelSelectionEvent;
document.documentElement.onmouseup = schedulerMouseUp;
document.documentElement.onkeydown = schedulerKeyboardEvent;
var tmpDate = new Date();
var dateItems = initDateToShow.split(/\-/g);
tmpDate.setFullYear(dateItems[0]);
tmpDate.setDate(Number(dateItems[2])/1);
tmpDate.setMonth(Number(dateItems[1])/1-1);
tmpDate.setHours(1);
tmpDate.setMinutes(0);
tmpDate.setSeconds(0);
var day = tmpDate.getDay();
if(day==0)day=7;
if(day>1){
var time = tmpDate.getTime();
time = Number(time) - (1000*60*60*24) * (Number(day)-1);
tmpDate.setTime(time);
}
SetdateStartOfWeek = new Date(tmpDate);
updateTopHeadDates();
if(get_items_from_db){
getItemsFromDBServer();
}
}
function displayPreviousWeek()
{
var tmpTime = SetdateStartOfWeek.getTime();
tmpTime = Number(tmpTime) - (1000*60*60*24*7);
SetdateStartOfWeek.setTime(tmpTime);
updateTopHeadDates();
clearAppointments();
getItemsFromDBServer();
}
function displayNextWeek()
{
var tmpTime = SetdateStartOfWeek.getTime();
tmpTime = Number(tmpTime) + (1000*60*60*24*7);
SetdateStartOfWeek.setTime(tmpTime);
updateTopHeadDates();
clearAppointments();
getItemsFromDBServer();
}
function updateTopHeadDates()
{
var weekScheduler_dayRow = document.getElementById('weekScheduler_dayRow');
var subDivs = weekScheduler_dayRow.getElementsByTagName('DIV');
var tmpDate2 = new Date(SetdateStartOfWeek);
for(var no=0;no<subDivs.length;no++){
var month = Number(tmpDate2.getMonth())/1 + 1;
var date = tmpDate2.getDate();
var tmpHeaderFormat = " " + settingHeaderDateFormat;
tmpHeaderFormat = tmpHeaderFormat.replace('d',date);
tmpHeaderFormat = tmpHeaderFormat.replace('m',month);
subDivs[no].getElementsByTagName('SPAN')[0].innerHTML = tmpHeaderFormat;
dayDateArr[no] = month + '|' + date;
var time = tmpDate2.getTime();
time = Number(time) + (1000*60*60*24);
tmpDate2.setTime(time);
}
}
window.onload = initCalendar;