/**
* @description {Class} wdCalendar
* This is the main class of wdCalendar.
*/
; (function($) {
var __WDAY = new Array(i18n.dcmvcal.dateformat.sun, i18n.dcmvcal.dateformat.mon, i18n.dcmvcal.dateformat.tue, i18n.dcmvcal.dateformat.wed, i18n.dcmvcal.dateformat.thu, i18n.dcmvcal.dateformat.fri, i18n.dcmvcal.dateformat.sat);
var __WDAYLarge = new Array(i18n.dcmvcal.dateformat.sunday, i18n.dcmvcal.dateformat.monday, i18n.dcmvcal.dateformat.tuesday, i18n.dcmvcal.dateformat.wednesday, i18n.dcmvcal.dateformat.thursday, i18n.dcmvcal.dateformat.friday, i18n.dcmvcal.dateformat.saturday);
var __WDAY2 = new Array(i18n.dcmvcal.dateformat.sun2, i18n.dcmvcal.dateformat.mon2, i18n.dcmvcal.dateformat.tue2, i18n.dcmvcal.dateformat.wed2, i18n.dcmvcal.dateformat.thu2, i18n.dcmvcal.dateformat.fri2, i18n.dcmvcal.dateformat.sat2);
var __MonthName = new Array(i18n.dcmvcal.dateformat.jan, i18n.dcmvcal.dateformat.feb, i18n.dcmvcal.dateformat.mar, i18n.dcmvcal.dateformat.apr, i18n.dcmvcal.dateformat.may, i18n.dcmvcal.dateformat.jun, i18n.dcmvcal.dateformat.jul, i18n.dcmvcal.dateformat.aug, i18n.dcmvcal.dateformat.sep, i18n.dcmvcal.dateformat.oct, i18n.dcmvcal.dateformat.nov, i18n.dcmvcal.dateformat.dec);
var __MonthNameLarge = new Array(i18n.dcmvcal.dateformat.l_jan, i18n.dcmvcal.dateformat.l_feb, i18n.dcmvcal.dateformat.l_mar, i18n.dcmvcal.dateformat.l_apr, i18n.dcmvcal.dateformat.l_may, i18n.dcmvcal.dateformat.l_jun, i18n.dcmvcal.dateformat.l_jul, i18n.dcmvcal.dateformat.l_aug, i18n.dcmvcal.dateformat.l_sep, i18n.dcmvcal.dateformat.l_oct, i18n.dcmvcal.dateformat.l_nov, i18n.dcmvcal.dateformat.l_dec);
var __MilitaryTime = true;
var __TheContainer = "";
var arrs = new Array
arrs[i18n.dcmvcal.dateformat.year_index] = "yyyy";
arrs[i18n.dcmvcal.dateformat.month_index] = "M";
arrs[i18n.dcmvcal.dateformat.day_index] = "d";
i18n.dcmvcal.dateformat.fulldayvalue = arrs.join(i18n.dcmvcal.dateformat.separator);
var dialogUnBlur = function()
{
unBlur();
$('body').click(unBlur);
$('.ui-button').off('focus');
function unBlur() {
$('.ui-button').blur();
}
}
if (!Clone || typeof (Clone) != "function") {
var Clone = function(obj) {
var objClone = new Object();
if (obj.constructor == Object) {
objClone = new obj.constructor();
} else {
objClone = new obj.constructor(obj.valueOf());
}
for (var key in obj) {
if (objClone[key] != obj[key]) {
if (typeof (obj[key]) == 'object') {
objClone[key] = Clone(obj[key]);
} else {
objClone[key] = obj[key];
}
}
}
objClone.toString = obj.toString;
objClone.valueOf = obj.valueOf;
return objClone;
}
}
if (!dateFormat || typeof (dateFormat) != "function") {
var dateFormat = function(format) {
var o = {
"M+": this.getMonth() + 1,
"d+": this.getDate(),
"h+": this.getHours(),
"H+": this.getHours(),
"m+": this.getMinutes(),
"s+": this.getSeconds(),
"q+": Math.floor((this.getMonth() + 3) / 3),
"w": "0123456".indexOf(this.getDay()),
"W": __WDAY[this.getDay()],
"L": __MonthName[this.getMonth()] //non-standard
};
if (/(y+)/.test(format)) {
format = format.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
}
var format1 = format;
for (var k in o) {
if ((new RegExp("(" + k + ")").test(format)) && (new RegExp("(" + k + ")").test(format1)))
format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length));
}
return format;
};
}
if (!DateAdd || typeof (DateDiff) != "function") {
var DateAdd = function(interval, number, idate) {
number = parseInt(number);
var date;
if (typeof (idate) == "string") {
date = idate.split(/\D/);
eval("var date = new Date(" + date.join(",") + ")");
}
if (typeof (idate) == "object") {
date = new Date(idate.toString());
}
switch (interval) {
case "y": date.setFullYear(date.getFullYear() + number); break;
case "m": date.setMonth(date.getMonth() + number); break;
case "d": date.setDate(date.getDate() + number); break;
case "w": date.setDate(date.getDate() + 7 * number); break;
case "h": date.setHours(date.getHours() + number); break;
case "n": date.setMinutes(date.getMinutes() + number); break;
case "s": date.setSeconds(date.getSeconds() + number); break;
case "l": date.setMilliseconds(date.getMilliseconds() + number); break;
}
return date;
}
}
if (!DateDiff || typeof (DateDiff) != "function") {
var DateDiff = function(interval, d1, d2) {
switch (interval) {
case "d": //date
case "w":
d1 = new Date(d1.getFullYear(), d1.getMonth(), d1.getDate());
d2 = new Date(d2.getFullYear(), d2.getMonth(), d2.getDate());
break; //w
case "h":
d1 = new Date(d1.getFullYear(), d1.getMonth(), d1.getDate(), d1.getHours());
d2 = new Date(d2.getFullYear(), d2.getMonth(), d2.getDate(), d2.getHours());
break; //h
case "n":
d1 = new Date(d1.getFullYear(), d1.getMonth(), d1.getDate(), d1.getHours(), d1.getMinutes());
d2 = new Date(d2.getFullYear(), d2.getMonth(), d2.getDate(), d2.getHours(), d2.getMinutes());
break;
case "s":
d1 = new Date(d1.getFullYear(), d1.getMonth(), d1.getDate(), d1.getHours(), d1.getMinutes(), d1.getSeconds());
d2 = new Date(d2.getFullYear(), d2.getMonth(), d2.getDate(), d2.getHours(), d2.getMinutes(), d2.getSeconds());
break;
}
var t1 = d1.getTime(), t2 = d2.getTime();
var diff = NaN;
switch (interval) {
case "y": diff = d2.getFullYear() - d1.getFullYear(); break; //y
case "m": diff = (d2.getFullYear() - d1.getFullYear()) * 12 + d2.getMonth() - d1.getMonth(); break; //m
case "d": diff = Math.floor(t2 / 86400000) - Math.floor(t1 / 86400000); break;
case "w": diff = Math.floor((t2 + 345600000) / (604800000)) - Math.floor((t1 + 345600000) / (604800000)); break; //w
case "h": diff = Math.floor(t2 / 3600000) - Math.floor(t1 / 3600000); break; //h
case "n": diff = Math.floor(t2 / 60000) - Math.floor(t1 / 60000); break; //
case "s": diff = Math.floor(t2 / 1000) - Math.floor(t1 / 1000); break; //s
case "l": diff = t2 - t1; break;
}
return diff;
}
}
if ($.fn.noSelect == undefined) {
$.fn.noSelect = function(p) { //no select plugin by me :-)
if (p == null)
prevent = true;
else
prevent = p;
if (prevent) {
return this.each(function() {
if ($.browser.msie || $.browser.safari) $(this).bind('selectstart', function(e) { return false; });
else if ($.browser.mozilla) {
$(this).css('MozUserSelect', 'none');
$('body').trigger('focus');
}
else if ($.browser.opera) $(this).bind('mousedown', function(e) { e.stopPropagation(); });
else $(this).attr('unselectable', 'on');
});
} else {
return this.each(function() {
if ($.browser.msie || $.browser.safari) $(this).unbind('selectstart');
else if ($.browser.mozilla) $(this).css('MozUserSelect', 'inherit');
else if ($.browser.opera) $(this).unbind('mousedown');
else $(this).removeAttr('unselectable', 'on');
});
}
}; //end noSelect
}
$.fn.bcalendar = function(option) {
var def = {
newWidthGroup:0,
newWidthGroupCalculate:false,
list_eventsPerPage:0,
currentlist:{dend:"",idend:0},
cachepages:new Array(),
lastdate : "",
page:0,
numberOfMonths : 12,
/**
* @description {Config} view
* {String} Three calendar view provided, 'day','week','month'. 'week' by default.
*/
view: "nMonth",
/**
* @description {Config} weekstartday
* {Number} First day of week 0 for Sun, 1 for Mon, 2 for Tue.
*/
weekstartday: 0, //start from Sunday by default
showtooltip:false,
tooltipon:1,
shownavigate:false,
navigateurl:"",
target:0,
theme: "#"+option.paletteDefault, //theme no
/**
* @description {Config} height
* {Number} Calendar height, false for page height by default.
*/
height: false,
/**
* @description {Config} url
* {String} Url to request calendar data.
*/
url: "",
/**
* @description {Config} eventItems
* {Array} event items for initialization.
*/
eventItems: [],
method: "POST",
/**
* @description {Config} showday
* {Date} Current date. today by default.
*/
showday: new Date(),
/**
* @description {Event} onBeforeRequestData:function(stage)
* Fired before any ajax request is sent.
* @param {Number} stage. 1 for retrieving events, 2 - adding event, 3 - removiing event, 4 - update event.
*/
onBeforeRequestData: false,
/**
* @description {Event} onAfterRequestData:function(stage)
* Fired before any ajax request is finished.
* @param {Number} stage. 1 for retrieving events, 2 - adding event, 3 - removiing event, 4 - update event.
*/
onAfterRequestData: false,
/**
* @description {Event} onAfterRequestData:function(stage)
* Fired when some errors occur while any ajax request is finished.
* @param {Number} stage. 1 for retrieving events, 2 - adding event, 3 - removiing event, 4 - update event.
*/
onRequestDataError: false,
onWeekOrMonthToDay: false,
/**
* @description {Event} quickAddHandler:function(calendar, param )
* Fired when user quick adds an item. If this function is set, ajax request to quickAddUrl will abort.
* @param {Object} calendar Calendar object.
* @param {Array} param Format [{name:"name1", value:"value1"}, ...]
*
*/
quickAddHandler: false,
/**
* @description {Config} quickAddUrl
* {String} Url for quick adding.
*/
quickAddUrl: "",
/**
* @description {Config} quickUpdateUrl
* {String} Url for time span update.
*/
quickUpdateUrl: "",
/**
* @description {Config} quickDeleteUrl
* {String} Url for removing an event.
*/
quickDeleteUrl: "",
/**
* @description {Config} autoload
* {Boolean} If event items is empty, and this param is set to true.
* Event will be retrieved by ajax call right after calendar is initialized.
*/
autoload: false,
/**
* @description {Config} readonly
* {Boolean} Indicate calendar is readonly or editable
*/
readonly: false,
/**
* @description {Config} extParam
* {Array} Extra params submitted to server.
* Sample - [{name:"param1", value:"value1"}, {name:"param2", value:"value2"}]
*/
extParam: [],
/**
* @description {Config} enableDrag
* {Boolean} Whether end user can drag event item by mouse.
*/
enableDrag: true,
loadDateR: []
};
var eventDiv = $("#gridEvent"+option.thecontainer);
if (eventDiv.length == 0) {
eventDiv = $("
").appendTo(document.body);
}
var gridcontainer = $(this);
option = $.extend(def, option);
__MilitaryTime = option.militaryTime;
//no quickUpdateUrl, dragging disabled.
if (option.quickUpdateUrl == null || option.quickUpdateUrl == "") {
option.enableDrag = false;
}
if (option.rowsByCategory == "dc_subjects" || option.rowsByCategory == "dc_locations" )
option.rowsList = eval(option.rowsByCategory);
if (option.dayWithTime && option.view=="day")
option.rowsList = "";
if (option.dayWithColumns == "dc_subjects" || option.dayWithColumns == "dc_locations" )
option.columnsList = eval(option.dayWithColumns);
//template for month and date
var __SCOLLEVENTTEMP = "${data}
${starttime} ${icon} ${content} ${location}
${description}
";
var __ALLDAYEVENTTEMP = '${data}
${content}
${location}
${description}
';
var __MonthDays = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
var __LASSOTEMP = "
";
var __VIEWWEEKDAYS = option.viewWeekDays;
var __VIEWWEEKDAYSTOTAL = 0;
for (i=0;i<__VIEWWEEKDAYS.length;i++)
__VIEWWEEKDAYSTOTAL += __VIEWWEEKDAYS[i];
//for dragging var
var _dragdata;
var _dragevent;
//clear DOM
clearcontainer();
//no height specified in options, we get page height.
if (!option.height) {
option.height = document.documentElement.clientHeight;
}
//if (option.view == "day" || option.view == "week" || option.view == "nDays" || option.view == "rowMonth")
{
if (option.height/(option.hoursEnd-option.hoursStart+1)>option.cellheight)
option.cellheight = Math.ceil(option.height/(option.hoursEnd-option.hoursStart+1));
if (option.cellheight%2==1) option.cellheight++;
}
//populate events data for first display.
if (option.url && option.autoload) {
render();
var d = getRdate();
if (option.view!="list")
pushER(d.start, d.end);
populate();
}
else {
//contruct HTML
render();
//get date range
var d = getRdate();
if (option.view!="list")
pushER(d.start, d.end);
}
//clear DOM
function clearcontainer() {
gridcontainer.empty();
}
//get range
function getRdate() {
return { start: option.vstart, end: option.vend };
}
//add date range to cache.
function pushER(start, end) {
var ll = option.loadDateR.length;
if (!end) {
end = start;
}
if (ll == 0) {
option.loadDateR.push({ startdate: start, enddate: end });
}
else {
for (var i = 0; i < ll; i++) {
var dr = option.loadDateR[i];
var diff = DateDiff("d", start, dr.startdate);
if (diff == 0 || diff == 1) {
if (dr.enddate < end) {
dr.enddate = end;
}
break;
}
else if (diff > 1) {
var d2 = DateDiff("d", end, dr.startdate);
if (d2 > 1) {
option.loadDateR.splice(0, 0, { startdate: start, enddate: end });
}
else {
dr.startdate = start;
if (dr.enddate < end) {
dr.enddate = end;
}
}
break;
}
else {
var d3 = DateDiff("d", end, dr.startdate);
if (dr.enddate < end) {
if (d3 < 1) {
dr.enddate = end;
break;
}
else {
if (i == ll - 1) {
option.loadDateR.push({ startdate: start, enddate: end });
}
}
}
}
}
//end for
//clear
ll = option.loadDateR.length;
if (ll > 1) {
for (var i = 0; i < ll - 1; ) {
var d1 = option.loadDateR[i];
var d2 = option.loadDateR[i + 1];
var diff1 = DateDiff("d", d2.startdate, d1.enddate);
if (diff1 <= 1) {
d1.startdate = d2.startdate > d1.startdate ? d1.startdate : d2.startdate;
d1.enddate = d2.enddate > d1.enddate ? d2.enddate : d1.enddate;
option.loadDateR.splice(i + 1, 1);
ll--;
continue;
}
i++;
}
}
}
}
function adaptWH()
{
$(".multicalendar").each(function(){
var h = 0;
$(this).find(".ui-datepicker-group").each(function(){
if (h < ($(this).css("height").replace("px","")*1)) h = $(this).css("height").replace("px","")*1;
});
if (h!=0) $(this).find(".ui-datepicker-group").each(function(){$(this).css("height",h+"px");});
});
}
$(window).resize(function() {
adaptWH();
if (option.newWidthGroupCalculate)
{
option.newWidthGroup = 0;
render();
}
});
//contruct DOM
function render() {
//params needed
//viewType, showday, events, config
if (option.view=="list")
$("#sfprevbtn"+option.thecontainer+",#sfnextbtn"+option.thecontainer).addClass("nav_list");
else
$("#sfprevbtn"+option.thecontainer+",#sfnextbtn"+option.thecontainer).removeClass("nav_list");
if (option.mindate!="" && option.mindate>option.showday)
option.showday = option.mindate;
if (option.maxdate!="" && option.maxdate=firstdate && option.mindate<=enddate)
{
$("#sfprevbtn"+option.thecontainer).find(".ui-icon-circle-triangle-w").css({ opacity: 0.3 });
$("#sfprevbtn"+option.thecontainer).addClass("non-navigate");
}
else
{
$("#sfprevbtn"+option.thecontainer).find(".ui-icon-circle-triangle-w").css({ opacity: 1 });
$("#sfprevbtn"+option.thecontainer).removeClass("non-navigate");
}
if (option.maxdate>=firstdate && option.maxdate<=enddate)
{
$("#sfnextbtn"+option.thecontainer).find(".ui-icon-circle-triangle-e").css({ opacity: 0.3 });
$("#sfnextbtn"+option.thecontainer).addClass("non-navigate");
}
else
{
$("#sfnextbtn"+option.thecontainer).find(".ui-icon-circle-triangle-e").css({ opacity: 1 });
$("#sfnextbtn"+option.thecontainer).removeClass("non-navigate");
}
}
var showday = new Date(option.showday.getFullYear(), option.showday.getMonth(), option.showday.getDate());
var events = option.eventItems;
var config = { view: option.view, weekstartday: option.weekstartday, theme: option.theme,thecontainer: option.thecontainer };
if (option.view == "day" || option.view == "week" || option.view == "nDays" || option.view == "rowMonth") {
var $dvtec = $("#dvtec"+option.thecontainer);
if ($dvtec.length > 0) {
option.scoll = $dvtec.attr("scrollTop"); //get scroll bar position
}
}
gridcontainer.parent().parent().width("100%");
$(".gridcontainercover").attr("class","gridcontainercover view"+option.view);
switch (option.view) {
case "day":
BuildDaysAndWeekView(showday, 1, events, config);
//if (option.rowsList=="")
// gridcontainer.css("overflow-y", "visible").height(option.height - 8);
//else
gridcontainer.height("auto");
break;
case "week":
BuildDaysAndWeekView(showday, 7, events, config);
//if (option.rowsList=="")
// gridcontainer.css("overflow-y", "visible").height(option.height - 8);
//else
gridcontainer.height("auto");
break;
case "month":
BuildMonthView(showday, events, config);
gridcontainer.css("overflow-y", "visible").height(option.height - 8);
$("#gridcontainer"+option.thecontainer+" [display='0']").css("display","none");
var monthrowheight = 0;
$(".month-row").each(function() {
var st_grid_h = $(this).find(".st-grid").height()*1;
var rowh = $(this).css("height").replace("px","")*1;
if (st_grid_h>0 && rowh$(this).width())
iW=$(this).width();
});
iW +=4; //margin:1px;border:1px
var cN = (Math.floor(gW/iW)==0)?1:Math.floor(gW/iW);
var nW = Math.floor(gW/cN);
nW -=4; //margin:1px;border:1px
option.newWidthGroup = nW;
$('#nmonths'+option.thecontainer).find('.ui-datepicker-multi .ui-datepicker-group').width(nW);
}
gridcontainer.height($('#nmonths'+option.thecontainer).height());
break;
default:
alert(i18n.dcmvcal.no_implemented);
break;
}
initevents(option.view);
ResizeView(option);
if ( !(option.rowsList=="" || (option.dayWithTime && option.view=="day")) )
for (var i=0;i$("#weekViewAllDaywk"+option.thecontainer+i+" table").height())
$("#weekViewAllDaywk"+option.thecontainer+i).height(Math.round((option.height - 50)/option.rowsList.length));
}
}
function BuildYearView(showday, events, config) {
var firstdate = new Date(showday.getFullYear(), showday.getMonth(), 1);
var m = (showday.getMonth()+option.numberOfMonths)%12;
var y = showday.getFullYear()+Math.floor((showday.getMonth()+option.numberOfMonths)/12);
var enddate = new Date(y, m, 1);
enddate = DateAdd("d", -1 , enddate);
option.vstart = firstdate;
option.vend = enddate;
option.datestrshow = CalDateShow(option.vstart, option.vend);
var html = [];
html.push("");
html.push("
");
gridcontainer.html(html.join(""));
//if (events.length>0)
if (true)
{
var dates = [];
for (i=0;in)
var p = $("#gridcontainer"+option.thecontainer).previousRange().BcalGetOp();
else
var p = $("#gridcontainer"+option.thecontainer).nextRange().BcalGetOp();
if (p && p.datestrshow)
$("#txtdatetimeshow"+option.thecontainer).text(p.datestrshow);
},
beforeShowDay: function (d1){
if (__VIEWWEEKDAYS[0]==0 && d1.getDay()==0) return [true,"specialday"];
else if (__VIEWWEEKDAYS[1]==0 && d1.getDay()==1) return [true,"specialday"];
else if (__VIEWWEEKDAYS[2]==0 && d1.getDay()==2) return [true,"specialday"];
else if (__VIEWWEEKDAYS[3]==0 && d1.getDay()==3) return [true,"specialday"];
else if (__VIEWWEEKDAYS[4]==0 && d1.getDay()==4) return [true,"specialday"];
else if (__VIEWWEEKDAYS[5]==0 && d1.getDay()==5) return [true,"specialday"];
else if (__VIEWWEEKDAYS[6]==0 && d1.getDay()==6) return [true,"specialday"];
else
{
var item = d1.getFullYear()+"/"+(d1.getMonth()+1)+"/"+d1.getDate();
//alert(this.hasClass("ui-datepicker-other-month"));
if (dates[item])
return [true,"ui-state-active",dateFormat.call(d1, i18n.dcmvcal.dateformat.fulldayvalue)];
else
return [true,"ui-state-non-active",dateFormat.call(d1, i18n.dcmvcal.dateformat.fulldayvalue)];
}
}
});
if (__VIEWWEEKDAYS[0]==0) $(".ui-datepicker span[title='Sunday']").parent().css("display","none");
if (__VIEWWEEKDAYS[1]==0) $(".ui-datepicker span[title='Monday']").parent().css("display","none");
if (__VIEWWEEKDAYS[2]==0) $(".ui-datepicker span[title='Tuesday']").parent().css("display","none");
if (__VIEWWEEKDAYS[3]==0) $(".ui-datepicker span[title='Wednesday']").parent().css("display","none");
if (__VIEWWEEKDAYS[4]==0) $(".ui-datepicker span[title='Thursday']").parent().css("display","none");
if (__VIEWWEEKDAYS[5]==0) $(".ui-datepicker span[title='Friday']").parent().css("display","none");
if (__VIEWWEEKDAYS[6]==0) $(".ui-datepicker span[title='Saturday']").parent().css("display","none");
$("#nmonths"+option.thecontainer+" .ui-datepicker-other-month").attr("title","");
if (option.date_box_with_color_in_nmonth_view)
{
var height = parseInt($("#nmonths"+option.thecontainer+" .ui-state-active").css("height"));
$("#nmonths"+option.thecontainer+" .ui-state-active").each(function(){
try{
var item = datetostr(strtodate($(this).attr("title")+" 00:00"));
if (item && dates[item] && (dates[item].length>0))
{
var colors = new Array();
var html = "";
var c = "#"+option.paletteDefault;
for (var i=0;i';
var top = 0;
for (var i=0;i';
top = Math.round(height/count*(i+1));
}
html += ''+$(this).html()+'
';
html += '';
$(this).html(html);
//$(this).find("a").bind('click', function(e) {return false;});
}
}
}catch (e) {}
});
}
$("#nmonths"+option.thecontainer+" .ui-state-active a").bind('click', function(e) {
if (__VIEWWEEKDAYS[0]==0) $(".ui-datepicker span[title='Sunday']").parent().css("display","none");
if (__VIEWWEEKDAYS[1]==0) $(".ui-datepicker span[title='Monday']").parent().css("display","none");
if (__VIEWWEEKDAYS[2]==0) $(".ui-datepicker span[title='Tuesday']").parent().css("display","none");
if (__VIEWWEEKDAYS[3]==0) $(".ui-datepicker span[title='Wednesday']").parent().css("display","none");
if (__VIEWWEEKDAYS[4]==0) $(".ui-datepicker span[title='Thursday']").parent().css("display","none");
if (__VIEWWEEKDAYS[5]==0) $(".ui-datepicker span[title='Friday']").parent().css("display","none");
if (__VIEWWEEKDAYS[6]==0) $(".ui-datepicker span[title='Saturday']").parent().css("display","none");
if (option.shownavigate)
{
var item = datetostr(strtodate($(this).parents(".ui-state-active").attr("title")+" 00:00"));
var i = item.split("/");
var title = new Date(i[0],i[1]-1,i[2]);
title = dateFormat.call(title, i18n.dcmvcal.dateformat.fulldayvalue);
var navigateurl = option.navigateurl.replace(/the_current_date/g,title);
if (option.target==1)
document.location = navigateurl;
else
window.open(navigateurl);
}
e.stopPropagation();
return false;
});
function showDialogNMonth(dates,item,idover)
{
var i = item.split("/");
var titleDay = new Date(i[0],i[1]-1,i[2]);
title = dateFormat.call(titleDay, i18n.dcmvcal.dateformat.fulldayshow);
var str = "", d="", d1="",d2="", d1h="",d2h="";
var showTitle = true;
if (dates[item])
{
for (var i=0;i" + d1 + '';
if (dates[item][i][4]!=1)
//d += " " + d1h+" - "+d2h;
d += " " + d1h;
}
else
{
//if (showTitle && (d1!=title))
showTitle = false;
if (dates[item][i][4]!=1)
d = "" + d1+ "
"+d1h+" - "+d2+"
"+d2h;
else
d = "" + d1 +" - "+d2+'
';
}
if (option.readonly != true && (option.userEdit || option.userDel || ((option.userOwner==dates[item][i][12]) && (option.userEditOwner || option.userDelOwner))))
var classEdition = "dialogNMonth_event";
else
var classEdition = "";
str += '';
//if (option.readonly != true && (option.userEdit || ((option.userOwner==dates[item][i][12]) && option.userEditOwner)))
// str += '
' + i18n.dcmvcal.update_detail + ' ';
//if (option.readonly != true && (option.userDel || ((option.userOwner==dates[item][i][12]) && option.userDelOwner)))
// str += '
' + i18n.dcmvcal.i_delete + ' ';
str += '
' + d + "
"+dates[item][i][1]+"
"+((dates[item][i][9]!="" && dates[item][i][9]!=null)?"
"+dates[item][i][9]+"
":"")+((dates[item][i][11]!="" && dates[item][i][11]!="
" && dates[item][i][11]!=null)?"
"+dates[item][i][11]+"
":"") + "
";
}
if (!option.readonly && option.userAdd)
str += '';
try {$("#bbit-cs-buddle").dialog("close");}catch (e) {}
try {$(".mv_dlg_nmonth").dialog("close");}catch (e) {}
if (showTitle)
str = "" + title + "
" + str;
$(idover).html(str);
$(".mv_dlg_nmonth_date").css("font-weight","bold");
if (showTitle)
$(".mv_dlg_nmonth_date").css("display","none");
else
$(".mv_dlg_nmonth_date").css("display","inline");
try {$(idover).dialog( "option", "title", title)}catch (e) {}
for (var i=0;i");
idover = "."+idover;
$(idover).dialog({autoOpen: false ,width:option.dialogWidth,
modal: false,resizable: false,maxWidth: option.dialogWidth,fluid: true,open: function(event, ui){fluidDialog();},
position: {
my: "left top",
at: "center bottom",
collision: "fit",
of: $(idover).parent()
}
}).addClass("mv_dlg_nmonth").parent().addClass("mv_dlg") ;
$("
").appendTo($(".mv_dlg .ui-dialog-titlebar"));
showDialogNMonth(dates,item,idover);
//e.stopPropagation();
e.stopPropagation();
}).bind('mouseout',function(){
});;
}
else if (option.tooltipon==0)
{
$("#nmonths"+option.thecontainer+" .ui-state-active").bind('mouseover', function(){
if (!$(this).hasClass("ui-datepicker-other-month"))
{
$(".ui-dialog-content").remove();
$(this).append("
");
$(".myover").dialog({autoOpen: false ,width:option.dialogWidth,
modal: false,resizable: false,maxWidth: option.dialogWidth,fluid: true,open: function(event, ui){fluidDialog();},
position: {
my: "left top",
at: "center bottom",
collision: "fit",
of: $(".myover").parent()
}
}).addClass("mv_dlg_nmonth").parent().addClass("mv_dlg");
$("
").appendTo($(".mv_dlg .ui-dialog-titlebar"));
try { var item = datetostr(strtodate($(this).attr("title")+" 00:00"));showDialogNMonth(dates,item,".myover"); }catch (e) {}
}
}).bind('mouseout',function(){
});
}
$(".mv_dlg_nmonth").remove();
}
}
return;
}
//build list view
function BuildListView(startday, l, events, config) {
option.allevents = events.slice();
if (!option.theme_list || option.theme_list=="")
option.theme_list = '${date_start}
${time_start} - ${time_end}
${date_start} - ${date_end}
${date_start}
${time_start}
-
${date_end}
${time_end}
${title}
${location}
${description}
${edit_link}
${delete_link}
';
option.theme_list = option.theme_list.replace(/\n/g,"");
option.theme_list = option.theme_list.replace(/\r/g,"");
if (!option.header) option.header="";
if (!option.footer) option.footer="";
if (!option.find) option.find="";
var header = option.theme_list.match("");
if (header && header.length>1) option.header = header[1];
option.theme_list = option.theme_list.replace(/(.*)<\/header>/,"");
var find = option.theme_list.match("(.*) ");
if (find && find.length>1) option.find = find[1].split(",");
option.theme_list = option.theme_list.replace(/(.*)<\/find>/,"");
var footer = option.theme_list.match("(.*)<\/footer>");
if (footer && footer.length>1) option.footer = footer[1];
option.theme_list = option.theme_list.replace(/(.*)<\/footer>/,"");
option.vstart = startday;
option.vend = startday;
var p = {};
var html = [];
if (option.searchvalue== undefined)
option.searchvalue = "";
html.push("
");
html.push("");
function showList()
{
//var events = events1.splice(0);
if (option.searchvalue!= undefined && option.searchvalue!="")
for (var i = events.length-1; (i>=0);i--)
if (events[i][1].toLowerCase().indexOf(option.searchvalue)==-1 && events[i][9].toLowerCase().indexOf(option.searchvalue)==-1 && (events[i][11]==null || events[i][11].toLowerCase().indexOf(option.searchvalue)==-1))
events.splice(i, 1);
var str = "";
var eNumber = 0;
var noShow = false;
if (option.cachepages.length>option.page)
{
return option.cachepages[option.page];
}
else
{
for (var i = 0; (i
" && events[i][11]!=null)
{
if (option.list_readmore_numberofwords==0)
description = events[i][11];
else
{
var val = $.trim(events[i][11]), // Remove spaces from b/e of string
val = $("
").html(val).text();
words = val.replace(/\s+/gi, ' ').split(' '); // word-splits
if (words.length>option.list_readmore_numberofwords)
{
val = "";
for (var w=0;w
'+i18n.dcmvcal.readmore+' ';
description += '';
}
else
{
val = events[i][11];
description = events[i][11];
}
}
}
p.id = events[i][0];
p.color = ((events[i][7]!=-1 && events[i][7]!=null)?events[i][7]:"#"+option.paletteDefault);
p.title = events[i][1];
p.location = (events[i][9]!="" && events[i][9]!=null)?events[i][9]:"";
p.description = description;
p.edit_link = "";
p.delete_link = "";
if (option.readonly != true && (option.userEdit || option.userDel || ((option.userOwner==events[i][12]) && (option.userEditOwner || option.userDelOwner))))
{
if (option.userDel || ((option.userOwner==events[i][12]) && (option.userDelOwner)))
{
///no delete from recurring events
if (!(events[i][6]!="" && events[i][6] != null && events[i][6] != undefined))
p.edit_link = ""+i18n.dcmvcal.update_detail+" ";
}
if (option.userEdit || ((option.userOwner==events[i][12]) && (option.userEditOwner)))
p.delete_link = ""+i18n.dcmvcal.i_delete+" ";
}
if ((i==0) && (option.header!="")) str = '';
eNumber++;
var therule = (events[i][6]!="" && events[i][6] != null && events[i][6] != undefined)
if (option.lastdate!="" && ((!therule && events[i][0]==option.currentlist.idend) || (therule && events[i][2].toString()==option.currentlist.dend.toString())))
{
eNumber = 0;
str = "";
if (option.header!="") str = '';
noShow = true;
}
if (eNumber<=option.list_eventsPerPage && (!noShow))
{
var str1 = Tp(option.theme_list, p);
str1 = ''+str1+'
';
for (var k=0;k0)
{
option.currentlist = {dend:events[eMax][2],idend:events[eMax][0]};
str +='';
}
if (str!="")
option.cachepages[option.page] = str;
return str;
}
}
html.push(showList());
html.push("");
option.datestrshow = " ";
gridcontainer.html(html.join(""));
$("#gridcontainer"+option.thecontainer).find(".searchcontainer input").keyup(function() {
option.searchvalue = $(this).val().toLowerCase();
option.page = 0;
option.lastdate = "";
option.currentlist = {dend:"",idend:0};
option.cachepages = new Array();
events = option.allevents.slice();
$("#listcontainer"+config.thecontainer).html(showList());
showevents();
return false;
});
function showevents()
{
$("#gridcontainer"+option.thecontainer).find(".ev_item_data").each(function(){
$(this).data("cdata", events[$(this).attr("i")*1]);
});
// bud.data("cdata", data);//ev_item_data
$("#gridcontainer"+option.thecontainer).find(".delete_link_ev").click(function() {
var data = $(this).parents(".ev_item_data").data("cdata");
if (option.DeleteCmdhandler && $.isFunction(option.DeleteCmdhandler)) {
option.page = 0;
option.lastdate = "";
option.currentlist = {dend:"",idend:0};
option.cachepages = new Array();
option.DeleteCmdhandler.call(this, data, quickd);
}
return false;
});
$("#gridcontainer"+option.thecontainer).find(".edit_link_ev").click(function(e) {
if (!option.EditCmdhandler) {
alert("EditCmdhandler" + i18n.dcmvcal.i_undefined);
}
else {
if (option.EditCmdhandler && $.isFunction(option.EditCmdhandler)) {
option.page = 0;
option.lastdate = "";
option.currentlist = {dend:"",idend:0};
option.cachepages = new Array();
var data = $(this).parents(".ev_item_data").data("cdata");
option.EditCmdhandler.call(this, data);
}
}
return false;
});
$("#gridcontainer"+option.thecontainer).find("#listprevbtn"+option.thecontainer).click(function(){
if (!$(this).hasClass("listbtndisabled"))
$("#gridcontainer"+option.thecontainer).previousRange().BcalGetOp();
return false;
})
$("#gridcontainer"+option.thecontainer).find("#listnextbtn"+option.thecontainer).click(function(){
if (!$(this).hasClass("listbtndisabled"))
$("#gridcontainer"+option.thecontainer).nextRange().BcalGetOp();
return false;
})
$("#gridcontainer"+option.thecontainer).find("#listcontainer"+option.thecontainer).find(".list_event_date").each(function(){
if ($(this).attr("option")!="11" && $(this).attr("option")!="22" && $(this).attr("option")!="33" && $(this).attr("option")!="44")
$(this).css("display","none");
})
$("#gridcontainer"+option.thecontainer).find("#listcontainer"+option.thecontainer).find(".readmore").click(function(){
if ($(this).parent().parent().attr("readmore_url")=="")
{
if ($(this).hasClass("short"))
{
$(this).parent().parent().find(".description_short").css("display","none");
$(this).parent().parent().find(".description_large").css("display","block");
}
else
{
$(this).parent().parent().find(".description_short").css("display","block");
$(this).parent().parent().find(".description_large").css("display","none");
}
}
else
{
document.location = $(this).parent().parent().attr("readmore_url");
}
return false;
})
}
showevents();
html = null;
}
//build day view
function BuildDaysAndWeekView(startday, l, events, config) {
var days = [];
if (l == 1) {
var show = dateFormat.call(startday, i18n.dcmvcal.dateformat.Md);
days.push({ display: show, date: startday, day: startday.getDate(), year: startday.getFullYear(), month: startday.getMonth() + 1 });
option.datestrshow = CalDateShow(days[0].date);
option.vstart = days[0].date;
option.vend = days[0].date;
}
else {
var w = 0;
if (l == 7) {
w = config.weekstartday - startday.getDay();
if (w > 0) w = w - l;
var formatdate = i18n.dcmvcal.dateformat.Md;
}
else if (option.view=='rowMonth')
var formatdate = i18n.dcmvcal.dateformat.day;
else
var formatdate = i18n.dcmvcal.dateformat.nDaysView;
var ndate;
for (var i = w, j = 0; j < l; i = i + 1, j++) {
ndate = DateAdd("d", i, startday);
var show = dateFormat.call(ndate, formatdate);
days.push({ display: show, date: ndate, day: ndate.getDate(), year: ndate.getFullYear(), month: ndate.getMonth() + 1 });
}
option.vstart = days[0].date;
option.vend = days[l - 1].date;
option.datestrshow = CalDateShow(days[0].date, days[l - 1].date);
}
var allDayEvents = [];
var scollDayEvents = [];
var html = [];
html.push("");
html.push("
");
if (option.columnsList!="" && option.view=="day") //draw columns
{
html.push(""+days[0].display+" ");
for (var i=0;i", option.columnsList[i], "
");
}
html.push(" ");
}
else if (option.rowsList=="" || (option.dayWithTime && option.view=="day"))
{
html.push(" ");
BuildWTHeader(html, days);
html.push(" ");
}
else ////draw rows
{
html.push(" ");
BuildWTHeader(html, days);
html.push(" ");
}
if (option.rowsList=="" || (option.dayWithTime && option.view=="day"))
{
var dM = PropareEvents(days, events, allDayEvents, scollDayEvents,"");
if (option.columnsList!="" && option.view=="day") //draw columns
{
html.push(" ");
BuildWTBodyDayWithCol(html, days, allDayEvents, dM,config,0);
}
else
{
html.push("");
BuildWTBody(html, days, allDayEvents, dM,config,"");
}
}
else ////draw rows
{
var dayarrs = days;
for (var ii=0;ii"+option.rowsList[ii]+" ");
var dM = PropareEvents(days, events, allDayEvents, scollDayEvents,option.rowsList[ii],"");
var dMax = dM;
var sufix = ii;
if (option.columnsList!="" && option.view=="day") //draw columns
{
BuildWTBodyDayWithCol(html, days, allDayEvents, dM,config,ii);
}
else
{
BuildWTBody(html, days, allDayEvents, dM,config,ii,"");
}
}
}
html.push("
");
html.push("
");
if (option.rowsList=="" || (option.dayWithTime && option.view=="day"))
{
html.push("");
html.push("");
BuildDayScollEventheader(html, days, scollDayEvents,config);
if (option.columnsList!="" && option.view=="day") //draw columns
BuildDayScollEventbodyWithCol(html, days, scollDayEvents,config);
else
BuildDayScollEventbody(html, days, scollDayEvents,config);
html.push("
");
}
gridcontainer.html(html.join(""));
html = null;
}
//build month view
function BuildMonthView(showday, events, config) {
var cc = "";
var html = [];
html.push(cc);
//build header
html.push("");
html.push("
");
for (var i = config.weekstartday, j = 0; j < 7; i++, j++) {
if (i > 6) i = 0;
var p = { dayname: __WDAY[i] };
if (__VIEWWEEKDAYS[i]!=0)
html.push("", __WDAY[i], "");
}
html.push("
");
html.push("
");
var bH = GetMonthViewBodyHeight() - GetMonthViewHeaderHeight();
html.push("");
BuilderMonthBody(html, showday, config.weekstartday, events, bH,config);
html.push("
");
gridcontainer.html(html.join(""));
html = null;
$("#cal-month-closebtn"+config.thecontainer).click(closeCc);
}
function closeCc() {
$("#cal-month-cc"+option.thecontainer).css("visibility", "hidden");
}
//all-day event, including more-than-one-day events
function PropareEvents(dayarrs, events, aDE, sDE,filter) {
var l = dayarrs.length;
var el = events.length;
var fE = [];
var deB = aDE;
var deA = sDE;
var startRange = dayarrs[0].date;
var endRange = dayarrs[dayarrs.length-1].date;
endRange = new Date(endRange.getFullYear(),endRange.getMonth(),endRange.getDate(),23,59,59);
for (var j = 0; j < el; j++) {
var sD = events[j][2];
var eD = events[j][3];
var diff = DateDiff("d", sD, eD);
if (diff > 0 && !(events[j][4] == 1) && !(option.rowsList.length>0 && option.view=="week") ) {//Fixed bug related to week view with rows and not all day events //added && !(option.rowsList.length>0 && option.view=="week")
if (sD < startRange) { //start date out of range
sD = startRange;
}
if (eD > endRange) { //end date out of range
eD = endRange;
}
var stmp = sD;
for (sD;sD<=eD;sD = DateAdd("d", 1, sD))
{
var s = {};
s.event = events[j];
s.day = sD.getDate();
s.year = sD.getFullYear();
s.month = sD.getMonth() + 1;
if (option.rowsList=="" || (option.dayWithTime && option.view=="day"))
s.allday = events[j][4] == 1;
else
s.allday = 1;
s.crossday = events[j][5] == 1;
s.reevent = events[j][6];// == 1; //Recurring event
s.daystr = [s.year, s.month, s.day].join("/");
s.noResizer = true;
s.st = {};
if (sD>events[j][2])
{
s.st.hour = 0;
s.st.minute = 0;
s.noStarttime = true;
}
else
{
s.st.hour = sD.getHours();
s.st.minute = sD.getMinutes();
}
s.st.p = s.st.hour * 60 + s.st.minute; // start time
s.et = {};
if (DateAdd("d", 1, sD)=option.hoursStart) && (s.st.hour<=option.hoursEnd) ))
//if ( filter=="" || (filter!="" && ((option.rowsByCategory=="dc_locations" && events[j][9]==filter) || (option.rowsByCategory=="dc_subjects" && events[j][1]==filter)) ) )
fE.push(s);
}
}
else
{
var s = {};
s.event = events[j];
s.day = sD.getDate();
s.year = sD.getFullYear();
s.month = sD.getMonth() + 1;
if (option.rowsList=="" || (option.dayWithTime && option.view=="day"))
s.allday = events[j][4] == 1;
else
s.allday = 1;
s.crossday = events[j][5] == 1;
s.reevent = events[j][6];// == 1; //Recurring event
s.daystr = [s.year, s.month, s.day].join("/");
s.st = {};
s.st.hour = sD.getHours();
s.st.minute = sD.getMinutes();
s.st.p = s.st.hour * 60 + s.st.minute; // start time
s.et = {};
s.et.hour = eD.getHours();
s.et.minute = eD.getMinutes();
s.et.p = s.et.hour * 60 + s.et.minute; // end time
if (s.allday || ( (s.st.hour>=option.hoursStart) && (s.st.hour<=option.hoursEnd) ))
if ( filter=="" || (filter!="" && ((option.rowsByCategory=="dc_locations" && events[j][9]==filter) || (option.rowsByCategory=="dc_subjects" && events[j][1]==filter)) ) )
fE.push(s);
}
}
var dMax = 0;
for (var i = 0; i < l; i++) {
var da = dayarrs[i];
deA[i] = []; deB[i] = [];
da.daystr = da.year + "/" + da.month + "/" + da.day;
for (var j = 0; j < fE.length; j++) {
if (!fE[j].crossday && !fE[j].allday) {
if (da.daystr == fE[j].daystr)
deA[i].push(fE[j]);
}
else {
if (da.daystr == fE[j].daystr) {
deB[i].push(fE[j]);
dMax++;
}
else {
if (i == 0 && da.date >= fE[j].event[2] && da.date <= fE[j].event[3])//first more-than-one-day event
{
deB[i].push(fE[j]);
dMax++;
}
}
}
}
}
var lrdate = dayarrs[l - 1].date;
for (var i = 0; i < l; i++) { //to deal with more-than-one-day event
var de = deB[i];
if (de.length > 0) { //
for (var j = 0; j < de.length; j++) {
var end = DateDiff("d", lrdate, de[j].event[3]) > 0 ? lrdate : de[j].event[3];
de[j].colSpan = 0;
for (var x=dayarrs[i].date;x<=end;x=DateAdd("d", 1, x))
de[j].colSpan += __VIEWWEEKDAYS[x.getDay()];
//de[j].colSpan = DateDiff("d", dayarrs[i].date, end) + 1;
}
}
de = null;
}
//for all-day events
for (var i = 0; i < l; i++) {
var de = deA[i];
if (de.length > 0) {
var x = [];
var y = [];
var D = [];
var dl = de.length;
var Ia;
for (var j = 0; j < dl; ++j) {
var ge = de[j];
for (var La = ge.st.p, Ia = 0; y[Ia] > La; ) Ia++;
ge.PO = Ia; ge.ne = []; //PO is how many events before this one
y[Ia] = ge.et.p || 1440;
x[Ia] = ge;
if (!D[Ia]) {
D[Ia] = [];
}
D[Ia].push(ge);
if (Ia != 0) {
ge.pe = [x[Ia - 1]]; //previous event
x[Ia - 1].ne.push(ge); //next event
}
for (Ia = Ia + 1; y[Ia] <= La; ) Ia++;
if (x[Ia]) {
var k = x[Ia];
ge.ne.push(k);
k.pe.push(ge);
}
ge.width = 1 / (ge.PO + 1);
ge.left = 1 - ge.width;
}
var k = Array.prototype.concat.apply([], D);
x = y = D = null;
var t = k.length;
for (var y = t; y--; ) {
var H = 1;
var La = 0;
var x = k[y];
for (var D = x.ne.length; D--; ) {
var Ia = x.ne[D];
La = Math.max(La, Ia.VL);
H = Math.min(H, Ia.left)
}
x.VL = La + 1;
x.width = H / (x.PO + 1);
x.left = H - x.width;
}
for (var y = 0; y < t; y++) {
var x = k[y];
x.left = 0;
if (x.pe) for (var D = x.pe.length; D--; ) {
var H = x.pe[D];
x.left = Math.max(x.left, H.left + H.width);
}
var p = (1 - x.left) / x.VL;
x.width = Math.max(x.width, p);
x.aQ = Math.min(1 - x.left, x.width + 0.7 * p); //width offset
}
de = null;
deA[i] = k;
}
}
return dMax;
}
function BuildWTHeader(ht, dayarrs) {
//1:
//ht.push("", " ");
for (var i = 0; i < dayarrs.length; i++) {
var ev, title, cl;
if (dayarrs.length == 1) {
ev = "";
title = "";
cl = "";
}
else {
ev = ""; // "onclick=\"javascript:FunProxy('week2day',event,this);\"";
title = i18n.dcmvcal.to_date_view;
cl = "wk-daylink";
}
if (dayarrs.length == 1 || __VIEWWEEKDAYS[dayarrs[i].date.getDay()])
ht.push("", dayarrs[i].display, "
");
}
//ht.push(" ");
//ht.push(" "); //end tr1;
}
function BuildWTBodyDayWithCol(ht, dayarrs, events, dMax,config,sufix) {
var xx = sufix;
ht.push("");
sufix = ' row="'+sufix+'"';
if (dMax == 0) {
ht.push("");
for (var i=0;i ");
ht.push(" ");
}
else {
var l = events.length;
var el = 0;
var x = [];
for (var j = 0; j < l; j++) {
x.push(0);
}
var ev = new Array();
var evlength = 0;
for (var j = 0; ((el < dMax) && (j < dMax)); j++) {
for (var h = 0; h < l; ) {
var e = events[h][x[h]];
for (var ii=0;ii"+ t + "";;
if (ev[ii].length > evlength)
evlength = ev[ii].length;
el++;
}
}
}
h++;
}
}
for (var j = 0; j < evlength; j++)
{
ht.push("");
for (var ii=0;ii ");
ht.push("");
}
ht.push(" ");
for (var ii=0;ii ");
}
ht.push(" ");
}
ht.push("
"); // stgrid end //wvAd end //td2 end //tr2 end
//3:
ht.push("");
ht.push(" 1) {
if (option.view == "week")
ht.push(" colSpan='",__VIEWWEEKDAYSTOTAL+2, "'");
else
ht.push(" colSpan='",option.nOfDays+2, "'");
}
ht.push("> ");
ht.push(" ");
}
function BuildWTBody(ht, dayarrs, events, dMax,config,sufix) {
//2:
var sufixIndex = sufix;
ht.push(" 1) {
if (option.view == "week")
ht.push(" colSpan='",__VIEWWEEKDAYSTOTAL, "'"); //dayarrs.length
else
ht.push(" colSpan='",option.nOfDays, "'"); //dayarrs.length
}
//onclick=\"javascript:FunProxy('rowhandler',event,this);\"
ht.push(">");
sufix = ' row="'+sufix+'"';
if (dMax == 0) {
ht.push("");
for (var i = 0; i < dayarrs.length; i++) {
if (__VIEWWEEKDAYS[i]!=0)
ht.push(" ");
}
ht.push(" ");
}
else {
var l = events.length;
var el = 0;
var x = [];
for (var j = 0; j < l; j++) {
x.push(0);
}
//var c = tc();
var rowsByCategoryArray = new Array();
for (var j = 0; ((el < dMax) && (j < dMax)); j++) {
ht.push("");
for (var h = 0; h < l; ) {
var e = events[h][x[h]];
var tmp_h = h;
if (__VIEWWEEKDAYS[((dayarrs[tmp_h].date.getDay())%option.nOfDays)]!=0) ht.push("", t);
t = null;
el++;
}
else {
if (__VIEWWEEKDAYS[((dayarrs[tmp_h].date.getDay())%option.nOfDays)]!=0) ht.push(" st-s' ch='qkadd' abbr='", dateFormat.call(dayarrs[h].date, "M/d/yyyy"), "' axis='00:00'> ");
h++;
}
if (__VIEWWEEKDAYS[((dayarrs[tmp_h].date.getDay())%option.nOfDays)]!=0) ht.push(" ");
}
ht.push(" ");
}
ht.push("");
for (var h = 0; h < l; h++) {
if (__VIEWWEEKDAYS[((dayarrs[h].date.getDay())%option.nOfDays)]!=0)
ht.push(" ");
}
ht.push(" ");
}
ht.push("
"); // stgrid end //wvAd end //td2 end //tr2 end
//3:
ht.push("");
ht.push(" 1) {
if (option.view == "week")
ht.push(" colSpan='",__VIEWWEEKDAYSTOTAL+2, "'");
else
ht.push(" colSpan='",option.nOfDays+2, "'");
}
ht.push("> ");
ht.push(" ");
}
function BuildDayScollEventheader(ht, dayarrs, events,config) {
//1:
ht.push("");
ht.push(" ");
ht.push(" 1) {
if (option.view == "week")
ht.push(" colSpan='",__VIEWWEEKDAYSTOTAL, "'");
else
ht.push(" colSpan='",option.nOfDays, "'");
}
else if (option.columnsList!="" && option.view=="day")
ht.push(" colSpan='",option.columnsList.length, "'");
ht.push(" >");
var hh = (option.cellheight/2) ;
for (var i = option.hoursStart; i <= option.hoursEnd; i++) {
//for (var i = 0; i < 24; i++) {
ht.push("
");
}
ht.push("
");
//2:
ht.push("");
ht.push("");
//get current time
var now = new Date(); var h = now.getHours(); var m = now.getMinutes();
var mHg = gP(h, m) - 4; //make middle alignment vertically
ht.push("
");
var tmt = "";
for (var i = option.hoursStart; i <= option.hoursEnd; i++) {
tmt = fomartTimeAMPM(i,0,__MilitaryTime);
ht.push("", tmt, "
");
}
ht.push(" ");
}
function BuildDayScollEventbody(ht, dayarrs, events,config) {
var now = new Date(); var h = now.getHours(); var m = now.getMinutes();
var mHg = gP(h, m) - 4; //make middle alignment vertically
var l = dayarrs.length;
for (var i = 0; i < l; i++)
{
if (__VIEWWEEKDAYS[dayarrs[i].date.getDay()]!=0)
{
ht.push("");
var istoday = dateFormat.call(dayarrs[i].date, "yyyyMMdd") == dateFormat.call(new Date(), "yyyyMMdd");
// Today
if (istoday) {
ht.push("
");
}
//var eventC = $(eventWrap);
//onclick=\"javascript:FunProxy('rowhandler',event,this);\"
ht.push("");
BuildEvents(ht, events[i], dayarrs[i]);
ht.push("
");
ht.push("");
if (istoday) {
var mhh = mHg + 4;
ht.push("
");
}
ht.push("
");
ht.push(" ");
}
}
ht.push(" ");
}
function BuildDayScollEventbodyWithCol(ht, dayarrs, events,config) {
var i = 0;
//for (var j = 0; j < events[i].length; j++)
// alert(events[i][j].event[1]+"--------"+events[i][j].event[9]);
var now = new Date(); var h = now.getHours(); var m = now.getMinutes();
var mHg = gP(h, m) - 4; //make middle alignment vertically
var l = dayarrs.length;
var i = 0;
{
for (var ii=0;ii");
var istoday = dateFormat.call(dayarrs[i].date, "yyyyMMdd") == dateFormat.call(new Date(), "yyyyMMdd");
// Today
if (istoday) {
ht.push("
");
}
ht.push("");
var eventbyColumns = new Array();
for (var j = 0; j < events[i].length; j++)
{
var e = events[i][j];
e.left = 0;
e.aQ = 1;
//alert(e);
if ( ((option.dayWithColumns=="dc_locations" && e.event[9]==option.columnsList[ii]) || (option.dayWithColumns=="dc_subjects" && e.event[1]==option.columnsList[ii])) )
eventbyColumns[eventbyColumns.length] = e;
}
BuildEvents(ht, eventbyColumns, dayarrs[i]);
ht.push("
");
ht.push("");
if (istoday) {
var mhh = mHg + 4;
ht.push("
");
}
ht.push("
");
ht.push("");
}
}
ht.push("");
}
//show events to calendar
function BuildEvents(hv, events, sday) {
for (var i = 0; i < events.length; i++) {
var c;
//if (events[i].event[7] && events[i].event[7] >= 0) {
c = tc(events[i].event[7]); //theme
//}
//else {
// c = tc(); //default theme
//}
var tt = BuildDayEvent(c, events[i], i);
hv.push(tt);
}
}
function getTitle(event) {
var timeshow, locationshow, attendsshow, eventshow;
var showtime = event[4] != 1;
eventshow = event[1];
var startformat = getymformat(event[2], null, showtime, true);
var endformat = getymformat(event[3], event[2], showtime, true);
timeshow = dateFormat.call(event[2], startformat) + " - " + dateFormat.call(event[3], endformat);
locationshow = (event[9] != undefined && event[9] != "") ? ($.browser.mozilla?"":"\r\n")+i18n.dcmvcal.location + ":" + event[9] : "";
attendsshow = (event[10] != undefined && event[10] != "") ? event[10] : "";
var ret = [];
if (event[4] == 1) {
ret.push("[" + i18n.dcmvcal.allday_event + "]",$.browser.mozilla?"":"\r\n" );
}
else {
if (event[5] == 1) {
ret.push("[" + i18n.dcmvcal.repeat_event + "]",$.browser.mozilla?"":"\r\n");
}
}
ret.push(i18n.dcmvcal.time + ":", timeshow, $.browser.mozilla?"":"\r\n", i18n.dcmvcal.event + ":", eventshow, locationshow);
if (attendsshow != "") {
ret.push($.browser.mozilla?"":"\r\n", i18n.dcmvcal.participant + ":", attendsshow);
}
return ret.join("");
}
function BuildDayEvent(theme, e, index) {
var p = { bdcolor: theme[0], bgcolor2: theme[0], bgcolor1: theme[2], width: "70%", icon: "", title: "", data: "" };
if (e.noStarttime)
p.starttime = "";
else
p.starttime = fomartTimeAMPM(e.st.hour,e.st.minute,__MilitaryTime);
if (e.noResizer)
p.endtime = "";
else
p.endtime = fomartTimeAMPM(e.et.hour,e.et.minute,__MilitaryTime);
p.content = e.event[1];
p.title = getTitle(e.event);
p.data = e.event.join("$*$");
var icons = [];
icons.push(" ");
if (e.reevent) {
icons.push(" ");
}
p.icon = icons.join("");
var sP = gP(e.st.hour, e.st.minute);
var eP = gP(e.et.hour, e.et.minute);
p.top = sP + "px";
p.left = (e.left * 100) + "%";
p.width = (e.aQ * 100) + "%";
if (eP==0 && sP>0)
p.height = (sP - 4);
else
p.height = (eP - sP - 4);
p.i = index;
if (option.enableDrag && (option.readonly != true && (option.userEdit || ((option.userOwner==e.event[12]) && option.userEditOwner ))) && e.event[8] == 1 && !e.noResizer) {
p.drag = "drag";
p.redisplay = "block";
}
else {
p.drag = "";
p.redisplay = "none";
}
p.userEdition = ( ((option.userOwner==e.event[12]) && (option.userEditOwner || option.userDelOwner))?"uEdition":"" );
p.location = (e.event[9]!=null)?e.event[9]:"";
p.description = (e.event[11]!=null)?e.event[11]:"";
var newtemp = Tp(__SCOLLEVENTTEMP, p);
p = null;
return newtemp;
}
//get body height in month view
function GetMonthViewBodyHeight() {
return option.height;
}
function GetMonthViewHeaderHeight() {
return 26;
}
function BuilderMonthBody(htb, showday, startday, events, bodyHeight,config) {
var firstdate = new Date(showday.getFullYear(), showday.getMonth(), 1);
var diffday = startday - firstdate.getDay();
var showmonth = showday.getMonth();
if (diffday > 0) {
diffday -= 7;
}
var startdate = DateAdd("d", diffday, firstdate);
var enddate = DateAdd("d", 34, startdate);
var rc = 5;
if (enddate.getFullYear() == showday.getFullYear() && enddate.getMonth() == showday.getMonth() && enddate.getDate() < __MonthDays[showmonth]) {
enddate = DateAdd("d", 7, enddate);
rc = 6;
}
option.vstart = startdate;
option.vend = enddate;
var themonth = DateAdd("d", 15, startdate);
option.datestrshow = __MonthNameLarge[themonth.getMonth()]+" "+themonth.getFullYear() ;//CalDateShow(startdate, enddate);
bodyHeight = bodyHeight - 18 * rc;
var rowheight = bodyHeight / rc;
var roweventcount = parseInt(rowheight / (option.cellheight/2) /*21*/);
if (rowheight % (option.cellheight/2) /*21*/ > 15) {
roweventcount++;
}
if (roweventcount==0) roweventcount++;
var p = 100 / rc;
var formatevents = [];
var hastdata = formartEventsInHashtable(events, startday, 7, startdate, enddate);
var B = [];
var C = [];
for (var j = 0; j < rc; j++) {
var k = 0;
formatevents[j] = b = [];
for (var i = 0; i < 7; i++) {
var newkeyDate = DateAdd("d", j * 7 + i, startdate);
C[j * 7 + i] = newkeyDate;
var newkey = dateFormat.call(newkeyDate, "MMddyyyy");
b[i] = hastdata[newkey];
if (b[i] && b[i].length > 0) {
k += b[i].length;
}
}
B[j] = k;
}
//var c = tc();
eventDiv.data("mvdata", formatevents);
for (var j = 0; j < rc; j++) {
//onclick=\"javascript:FunProxy('rowhandler',event,this);\"
htb.push("");
htb.push("
");
var dMax = B[j];
for (var iweek = config.weekstartday,i = 0; i < 7; iweek++,i++) {
if (iweek > 6) iweek = 0;
var day = C[j * 7 + i];
if (__VIEWWEEKDAYS[iweek]!=0)
{
htb.push("");
}
else {
htb.push(" class=\"st-bg\">");
}
htb.push(" ");
}
}
//bgtable
htb.push("
");
//stgrid
htb.push("
");
//title tr
htb.push("");
var titletemp = "${dayshow} ";
for (var i = 0; i < 7; i++) {
var o = { titleClass: "", dayshow: "", display:__VIEWWEEKDAYS[(startday+i)%7]+"i"+i };
var day = C[j * 7 + i];
if (dateFormat.call(day, "yyyyMMdd") == dateFormat.call(new Date(), "yyyyMMdd")) {
o.titleClass = " st-dtitle-today";
}
if (day.getMonth() != showmonth) {
o.titleClass = " st-dtitle-nonmonth";
}
o.title = dateFormat.call(day, i18n.dcmvcal.dateformat.fulldayshow);
if (day.getDate() == 1) {
if (day.getMonth == 0) {
o.dayshow = dateFormat.call(day, i18n.dcmvcal.dateformat.fulldayshow);
}
else {
o.dayshow = dateFormat.call(day, i18n.dcmvcal.dateformat.Md3);
}
}
else {
o.dayshow = day.getDate();
}
o.abbr = dateFormat.call(day, "M/d/yyyy");
if (__VIEWWEEKDAYS[(startday+i)%7]!=0)
htb.push(Tp(titletemp, o));
}
htb.push(" ");
var sfirstday = C[j * 7];
BuildMonthRow(htb, formatevents[j], dMax, roweventcount, sfirstday,startday);
//htb=htb.concat(rowHtml); rowHtml = null;
htb.push("
");
//month-row
htb.push("
");
}
formatevents = B = C = hastdata = null;
//return htb;
}
//formate datetime
function formartEventsInHashtable(events, startday, daylength, rbdate, redate) {
var hast = new Object();
var l = events.length;
for (var i = 0; i < l; i++) {
var sD = events[i][2];
var eD = events[i][3];
var diff = DateDiff("d", sD, eD);
var s = {};
s.event = events[i];
s.day = sD.getDate();
s.year = sD.getFullYear();
s.month = sD.getMonth() + 1;
s.allday = events[i][4] == 1;
s.crossday = events[i][5] == 1;
s.reevent = events[i][6];// == 1; //Recurring event
s.daystr = s.year + "/" + s.month + "/" + s.day;
s.st = {};
s.st.hour = sD.getHours();
s.st.minute = sD.getMinutes();
s.st.p = s.st.hour * 60 + s.st.minute; // start time position
s.et = {};
s.et.hour = eD.getHours();
s.et.minute = eD.getMinutes();
s.et.p = s.et.hour * 60 + s.et.minute; // end time postition
if (diff > 0) {
if (sD < rbdate) { //start date out of range
sD = rbdate;
}
if (eD > redate) { //end date out of range
eD = redate;
}
var f = startday - sD.getDay();
if (f > 0) { f -= daylength; }
sD = new Date(sD.getFullYear(), sD.getMonth(), sD.getDate());
var sdtemp = DateAdd("d", f, sD);
for (; sdtemp <= eD; sD = sdtemp = DateAdd("d", daylength, sdtemp)) {
var d = Clone(s);
while (!__VIEWWEEKDAYS[sD.getDay()] && sdtemp <= eD)
{
sD = DateAdd("d", 1, sD);
}
var key = dateFormat.call(sD, "MMddyyyy");
var x = DateDiff("d", sdtemp, eD);
var y = DateDiff("d", sdtemp, sD);
if (hast[key] == null) {
hast[key] = [];
}
//d.colSpan = (x >= daylength) ? daylength - DateDiff("d", sdtemp, sD) : DateDiff("d", sD, eD) + 1;
if (x >= daylength)
{
if (y==0)
d.colSpan = __VIEWWEEKDAYSTOTAL
else
{
var sdtemp2 = DateAdd("d", daylength, sdtemp);
d.colSpan = 0;
for (var x=sD;x 0)
hast[key].push(d);
d = null;
}
}
else {
var key = dateFormat.call(events[i][2], "MMddyyyy");
if (hast[key] == null) {
hast[key] = [];
}
s.colSpan = 1;
hast[key].push(s);
}
s = null;
}
return hast;
}
function BuildMonthRow(htr, events, dMax, sc, day,startday) {
var x = [];
var y = [];
var z = [];
var cday = [];
if (__VIEWWEEKDAYSTOTAL!=events.length)
{
var clone = __VIEWWEEKDAYS.slice(0);
var clone_start = clone.splice(0,startday);
clone = clone.concat(clone_start);
for (var i=6;i>=0;i--)
if (clone[i]==0)
events.splice(i,1);
}
var l = events.length;
var maxEventsRow = 0;
for (var i=0;i 1) {
for (var m = 1; m < e.colSpan; m++) {
y[j + m]++;
}
}
}
}
//var htr=[];
var tdtemp = "${html} ";
var tmp_h = 0;
for (var j = 0; j < sc && el < dMax; j++) {
htr.push("");
//var gridtr = $(__TRTEMP);
for (var h = 0; h < l; ) {
var cdisplay = 0;
var e = events[h] ? events[h][x[h]] : undefined;
var tempdata = { "class": "", axis: "", ch: "", title: "", abbr: "", html: "", otherAttr: "", click: "javascript:void(0);" };
var tempCss = ["st-c"];
if (e)
{
x[h] = x[h] + 1;
//last event of the day
var bs = false;
if (z[h] + 1 == y[h] && e.colSpan == 1) {
bs = true;
}
if (!bs && j == (sc - 1) && z[h] < y[h]) {
el++;//here
$.extend(tempdata, { "axis": h, ch: "more", "abbr": dateFormat.call(cday[h], "M/d/yyyy"), html: i18n.dcmvcal.others + " " + (y[h] - z[h]) + i18n.dcmvcal.item, click: "javascript:alert('more event');" });
tempCss.push("st-more st-moreul");
h++;
}
else {
tempdata.html = BuildMonthDayEvent(e, cday[h], l - h);
tempdata.ch = "show";
if (e.colSpan > 1) {
tempdata.otherAttr = " colSpan='" + e.colSpan + "'";
for (var m = 0; m < e.colSpan; m++) {
z[h + m] = z[h + m] + 1;
}
var zz = 0;
for (var p=0; p 0) {
$.extend(tempdata, { "axis": h, ch: "more", "abbr": dateFormat.call(cday[h], "M/d/yyyy"), html: i18n.dcmvcal.others + " " + (y[h] - z[h]) + i18n.dcmvcal.item, click: "javascript:alert('more event');" });
tempCss.push("st-more st-moreul");
h++;
}
else {
cdisplay = 1;
$.extend(tempdata, { html: " ", ch: "qkadd", display:1, "axis": "00:00", "abbr": dateFormat.call(cday[h], "M/d/yyyy"), title: "" });
tempCss.push("st-s");
tmp_h = h;
h++;
}
}
tempdata.cssclass = tempCss.join(" ");
tempCss = null;
if (cdisplay==0)
htr.push(Tp(tdtemp, tempdata));
else
if (__VIEWWEEKDAYS[((cday[tmp_h].getDay())%7)]!=0)
htr.push(Tp(tdtemp, tempdata));
tempdata = null;
}
htr.push(" ");
}
x = y = z = cday = null;
//return htr;
}
function BuildMonthDayEvent(e, cday, length) {
var theme;
//if (e.event[7] && e.event[7] >= 0) {
theme = tc(e.event[7]);
//}
//else {
// theme = tc();
//}
var p = { color: theme[2], title: "", extendClass: "", extendHTML: "", data: "" };
p.title = getTitle(e.event);
p.id = "bbit_cal_event_" + e.event[0];
if (option.enableDrag && (option.readonly != true && (option.userEdit || ((option.userOwner==e.event[12]) && option.userEditOwner ))) && e.event[8] == 1) {
p.eclass = "drag";
}
else {
p.eclass = "cal_" + e.event[0];
}
p.data = e.event.join("$*$");
var sp = "${content} ";
var i = " ";
var i2 = " ";
var ml = "
";
var mr = "
";
var arrm = [];
var sf = e.event[2] < cday;
var ef = DateDiff("d", cday, e.event[3]) >= length; //e.event[3] >= DateAdd("d", 1, cday);
if (sf || ef) {
if (sf) {
arrm.push(ml);
p.extendClass = "st-ad-mpad ";
}
if (ef)
{ arrm.push(mr); }
p.extendHTML = arrm.join("");
}
var cen;
if (!e.allday && !sf) {
cen = "" + fomartTimeAMPM(e.st.hour,e.st.minute,__MilitaryTime) + " " + e.event[1];
}
else {
cen = e.event[1];
}
var content = [];
content.push(Tp(sp, { content: cen }));
content.push(i);
if (e.reevent)
{ content.push(i2); }
p.content = content.join("");
p.location = (e.event[9]!=null)?e.event[9]:"";
p.description = (e.event[11]!=null)?e.event[11]:"";
p.userEdition = ( ((option.userOwner==e.event[12]) && (option.userEditOwner || option.userDelOwner))?"uEdition":"" );
return Tp(__ALLDAYEVENTTEMP, p);
}
//to populate the data
function populate() {
if (option.isloading) {
return true;
}
if (option.url && option.url != "") {
option.isloading = true;
//clearcontainer();
if (option.onBeforeRequestData && $.isFunction(option.onBeforeRequestData)) {
option.onBeforeRequestData(1);
}
var zone = new Date().getTimezoneOffset() / 60 * -1;
var param = [
{ name: "showdate", value: dateFormat.call(option.showday, "M/d/yyyy HH:mm") },
{ name: "startdate", value: dateFormat.call(option.vstart, "M/d/yyyy HH:mm") },
{ name: "enddate", value: dateFormat.call(option.vend, "M/d/yyyy HH:mm") },
{ name: "viewtype", value: option.view },
{ name: "list_start", value: option.list_start },
{ name: "list_end", value: option.list_end },
{ name: "list_eventsPerPage", value: option.list_eventsPerPage },
{ name: "lastdate", value: ((option.lastdate=="")?"":dateFormat.call(option.lastdate, "M/d/yyyy HH:mm")) },
{ name: "list_order", value: option.list_order },
{ name: "timezone", value: zone }
];
if (option.extParam) {
for (var pi = 0; pi < option.extParam.length; pi++) {
param[param.length] = option.extParam[pi];
}
}
$.ajax({
type: option.method, //
url: option.url,
data: param,
//dataType: "text", // fixed jquery 1.4 not support Ms Date Json Format /Date(@Tickets)/
dataType: "json",
dataFilter: function(data, type) {
//return data.replace(/"\\\/(Date\([0-9-]+\))\\\/"/gi, "new $1");
return data;
},
success: function(data) {//function(datastr) {
//datastr =datastr.replace(/"\\\/(Date\([0-9-]+\))\\\/"/gi, 'new $1');
//var data = (new Function("return " + datastr))();
if (data != null && data.error != null) {
if (option.onRequestDataError) {
option.onRequestDataError(1, data);
}
}
else {
try {
$.each(data.events, function(index, value) {
value[2] = parseDate(value[2]);
value[3] = parseDate(value[3]);
});
if (option.view!="list")
{
data["start"] = parseDate(data["start"]);
data["end"] = parseDate(data["end"]);
}
if (option.view=="list" && option.lastdate=="" && option.list_order=="desc" && data.end!="")
option.lastdate = parseDate(data["end"]);
if (option.view=="list" && option.lastdate=="" && option.list_order=="asc" && data.start!="")
option.lastdate = parseDate(data["start"]);
responseData(data, data.start, data.end);
if (option.view!="list")
pushER(data.start, data.end);
} catch (e) { }
}
if (option.onAfterRequestData && $.isFunction(option.onAfterRequestData)) {
option.onAfterRequestData(1);
}
option.isloading = false;
},
error: function(data) {
try {
if (option.onRequestDataError) {
option.onRequestDataError(1, data);
} else {
alert(i18n.dcmvcal.get_data_exception);
}
if (option.onAfterRequestData && $.isFunction(option.onAfterRequestData)) {
option.onAfterRequestData(1);
}
option.isloading = false;
} catch (e) { }
}
});
}
else {
alert("url" + i18n.dcmvcal.i_undefined);
}
}
function responseData(data, start, end) {
var events,v,r,ne,tmp,tmpArray=new Array(),excludeEventsSpecial=new Array();
for (var i=0;i=thenext ))
ne[ne.length] = thenext;
}
}
else
{
if (option.lastdate!="")
ne = r.between(option.lastdate, ((end!="")?parseDate(end):false),true);
else if (start!="")
ne = r.between( parseDate(start), ((end!="")?parseDate(end):false),true);
else
ne = r.between( v[2], ((end!="")?parseDate(end):false),true);
for (var j=0;j<=option.list_eventsPerPage;j++)
{
var thenext = r.after( ne[ne.length-1], false)
if (thenext != null && (start=="" || parseDate(start)<=thenext )&& (end=="" || parseDate(end)>=thenext ))
ne[ne.length] = thenext;
}
}
}
else
ne = r.between( DateAdd("d", -1, start), DateAdd("d", 1, end));
if ((excludeEventsSpecial["uid"+v[0]]))
excludeEvents = $.merge(excludeEvents, excludeEventsSpecial["uid"+v[0]]);
for (var j=0;j 0) {
if (option.view=="list" && option.list_order=="desc")
events = data.events.sort(function(l, r) { return ((l[2].toString() == r[2].toString())? (l[0] > r[0] ? -1 : 1) : (l[2] > r[2] ? -1 : 1) ); });
else
events = data.events.sort(function(l, r) { return ((l[2].toString() == r[2].toString())? (l[0] > r[0] ? 1 : -1) : (l[2] > r[2] ? 1 : -1) ); });
}
else {
events = [];
}
//}
//else {
// events = data.events;
//}
if (option.view=="list")
option.eventItems = [];
ConcatEvents(events, start, end);
render();
}
function clearrepeat(events, start, end) {
var jl = events.length;
if (jl > 0) {
var es = events[0][2];
var el = events[jl - 1][2];
for (var i = 0, l = option.eventItems.length; i < l; i++) {
if (option.eventItems[i][2] > el || jl == 0) {
break;
}
if (option.eventItems[i][2] >= es) {
for (var j = 0; j < jl; j++) {
if (
(option.eventItems[i][0] == events[j][0])
&& (option.eventItems[i][2].toString() == events[j][2].toString())
&& ((option.eventItems[i][2] < start)
|| (option.eventItems[i][2] > end))
) {
events.splice(j, 1); //for duplicated event
jl--;
break;
}
}
}
}
}
}
function ConcatEvents(events, start, end) {
if (!events) {
events = [];
}
if (events) {
if (option.eventItems.length == 0) {
option.eventItems = events;
}
else {
//remove duplicated one
clearrepeat(events, start, end);
var l = events.length;
var sl = option.eventItems.length;
var sI = -1;
var eI = sl;
var s = start;
var e = end;
if (option.eventItems[0][2] > e)
{
option.eventItems = events.concat(option.eventItems);
return;
}
if (option.eventItems[sl - 1][2] < s)
{
option.eventItems = option.eventItems.concat(events);
return;
}
for (var i = 0; i < sl; i++) {
if (option.eventItems[i][2] >= s && sI < 0) {
sI = i;
continue;
}
if (option.eventItems[i][2] > e) {
eI = i;
break;
}
}
var e1 = sI <= 0 ? [] : option.eventItems.slice(0, sI);
var e2 = eI == sl ? [] : option.eventItems.slice(eI);
option.eventItems = [].concat(e1, events, e2);
events = e1 = e2 = null;
}
}
}
//utils goes here
function weekormonthtoday(e) {
$('#show'+option.view+"btn"+option.thecontainer).removeClass("ui-state-active");
var th = $(this);
var daystr = th.attr("abbr");
option.showday = str_MdyyyyHHmm_todate(daystr + " 00:00");
option.view = "day";
$('#show'+option.view+"btn"+option.thecontainer).addClass("ui-state-active");
render();
if (option.onweekormonthtoday) {
option.onweekormonthtoday(option);
}
e.stopPropagation();
}
function move_mv_dlg(){
$(".mv_dlg").css("top",parseFloat($(".mv_dlg").css("top"))+17);
$(".mv_dlg").css("left",parseFloat($(".mv_dlg").css("left"))-29);
$(".mv_dlg").css("height","0px");
}
function parseDate(str){
var s = str.split(" ");
var s0 = s[0].split("/");
var s1 = s[1].split(":");
if (s1.length!=2)
s1 = new Array(0,0);
return new Date(s0[2]*1, s0[0]*1-1, s0[1]*1,s1[0]*1,s1[1]*1);
}
function gP(h, m) {
//return h * 42 + parseInt(m / 60 * 42);
if (h>option.hoursEnd)
return (option.hoursEnd-option.hoursStart+1) * option.cellheight ;
else
return (h-option.hoursStart) * option.cellheight + parseInt(m / 60 * option.cellheight);
}
function gW(ts1, ts2) {
if (ts1>=ts2)
ts2 = ts1+ (option.cellheight/2);
var t1 = ts1 / option.cellheight;
var t2 = parseInt(t1) + option.hoursStart;
var t3 = t1 - t2 +option.hoursStart >= 0.5 ? 30 : 0;
var t4 = ts2 / option.cellheight;
var t5 = parseInt(t4) + option.hoursStart;
var t6 = t4 - t5 + option.hoursStart>= 0.5 ? 30 : 0;
if (t5>23)
{
t5 = 23;
t6 = 30;
}
if (t2==t5 && t3==t6)
if (t3==0)
t6 = 30;
else
{
t5++;
t6 = 0;
}
return { sh: t2, sm: t3, eh: t5, em: t6, h: ts2 - ts1 };
}
function gH(y1, y2, pt) {
var sy1 = Math.min(y1, y2);
var sy2 = Math.max(y1, y2);
var t1 = (sy1 - pt) / option.cellheight;
var t2 = parseInt(t1) + option.hoursStart;
var t3 = t1 - t2 +option.hoursStart>= 0.5 ? 30 : 0;
var t4 = (sy2 - pt) / option.cellheight;
var t5 = parseInt(t4) + option.hoursStart;
var t6 = t4 - t5 +option.hoursStart>= 0.5 ? 30 : 0;
return { sh: t2, sm: t3, eh: t5, em: t6, h: sy2 - sy1 };
}
function pZero(n) {
return n < 10 ? "0" + n : "" + n;
}
//to get color list array
function tc(d) {
function zc(c, i) {
var d = "666666888888aaaaaabbbbbbdddddda32929cc3333d96666e69999f0c2c2b1365fdd4477e67399eea2bbf5c7d67a367a994499b373b3cca2cce1c7e15229a36633cc8c66d9b399e6d1c2f029527a336699668cb399b3ccc2d1e12952a33366cc668cd999b3e6c2d1f01b887a22aa9959bfb391d5ccbde6e128754e32926265ad8999c9b1c2dfd00d78131096184cb05288cb8cb8e0ba52880066aa008cbf40b3d580d1e6b388880eaaaa11bfbf4dd5d588e6e6b8ab8b00d6ae00e0c240ebd780f3e7b3be6d00ee8800f2a640f7c480fadcb3b1440edd5511e6804deeaa88f5ccb8865a5aa87070be9494d4b8b8e5d4d47057708c6d8ca992a9c6b6c6ddd3dd4e5d6c6274878997a5b1bac3d0d6db5a69867083a894a2beb8c1d4d4dae54a716c5c8d8785aaa5aec6c3cedddb6e6e41898951a7a77dc4c4a8dcdccb8d6f47b08b59c4a883d8c5ace7dcce";
return "#" + d.substring(c * 30 + i * 6, c * 30 + (i + 1) * 6);
}
var c = d != null && d != undefined ? d : option.theme;
d = d != null && d != undefined && d != -1 ? d : option.theme;
if (d=="") d = option.theme;
return [d,d,d,d];
}
function Tp(temp, dataarry) {
return temp.replace(/\$\{([\w]+)\}/g, function(s1, s2) { var s = dataarry[s2]; if (typeof (s) != "undefined") { return s; } else { return s1; } });
}
function Ta(temp, dataarry) {
return temp.replace(/\{([\d])\}/g, function(s1, s2) { var s = dataarry[s2]; if (typeof (s) != "undefined") { return encodeURIComponent(s); } else { return ""; } });
}
function fomartTimeShow(h) {
//return h < 10 ? "0" + h + ":00" : h + ":00";//ampm
var tmp = ((h%12) < 10) && h!=12 ? "0" + (h%12) + ":00" : (h==12?"12":(h%12)) + ":00";
tmp += " " + ((h>=12)?"pm":"am");
return tmp ;
}
function getymformat(date, comparedate, isshowtime, isshowweek, showcompare) {
var showyear = isshowtime != undefined ? (date.getFullYear() != new Date().getFullYear()) : true;
var showmonth = true;
var showday = true;
var showtime = isshowtime || false;
var showweek = isshowweek || false;
if (comparedate) {
showyear = comparedate.getFullYear() != date.getFullYear();
//showmonth = comparedate.getFullYear() != date.getFullYear() || date.getMonth() != comparedate.getMonth();
if (comparedate.getFullYear() == date.getFullYear() &&
date.getMonth() == comparedate.getMonth() &&
date.getDate() == comparedate.getDate()
) {
showyear = showmonth = showday = showweek = false;
}
}
var a = [];
if (showyear) {
a.push(i18n.dcmvcal.dateformat.fulldayshow)
} else if (showmonth) {
a.push(i18n.dcmvcal.dateformat.Md3)
} else if (showday) {
a.push(i18n.dcmvcal.dateformat.day);
}
a.push(showweek ? " (W)" : "", showtime ? " HH:mm" : "");
return a.join("");
}
function CalDateShow(startday, endday, isshowtime, isshowweek) {
if (!endday) {
return dateFormat.call(startday, getymformat(startday,null,isshowtime));
} else {
var strstart= dateFormat.call(startday, getymformat(startday, null, isshowtime, isshowweek));
var strend=dateFormat.call(endday, getymformat(endday, startday, isshowtime, isshowweek));
var join = (strend!=""? " - ":"");
return [strstart,strend].join(join);
}
}
function dochange() {
var d = getRdate();
var loaded = checkInEr(d.start, d.end);
//if (!loaded)
{
populate();
}
}
function checkInEr(start, end) {
var ll = option.loadDateR.length;
if (ll == 0) {
return false;
}
var r = false;
var r2 = false;
for (var i = 0; i < ll; i++) {
r = false, r2 = false;
var dr = option.loadDateR[i];
if (start >= dr.startdate && start <= dr.enddate) {
r = true;
}
if (dateFormat.call(start, "yyyyMMdd") == dateFormat.call(dr.startdate, "yyyyMMdd") || dateFormat.call(start, "yyyyMMdd") == dateFormat.call(dr.enddate, "yyyyMMdd")) {
r = true;
}
if (!end)
{ r2 = true; }
else {
if (end >= dr.startdate && end <= dr.enddate) {
r2 = true;
}
if (dateFormat.call(end, "yyyyMMdd") == dateFormat.call(dr.startdate, "yyyyMMdd") || dateFormat.call(end, "yyyyMMdd") == dateFormat.call(dr.enddate, "yyyyMMdd")) {
r2 = true;
}
}
if (r && r2) {
break;
}
}
return r && r2;
}
function buildtempdayevent(sh, sm, eh, em, h, title, w, resize, thindex) {
var theme = thindex != undefined && thindex != -1 && thindex != "" ? tc(thindex) : tc();
var newtemp = Tp(__SCOLLEVENTTEMP, {
location:"",
description:"",
bdcolor: theme[0],
bgcolor2: theme[0],
bgcolor1: theme[2],
data: "",
starttime: [pZero(sh), pZero(sm)].join(":"),
endtime: [pZero(eh), pZero(em)].join(":"),
content: title ? title : i18n.dcmvcal.new_event,
title: title ? title : i18n.dcmvcal.new_event,
icon: " ",
top: "0px",
left: "",
width: w ? w : "100%",
height: h - 4,
i: "-1",
drag: "drag-chip",
redisplay: resize ? "block" : "none"
});
return newtemp;
}
function getdata(chip) {
var hddata = chip.find("div.dhdV");
if (hddata.length == 1) {
var str = hddata.html();
return parseED(str.split("$*$"));
}
return null;
}
function parseED(data) {
if (data.length > 6) {
var e = [];
e.push(data[0], data[1], new Date(data[2]), new Date(data[3]), parseInt(data[4]), parseInt(data[5]), (data[6]), data[7] != undefined ? (data[7]) : -1, data[8] != undefined ? parseInt(data[8]) : 0);
for (var i=9;i maxLeft) {
tleft = x - 200 <= 0 ? 10 : x - 200;
ttop = y - 159 <= 0 ? 10 : y - 159;
if (tleft + 400 >= maxLeft) {
tleft = maxLeft - 410;
}
if (ttop + 164 >= maxTop) {
ttop = maxTop - 165;
}
ishide = true;
}
return { left: tleft, top: ttop, hide: ishide };
}
function dayshow(e, data) {
if (data == undefined) {
data = getdata($(this));
}
if (data != null) {
//if (option.quickDeleteUrl != "" && data[8] == 1 && ( (option.readonly != true) || (option.readonly == true && option.showtooltipdwm) || (option.showtooltipdwm_mouseover) )) {
var csbuddle = ''+data[1]+'
'+data[11]+'';
$("#bbit-cal-buddle").remove();
$(".mv_dlg").remove();
$("#bbit-cs-buddle").remove();
var bud = $("#bbit-cs-buddle");
if (bud.length == 0) {
//
bud = $(csbuddle).appendTo(document.body);
bud.dialog({width:option.dialogWidth,resizable: false,
modal: false,resizable: false,maxWidth: option.dialogWidth,fluid: true,open: function(event, ui){fluidDialog();},
position: {
my: "left top",
at: "center bottom",
collision: "fit",
of: $(this)
}})
dialogUnBlur();
$("#bbit-cs-buddle").parent().addClass("mv_dlg");
$("
").appendTo($(".mv_dlg .ui-dialog-titlebar"));
move_mv_dlg();
var calbutton = $("#bbit-cs-delete");
var lbtn = $("#bbit-cs-editLink");
var closebtn = $("#bubbleClose2").click(function() {
try {$("#bbit-cs-buddle").dialog("close");}catch (e) {}
});
}
//}
}
}
function dayshow1(e, data) {
if (data == undefined) {
data = getdata($(this));
}
if (data != null) {
if (option.quickDeleteUrl != "" && data[8] == 1 && ( (option.readonly != true) || (option.readonly == true && option.showtooltipdwm) || (option.showtooltipdwm_mouseover) )) {
var csbuddle = ''
+'
';
if (option.readonly != true && (option.userEdit || option.userDel || ((option.userOwner==data[12]) && (option.userEditOwner || option.userDelOwner))))
{
csbuddle +='
';
if (option.userDel || ((option.userOwner==data[12]) && (option.userDelOwner)))
{
///no delete from recurring events
if (!(data[6]!="" && data[6] != null && data[6] != undefined))
csbuddle +='[
'+ i18n.dcmvcal.i_delete + ' ] ';
}
if (option.userEdit || ((option.userOwner==data[12]) && (option.userEditOwner)))
csbuddle +='
'+ i18n.dcmvcal.update_detail + ' >> ';
csbuddle +='
';
}
csbuddle +='
';
$("#bbit-cal-buddle").remove();
$(".mv_dlg").remove();
$("#bbit-cs-buddle").remove();
var bud = $("#bbit-cs-buddle");
if (bud.length == 0) {
//
bud = $(csbuddle).appendTo(document.body);
bud.dialog({width:option.dialogWidth,resizable: false,
modal: false,resizable: false,maxWidth: option.dialogWidth,fluid: true,open: function(event, ui){fluidDialog();},
position: {
my: "left top",
at: "center bottom",
collision: "fit",
of: $(this)
}})
$("#bbit-cs-buddle").parent().addClass("mv_dlg");
$("
").appendTo($(".mv_dlg .ui-dialog-titlebar"));
move_mv_dlg();
var calbutton = $("#bbit-cs-delete");
var lbtn = $("#bbit-cs-editLink");
var closebtn = $("#bubbleClose2").click(function() {
try {$("#bbit-cs-buddle").dialog("close");}catch (e) {}
});
calbutton.click(function() {
var data = $("#bbit-cs-buddle").data("cdata");
if (option.DeleteCmdhandler && $.isFunction(option.DeleteCmdhandler)) {
option.DeleteCmdhandler.call(this, data, quickd);
}
//else {
// if (confirm(i18n.dcmvcal.confirm_delete_event + "?")) {
// var s = 0; //0 single event , 1 for Recurring event
// if (data[6] == 1) {
// if (confirm(i18n.dcmvcal.confrim_delete_event_or_all)) {
// s = 0;
// }
// else {
// s = 1;
// }
// }
// else {
// s = 0;
// }
// quickd(s);
// }
//}
});
lbtn.click(function(e) {
if (!option.EditCmdhandler) {
alert("EditCmdhandler" + i18n.dcmvcal.i_undefined);
}
else {
if (option.EditCmdhandler && $.isFunction(option.EditCmdhandler)) {
var data = $("#bbit-cs-buddle").data("cdata");
var pos = $("#bbit-cs-buddle").dialog( "option", "position" );
$("#bbit-cs-buddle").remove();
option.EditCmdhandler.call(this, data,pos);
}
}
e.stopPropagation();
});
bud.click(function(e) {
e.stopPropagation();
return;
});
}
var ss = [];
var iscos = DateDiff("d", data[2], data[3]) != 0;
ss.push(dateFormat.call(data[2], i18n.dcmvcal.dateformat.fulldayshow));
if (data[4] != 1) {
ss.push(" ",fomartTimeAMPM(data[2].getHours(),data[2].getMinutes(),__MilitaryTime))
}
if (iscos) {
ss.push(" - ", dateFormat.call(data[3], i18n.dcmvcal.dateformat.fulldayshow));
if (data[4] != 1) {
ss.push(" ",fomartTimeAMPM(data[3].getHours(),data[3].getMinutes(),__MilitaryTime))
}
}
else if (data[4] != 1)
ss.push(" - ",fomartTimeAMPM(data[3].getHours(),data[3].getMinutes(),__MilitaryTime));
var ts = $("#bbit-cs-buddle-timeshow").html(ss.join(""));
$("#bbit-cs-id").val(data[0]);
$(".dialogdwm_event_content").find("#bbit-cs-title").html(data[1]);
$(".dialogdwm_event_content").find("#bbit-cs-location").html(data[9]);
$(".dialogdwm_event_content").find("#bbit-cs-description").html(data[11]);
bud.data("cdata", data);
//bud.css({ "visibility": "visible", left: pos.left, top: pos.top });
$(document).one("click", function() {
try {$("#bbit-cs-buddle").dialog("close");}catch (e) {}
});
}
else {
if (!option.ViewCmdhandler) {
alert("ViewCmdhandler" + i18n.dcmvcal.i_undefined);
}
else {
if (option.ViewCmdhandler && $.isFunction(option.ViewCmdhandler)) {
option.ViewCmdhandler.call(this, data);
}
}
}
}
else {
alert(i18n.dcmvcal.data_format_error);
}
e.stopPropagation();
}
function moreshow(mv) {
var me = $(this);
var divIndex = mv.id.replace(option.thecontainer,"").split('_')[1];
var pdiv = $(mv);
var offsetMe = me.position();
var offsetP = pdiv.position();
var width = (me.width() + 2) * 1.5;
var top = offsetP.top + 15;
var left = offsetMe.left;
var daystr = $(this).attr("abbr");
var day = str_MdyyyyHHmm_todate(daystr + " 00:00");
var cc = $("#cal-month-cc"+option.thecontainer);
var ccontent = $("#cal-month-cc-content"+option.thecontainer+" table tbody");
var ctitle = $("#cal-month-cc-title"+option.thecontainer);
ctitle.html(dateFormat.call(day, i18n.dcmvcal.dateformat.Md3) + " " + __WDAY[day.getDay()]);
ccontent.empty();
//var c = tc()[2];
var edata = $("#gridEvent"+option.thecontainer).data("mvdata");
var events = edata[divIndex];
var index = parseInt(this.axis);
var htm = [];
for (var i = 0; i <= index; i++) {
var ec = events[i] ? events[i].length : 0;
for (var j = 0; j < ec; j++) {
var e = events[i][j];
if (e) {
if ((e.colSpan + i - 1) >= index) {
htm.push("");
htm.push(BuildMonthDayEvent(e, day, 1));
htm.push(" ");
}
}
}
}
ccontent.html(htm.join(""));
//click
ccontent.find("div.rb-o").each(function(i) {
$(this).click(dayshow);
if (option.showtooltipdwm_mouseover) {
$(this).mouseover(dayshow);
//if (option.readonly == true) $(this).mouseout(function() {try {$("#bbit-cs-buddle").dialog("close");}catch (e) {}});
}
});
edata = events = null;
var height = cc.height();
var maxleft = document.documentElement.clientWidth;
var maxtop = document.documentElement.clientHeight;
if (left + width >= maxleft) {
left = offsetMe.left - (me.width() + 2) * 0.5;
}
if (top + height >= maxtop) {
top = maxtop - height - 2;
}
var newOff = { left: left, top: top, width: width, "visibility": "visible" };//"z-index": 180,
cc.css(newOff);
$(document).one("click", closeCc);
return false;
}
function dayupdate(data, start, end) {
if ((data[6]!="" && data[6]!="0"))
{
alert("Information: Recurrent events cannot be moved this way. Edit its details to modify it.")
populate();
return false;
}
if (option.quickUpdateUrl != "" && data[8] == 1 && (option.readonly != true && (option.userEdit || ((option.userOwner==data[12]) && option.userEditOwner ))) ) {
if (option.isloading) {
return false;
}
option.isloading = true;
var id = data[0];
var os = data[2];
var od = data[3];
var zone = new Date().getTimezoneOffset() / 60 * -1;
var param = [{ "name": "calendarId", value: id },
{ "name": "CalendarStartTime", value: dateFormat.call(start, "M/d/yyyy HH:mm") },
{ "name": "CalendarEndTime", value: dateFormat.call(end, "M/d/yyyy HH:mm") },
{ "name": "timezone", value: zone }
];
var d;
if (option.quickUpdateHandler && $.isFunction(option.quickUpdateHandler)) {
option.quickUpdateHandler.call(this, param);
}
else {
option.onBeforeRequestData && option.onBeforeRequestData(4);
$.post(option.quickUpdateUrl, param, function(data) {
if (data) {
if (data.IsSuccess == true) {
option.isloading = false;
option.onAfterRequestData && option.onAfterRequestData(4);
}
else {
option.onRequestDataError && option.onRequestDataError(4, data);
option.isloading = false;
d = rebyKey(id, true);
d[2] = os;
d[3] = od;
Ind(d);
render();
d = null;
option.onAfterRequestData && option.onAfterRequestData(4);
}
}
}, "json");
d = rebyKey(id, true);
if (d) {
d[2] = start;
d[3] = end;
}
Ind(d);
render();
}
}
}
function quickadd(start, end, isallday, pos) {
if ((!option.quickAddHandler && option.quickAddUrl == "") || option.readonly || !option.userAdd) {
return;
}
var location = "";
$("#bbit-cal-buddle").remove();
$(".mv_dlg").remove();
$("#bbit-cs-buddle").remove();
var buddle = $("#bbit-cal-buddle");
if (buddle.length == 0) {
var temparr = [];
temparr.push('');
temparr.push('
',i18n.dcmvcal.event,'
');
temparr.push(i18n.dcmvcal.time, ':
');
temparr.push(i18n.dcmvcal.content, ':
');
temparr.push('
', i18n.dcmvcal.create_event, '
');
temparr.push(i18n.dcmvcal.update_detail, ' >>
');
var tempquickAddHanler = temparr.join("");
temparr = null;
$(document.body).append(tempquickAddHanler);
try {$("#bbit-cs-buddle").dialog("close");}catch (e) {}
buddle = $("#bbit-cal-buddle");
if (option.view!="nMonth")
var pp = {
my: "left top",
at: "center bottom",
collision: "fit",
of: ($(".drag-chip").length>0)?$(".drag-chip"):$(".drag-lasso")
};
else
pp = {
my: "left top",
at: "center bottom",
collision: "fit",
of:$("#nmonths"+option.thecontainer+" .ui-state-non-active[title='"+dateFormat.call(start, i18n.dcmvcal.dateformat.fulldayvalue)+"']")
};
buddle.dialog({width:option.dialogWidth,resizable: false,
modal: false,resizable: false,maxWidth: option.dialogWidth,fluid: true,open: function(event, ui){fluidDialog();},
position:pp
});
buddle.dialog( "open" );
move_mv_dlg();
$("#bbit-cal-buddle").parent().addClass("mv_dlg");
$("
").appendTo($(".mv_dlg .ui-dialog-titlebar"));
var calbutton = $("#bbit-cal-quickAddBTN");
var lbtn = $("#bbit-cal-editLink");
var closebtn = $("#bubbleClose1").click(function() {
$("#bbit-cal-buddle").dialog( "close" );
realsedragevent();
});
$("#bbit-cal-what").on('keypress', function (event) {
if(event.which === 13){
$("#bbit-cal-quickAddBTN").trigger("click");
}
});
calbutton.click(function(e) {
if (option.isloading) {
e.stopPropagation();
}
option.isloading = true;
var what = $("#bbit-cal-what").val();
var datestart = $("#bbit-cal-start").val();
var dateend = $("#bbit-cal-end").val();
var allday = $("#bbit-cal-allday").val();
var f = /^[^\$\<\>]+$/.test(what);
if (!f) {
alert(i18n.dcmvcal.invalid_title);
$("#bbit-cal-what").focus();
option.isloading = false;
e.stopPropagation();
return false;
}
var zone = new Date().getTimezoneOffset() / 60 * -1;
var param = [{ "name": "CalendarTitle", value: what },
{ "name": "CalendarStartTime", value: datestart },
{ "name": "CalendarEndTime", value: dateend },
{ "name": "IsAllDayEvent", value: allday },
{ "name": "colorvalue", value: ((dc_subjects && dc_subjects!="" && option.colorBySubject)?"#"+option.paletteFull[$("#bbit-cal-what")[0].selectedIndex]:"") },
{ "name": "location", value: ( (dc_locations && dc_locations!="")?location:"") },
{ "name": "timezone", value: zone}];
if (option.extParam) {
for (var pi = 0; pi < option.extParam.length; pi++) {
param[param.length] = option.extParam[pi];
}
}
if (option.quickAddHandler && $.isFunction(option.quickAddHandler)) {
option.quickAddHandler.call(this, param);
$("#bbit-cal-buddle").dialog( "close" );
realsedragevent();
}
else {
$("#bbit-cal-buddle").dialog( "close" );
var newdata = [];
var tId = -1;
option.onBeforeRequestData && option.onBeforeRequestData(2);
$.post(option.quickAddUrl, param, function(data) {
if (data) {
if (data.IsSuccess == true) {
option.isloading = false;
newdata.push(-1, what);
var sd = str_MdyyyyHHmm_todate(datestart);
var ed = str_MdyyyyHHmm_todate(dateend);
var diff = DateDiff("d", sd, ed);
newdata.push(sd, ed, allday == "1" ? 1 : 0, diff > 0 ? 1 : 0, 0);
newdata.push(-1, 0, ((dc_locations && dc_locations!="")?dc_locations[location]:""), "");
tId = Ind(newdata);
option.eventItems[tId][0] = data.Data;
option.eventItems[tId][8] = 1;
populate();
option.onAfterRequestData && option.onAfterRequestData(2);
}
else {
option.onRequestDataError && option.onRequestDataError(2, data);
option.isloading = false;
option.onAfterRequestData && option.onAfterRequestData(2);
}
}
}, "json");
realsedragevent();
render();
}
});
lbtn.click(function(e) {
try {$("#bbit-cal-buddle").dialog("close");}catch (e) {}
if (!option.EditCmdhandler) {
alert("EditCmdhandler" + i18n.dcmvcal.i_undefined);
}
else {
if (option.EditCmdhandler && $.isFunction(option.EditCmdhandler)) {
option.EditCmdhandler.call(this, ['0', $("#bbit-cal-what").val(), $("#bbit-cal-start").val(), $("#bbit-cal-end").val(), $("#bbit-cal-allday").val()]);
}
realsedragevent();
}
e.stopPropagation();
});
buddle.mousedown(function(e) { e.stopPropagation(); });
}
var dateshow = CalDateShow(start, end, !isallday, true);
$("#bbit-cal-buddle-timeshow").html(dateshow);
$("#bbit-cal-allday").val(isallday ? "1" : "0");
$("#bbit-cal-start").val(dateFormat.call(start, "M/d/yyyy HH:mm"));
$("#bbit-cal-end").val(dateFormat.call(end, "M/d/yyyy HH:mm"));
buddle.css({ "visibility": "visible"});
var postmp = $("#bbit-cal-buddle").dialog( "option", "position");
postmp.at = "center bottom"
$("#bbit-cal-buddle").dialog( "option", "position",postmp);
$("#bbit-cal-buddle").dialog( "open" );
move_mv_dlg();
$("#bbit-cal-what").blur().focus(); //add 2010-01-26 blur() fixed chrome
$(document).one("mousedown", function() {
$("#bbit-cal-buddle").dialog( "close" );
realsedragevent();
});
return false;
}
//format datestring to Date Type
function strtodate(str) {
var arr = str.split(" ");
var arr2 = arr[0].split(i18n.dcmvcal.dateformat.separator);
var arr3 = arr[1].split(":");
var y = arr2[i18n.dcmvcal.dateformat.year_index];
var m = arr2[i18n.dcmvcal.dateformat.month_index].indexOf("0") == 0 ? arr2[i18n.dcmvcal.dateformat.month_index].substr(1, 1) : arr2[i18n.dcmvcal.dateformat.month_index];
var d = arr2[i18n.dcmvcal.dateformat.day_index].indexOf("0") == 0 ? arr2[i18n.dcmvcal.dateformat.day_index].substr(1, 1) : arr2[i18n.dcmvcal.dateformat.day_index];
var h = arr3[0].indexOf("0") == 0 ? arr3[0].substr(1, 1) : arr3[0];
var n = arr3[1].indexOf("0") == 0 ? arr3[1].substr(1, 1) : arr3[1];
return new Date(y, parseInt(m) - 1, d, h, n);
}
//str yyyy/m/d
function datetostr(d)
{
return d.getFullYear()+"/"+(d.getMonth()+1)+"/"+d.getDate();
}
function str_MdyyyyHHmm_todate(str) {
var arr = str.split(" ");
var arr2 = arr[0].split("/");
var arr3 = arr[1].split(":");
var y = arr2[2];
var m = arr2[0].indexOf("0") == 0 ? arr2[0].substr(1, 1) : arr2[0];
var d = arr2[1].indexOf("0") == 0 ? arr2[1].substr(1, 1) : arr2[1];
var h = arr3[0].indexOf("0") == 0 ? arr3[0].substr(1, 1) : arr3[0];
var n = arr3[1].indexOf("0") == 0 ? arr3[1].substr(1, 1) : arr3[1];
return new Date(y, parseInt(m) - 1, d, h, n);
}
function rebyKey(key, remove) {
if (option.eventItems && option.eventItems.length > 0) {
var sl = option.eventItems.length;
var i = -1;
for (var j = 0; j < sl; j++) {
if (option.eventItems[j][0] == key) {
i = j;
break;
}
}
if (i >= 0) {
var t = option.eventItems[i];
if (remove) {
option.eventItems.splice(i, 1);
}
return t;
}
}
return null;
}
function Ind(event, i) {
var d = 0;
if (!i) {
if (option.eventItems && option.eventItems.length > 0) {
var sl = option.eventItems.length;
var s = event[2];
var d1 = s.getTime() - option.eventItems[0][2].getTime();
var d2 = option.eventItems[sl - 1][2].getTime() - s.getTime();
var diff = d1 - d2;
if (d1 < 0 || diff < 0) {
for (var j = 0; j < sl; j++) {
if (option.eventItems[j][2] >= s) {
i = j;
break;
}
}
}
else if (d2 < 0) {
i = sl;
}
else {
for (var j = sl - 1; j >= 0; j--) {
if (option.eventItems[j][2] < s) {
i = j + 1;
break;
}
}
}
}
else {
i = 0;
}
}
else {
d = 1;
}
if (option.eventItems && option.eventItems.length > 0) {
if (i == option.eventItems.length) {
option.eventItems.push(event);
}
else { option.eventItems.splice(i, d, event); }
}
else {
option.eventItems = [event];
}
return i;
}
function ResizeView(config) {
var _MH = document.documentElement.clientHeight;
var _viewType = option.view;
if (_viewType == "day" || _viewType == "week" || _viewType == "nDays" || _viewType == "rowMonth") {
var $dvwkcontaienr = $("#dvwkcontaienr"+config.thecontainer);
var $dvtec = $("#dvtec"+config.thecontainer);
if (($dvwkcontaienr.length == 0 || $dvtec.length == 0) && (option.rowsList=="" || (option.dayWithTime && option.view=="day")) ) {
alert(i18n.dcmvcal.view_no_ready); return;
}
var dvwkH = $dvwkcontaienr.height() + 2;
var calH = option.height - 8 - dvwkH;
$dvtec.height(calH);
$dvtec.height("auto");
if (typeof (option.scoll) == "undefined") {
var currentday = new Date();
var h = currentday.getHours();
var m = currentday.getMinutes();
var th = gP(h, m);
var ch = $dvtec.attr("clientHeight");
var sh = th - 0.5 * ch;
var ph = $dvtec.attr("scrollHeight");
if (sh < 0) sh = 0;
if (sh > ph - ch) sh = ph - ch - 10 * (23 - h);
$dvtec.attr("scrollTop", sh);
}
else {
$dvtec.attr("scrollTop", option.scoll);
}
}
else if (_viewType == "month") {
//Resize GridContainer
}
}
function initevents(viewtype) {
if (viewtype == "week" || viewtype == "day" || viewtype == "nDays" || viewtype == "rowMonth") {
$("div.chip", gridcontainer).each(function(i) {
var chip = $(this);
chip.click(dayshow);
if (option.showtooltipdwm_mouseover) {
chip.mouseover(dayshow);
//if (option.readonly == true) chip.mouseout(function() {try {$("#bbit-cs-buddle").dialog("close");}catch (e) {}});
}
if (chip.hasClass("drag")) {
chip.mousedown(function(e) { dragStart.call(this, "dw3", e); e.stopPropagation(); });
//resize
chip.find("div.resizer").mousedown(function(e) {
dragStart.call($(this).parent().parent(), "dw4", e); e.stopPropagation();
});
}
else {
chip.mousedown(function(e) {e.stopPropagation();})
}
});
$("div.rb-o", gridcontainer).each(function(i) {
var chip = $(this);
chip.click(dayshow);
if (option.showtooltipdwm_mouseover) {
chip.mouseover(dayshow);
//if (option.readonly == true) chip.mouseout(function() {try {$("#bbit-cs-buddle").dialog("close");}catch (e) {}});
}
if (chip.hasClass("drag") && (viewtype == "week" || viewtype == "nDays" || viewtype == "rowMonth" ) ) {
//drag;
chip.mousedown(function(e) { dragStart.call(this, {dw5:"dw5",row:chip.attr("row")}, e); e.stopPropagation(); });
}
else {
chip.mousedown(function(e) {e.stopPropagation();})
}
});
if (option.readonly == false && option.userAdd) {
$("td.tg-col", gridcontainer).each(function(i) {
$(this).mousedown(function(e) { dragStart.call(this, "dw1", e); e.stopPropagation(); });
});
$("#weekViewAllDaywk"+option.thecontainer).mousedown(function(e) { dragStart.call(this, "dw2", e); e.stopPropagation(); });
if ( !(option.rowsList=="" || (option.dayWithTime && option.view=="day")) )
for (var i=0;i
l / 2 + 1) {
pw++;
}
var xa = [];
var ya = [];
var di = 0;
for (var i = 0; i < l; i++) {
xa.push({ s: i * pw + left, e: (i + 1) * pw + left });
if (moffset.left >= xa[i].s && moffset.left < xa[i].e) {
di = i;
}
}
var fdi = { x: di, y: 0, di: di };
ya.push({ s: top, e: top + h });
var data = getdata(obj);
var dp = DateDiff("d", data[2], data[3]) + 1;
_dragdata = { type: 6, target: obj, sx: e.pageX, sy: e.pageY, data: data, xa: xa, ya: ya, fdi: fdi, h: h, dp: dp, pw: pw };
//}catch (e) {}
break;
case "m1":
var w = obj.width();
var offset = obj.offset();
var left = offset.left;
var top = offset.top;
var l = __VIEWWEEKDAYSTOTAL;
var yl = obj.children().length;
var py = w % l;
var pw = parseInt(w / l);
if (py > l / 2 + 1) {
pw++;
}
var h = $("#mvrow"+option.thecontainer+"_0").height();
/**var xa = [];
var ya = [];
for (var i = 0; i < l; i++) {
xa.push({ s: i * pw + left, e: (i + 1) * pw + left });
}*/
var xa = [];
var ya = [];
for (var i = 0; i < l; i++) {
xa.push({ s: i * pw + left, e: (i + 1) * pw + left });
}
var h = 0, s1 = top, e1 = 0;
for (var i = 0; i < yl; i++) {
h = $("#mvrow"+option.thecontainer+"_"+i).height();
e1 = s1 + h;
ya.push({ s: s1, e: e1 });
s1 = e1;
}
_dragdata = { type: 3, target: obj, sx: e.pageX, sy: e.pageY, pw: pw, xa: xa, ya: ya, h: h };
break;
case "m2":
var row0 = $("#mvrow"+option.thecontainer+"_0");
var row1 = $("#mvrow"+option.thecontainer+"_1");
var w = row0.width();
var offset = row0.offset();
var diffset = row1.offset();
var moffset = obj.offset();
var h = diffset.top - offset.top;
var left = offset.left;
var top = offset.top;
var l = 7;
var yl = row0.parent().children().length;
var py = w % l;
var pw = parseInt(w / l);
if (py > l / 2 + 1) {
pw++;
}
var xa = [];
var ya = [];
var xi = 0;
var yi = 0;
for (var i = 0; i < l; i++) {
xa.push({ s: i * pw + left, e: (i + 1) * pw + left });
if (moffset.left >= xa[i].s && moffset.left < xa[i].e) {
xi = i;
}
}
for (var i = 0; i < yl; i++) {
ya.push({ s: i * h + top, e: (i + 1) * h + top });
if (moffset.top >= ya[i].s && moffset.top < ya[i].e) {
yi = i;
}
}
var fdi = { x: xi, y: yi, di: yi * 7 + xi };
var data = getdata(obj);
var dp = DateDiff("d", data[2], data[3]) + 1;
_dragdata = { type: 7, target: obj, sx: e.pageX, sy: e.pageY, data: data, xa: xa, ya: ya, fdi: fdi, h: h, dp: dp, pw: pw };
break;
}
$('body').noSelect();
}
function dragMove(e) {
if (_dragdata) {
//if (e.pageX < 0 || e.pageY < 0
// || e.pageX > document.documentElement.clientWidth
// || e.pageY >= document.documentElement.clientHeight) {
// dragEnd(e);
// return false;
//}
var d = _dragdata;
switch (d.type) {
case 1:
var sy = d.sy;
var y = e.pageY;
var diffy = y - sy;
if (diffy > (option.cellheight/4) /*11*/ || diffy < -1*(option.cellheight/4) /*11*/ || d.cpwrap) {
if (diffy == 0) { diffy =(option.cellheight/2) /*21*/; }
var dy = diffy % (option.cellheight/2) /*21*/;
if (dy != 0) {
diffy = dy > 0 ? diffy + (option.cellheight/2) /*21*/ - dy : diffy - (option.cellheight/2) /*21*/ - dy;
y = d.sy + diffy;
if (diffy < 0) {
sy = sy + (option.cellheight/2) /*21*/;
}
}
if (!d.tp) {
d.tp = $(d.target).offset().top;
}
var gh = gH(sy, y, d.tp);
var ny = gP(gh.sh, gh.sm);
var tempdata;
if (!d.cpwrap) {
tempdata = buildtempdayevent(gh.sh, gh.sm, gh.eh, gh.em, gh.h);
var cpwrap = $("
").html(tempdata);
$(d.target).find("div.tg-col-overlaywrapper").append(cpwrap);
d.cpwrap = cpwrap;
}
else {
if (d.cgh.sh != gh.sh || d.cgh.eh != gh.eh || d.cgh.sm != gh.sm || d.cgh.em != gh.em) {
tempdata = buildtempdayevent(gh.sh, gh.sm, gh.eh, gh.em, gh.h);
d.cpwrap.css("top", ny + "px").html(tempdata);
}
}
d.cgh = gh;
}
break;
case 2:
var sx = d.sx;
var x = e.pageX;
var diffx = x - sx;
if (diffx > 5 || diffx < -5 || d.lasso) {
if (!d.lasso) {
d.lasso = $("
");
$(document.body).append(d.lasso);
}
if (!d.sdi) {
d.sdi = getdi(d.xa, d.ya, sx, d.sy);
}
var ndi = getdi(d.xa, d.ya, x, e.pageY);
if (!d.fdi || d.fdi.di != ndi.di) {
addlasso(d.lasso, d.sdi, ndi, d.xa, d.ya, d.h);
}
d.fdi = ndi;
}
break;
case 3:
var sx = d.sx;
var x = e.pageX;
var sy = d.sy;
var y = e.pageY;
var diffx = x - sx;
var diffy = y - sy;
if (diffx > 5 || diffx < -5 || diffy < -5 || diffy > 5 || d.lasso) {
if (!d.lasso) {
d.lasso = $("
");
$(document.body).append(d.lasso);
}
if (!d.sdi) {
d.sdi = getdi(d.xa, d.ya, sx, sy);
}
var ndi = getdi(d.xa, d.ya, x, y);
if (!d.fdi || d.fdi.di != ndi.di) {
addlasso(d.lasso, d.sdi, ndi, d.xa, d.ya, d.h);
}
d.fdi = ndi;
}
break;
case 4:
var data = d.data;
if (data != null && data[8] == 1) {
var sx = d.sx;
var x = e.pageX;
var sy = d.sy;
var y = e.pageY;
var diffx = x - sx;
var diffy = y - sy;
if (diffx > 5 || diffx < -5 || diffy > 5 || diffy < -5 || d.cpwrap) {
var gh, ny, tempdata;
if (!d.cpwrap) {
gh = { sh: data[2].getHours(),
sm: data[2].getMinutes(),
eh: data[3].getHours(),
em: data[3].getMinutes(),
h: d.h
};
d.target.hide();
ny = gP(gh.sh, gh.sm);
d.top = ny;
tempdata = buildtempdayevent(gh.sh, gh.sm, gh.eh, gh.em, gh.h, data[1], false, false, data[7]);
var cpwrap = $("
").html(tempdata);
var evid = d.target.parent().attr("id").replace("tgCol"+option.thecontainer, "#tgOver"+option.thecontainer);
$(evid).append(cpwrap);
d.cpwrap = cpwrap;
d.ny = ny;
}
else {
var pd = 0;
if (x < d.pXMin) {
pd = -1;
}
else if (x > d.pXMax) {
pd = 1;
}
if (pd != 0) {
d.cdi = d.cdi + pd;
var ov = $("#tgOver"+option.thecontainer + d.cdi);
if (ov.length == 1) {
d.pXMin = d.pXMin + d.pw * pd;
d.pXMax = d.pXMax + d.pw * pd;
ov.append(d.cpwrap);
}
else {
d.cdi = d.cdi - pd;
}
}
ny = d.top + diffy;
var pny = ny % (option.cellheight/2) /*21*/;
if (pny != 0) {
ny = ny - pny;
}
if (d.ny != ny) {
//log.info("ny=" + ny);
gh = gW(ny, ny + d.h);
//log.info("sh=" + gh.sh + ",sm=" + gh.sm);
tempdata = buildtempdayevent(gh.sh, gh.sm, gh.eh, gh.em, gh.h, data[1], false, false, data[7]);
d.cpwrap.css("top", ny + "px").html(tempdata);
}
d.ny = ny;
}
}
}
break;
case 5:
var data = d.data;
if (data != null && data[8] == 1) {
var sy = d.sy;
var y = e.pageY;
var diffy = y - sy;
if (diffy != 0 || d.cpwrap) {
var gh, ny, tempdata;
if (!d.cpwrap) {
gh = { sh: data[2].getHours(),
sm: data[2].getMinutes(),
eh: data[3].getHours(),
em: data[3].getMinutes(),
h: d.h
};
d.target.hide();
ny = gP(gh.sh, gh.sm);
d.top = ny;
tempdata = buildtempdayevent(gh.sh, gh.sm, gh.eh, gh.em, gh.h, data[1], "100%", true, data[7]);
var cpwrap = $("
").html(tempdata);
var evid = d.target.parent().attr("id").replace("tgCol"+option.thecontainer, "#tgOver"+option.thecontainer);
$(evid).append(cpwrap);
d.cpwrap = cpwrap;
}
else {
nh = d.h + diffy;
var pnh = nh % (option.cellheight/2) /*21*/;
nh = pnh > 1 ? nh - pnh + (option.cellheight/2) /*21*/ : nh - pnh;
if (d.nh != nh) {
var sp = gP(data[2].getHours(), data[2].getMinutes());
var ep = sp + nh;
gh = gW(d.top, d.top + nh);
tempdata = buildtempdayevent(gh.sh, gh.sm, gh.eh, gh.em, gh.h, data[1], "100%", true, data[7]);
d.cpwrap.html(tempdata);
}
d.nh = nh;
}
}
}
break;
case 6:
var sx = d.sx;
var x = e.pageX;
var y = e.pageY;
var diffx = x - sx;
if (diffx > 5 || diffx < -5 || d.lasso) {
if (!d.lasso) {
var w1 = d.dp > 1 ? (d.pw - 4) * 1.5 : (d.pw - 4);
var cp = d.target.clone();
if (d.dp > 1) {
cp.find("div.rb-i>span").prepend("(" + d.dp + " " + i18n.dcmvcal.day_plural + ") ");
}
var cpwrap = $("
").append(cp).appendTo(document.body);
d.cpwrap = cpwrap;
d.lasso = $("
");
$(document.body).append(d.lasso);
cp = cpwrap = null;
}
fixcppostion(d.cpwrap, e, d.xa, d.ya);
var ndi = getdi(d.xa, d.ya, x, e.pageY);
if (!d.cdi || d.cdi.di != ndi.di) {
addlasso(d.lasso, ndi, { x: ndi.x, y: ndi.y, di: ndi.di + d.dp - 1 }, d.xa, d.ya, d.h);
}
d.cdi = ndi;
}
break;
case 7:
var sx = d.sx;
var sy = d.sy;
var x = e.pageX;
var y = e.pageY;
var diffx = x - sx;
var diffy = y - sy;
if (diffx > 5 || diffx < -5 || diffy > 5 || diffy < -5 || d.lasso) {
if (!d.lasso) {
var w1 = d.dp > 1 ? (d.pw - 4) * 1.5 : (d.pw - 4);
var cp = d.target.clone();
if (d.dp > 1) {
cp.find("div.rb-i>span").prepend("(" + d.dp + " " + i18n.dcmvcal.day_plural + ") ");
}
var cpwrap = $("
").append(cp).appendTo(document.body);
d.cpwrap = cpwrap;
d.lasso = $("
");
$(document.body).append(d.lasso);
cp = cpwrap = null;
}
fixcppostion(d.cpwrap, e, d.xa, d.ya);
var ndi = getdi(d.xa, d.ya, x, e.pageY);
if (!d.cdi || d.cdi.di != ndi.di) {
addlasso(d.lasso, ndi, { x: ndi.x, y: ndi.y, di: ndi.di + d.dp - 1 }, d.xa, d.ya, d.h);
}
d.cdi = ndi;
}
break;
}
}
e.stopPropagation();
}
function dragEnd(e) {
if (_dragdata) {
var d = _dragdata;
switch (d.type) {
case 1: //day view
var wrapid = new Date().getTime();
tp = d.target.offset().top;
if (!d.cpwrap) {
var gh = gH(d.sy, d.sy + option.cellheight, tp);
var ny = gP(gh.sh, gh.sm);
var tempdata = buildtempdayevent(gh.sh, gh.sm, gh.eh, gh.em, gh.h);
d.cpwrap = $("
").html(tempdata);
$(d.target).find("div.tg-col-overlaywrapper").append(d.cpwrap);
d.cgh = gh;
}
var pos = d.cpwrap.offset();
pos.left = pos.left + 30;
d.cpwrap.attr("id", wrapid);
var start = str_MdyyyyHHmm_todate(d.target.attr("abbr") + " " + d.cgh.sh + ":" + d.cgh.sm);
var end = str_MdyyyyHHmm_todate(d.target.attr("abbr") + " " + d.cgh.eh + ":" + d.cgh.em);
_dragevent = function() { $("#" + wrapid).remove(); $("#bbit-cal-buddle").dialog( "close" ); };
try {pos.col = d.cpwrap.parent().parent().attr("col");}catch (e) {}
quickadd(start, end, false, pos);
break;
case 2: //week view
case 3: //month view
var source = e.srcElement || e.target;
var lassoid = new Date().getTime();
if (!d.lasso) {
if ($(source).hasClass("monthdayshow"))
{
weekormonthtoday.call($(source).parent()[0],e);
break;
}
d.fdi = d.sdi = getdi(d.xa, d.ya, d.sx, d.sy);
d.lasso = $("
");
$(document.body).append(d.lasso);
addlasso(d.lasso, d.sdi, d.fdi, d.xa, d.ya, d.ya[d.fdi.y].e-d.ya[d.fdi.y].s);
}
d.lasso.attr("id", lassoid);
var si = Math.min(d.fdi.di, d.sdi.di);
var ei = Math.max(d.fdi.di, d.sdi.di);
var firstday = option.vstart;
var zz = 0;
for (var p=0; (p<=si);)
{
var x = DateAdd("d", zz, firstday);
p += __VIEWWEEKDAYS[x.getDay()];
zz++;
}
zz--;
si = zz;
ei = zz;
var start = DateAdd("d", si, firstday);
var end = DateAdd("d", ei, firstday);
_dragevent = function() { $("#" + lassoid).remove(); };
if (!$(source).hasClass("st-more")) quickadd(start, end, true, { left: e.pageX, top: e.pageY });
break;
case 4: // event moving
if (d.cpwrap) {
var start = DateAdd("d", d.cdi, option.vstart);
var end = DateAdd("d", d.cdi, option.vstart);
var gh = gW(d.ny, d.ny + d.h);
start.setHours(gh.sh, gh.sm);
end.setHours(gh.eh, gh.em);
if (start.getTime() == d.data[2].getTime() && end.getTime() == d.data[3].getTime()) {
d.cpwrap.remove();
d.target.show();
}
else {
dayupdate(d.data, start, end);
}
}
break;
case 5: //Resize
if (d.cpwrap) {
var start = new Date(d.data[2].toString());
var end = new Date(d.data[3].toString());
var gh = gW(d.top, d.top + nh);
start.setHours(gh.sh, gh.sm);
end.setHours(gh.eh, gh.em);
if (start.getTime() == d.data[2].getTime() && end.getTime() == d.data[3].getTime()) {
d.cpwrap.remove();
d.target.show();
}
else {
dayupdate(d.data, start, end);
}
}
break;
case 6:
case 7:
if (d.lasso) {
d.cpwrap.remove();
d.lasso.remove();
var start = new Date(d.data[2].toString());
var end = new Date(d.data[3].toString());
var currrentdate = DateAdd("d", d.cdi.di, option.vstart);
var diff = DateDiff("d", start, currrentdate);
start = DateAdd("d", diff, start);
end = DateAdd("d", diff, end);
if (start.getTime() != d.data[2].getTime() || end.getTime() != d.data[3].getTime()) {
dayupdate(d.data, start, end);
}
}
break;
}
d = _dragdata = null;
$('body').noSelect(false);
e.stopPropagation();
}
}
function getdi(xa, ya, x, y) {
var ty = 0;
var tx = 0;
var lx = 0;
var ly = 0;
if (xa && xa.length != 0) {
lx = xa.length;
if (x >= xa[lx - 1].e) {
tx = lx - 1;
}
else {
for (var i = 0; i < lx; i++) {
if (x > xa[i].s && x <= xa[i].e) {
tx = i;
break;
}
}
}
}
if (ya && ya.length != 0) {
ly = ya.length;
if (y >= ya[ly - 1].e) {
ty = ly - 1;
}
else {
for (var j = 0; j < ly; j++) {
if (y > ya[j].s && y <= ya[j].e) {
ty = j;
break;
}
}
}
}
return { x: tx, y: ty, di: ty * lx + tx };
}
function addlasso(lasso, sdi, edi, xa, ya, height) {
var diff = sdi.di > edi.di ? sdi.di - edi.di : edi.di - sdi.di;
diff++;
var sp = sdi.di > edi.di ? edi : sdi;
var ep = sdi.di > edi.di ? sdi : edi;
var l = xa.length > 0 ? xa.length : 1;
var h = ya.length > 0 ? ya.length : 1;
var play = [];
var width = xa[0].e - xa[0].s+1;
var i = sp.x;
var j = sp.y;
var max = Math.min(document.documentElement.clientWidth, xa[l - 1].e) - 2;
while (j < h && diff > 0) {
var left = xa[i].s;
var d = i + diff > l ? l - i : diff;
var wid = width * d;
//while (left + wid >= max) {
// wid--;
//}
play.push(Tp(__LASSOTEMP, { left: left+1, top: ya[j].s+4, height: height, width: wid }));
i = 0;
diff = diff - d;
j++;
}
lasso.html(play.join(""));
}
function fixcppostion(cpwrap, e, xa, ya) {
var x = e.pageX - 6;
var y = e.pageY - 4;
var w = cpwrap.width();
var h = (option.cellheight/2) /*21*/;
var lmin = xa[0].s + 6;
var tmin = ya[0].s + 4;
var lmax = xa[xa.length - 1].e - w - 2;
var tmax = ya[ya.length - 1].e - h - 2;
if (x > lmax) {
x = lmax;
}
if (x <= lmin) {
x = lmin + 1;
}
if (y <= tmin) {
y = tmin + 1;
}
if (y > tmax) {
y = tmax;
}
cpwrap.css({ left: x, top: y });
}
$(document)
.mousemove(dragMove)
.mouseup(dragEnd);
//.mouseout(dragEnd);
var c = {
sv: function(view) { //switch view
if (view == option.view) {
return;
}
clearcontainer();
option.view = view;
if (option.view=="list")
{
option.eventItems = [];
option.lastdate = "";
option.currentlist = {dend:"",idend:0};
option.cachepages = new Array();
}
render();
dochange();
},
rf2: function() {
option.newWidthGroup = 0;
render();
},
rf: function() {
populate();
},
gt: function(d) {
if (!d) {
d = new Date();
}
option.showday = d;
render();
dochange();
},
pv: function() {
switch (option.view) {
case "day":
option.showday = DateAdd("d", -1, option.showday);
break;
case "week":
option.showday = DateAdd("w", -1, option.showday);
break;
case "nDays":
case "rowMonth":
option.showday = DateAdd("d",(-1 * option.nOfDays), option.showday);
break;
case "list":
option.page--;
break;
case "month":
case "nMonth":
option.showday = DateAdd("m", -1, option.showday);
break;
}
render();
if (option.view!="list") dochange();
},
nt: function() {
switch (option.view) {
case "day":
option.showday = DateAdd("d", 1, option.showday);
break;
case "week":
option.showday = DateAdd("w", 1, option.showday);
break;
case "nDays":
case "rowMonth":
option.showday = DateAdd("d", option.nOfDays, option.showday);
break;
case "list":
option.lastdate = option.currentlist.dend;
option.page++;
break;
case "month":
case "nMonth":
var od = option.showday.getDate();
option.showday = DateAdd("m", 1, option.showday);
var nd = option.showday.getDate();
if(od !=nd) //we go to the next month
{
option.showday= DateAdd("d", 0-nd, option.showday); //last day of last month
}
break;
}
if (option.view!="list" || (option.view=="list" && (option.cachepages.length>option.page))) render();
if (option.view!="list" || (option.view=="list" && (option.cachepages.length<=option.page))) dochange();
},
go: function() {
return option;
},
so: function(p) {
option = $.extend(option, p);
}
};
this[0].bcal = c;
return this;
};
/**
* @description {Method} swtichView To switch to another view.
* @param {String} view View name, one of 'day', 'week', 'month'.
*/
$.fn.swtichView = function(view) {
$(".mv_dlg").remove();
return this.each(function() {
if (this.bcal) {
this.bcal.sv(view);
}
})
};
/**
* @description {Method} reload To reload event of current time range.
*/
$.fn.reload = function() {
return this.each(function() {
if (this.bcal) {
this.bcal.rf();
}
})
};
$.fn.reload2 = function() {
return this.each(function() {
if (this.bcal) {
this.bcal.rf2();
}
})
};
/**
* @description {Method} gotoDate To go to a range containing date.
* If view is week, it will go to a week containing date.
* If view is month, it will got to a month containing date.
* @param {Date} date. Date to go.
*/
$.fn.gotoDate = function(d) {
return this.each(function() {
if (this.bcal) {
this.bcal.gt(d);
}
})
};
/**
* @description {Method} previousRange To go to previous date range.
* If view is week, it will go to previous week.
* If view is month, it will got to previous month.
*/
$.fn.previousRange = function() {
return this.each(function() {
if (this.bcal) {
this.bcal.pv();
}
})
};
/**
* @description {Method} nextRange To go to next date range.
* If view is week, it will go to next week.
* If view is month, it will got to next month.
*/
$.fn.nextRange = function() {
return this.each(function() {
if (this.bcal) {
this.bcal.nt();
}
})
};
$.fn.BcalGetOp = function() {
if (this[0].bcal) {
return this[0].bcal.go();
}
return null;
};
$.fn.BcalSetOp = function(p) {
if (this[0].bcal) {
return this[0].bcal.so(p);
}
};
})(jQuery);