var famundoDateUtil={oneMinute:60*1000,oneHour:60*1000*60,oneDay:60*1000*60*24,oneWeek:60*1000*60*24*7,shortMonthName:famundoDateUtilTxt.shortMonthName,longMonthName:famundoDateUtilTxt.longMonthName,shortDayName:famundoDateUtilTxt.shortDayName,longDayName:famundoDateUtilTxt.longDayName,leterOfWeekDay:famundoDateUtilTxt.leterOfWeekDay,todayTxt:famundoDateUtilTxt.todayTxt,tomorrowTxt:famundoDateUtilTxt.tomorrowTxt,yesterdayTxt:famundoDateUtilTxt.yesterdayTxt,nextWeekTxt:famundoDateUtilTxt.nextWeekTxt,nextMonthTxt:famundoDateUtilTxt.nextMonthTxt,nextYearTxt:famundoDateUtilTxt.nextYearTxt,lastWeekTxt:famundoDateUtilTxt.lastWeekTxt,lastMonthTxt:famundoDateUtilTxt.lastMonthTxt,lastYearTxt:famundoDateUtilTxt.lastYearTxt,atTxt:famundoDateUtilTxt.atTxt,hourTxt:famundoDateUtilTxt.hourTxt,minutesTxt:famundoDateUtilTxt.minutesTxt,thTxt:famundoDateUtilTxt.thTxt,thOfTxt:famundoDateUtilTxt.thOfTxt,nextTxt:famundoDateUtilTxt.nextTxt,lastTxt:famundoDateUtilTxt.lastTxt,dateSeparator:famundoUserSettings.display.date.separator,parseISO:function(dateStr,noTime)
{var r=dateStr.match(/^\s*(\d\d\d\d)[^\d]*(\d\d)[^\d]*(\d\d)[^\d]*(\d\d)?[^\d]*(\d\d)?[^\d]*(\d\d)?/);if(!r)
return null;function sparseInt(s){return s?parseInt(s,10):0;}
function in_range(n,b,t){return((b<=n)&&(n<=t));}
var year=parseInt(r[1],10);var month=parseInt(r[2],10);if(!in_range(month,1,12))return null;var day=parseInt(r[3],10);if(!in_range(day,1,31))return null;var hour=sparseInt(r[4],10);if(!in_range(hour,0,23))return null;var min=sparseInt(r[5],10);if(!in_range(min,0,59))return null;var sec=sparseInt(r[6],10);if(!in_range(sec,0,59))return null;if(!noTime)
return new Date(year,month-1,day,hour,min,sec);else
return new Date(year,month-1,day);},getShortMonthName:function(month)
{return famundoDateUtil.shortMonthName[month];},getLongMonthName:function(month)
{return famundoDateUtil.longMonthName[month];},getLeterOfWeekDay:function(day)
{return famundoDateUtil.leterOfWeekDay[day];},getFirstDayOfWeek:function()
{return famundoUserSettings.calendar.settings.first_day_of_week;},getFirstWeekDayOfMonth:function(year,month)
{var dt=new Date(year,month,1);return dt.getDay();},getLastDayOfMonth:function(year,month)
{var dt=new Date(year,month,1);dt.setMonth(month+1);dt.setTime(dt.getTime()-famundoDateUtil.oneDay);return dt.getDate();},getMonthFromMonthName:function(monthStr)
{monthStr=monthStr.toUpperCase();for(var i=0;i<12;++i)
{if((monthStr==famundoDateUtil.shortMonthName[i].toUpperCase())||(monthStr==famundoDateUtil.longMonthName[i].toUpperCase()))
return i}
return null;},getDayFromDayName:function(dayStr)
{dayStr=dayStr.toUpperCase();for(var i=0;i<7;++i)
{if((dayStr==famundoDateUtil.shortDayName[i].toUpperCase())||(dayStr==famundoDateUtil.longDayName[i].toUpperCase())||(dayStr==famundoDateUtil.leterOfWeekDay[i].toUpperCase()))
return i}
return null;},getShortWeekDay:function(dn)
{return famundoDateUtil.shortDayName[dn];},getTextAM:function()
{return famundoDateUtilTxt.am;},getTextPM:function()
{return famundoDateUtilTxt.pm;},addDays:function(data,nDays)
{var result=new Date(data.getTime());result.setDate(data.getDate()+nDays);return result;},addMinutes:function(data,nMinutes)
{return(new Date(data.getTime()+(nMinutes*1000*60)));},getDayHours:function(hStart,format,half,h24)
{var rows=new Array();var rown=new Array();var rows24=new Array();var rowz=new Array();var rowz24=new Array();var result=new Array();var ext=(hStart<12)?famundoDateUtil.getTextAM():famundoDateUtil.getTextPM();if(format==null)
format='n';var j=0;for(var i=0;i<24;i++)
{if((hStart+i)<12)
{rows[i]=hStart+i+ext;rows24[i]=hStart+i+ext;rown[i]=hStart+i;rowz[j]=(hStart+i).zTrail(2)+':00 '+ext;rowz24[j]=(hStart+i).zTrail(2)+':00 ';if(half)
{j++;rowz[j]=(hStart+i).zTrail(2)+':30 '+ext;rowz24[j]=(hStart+i).zTrail(2)+':30 ';}
j++;}
else if((hStart+i)==12)
{rows[i]='Noon';rows24[i]='Noon';rown[i]=12;rowz[j]='12:00 '+famundoDateUtil.getTextPM();rowz24[j]='Noon';if(half)
{j++;rowz[j]='12:30 '+famundoDateUtil.getTextPM()
rowz24[j]='12:30 '+famundoDateUtil.getTextPM()}
j++;}
else if((hStart+i)>12&&(hStart+i)<24)
{ext=famundoDateUtil.getTextPM();rows[i]=hStart+i-12+ext;rows24[i]=hStart+i;rown[i]=hStart+i;rowz[j]=(hStart+i-12).zTrail(2)+':00 '+ext;rowz24[j]=(hStart+i).zTrail(2)+':00 ';if(half)
{j++;rowz[j]=(hStart+i-12).zTrail(2)+':30 '+ext;rowz24[j]=(hStart+i).zTrail(2)+':30 ';}
j++;}
else if((hStart+i)==24)
{rows[i]='Midnight';rows24[i]='Midnight';rown[i]=0;ext=famundoDateUtil.getTextAM();rowz[j]='00:00 '+famundoDateUtil.getTextAM();rowz24[j]='Midnight';if(half)
{j++;rowz[j]='00:30 '+famundoDateUtil.getTextAM();rowz24[j]='00:30 ';}
j++;hStart=0;}}
if(!h24)
result[0]=rows;else
result[0]=rowz24;result[1]=rown;if(format=='n')
return result[1];else if(format=='s')
return result[0];else if(format=='z')
if(!h24)
return rowz;else
return rowz24;return result;},parseTime:function(timeStr)
{function validateHourMin(hourStr,minStr,apStr)
{var hour=parseInt(hourStr,10);if(hour==12&&apStr&&(apStr.toLowerCase()=='a'))
hour=0;else if(apStr&&(apStr.toLowerCase()=='p')&&hour!=12)
hour+=12;if((hour<0)||(hour>23))
return null;var min=0;if(minStr)
{min=parseInt(minStr,10);if((min<0)||(min>59))
return null;}
return[hour,min];}
var result=timeStr.match(/^\s*(\d?\d)\s*[:-]?\s*(\d\d)?\s*(p|a)?m?\s*$/i);if(result)
return validateHourMin(result[1],result[2],result[3]);return null;},createDateParserReExpArray:function()
{famundoDateUtil.dateParserReExpArray=[];function matchMonth(monthArray,monthStr)
{for(var i=0;i<monthArray.length;++i)
{if(monthArray[i].toLowerCase()==monthStr.toLowerCase())
return(i+1);}
return null;}
function validateTime(timeStr,parseTime)
{if(parseTime&&timeStr&&!timeStr.match(/^\s*$/))
return famundoDateUtil.parseTime(timeStr);return[0,0];}
function validateMonth(monthStr)
{if(!monthStr)
return null;var month=null;var mm=monthStr.match(/^\s*(\d?\d)\s*$/);if(mm)
{month=parseInt(mm[1],10);return((1<=month)&&(month<=12))?month:null;}
month=matchMonth(famundoDateUtil.shortMonthName,monthStr);if(month)
return month;return matchMonth(famundoDateUtil.longMonthName,monthStr);}
function validateDate(yearStr,monthStr,dayStr,timeStr,parseTime)
{var hour_min=validateTime(timeStr,parseTime);if(!hour_min)
return null;var month=validateMonth(monthStr);if(!month)
return null;var year=parseInt(yearStr,10);if(year<100)
year+=2000;var day=parseInt(dayStr,10);var lastDayOfMonth=famundoDateUtil.getLastDayOfMonth(year,month-1);if((day<1)||(day>lastDayOfMonth))
return null;return new Date(year,month-1,day,hour_min[0],hour_min[1]);}
var usaRe=/^\s*(\w+)[ \/,;.\\]\s*(\d?\d)[ \/,;.\\]\s*((\d\d){1,2})(\s.*)?$/i;function validateDateResultUSA(result,parseTime)
{return validateDate(result[3],result[1],result[2],result[5],parseTime);}
var euRe=/^\s*(\d?\d)[ \/,;.\\]\s*(\w+)[ \/,;.\\]\s*((\d\d){1,2})(\s.*)?$/i;function validateDateResultEU(result,parseTime)
{return validateDate(result[3],result[2],result[1],result[5],parseTime);}
var isoRe=/^\s*((\d\d){1,2})[ \/,;.\\]\s*(\w+)[ \/,;.\\]\s*(\d?\d)(\s.*)?$/i;function validateDateResultISO(result,parseTime)
{return validateDate(result[1],result[3],result[4],result[5],parseTime);}
function txt2RegExpr(txt)
{var rs="^\\s*"+txt+"(\\s.*)?$";rs=rs.replace(/\s+/,"\\s+");return new RegExp(rs,"i");}
function push1(text,regExpr,procedure,paramValue)
{famundoDateUtil.dateParserReExpArray.push({txt:text,regexpr:regExpr,proc:procedure,param:paramValue});}
function pusha(texta,procedure,paramValue)
{$A(texta).each(function(text,i){push1(text,txt2RegExpr(text),procedure,paramValue);});}
function createRemoveAtRegExpr()
{var rs="^\\s*(";for(var i=0;i<famundoDateUtil.atTxt.length;++i)
{rs+='('+famundoDateUtil.atTxt[i]+')';if((i+1)<famundoDateUtil.atTxt.length)
rs+='|';}
rs+=")?(.*)?$";famundoDateUtil.removeAtRegExpr=new RegExp(rs,"i");}
createRemoveAtRegExpr();function removeAtStr(txt)
{var result=txt.match(famundoDateUtil.removeAtRegExpr);if(result)
{return result[famundoDateUtil.atTxt.length+2];}
return txt;}
function addShortcutTime(dt,result,parseTime)
{if(parseTime&&result[1])
{timeStr=removeAtStr(result[1]);if(timeStr)
{var hour_min=validateTime(timeStr,parseTime);if(hour_min)
{dt.setHours(hour_min[0]);dt.setMinutes(hour_min[1]);}}}
else if(!parseTime)
{dt.setHours(0);dt.setMinutes(0);}
return dt;}
function validateToday(result,parseTime)
{return addShortcutTime(new Date(),result,parseTime)}
pusha(famundoDateUtil.todayTxt,validateToday);function validateTomorrow(result,parseTime)
{var dt=new Date();dt.setTime(dt.getTime()+famundoDateUtil.oneDay);return addShortcutTime(dt,result,parseTime)}
pusha(famundoDateUtil.tomorrowTxt,validateTomorrow);function validateYesterday(result,parseTime)
{var dt=new Date();dt.setTime(dt.getTime()-famundoDateUtil.oneDay);return addShortcutTime(dt,result,parseTime)}
pusha(famundoDateUtil.yesterdayTxt,validateYesterday);function validateNextWeek(result,parseTime)
{var dt=new Date();dt.setTime(dt.getTime()+7*famundoDateUtil.oneDay);return addShortcutTime(dt,result,parseTime)}
pusha(famundoDateUtil.nextWeekTxt,validateNextWeek);function validateNextMonth(result,parseTime)
{var dt=new Date();dt.setMonth(dt.getMonth()+1);return addShortcutTime(dt,result,parseTime)}
pusha(famundoDateUtil.nextMonthTxt,validateNextMonth);function validateNextYear(result,parseTime)
{var dt=new Date();dt.setFullYear(dt.getFullYear()+1);return addShortcutTime(dt,result,parseTime)}
pusha(famundoDateUtil.nextYearTxt,validateNextYear);function validateLastWeek(result,parseTime)
{var dt=new Date();dt.setTime(dt.getTime()-7*famundoDateUtil.oneDay);return addShortcutTime(dt,result,parseTime)}
pusha(famundoDateUtil.lastWeekTxt,validateLastWeek);function validateLastMonth(result,parseTime)
{var dt=new Date();dt.setMonth(dt.getMonth()-1);return addShortcutTime(dt,result,parseTime)}
pusha(famundoDateUtil.lastMonthTxt,validateLastMonth);function validateLastYear(result,parseTime)
{var dt=new Date();dt.setFullYear(dt.getFullYear()-1);return addShortcutTime(dt,result,parseTime)}
pusha(famundoDateUtil.lastYearTxt,validateLastYear);function validateWeekDay(result,parseTime,weekDay)
{var dt=new Date();var daysToMove=(weekDay-dt.getDay()+7)%7;dt.setTime(dt.getTime()+daysToMove*famundoDateUtil.oneDay);return addShortcutTime(dt,result,parseTime)}
for(var weekDay=0;weekDay<7;++weekDay)
{var dayNames=[famundoDateUtil.shortDayName[weekDay],famundoDateUtil.longDayName[weekDay]];pusha(dayNames,validateWeekDay,weekDay);}
switch(famundoUserSettings.display.date.style)
{case'eu':push1("",euRe,validateDateResultEU);break;case'iso':push1("",isoRe,validateDateResultISO);break;default:push1("",usaRe,validateDateResultUSA);break;}
function addReOptions(optionArray,optionArray2,optionArray3)
{var s="(";for(var i=0;i<optionArray.length;++i)
{s+=optionArray[i];if((i+1)!=optionArray.length)
s+="|";}
if(optionArray2)
{s+="|";for(var i=0;i<optionArray2.length;++i)
{s+=optionArray2[i];if((i+1)!=optionArray2.length)
s+="|";}}
if(optionArray3)
{s+="|";for(var i=0;i<optionArray3.length;++i)
{s+=optionArray3[i];if((i+1)!=optionArray3.length)
s+="|";}}
s+=")";return s;}
var monthDayRe="^\\s*"+
addReOptions(famundoDateUtil.longMonthName,famundoDateUtil.shortMonthName)+"\\s*(\\d?\\d)(\\s.*?)?$";function validateMonthDay(result,parseTime,param)
{var dt=new Date();var dayStr=result[2];var day=parseInt(dayStr,10);if((day==null)||(day<1)||(day>31))
return null;var m=famundoDateUtil.getMonthFromMonthName(result[1]);if(m==null)
return null;var monthStr=''+(m+1);var year=dt.getFullYear();if((dt.getMonth()>m)||((dt.getMonth()==m)&&(dt.getDate()>day)))
++year;var yearStr=''+year;var timeStr=result[3];return validateDate(yearStr,monthStr,dayStr,timeStr,parseTime)}
push1("month_day",new RegExp(monthDayRe,"i"),validateMonthDay,null);var thRe="^\\s*(\\d?\\d)\\s*"+
addReOptions(famundoDateUtil.thTxt)+"((\\s+"+famundoDateUtil.thOfTxt+")?\\s+"+
addReOptions(famundoDateUtil.longMonthName,famundoDateUtil.shortMonthName)+")?(\\s+(\\d\\d\\d\\d))?(\\s.*?)?$";function validateTh(result,parseTime,param)
{var dt=new Date();var dayStr=result[1];var monthStr=''+(dt.getMonth()+1);if(result[5])
{var m=famundoDateUtil.getMonthFromMonthName(result[5]);if(m==null)
return null;monthStr=''+(m+1);}
var yearStr=(result[7])?(result[7]):(''+dt.getFullYear());var timeStr=result[8];return validateDate(yearStr,monthStr,dayStr,timeStr,parseTime)}
push1("th",new RegExp(thRe,"i"),validateTh,null);var nextDayNameRe="^\\s*"+famundoDateUtil.nextTxt+"\\s+"+
addReOptions(famundoDateUtil.longDayName,famundoDateUtil.shortDayName,famundoDateUtil.leterOfWeekDay)+"(\\s.*?)?$";function validateNextWeekDay(result,parseTime)
{var weekDay=famundoDateUtil.getDayFromDayName(result[1]);if(null==weekDay)
return null;var dt=new Date();var daysToMove=(weekDay-dt.getDay()+7)%7;dt.setTime(dt.getTime()+daysToMove*famundoDateUtil.oneDay);var yearStr=''+dt.getFullYear();var monthStr=''+(dt.getMonth()+1);var dayStr=''+dt.getDate();var timeStr=result[2];return validateDate(yearStr,monthStr,dayStr,timeStr,parseTime)}
push1("next week day",new RegExp(nextDayNameRe,"i"),validateNextWeekDay,null);var lastDayNameRe="^\\s*"+famundoDateUtil.lastTxt+"\\s+"+
addReOptions(famundoDateUtil.longDayName,famundoDateUtil.shortDayName,famundoDateUtil.leterOfWeekDay)+"(\\s.*?)?$";function validateLastWeekDay(result,parseTime)
{var weekDay=famundoDateUtil.getDayFromDayName(result[1]);if(null==weekDay)
return null;var dt=new Date();var daysToMove=(dt.getDay()-weekDay+7)%7;dt.setTime(dt.getTime()-daysToMove*famundoDateUtil.oneDay);var yearStr=''+dt.getFullYear();var monthStr=''+(dt.getMonth()+1);var dayStr=''+dt.getDate();var timeStr=result[2];return validateDate(yearStr,monthStr,dayStr,timeStr,parseTime)}
push1("last week day",new RegExp(lastDayNameRe,"i"),validateLastWeekDay,null);var endTimeRe="^\\s*(\\d?\\d)\\s*"+
addReOptions(famundoDateUtil.hourTxt)+"\\s*((\\d?\\d)\\s*"+
addReOptions(famundoDateUtil.minutesTxt)+"\\s*)?$";function validateEndTime(result,parseTime,param,getDateTimeProc)
{if(!parseTime||!getDateTimeProc)
return null;var dt=getDateTimeProc();if(!dt)
return null;var hours=parseInt(result[1],10);var min=result[4]?parseInt(result[4],10):0;dt.setMinutes(dt.getMinutes()+min+hours*60);return dt;}
push1("end time",new RegExp(endTimeRe,"i"),validateEndTime,null);var endTimeMinRe="^\\s*(\\d?\\d)\\s*"+
addReOptions(famundoDateUtil.minutesTxt)+"\\s*?$";function validateEndTimeMin(result,parseTime,param,getDateTimeProc)
{if(!parseTime||!getDateTimeProc)
return null;var dt=getDateTimeProc();if(!dt)
return null;var min=parseInt(result[1],10);dt.setMinutes(dt.getMinutes()+min);return dt;}
push1("end time in minutes",new RegExp(endTimeMinRe,"i"),validateEndTimeMin,null);},parseDate:function(dateStr,parseTime,getDateTimeProc)
{if(!famundoDateUtil.dateParserReExpArray)
famundoDateUtil.createDateParserReExpArray();for(var i=0;i<famundoDateUtil.dateParserReExpArray.length;++i)
{var parseInfo=famundoDateUtil.dateParserReExpArray[i];var result=dateStr.match(parseInfo.regexpr);if(result)
return parseInfo.proc(result,parseTime,parseInfo.param,getDateTimeProc);}
return null;},formatTime:function(hours,min,isAmPm)
{if(isAmPm==null)
isAmPm=famundoUserSettings.display.time.is_am_pm;var ampm='';if(isAmPm)
{if(hours>=12)
{ampm=' '+famundoDateUtil.getTextPM();hours-=12;}
else
{ampm=' '+famundoDateUtil.getTextAM();}
if(hours==0)
hours=12;}
return hours.zTrail(2)+':'+min.zTrail(2)+ampm;},formatDate2ISO:function(dt,withTime)
{return dt.strftime(withTime?"%Y-%m-%d %H:%M":"%Y-%m-%d");}};var famundoDayPicker={getSelectedDate:function(id)
{var dayPicElm=$(id);return new Date(dayPicElm.selectedYear,dayPicElm.selectedMonth,dayPicElm.selectedDay,dayPicElm.hour,dayPicElm.minute,0);},getCurrentDate:function(id)
{var dayPicElm=$(id);return new Date(dayPicElm.year,dayPicElm.month,1);},setCurrentDate:function(id,dt)
{var dayPicElm=$(id);dayPicElm.year=dt.getFullYear();dayPicElm.month=dt.getMonth();famundoDayPicker.setCaption(dayPicElm);famundoDayPicker.setMonthDays(dayPicElm);},setSelectedDate:function(id,dt)
{var dayPicElm=$(id);if(dayPicElm.autoSelect)
{famundoDayPicker.setDateAndSelectedDate(id,dt);return;}
dayPicElm.selectedYear=dt.getFullYear();dayPicElm.selectedMonth=dt.getMonth();dayPicElm.selectedDay=dt.getDate();dayPicElm.hour=dt.getHours();dayPicElm.minute=dt.getMinutes();famundoDayPicker.setCaption(dayPicElm);famundoDayPicker.setMonthDays(dayPicElm);famundoDayPicker.displayTime(dayPicElm);},setDateAndSelectedDate:function(id,dt)
{var dayPicElm=$(id);dayPicElm.year=dt.getFullYear();dayPicElm.month=dt.getMonth();dayPicElm.selectedYear=dt.getFullYear();dayPicElm.selectedMonth=dt.getMonth();dayPicElm.selectedDay=dt.getDate();dayPicElm.hour=dt.getHours();dayPicElm.minute=dt.getMinutes();famundoDayPicker.setCaption(dayPicElm);famundoDayPicker.setMonthDays(dayPicElm);famundoDayPicker.displayTime(dayPicElm);},setDateSelectionHandler:function(id,func)
{$(id).selectionHandler=func;},setDateViewChangedHandler:function(id,func)
{$(id).dateViewChangedHandler=func;},setNextMonthHandler:function(id,func)
{$(id).dateNextMonthHandler=func;},setNextYearHandler:function(id,func)
{$(id).dateNextYearHandler=func;},setPreviousMonthHandler:function(id,func)
{$(id).datePreviousMonthHandler=func;},setPreviousYearHandler:function(id,func)
{$(id).datePreviousYearHandler=func;},setTodayHandler:function(id,func)
{$(id).dateTodayHandler=func;},setTimeChangedHandler:function(id,func)
{$(id).timeChangedHandler=func;},setOkHandler:function(id,func)
{$(id).okHandler=func;},setCancelHandler:function(id,func)
{$(id).cancelHandler=func;},isTimeDisplayed:function(id)
{return $(id).pickTime;},markMonthDays:function(id,days2mark)
{var dayPicElm=$(id);dayPicElm.markDaysA=days2mark?$A(days2mark):null;if(dayPicElm.markDaysA)
{dayPicElm.markMonth=dayPicElm.month;dayPicElm.markYear=dayPicElm.year;}
else
{dayPicElm.markMonth=null;dayPicElm.markYear=null;}
famundoDayPicker.setMonthDays(dayPicElm);},onMonthNav:function(e)
{var el=famundoUtils.getEventElement(e,'img');if(el==null)return;var dayPicElm=famundoUtils.ascendDOM(el,'table');var dt=new Date(dayPicElm.year,dayPicElm.month,1);if(el.actionStr=='go_prev_year')
{dt.setYear(dayPicElm.year-1);dayPicElm.navHandler=dayPicElm.datePreviousYearHandler;}
else if(el.actionStr=='go_prev_month')
{var mDiff=dayPicElm.month-1
var yr=mDiff<0?(dayPicElm.year-1):(dayPicElm.year);mDiff=mDiff<0?11:mDiff;dt.setMonth(mDiff);dt.setYear(yr);dayPicElm.navHandler=dayPicElm.datePreviousMonthHandler;}
else if(el.actionStr=='go_today')
{dt=new Date();dayPicElm.selectedDay=dt.getDate();dayPicElm.navHandler=dayPicElm.dateTodayHandler;}
else if(el.actionStr=='go_next_month')
{dt.setMonth(dayPicElm.month+1);dayPicElm.navHandler=dayPicElm.dateNextMonthHandler;}
else if(el.actionStr=='go_next_year')
{dt.setYear(dayPicElm.year+1);dayPicElm.navHandler=dayPicElm.dateNextYearHandler;}
dayPicElm.year=dt.getFullYear();dayPicElm.month=dt.getMonth();if(dayPicElm.autoSelect)
{dayPicElm.selectedYear=dayPicElm.year;dayPicElm.selectedMonth=dayPicElm.month;var lastDayOfMonth=famundoDateUtil.getLastDayOfMonth(dayPicElm.year,dayPicElm.month);if(dayPicElm.selectedDay>lastDayOfMonth)
dayPicElm.selectedDay=lastDayOfMonth;}
famundoDayPicker.setCaption(dayPicElm);famundoDayPicker.setMonthDays(dayPicElm);if(dayPicElm.navHandler)
dayPicElm.navHandler(dayPicElm,dayPicElm.year,dayPicElm.month);if(dayPicElm.dateViewChangedHandler)
dayPicElm.dateViewChangedHandler(dayPicElm,dayPicElm.year,dayPicElm.month);if(dayPicElm.autoSelect&&dayPicElm.selectionHandler)
{dayPicElm.selectionHandler(dayPicElm,famundoDayPicker.getSelectedDate(dayPicElm),true);}},onMouseOverNavElm:function(e)
{var el=famundoUtils.getEventElement(e,'img');if(el==null)return;Element.removeClassName(el,'day_pick_'+el.actionStr);Element.addClassName(el,'day_pick_'+el.actionStr+'_hover');},onMouseOutNavElm:function(e)
{var el=famundoUtils.getEventElement(e,'img');if(el==null)return;Element.removeClassName(el,'day_pick_'+el.actionStr+'_hover');Element.addClassName(el,'day_pick_'+el.actionStr);},onMouseOverCell:function(e)
{var el=famundoUtils.getEventElement(e,'td');if(el==null)return;if(famundoUtils.isOfClass(el,'day_pick_valid_day')&&!famundoUtils.isOfClass(el,'day_pick_selected'))
{Element.addClassName(el,'day_pick_mouseover');}},onMouseOutCell:function(e)
{var el=famundoUtils.getEventElement(e,'td');if(el==null)return;Element.removeClassName(el,'day_pick_mouseover');},selectCellDay:function(cell)
{if(famundoUtils.isOfClass(cell,'day_pick_valid_day'))
{var dayPicElm=famundoUtils.ascendDOM(cell,'table');if(dayPicElm.autoSelect)
{dayPicElm.selectedYear=dayPicElm.year;dayPicElm.selectedMonth=dayPicElm.month;dayPicElm.selectedDay=cell.dayOfMonth;famundoDayPicker.setMonthDays(dayPicElm);}
if(dayPicElm.selectionHandler)
{dayPicElm.selectionHandler(dayPicElm,new Date(dayPicElm.year,dayPicElm.month,cell.dayOfMonth,dayPicElm.hour,dayPicElm.minute,0),false);}}},onMouseDown:function(e)
{var el=famundoUtils.getEventElement(e,'td');if(el==null)return;setTimeout(function(){famundoDayPicker.selectCellDay(el);},100);},onDblClickCell:function(e)
{var el=famundoUtils.getEventElement(e,'td');if(el==null)return;if(!famundoUtils.isOfClass(el,'day_pick_valid_day'))return;if(famundoUtils.isIE||famundoUtils.isSafari)
famundoDayPicker.onOK(e);else
setTimeout(function(){famundoDayPicker.onOK(e);},110);},parseTimeInputText:function(dayPicElm)
{dayPicElm.parseTimeInputTextTimerID=null;var hour_min=famundoDateUtil.parseTime(dayPicElm.timeTextElm.value);if(hour_min)
{dayPicElm.hour=hour_min[0];dayPicElm.minute=hour_min[1];Element.removeClassName(dayPicElm.timeTextElm,'day_pick_time_format_error');}
else
{Element.addClassName(dayPicElm.timeTextElm,'day_pick_time_format_error');}},onTimeTxtKeydown:function(e)
{var dayPicElm=famundoUtils.getEventElement(e,'table');if(dayPicElm==null)return;function getEventKey(evt)
{evt=(evt)?evt:(window.event)?window.event:null;var theKey;if(evt)
theKey=(evt.which)?evt.which:evt.keyCode;return theKey;}
function isEventKeyReturn(evt)
{return(getEventKey(evt)==13);}
if(dayPicElm.parseTimeInputTextTimerID)
clearTimeout(dayPicElm.parseTimeInputTextTimerID);dayPicElm.parseTimeInputTextTimerID=setTimeout(function(){famundoDayPicker.parseTimeInputText(dayPicElm);},500);if(dayPicElm.okHandler&&isEventKeyReturn(e))
setTimeout(function(){famundoDayPicker.onOK(e);},600);},onOK:function(e)
{var dayPicElm=famundoUtils.ascendDOMtoClass(Event.element(e),'day_pick');if(dayPicElm==null)return;if(dayPicElm.okHandler)
dayPicElm.okHandler(dayPicElm,famundoDayPicker.getSelectedDate(dayPicElm));},onCancel:function(e)
{var dayPicElm=famundoUtils.ascendDOMtoClass(Event.element(e),'day_pick');if(dayPicElm==null)return;if(dayPicElm.cancelHandler)
dayPicElm.cancelHandler(dayPicElm);},setCaption:function(dayPicElm)
{dayPicElm.caption.monthElm.innerHTML=famundoDateUtil.getLongMonthName(dayPicElm.month);dayPicElm.caption.yearElm.innerHTML=''+dayPicElm.year;},setWeekDays:function(dayPicElm)
{for(var i=famundoDateUtil.getFirstDayOfWeek();i<famundoDateUtil.getFirstDayOfWeek()+7;i++)
dayPicElm.tHead.rows[0].cells[i-famundoDateUtil.getFirstDayOfWeek()].innerHTML=famundoDateUtil.getLeterOfWeekDay(i%7);},setMonthDays:function(dayPicElm)
{var firstWeekDayOfMonth=famundoDateUtil.getFirstWeekDayOfMonth(dayPicElm.year,dayPicElm.month);var lastDayOfMonth=famundoDateUtil.getLastDayOfMonth(dayPicElm.year,dayPicElm.month);var dayOfMonth=famundoDateUtil.getFirstDayOfWeek()-firstWeekDayOfMonth+1;if(dayOfMonth>1)
dayOfMonth-=7;var today=new Date();var markDays=(dayPicElm.markDaysA&&(dayPicElm.markDaysA.length>0)&&(dayPicElm.markMonth==dayPicElm.month)&&(dayPicElm.markYear=dayPicElm.year));for(var k=0;k<6;k++)
{for(var j=0;j<7;j++)
{var sClass;var sHTML;var day=0;var cell=dayPicElm.tBodies[0].rows[k].cells[j];if((dayOfMonth<1)||(dayOfMonth>lastDayOfMonth))
{sClass='';sHTML='&nbsp;';day=0;}
else
{day=dayOfMonth;sHTML=''+dayOfMonth;sClass='day_pick_valid_day';if(dayPicElm.year==dayPicElm.selectedYear&&dayPicElm.month==dayPicElm.selectedMonth&&dayOfMonth==dayPicElm.selectedDay)
sClass+=' day_pick_selected';if(today.getFullYear()==dayPicElm.year&&today.getMonth()==dayPicElm.month&&today.getDate()==dayOfMonth)
sClass+=' day_pick_today';if(markDays&&dayPicElm.markDaysA.any(function(value,index){return value==dayOfMonth;}))
sClass+=' day_pick_marked_cell';}
cell.innerHTML=sHTML;cell.dayOfMonth=day;cell.className=sClass;dayOfMonth++;}}
if(dayPicElm.hideExtraRow)
{var row=dayPicElm.tBodies[0].rows[5];var cell=row.cells[0];if(Element.hasClassName(cell,'day_pick_valid_day'))
Element.removeClassName(row,'day_pic_hide_row');else
Element.addClassName(row,'day_pic_hide_row');}},createTableElements:function(dayPicElm)
{function appendNavImg(navElm,clsName,title,pname)
{var imgElm=famundoUtils.appendChildElm(navElm,'img','day_pick_'+clsName);imgElm.src=famundoAssetRootURL+'/famundo/utils/images/'+pname+'.gif';imgElm.alt=title;imgElm.title=title;imgElm.actionStr=clsName;return imgElm;}
famundoUtils.removeAllChildren(dayPicElm);dayPicElm.createCaption();dayPicElm.caption.contnavElm=famundoUtils.appendChildElm(dayPicElm.caption,'div','');dayPicElm.caption.navElm=famundoUtils.appendChildElm(dayPicElm.caption.contnavElm,'span','day_pick_nav');if(!dayPicElm.noYearNav)
dayPicElm.caption.goPrevYearElm=appendNavImg(dayPicElm.caption.navElm,'go_prev_year','go prev year','iconPrev');dayPicElm.caption.goPrevMonthElm=appendNavImg(dayPicElm.caption.navElm,'go_prev_month','Previous Month','iconPrev');dayPicElm.caption.goTodayElm=appendNavImg(dayPicElm.caption.navElm,'go_today','Today','iconCurrent');dayPicElm.caption.goNextMonthElm=appendNavImg(dayPicElm.caption.navElm,'go_next_month','Next Month','iconNext');if(!dayPicElm.noYearNav)
dayPicElm.caption.goNextYearElm=appendNavImg(dayPicElm.caption.navElm,'go_next_year','go next year','iconNext');var captionDateElm=famundoUtils.appendChildElm(dayPicElm.caption,'span','date');dayPicElm.caption.monthElm=famundoUtils.appendChildElm(captionDateElm,'span','day_pick_month');if(dayPicElm.drop_instance&&dayPicElm.drop_instance.id)
var uid=dayPicElm.drop_instance.id;else
{var uid=FamundoMainUtils.generateId();dayPicElm.setAttribute('util_id',uid);}
dayPicElm.caption.monthElm.id='month_txt_'+uid;famundoUtils.appendChildTextElm(captionDateElm,' ');dayPicElm.caption.yearElm=famundoUtils.appendChildElm(captionDateElm,'span','day_pick_year');dayPicElm.caption.yearElm.id='year_txt_'+uid;Event.observe(dayPicElm.caption.monthElm,'click',function(e){famundoDayPicker.buildMonthMenu(e,dayPicElm,false);},false);Event.observe(dayPicElm.caption.yearElm,'click',function(e){famundoDayPicker.buildMonthMenu(e,dayPicElm,true);},false);dayPicElm.createTHead();var headTrElm=dayPicElm.tHead.insertRow(-1);for(var i=0;i<7;i++)
famundoUtils.appendChildElm(dayPicElm.tHead.rows[0],'th','');famundoUtils.appendChildElm(dayPicElm,'tbody','');for(var i=0;i<6;i++)
{dayPicElm.tBodies[0].insertRow(-1);for(var j=0;j<7;j++)
dayPicElm.tBodies[0].rows[i].insertCell(-1);}
function add3Event(elm,mousedownProc,mouseoverProc,mouseoutProc)
{Event.observe(elm,'mousedown',mousedownProc,false);Event.observe(elm,'mouseover',mouseoverProc,false);Event.observe(elm,'mouseout',mouseoutProc,false);};for(var k=0;k<6;k++)
{for(var j=0;j<7;j++)
{var cell=dayPicElm.tBodies[0].rows[k].cells[j];Event.observe(cell,'mousedown',famundoDayPicker.onMouseDown,false);Event.observe(cell,'mouseover',famundoDayPicker.onMouseOverCell,false);Event.observe(cell,'mouseout',famundoDayPicker.onMouseOutCell,false);Event.observe(cell,'dblclick',famundoDayPicker.onDblClickCell,false);}}
[dayPicElm.caption.goPrevYearElm,dayPicElm.caption.goPrevMonthElm,dayPicElm.caption.goTodayElm,dayPicElm.caption.goNextMonthElm,dayPicElm.caption.goNextYearElm].each(function(elm)
{if(elm)
{add3Event(elm,famundoDayPicker.onMonthNav,famundoDayPicker.onMouseOverNavElm,famundoDayPicker.onMouseOutNavElm);}});},createTimeElements:function(dayPicElm)
{function appendInput(parentElm,klass,typ,val)
{var elm=famundoUtils.appendChildElm(parentElm,'input',klass,typ);if(elm.value!=val)
{elm.value=val;}
return elm;}
dayPicElm.timeRowElm=dayPicElm.tBodies[0].insertRow(-1);var timeCellElm=dayPicElm.timeRowElm.insertCell(-1);timeCellElm.className='day_pick_time_td_elm';timeCellElm.style.whiteSpace='nowrap';timeCellElm.colSpan=7;dayPicElm.timeTextElm=appendInput(timeCellElm,'form_element day_pick_time_txt','text','');if(dayPicElm.drop_instance&&dayPicElm.drop_instance.id)
dayPicElm.timeTextElm.id="time_text_"+dayPicElm.drop_instance.id;if(/Konqueror|Safari|KHTML/.test(navigator.userAgent))
{dayPicElm.dropButton=famundoUtils.appendChildElm(timeCellElm,'button','form_element day_pick_time_drop','button');dayPicElm.dropButton.style.height='9pt';dayPicElm.dropButton.style.width='8pt';dayPicElm.dropButton.style.position='relative';dayPicElm.dropButton.style.top='2px';dayPicElm.timeTextElm.style.padding='1px';}
else
{dayPicElm.dropButton=appendInput(timeCellElm,'form_element day_pick_time_drop','button','');}
dayPicElm.timeRowButElm=dayPicElm.tBodies[0].insertRow(-1);var timeButElm=dayPicElm.timeRowButElm.insertCell(-1);if(dayPicElm.timeWithButtons)
{timeButElm.className='day_pick_time_td_with_buttons';}
timeButElm.colSpan=7;if(dayPicElm.timeWithButtons)
{dayPicElm.timeCancelElm=famundoApplication.famundoButton(famundoGenText.cancel,'',50);dayPicElm.timeOkElm=famundoApplication.famundoButton(famundoGenText.ok,'',50);var tbl=famundoUtils.appendChildElm(timeButElm,'table');tbl.setAttribute('align','center');Element.addClassName(tbl,'form_custom_table');tbl.style.width='140px';var tbr=tbl.insertRow(-1);var tbcok=tbr.insertCell(-1);Element.addClassName(tbcok,'form_nowrap');var tbccancel=tbr.insertCell(-1);tbcok.appendChild(dayPicElm.timeOkElm);tbccancel.appendChild(dayPicElm.timeCancelElm);Element.addClassName(tbccancel,'form_nowrap');}},bindTimeElements:function(dayPicElm)
{if(dayPicElm.timeWithButtons)
{Event.observe(dayPicElm.timeOkElm,'click',famundoDayPicker.onOK,false);Event.observe(dayPicElm.timeCancelElm,'click',famundoDayPicker.onCancel,false);Event.observe(dayPicElm.dropButton,'click',function(e){famundoDayPicker.buildTimeMenu(e,dayPicElm);},false);}
Event.observe(dayPicElm.timeTextElm,'keydown',famundoDayPicker.onTimeTxtKeydown,false);},addTimeDisplay:function(id,hour,minute,withButtons)
{var dayPicElm=$(id);dayPicElm.hour=hour;dayPicElm.minute=minute;dayPicElm.timeWithButtons=withButtons?true:false;if(!dayPicElm.pickTime)
{dayPicElm.pickTime=true;famundoDayPicker.createTimeElements(dayPicElm);famundoDayPicker.displayTime(dayPicElm);famundoDayPicker.bindTimeElements(dayPicElm);}
else
{famundoDayPicker.displayTime(dayPicElm);}},removeTimeDisplay:function(id)
{var dayPicElm=$(id);if(!dayPicElm.pickTime)
return;if(dayPicElm.timeWithButtons)
{Event.stopObserving(dayPicElm.timeOkElm,'click',famundoDayPicker.onOK,false);Event.stopObserving(dayPicElm.timeCancelElm,'click',famundoDayPicker.onCancel,false);}
Event.stopObserving(dayPicElm.timeTextElm,'keydown',famundoDayPicker.onTimeTxtKeydown,false);var rowEl=dayPicElm.timeRowElm;var rowBEl=dayPicElm.timeRowButElm;dayPicElm.pickTime=false;dayPicElm.hour=0;dayPicElm.minute=0;dayPicElm.timeWithButtons=null;dayPicElm.timeRowElm=null;dayPicElm.timeCancelElm=null;dayPicElm.timeOkElm=null;dayPicElm.timeTextElm=null;dayPicElm.dropButton=null;rowEl.parentNode.removeChild(rowEl);rowBEl.parentNode.removeChild(rowBEl);},displayTime:function(dayPicElm)
{if(!dayPicElm.pickTime)
return;dayPicElm.timeTextElm.value=famundoDateUtil.formatTime(dayPicElm.hour,dayPicElm.minute);},initTable:function(day_pic_id_or_element,drop_instance)
{dayPicElm=$(day_pic_id_or_element);dayPicElm.hour=0;dayPicElm.minute=0;dayPicElm.pickTime=false;if(drop_instance)
dayPicElm.drop_instance=$(drop_instance);else
{dayPicElm.drop_instance=null;}
dayPicElm.autoSelect=dayPicElm.getAttribute('auto_select')?true:false;dayPicElm.noYearNav=dayPicElm.getAttribute('no_year_nav')?true:false;dayPicElm.hideExtraRow=dayPicElm.getAttribute('hide_extra_row')?true:false;var selectedDateSplit=dayPicElm.getAttribute('selected_date').split('-');dayPicElm.selectedYear=parseInt(selectedDateSplit[0],10);dayPicElm.selectedMonth=parseInt(selectedDateSplit[1],10)-1;dayPicElm.selectedDay=parseInt(selectedDateSplit[2],10);if(dayPicElm.autoSelect)
{dayPicElm.year=dayPicElm.selectedYear;dayPicElm.month=dayPicElm.selectedMonth;}
else if(dayPicElm.getAttribute('date'))
{var dateSplit=dayPicElm.getAttribute('date').split('-');dayPicElm.year=parseInt(dateSplit[0],10);dayPicElm.month=parseInt(dateSplit[1],10)-1;}
famundoDayPicker.createTableElements(dayPicElm);famundoDayPicker.setCaption(dayPicElm);famundoDayPicker.setWeekDays(dayPicElm);famundoDayPicker.setMonthDays(dayPicElm);var timeStr=dayPicElm.getAttribute('time');if(timeStr)
{var withButtons=dayPicElm.getAttribute('with_buttons')?true:false;var timeSplit=timeStr.split(':');var hour=parseInt(timeSplit[0],10);var minute=parseInt(timeSplit[1],10);famundoDayPicker.addTimeDisplay(dayPicElm,hour,minute,withButtons);}},buildTimeMenu:function(e,obj)
{var id=obj.drop_instance.id;if(!$("div_menu_"+id))
{var j=0;var hrs=new Array();for(var i=0;i<24;i++)
{hrs[j]=famundoDateUtil.formatTime(i,0);j++;hrs[j]=famundoDateUtil.formatTime(i,30);j++;}
var links=new Array();for(var i=0;i<hrs.length;i++)
links[i]={'label':hrs[i],'action':"famundoDayPicker.selectTime(\'"+hrs[i]+"\',\'"+id+"\')",'css':"day_pick_time_drop_cell"};Event.stopObserving(document.getElementsByTagName('body')[0],'mousedown',obj.drop_instance.onBodyMouseDown,false);var scrl=getScrollXY();if(FamundoMainUtils.isIE||famundoUtils.isSafari)
if(famundoUtils.isSafari)
var offs=-8;else
var offs=4;else
var offs=-scrl[1];var scrl=new Array(0,0);if(!FamundoMainUtils.isIE&&!famundoUtils.isSafari)
scrl=getScrollXY();var yPos=Position.cumulativeOffset(obj.timeTextElm)[1]+offs+scrl[1];var xPos=Position.cumulativeOffset(obj.timeTextElm)[0];var pos={'X':xPos,'Y':yPos};FamundoMainUtils.buildTT_menu(e,links,null,'day_pick_time_menu',pos,id);famundoDayPicker.scrollTimeValue(obj,id);famundoDayPicker.hackIE(obj.drop_instance);}
else
{Event.observe(document.getElementsByTagName('body')[0],'mousedown',$(id).onBodyMouseDown,false);}},buildMonthMenu:function(e,obj,isYear)
{if(obj.drop_instance)
{clearmouse=false;var id=obj.drop_instance.id;}
else
{clearmouse=true;var id=obj.getAttribute('util_id');}
if(isYear)
var ext_id='year_'+id;else
var ext_id='month_'+id;if(!$("div_menu_"+ext_id))
{var j=0;if(!isYear)
var mnths=famundoDateUtil.longMonthName;else
{var dt=new Date();var cyear=dt.getFullYear();var mnths=new Array();if(!obj.drop_instance||(!obj.drop_instance.getAttribute('minyear')&&!obj.drop_instance.getAttribute('maxyear')))
{for(var i=0;i<=10;i++)
{mnths[i]=cyear-3+i;}}
else
{var min=obj.drop_instance.getAttribute('minyear')||1900;var max=obj.drop_instance.getAttribute('maxyear')||cyear;min=parseInt(min);max=parseInt(max);for(var i=0;i<=(max-min);i++)
{mnths[i]=min+i;}}}
var links=new Array();for(var i=0;i<mnths.length;i++)
if(!isYear)
links[i]={'label':mnths[i],'action':"famundoDayPicker.selectMonth(\'"+mnths[i]+"\',\'"+id+"\')",'css':"day_pick_month_drop_cell"};else
links[i]={'label':mnths[i],'action':"famundoDayPicker.selectMonth(\'"+mnths[i]+"\',\'"+id+"\',true)",'css':"day_pick_month_drop_cell"};if(obj.drop_instance)
Event.stopObserving(document.getElementsByTagName('body')[0],'mousedown',obj.drop_instance.onBodyMouseDown,false);var offs=0;var hoffs=0;if(famundoUtils.isSafari)
{offs=-6;}
var scrl=getScrollXY();if(!isYear)
{if(clearmouse)
if(!FamundoMainUtils.isIE&&!famundoUtils.isSafari)
{var c=famundoUtils.ascendDOM(obj.caption.monthElm,'caption');}
else
{var c=obj.caption.monthElm;clearmouse=false;if(FamundoMainUtils.isIE)
hoffs=-10;}
else
var c=obj.caption.monthElm;var yPos=Position.cumulativeOffset(c)[1]+offs;var xPos=Position.cumulativeOffset(obj.caption.monthElm)[0]+hoffs;}
else
{if(clearmouse)
if(!FamundoMainUtils.isIE&&!famundoUtils.isSafari)
var c=famundoUtils.ascendDOM(obj.caption.yearElm,'caption');else
{var c=obj.caption.yearElm;clearmouse=false;if(FamundoMainUtils.isIE)
hoffs=-10;}
else
var c=obj.caption.yearElm;var yPos=Position.cumulativeOffset(c)[1]+offs;var xPos=Position.cumulativeOffset(obj.caption.yearElm)[0]+hoffs;}
var pos={'X':xPos,'Y':yPos};FamundoMainUtils.buildTT_menu(e,links,null,'day_pick_month_menu',pos,ext_id,clearmouse);if(FamundoMainUtils.isIE||famundoUtils.isSafari)
{var IEwidth=Element.getDimensions($("table_menu_"+ext_id)).width+18+'px';$("div_menu_"+ext_id).style.width=IEwidth;$(ext_id).style.width=IEwidth;}
if(!isYear)
famundoDayPicker.scrollMonthValue(obj,id);else
famundoDayPicker.scrollMonthValue(obj,id,true);if(obj.drop_instance)
famundoDayPicker.hackIE(obj.drop_instance);}
else if(obj.drop_instance)
{Event.observe(document.getElementsByTagName('body')[0],'mousedown',obj.drop_instance.onBodyMouseDown,false);}},hackIE:function(obj)
{if(FamundoMainUtils.isIE)
{obj.style.border='1px solid red';obj.style.border='0px';}},scrollTimeValue:function(obj,id)
{if(!Element.hasClassName(obj.timeTextElm,'day_pick_time_format_error'))
{var time=famundoDateUtil.parseTime(obj.timeTextElm.value.trim());var tbl=$("table_menu_"+id);var scr=0;for(var i=0;i<tbl.rows.length;i++)
{var row=tbl.rows[i];var cells=row.cells;for(var j=0;j<cells.length;j++)
{var cell=cells[j];var cell_time=famundoDateUtil.parseTime(cell.innerHTML.trim());if(cell_time&&time&&(cell_time[0]==time[0])&&(cell_time[1]==time[1]))
{$("div_menu_"+id).scrollTop=scr;Element.addClassName(cell,'TT_td_menu_hover');setTimeout(function(){abort_flag=false;},100);return true;}}
if(/Konqueror|Safari|KHTML/.test(navigator.userAgent))
scr+=Element.getDimensions(cells[0]).height;else
scr+=Element.getDimensions(row).height;}}
return false;},scrollMonthValue:function(obj,id,isYear)
{if(!isYear)
{var month=obj.caption.monthElm.innerHTML;var ext_id='month_'+id;}
else
{var month=obj.caption.yearElm.innerHTML;var ext_id='year_'+id;}
var tbl=$("table_menu_"+ext_id);var scr=0;for(var i=0;i<tbl.rows.length;i++)
{var row=tbl.rows[i];var cells=row.cells;for(var j=0;j<cells.length;j++)
{var cell=cells[j];var cell_month=cell.innerHTML.trim();if(cell_month&&month&&(cell_month==month))
{Element.addClassName(cell,'TT_td_menu_hover');$("div_menu_"+ext_id).scrollTop=scr;setTimeout(function(){abort_flag=false;},100);return true;}}
scr+=Element.getDimensions(row).height;}},selectTime:function(str,id)
{abort_flag=false;$("time_text_"+id).value=str;var dayPickElm=famundoUtils.ascendDOM($("time_text_"+id),'table');if(dayPickElm)
{var str_time=famundoDateUtil.parseTime(str.trim());dayPickElm.hour=str_time[0];dayPickElm.minute=str_time[1];}
Event.observe(document.getElementsByTagName('body')[0],'mousedown',$(id).onBodyMouseDown,false);setTimeout(function(obj){famundoDayPicker.hackIE($(id));},50);},selectMonth:function(str,id,isYear)
{abort_flag=false;if(!isYear)
var ext_id="month_txt_"+id;else
var ext_id="year_txt_"+id;var dayPickElm=famundoUtils.ascendDOM($(ext_id),'table');if(dayPickElm)
{if(!isYear)
var pos=FamundoMainUtils.inArray(famundoDateUtil.longMonthName,str);else
{var pos=str;}
if(!isYear)
{dayPickElm.month=pos;dayPickElm.selectedMonth=pos;}
else
{dayPickElm.year=pos;dayPickElm.selectedYear=pos;}
famundoDayPicker.setCaption(dayPickElm);famundoDayPicker.setMonthDays(dayPickElm);var sd=this.getSelectedDate(dayPickElm)
var current_day=sd.getDate();dayPickElm.selectedDay=current_day;if(dayPickElm.autoSelect&&dayPickElm.selectionHandler)
{dayPickElm.selectionHandler(dayPickElm,famundoDayPicker.getSelectedDate(dayPickElm),false);}}
if(dayPickElm.drop_instance)
{Event.observe(document.getElementsByTagName('body')[0],'mousedown',dayPickElm.drop_instance.onBodyMouseDown,false);setTimeout(function(obj){famundoDayPicker.hackIE($(id));},50);}},initAll:function()
{if(!document.getElementsByTagName||!document.getElementById)
return;var allTables=document.getElementsByTagName('table');for(var i=0;i<allTables.length;i++)
{var tbl=allTables[i];if(Element.hasClassName(tbl,"day_pick"))
{var parent_drop_id=tbl.getAttribute('parent_drop_id');if(!parent_drop_id||!$(parent_drop_id))
{famundoDayPicker.initTable(tbl);}}}}};var FamundoGrid=Class.create();FamundoGrid.prototype={initialize:function(mainclass,gtitle,options)
{this.options=Object.extend({},options||{});this.headerDiv=null;this.leftDiv=null;this.cornerDiv=null;this.bodyDiv=null;this.mainDiv=null;this.containerDiv=null;this.resizeDiv=null;this.scaleDiv=null;this.dragDiv=null;this.drawDiv=null;this.headerTable=null;this.bodyTable=null;this.leftTable=null;this.cornerTable=null;this.counterT=null;this.leftRow=null;this.resizeCell=null;this.sortableCols=new Array();this.rowProprieties=new Array();this.rowEvents=new Array();this.columnProperties=new Array();this.lastHilighted=new Array();this.columnRelativeWidth=false;this.hasHeaderDiv=false;this.hasLeftDiv=false;this.isHooverSelectable=false;this.isClickSelectable=false;this.isResizable=false;this.isMarked=false;this.dragSemafor=0;this.hVisible=true;this.inDrag=false;this.inDrop=false;this.scroll_semafor=null;this.dragCoord=null;this.objID=famundoUtils.generateId();this.bodyBoxes=new Array();this.shBoxes=new Array();this.rowInc=0;this.rowShInc=0;this.bodyBoxesCount=0;this.shBoxesCount=0;this.currentDragBox=null;this.startX=0;this.startHour=0;this.lastSortColumn=null;this.procRowSelected=null;this.maxSortRows=100;this.mousePos=null;this.isReadOnly=false;this.resFunc=this.setDivsSize.bindAsEventListener(this);this.mainDiv=document.createElement('div');this.mainDiv.className='grid_div grid_main_div '+mainclass;this.onBodyTableContextMenu=this._onBodyTableContextMenu.bindAsEventListener(this);},_getHeaderRow:function(nRow)
{return this.headerTable.rows[nRow];},_getSHeaderRow:function(nRow)
{return this.headerTable.rows[nRow+1];},_getSHeaderColumn:function(nRow,nColumn)
{var hRow=this._getSHeaderRow(nRow);return hRow.cells[nColumn];},_getAllSHeaderColumns:function()
{var bColumns=new Array();for(var i=0;i<this.rowShInc;i++)
{bColumns[i]=this._getSHeaderRow(i).cells;}
return bColumns;},_getAllHeaderColumns:function()
{var row=this._getHeaderRow(0);var hColumns=row.cells;return hColumns;},_getHeaderColumn:function(nColumn)
{var hColumns=this._getAllHeaderColumns();return hColumns[nColumn];},_getHeaderColumnCnt:function()
{var hColumns=this._getAllHeaderColumns();return hColumns.length;},_getHeaderTexts:function()
{var hColumns=this._getAllHeaderColumns();var hTexts=new Array();for(var i=0;i<hColumns.length;i++)
{hTexts[i]=this._getTextValue(hColumns[i]);}
return hTexts;},_getTextValue:function(td)
{if(document.ELEMENT_NODE==null)
{document.ELEMENT_NODE=1;document.TEXT_NODE=3;}
var txt="";for(var i=0;i<td.childNodes.length;i++)
{if(td.childNodes[i].nodeType==document.TEXT_NODE)
txt+=td.childNodes[i].nodeValue;else if(td.childNodes[i].nodeType==document.ELEMENT_NODE&&td.childNodes[i].tagName=="BR")
txt+=" ";else
txt+=this._getTextValue(td.childNodes[i]);}
return txt;},_getHeaderText:function(nColumn)
{var hTexts=this._getHeaderTexts();return hTexts[nColumn];},_getBodyRow:function(nRow)
{var bRows=this.bodyTable.rows;return bRows[nRow];},_getBodyDataRow:function(nRow)
{return this._getBodyRow(nRow+this.rowShInc+1);},_getAllBodyRowColumns:function(nRow)
{var row=this._getBodyRow(nRow);return row.cells;},_getAllBodyDataRowColumns:function(nRow)
{var row=this._getBodyDataRow(nRow);var leng=this._getHeaderColumnCnt()-row.cells.length;var result=new Array();var j=0;for(var i=0;i<row.cells.length;i++)
{result[j+leng]=row.cells[i];j++;}
return result;},_getBodyColumn:function(nRow,nColumn)
{var bColumns=this._getAllBodyRowColumns(nRow);return bColumns[nColumn];},_getBodyDataColumn:function(nRow,nColumn)
{var bColumns=this._getAllBodyDataRowColumns(nRow);return bColumns[nColumn];},_getAllBodyColumns:function()
{var bColumns=new Array();for(var i=(this.rowShInc+1);i<this.rowInc;i++)
{bColumns[i]=this._getAllBodyRowColumns(i);}
return bColumns;},_getBodyColumnRowCnt:function(nRow)
{var bColumns=this._getAllBodyRowColumns(nRow);return bColumns.length;},_getBodyRowTexts:function(nRow)
{var bColumns=this._getAllBodyRowColumns(nRow);var bTexts=new Array();for(var i=0;i<bColumns.length;i++)
{bTexts[i]=this._getTextValue(bColumns[i]);}
return bTexts;},_getBodyCellText:function(nRow,nColumn)
{var rTexts=this._getBodyRowTexts(nRow);return rTexts[nColumn];},_getLeftRow:function(nRow)
{var bRows=this.leftTable.rows;return bRows[nRow];},_getAllLeftRowColumns:function(nRow)
{var row=this._getLeftRow(nRow);return row.cells;},_getLeftColumn:function(nRow,nColumn)
{var bColumns=this._getAllLeftRowColumns(nRow);return bColumns[nColumn];},_getAllLeftColumns:function()
{var bColumns=new Array();for(var i=(this.rowShInc+1);i<this.rowInc;i++)
{bColumns[i]=this._getAllLeftRowColumns(i);}
return bColumns;},setReadOnly:function(kind)
{this.isReadOnly=kind;},setHooverSelectable:function(selectable)
{this.isHooverSelectable=selectable;},setProcRowSelected:function(proc)
{this.procRowSelected=proc;},setClickSelectable:function(selectable)
{this.isClickSelectable=selectable;},setResizable:function(resizable,relativeWidths)
{this.isResizable=resizable;if(relativeWidths)
this.columnRelativeWidth=relativeWidths;},setSortableColumns:function(sortable,nRows)
{this.sortableCols=sortable;},setColumnProperties:function(cProp)
{this.columnProperties=cProp;},setStartRow:function(startR)
{vb_saf=false;if(/Konqueror|Safari|KHTML/.test(navigator.userAgent))
{vb_saf=23;}
if(vb_saf)
{this.bodyDiv.scrollTop=(startR)*vb_saf;}
else
{var crow=this._getBodyRow(startR);var toScroll=Position.positionedOffset(crow)[1];this.bodyDiv.scrollTop=toScroll;var maxScroll=Element.getDimensions(this.bodyTable).height-Element.getDimensions(this.bodyDiv).height;var difScroll=toScroll-maxScroll;if(difScroll>0)
{var lastRow=this.bodyTable.rows[this.bodyTable.rows.length-1]
var firstCell=lastRow.cells[0];firstCell.style.height=(Element.getHeight(firstCell)+difScroll)+'px';this.bodyDiv.scrollTop=toScroll;}}},buildHeader:function(columns,classes,visible)
{if(visible!=null)
this.hVisible=visible;this.headerDiv=document.createElement('div');this.headerDiv.className='grid_div grid_header_div';this.mainDiv.appendChild(this.headerDiv);this.headerTable=document.createElement('table');this.headerTable.className='grid_table grid_header_table';this.headerDiv.appendChild(this.headerTable);var htbody=document.createElement('tbody');var headerRow=document.createElement('tr');htbody.appendChild(headerRow);this.headerTable.appendChild(htbody);var headerColumns=new Array();var headerTexts=new Array();for(var i=0;i<columns.length;i++)
{headerColumns[i]=document.createElement('td');headerColumns[i].innerHTML=columns[i];if(famundoUtils.isArray(classes))
{headerColumns[i].className='grid_header_cell '+classes[i];var cellClaesses=classes[i].split(' ');}
else
{headerColumns[i].className='grid_header_cell '+classes;var cellClaesses=classes.split(' ');}
headerRow.appendChild(headerColumns[i]);if(this.isResizable)
{this.setInternalEvent('this._getHeaderColumn('+i+')','mousemove','inResize(e)');this.setInternalEvent('this._getHeaderColumn('+i+')','mousedown','markCell(e)');this.setInternalEvent('this._getHeaderColumn('+i+')','mouseup','doResize(e)');headerColumns[i].setAttribute('column',i);headerColumns[i].setAttribute('unselectable','on');}
if(this.sortableCols[i])
{var sImg=document.createElement('img');sImg.setAttribute('src','/famundo/images/blank.gif');sImg.setAttribute('title','click to sort');sImg.className=this.sortableCols[i];headerColumns[i].appendChild(sImg);this.setInternalEvent('this._getHeaderColumn('+i+')','click','sortColumn(e)');headerColumns[i].setAttribute('column',i);}}
this.hasHeaderDiv=true;if(!this.hVisible)
headerRow.style.display='none';},buildBody:function(rows,rclasses,cclasses,rproprieties)
{this.bodyDiv=document.createElement('div');this.bodyDiv.className='grid_div grid_body_div';this.mainDiv.appendChild(this.bodyDiv);this.bodyTable=document.createElement('table');this.bodyTable.className='grid_table grid_body_table';this.bodyDiv.appendChild(this.bodyTable);var btbody=document.createElement('tbody');this.bodyTable.appendChild(btbody);if(this.hasHeaderDiv)
{var bodyFirstRow=this._getHeaderRow(0).cloneNode(true);btbody.appendChild(bodyFirstRow);this.rowInc++;if(this.hasLeftDiv)
{this.cornerDiv=document.createElement('div');this.cornerDiv.className='grid_div grid_corner_div';this.mainDiv.appendChild(this.cornerDiv);this.cornerTable=document.createElement('table');this.cornerTable.className='grid_table grid_corner_table';this.cornerDiv.appendChild(this.cornerTable);var cbody=document.createElement('tbody');cbody.appendChild(this.leftRow.cloneNode(true));this.cornerTable.appendChild(cbody);}}
for(var i=0;i<rows.length;i++)
{if(famundoUtils.isArray(rclasses))
{var rclass=rclasses[i];}
else
{var rclass=rclasses;}
if(famundoUtils.isArray(cclasses))
{var cclass=cclasses[i];}
else
{var cclass=cclasses;}
this.addRow(rows[i],rclass,cclass,rproprieties[i]);}},getMouse:function(e)
{},setItemAsDroppable:function(item)
{var me=this;Droppables.add($(item).id,{accept:['grid_drag_div','grid_hdrag_div','span_dragable_href'],onHover:function(draggable,droppable,overlap,event){me.doDrag(draggable,droppable,overlap,event);}});},doDrag:function(draggable,droppable,overlap,e)
{if(!draggable.getAttribute('drag')||draggable.getAttribute('drag')=='false')
{this.cancelDrag();return false;}
if(this.counterT)
{window.clearInterval(this.counterT);this.dragSemafor=0;}
var me=this;this.counterT=setInterval(function(){me.dragSemafor++;if(me.dragSemafor>1)
{if($(draggable).id!='dragable_link')
{me.doHoover(draggable,droppable,overlap,e);}
else
{var month=document.getElementsByClassName('calendarm_main_div',this.mainDiv);if(month.length==0)
me.doLinkHoover(draggable,droppable,overlap,e);else
me.doMonthLinkHoover(draggable,droppable,overlap,e);}
window.clearInterval(me.counterT);return;}},100);},doLinkHoover:function(draggable,droppable,overlap,e)
{var y=(Position.cumulativeOffset(draggable)[1]-Position.cumulativeOffset(this.mainDiv)[1]+this.bodyDiv.scrollTop);var x=(Position.cumulativeOffset(draggable)[0]-Position.cumulativeOffset(this.mainDiv)[0]+this.bodyDiv.scrollLeft)+1/2*Element.getDimensions(draggable).width;var bodyD=Element.getDimensions(this.bodyDiv);var limitTop=Position.cumulativeOffset(draggable)[1]-Position.cumulativeOffset(this.mainDiv)[1];var limitLeft=Position.cumulativeOffset(draggable)[0]-Position.cumulativeOffset(this.mainDiv)[0];var limitBottom=(Position.cumulativeOffset(this.mainDiv)[1]+bodyD.height)-Position.cumulativeOffset(draggable)[1]
var limitRight=(Position.cumulativeOffset(this.mainDiv)[0]+bodyD.width)-Position.cumulativeOffset(draggable)[0]
var boxD=Element.getDimensions(draggable);var crow=this.cellAt(x,y);var txt=famundoCalendarText.linkDrag;var start='';if(limitTop>0&&limitLeft>0&&limitBottom>0&&limitRight>0&&crow&&crow.row.getAttribute('index')>0&&crow.cell.getAttribute('column')>0)
{var scale=this.getScale(crow,y,0,crow.cell);if(scale)
{$(draggable).style.width=(Element.getDimensions(crow.cell).width-3)+'px';txt=scale.h+':'+scale.min+scale.am;start=this.columnProperties[crow.cell.getAttribute('column')].date+' '+scale.h+':'+scale.min+scale.am;}
else
{$(draggable).style.width='175px';}}
else
{$(draggable).style.width='175px';}
$(draggable).setAttribute('start',start);$(draggable).innerHTML=txt;},doMonthLinkHoover:function(draggable,droppable,overlap,e)
{var y=(Position.cumulativeOffset(draggable)[1]-Position.cumulativeOffset(this.mainDiv)[1]+this.bodyDiv.scrollTop);var x=(Position.cumulativeOffset(draggable)[0]-Position.cumulativeOffset(this.mainDiv)[0]+this.bodyDiv.scrollLeft)+1/2*Element.getDimensions(draggable).width;var bodyD=Element.getDimensions(this.bodyDiv);var limitTop=Position.cumulativeOffset(draggable)[1]-Position.cumulativeOffset(this.mainDiv)[1];var limitLeft=Position.cumulativeOffset(draggable)[0]-Position.cumulativeOffset(this.mainDiv)[0];var limitBottom=(Position.cumulativeOffset(this.mainDiv)[1]+bodyD.height)-Position.cumulativeOffset(draggable)[1]
var limitRight=(Position.cumulativeOffset(this.mainDiv)[0]+bodyD.width)-Position.cumulativeOffset(draggable)[0]
var crow=this.cellAt(x,y);var txt=famundoCalendarText.linkDrag;var start='';var tbl_info=document.getElementsByClassName('msec',crow.cell);if(limitTop>0&&limitLeft>0&&limitBottom>0&&limitRight>0&&crow&&tbl_info.length>0)
{var sdate=new Date(parseInt(tbl_info[0].getAttribute('msec')));var today=new Date();if(sdate)
{$(draggable).style.width=(Element.getDimensions(crow.cell).width-3)+'px';txt=sdate.strftime(famundoDateTimeFormats.short_date)+" "+today.getHours()+':'+today.getMinutes();start=txt;}
else
{$(draggable).style.width='150px';}}
else
{$(draggable).style.width='150px';}
$(draggable).setAttribute('start',start);$(draggable).innerHTML=txt;},doHoover:function(draggable,droppable,overlap,e)
{this.scaleDiv.style.display="none";domTT_close(this.dragDiv);var top=Position.positionedOffset(draggable)[1];var left=Position.positionedOffset(draggable)[0];var bodyD=Element.getDimensions(droppable);var boxD=Element.getDimensions(draggable);if((top+boxD.height)>(bodyD.height-2))
{this.cancelDrag();}
if((left+boxD.width)>(bodyD.width+boxD.width/2))
{this.cancelDrag();}
var box=this.bodyBoxes[draggable.getAttribute('ix')];var htop=0;if(box!=null&&box[0]!=null)
{htop=Element.getDimensions(box[0]).height;}
var crow=this.cellAt(left,top+htop);if(crow&&crow.row.getAttribute('index')>0&&crow.cell.getAttribute('column')>0)
{var column=crow.cell;if(crow.overBorder<(boxD.width/2))
{column=famundoUtils.getNextSiblingOfNodeName(crow.cell,'td');}
var scale=this.getScale(crow,top,htop,column);var h=scale.h;var min=scale.min;var am=scale.am;var rap=scale.rap;var txt=h+':'+min+am;var txt_pos=box[5].ztxt.indexOf('<br />');if(txt_pos==-1)
var txt_pos=box[5].ztxt.indexOf('&nbsp;');txt=box[5].ztxt.slice(0,txt_pos-8)+txt;if(this.dragDiv.firstChild.innerHTML)
{this.dragDiv.firstChild.innerHTML=txt+box[5].ztxt.slice(txt_pos);var icons=document.getElementsByClassName('grid_full_text',this.dragDiv.firstChild);if(icons.length>0)
{icons[0].style.top='0px';if(FamundoMainUtils.isIE)
icons[0].style.textIndent='0px';}}
else
this.dragDiv.innerHTML=txt+box[5].ztxt.slice(txt_pos);var difCol=box[5].ecolumn-box[5].scolumn;var difRow=box[5].erow-box[5].srow;var start=this.columnProperties[column.getAttribute('column')].date+' '+h+':'+min+am;this.dragCoord={'scolumn':column.getAttribute('column'),'srow':crow.row.getAttribute('index'),'ecolumn':(parseInt(column.getAttribute('column'))+difCol),'erow':(parseInt(crow.row.getAttribute('index'))+difRow),'sprop':rap,'start':start,'txt':txt};}
else
{this.cancelDrag();}},getScale:function(crow,top,htop,column,showScale,left)
{if(column==null)
column=crow.cell;if(showScale)
{this.scaleDiv.style.display='';this.scaleDiv.style.visibility='hidden';this.scaleDiv.style.top=(top-this.bodyDiv.scrollTop+htop)+'px';this.scaleDiv.style.width=Element.getDimensions(this._getBodyColumn(1,0)).width+'px';if(left)
this.scaleDiv.style.left=(left-Element.getDimensions(this.scaleDiv).width)+'px';this.scaleDiv.style.height=(Element.getDimensions(column).height/2)+'px';famundoUtils.removeAllChildren(this.scaleDiv);this.scaleDiv.style.visibility='visible';}
this.dragDiv.style.cursor='move';var ix=crow.row.getAttribute('index');var h=Math.ceil(ix/2)-1;var dif=top+htop-Position.positionedOffset(column)[1];var rap=dif/(Element.getDimensions(column).height);var min=Math.round(30*rap);if(min%15!=0)
{var rest=min%15;if(rest<3)
{min=min-rest;var newTop=(top-this.bodyDiv.scrollTop+htop-(rest*Element.getDimensions(column).height/30))+'px';rap=rap-rest/30;}
else
{min=min+15-rest;var newTop=(top-this.bodyDiv.scrollTop+htop+(15-rest)*(Element.getDimensions(column).height/30))+'px';rap=rap+(15-rest)/30;}}
if((ix%2)==0)
{min=30+min;if(min>=60)
{min='00';h++;}}
else if(min<10)
{min='0'+min;}
if(h<12)
{var am=' AM';}
else
{var am=' PM';if(h>12)
h=h-12;}
if(h<10)
{h='0'+h;}
var text=document.createTextNode(h+':'+min+am);if(showScale)
{this.scaleDiv.appendChild(text);if(newTop)
this.scaleDiv.style.top=newTop;}
return{'h':h,'min':min,'am':am,'rap':rap,'top':newTop};},doDrop:function(e)
{var box=this.currentDragBox;if(!box)
return false;if(!box||this.dragCoord==null||parseInt(this.dragCoord.erow)>(this.rowInc-this.rowShInc-2)||parseInt(this.dragCoord.ecolumn)>this._getHeaderColumnCnt())
{this.reposBoxes(box[5].scolumn,box[7]);}
else
{this.inDrop=true;var oldcolumn=box[5].scolumn;box[5].scolumn=parseInt(this.dragCoord.scolumn);box[5].ecolumn=parseInt(this.dragCoord.ecolumn);box[5].srow=parseInt(this.dragCoord.srow);box[5].erow=parseInt(this.dragCoord.erow);box[5].eprop=this.dragCoord.sprop-box[5].sprop+box[5].eprop;box[5].sprop=this.dragCoord.sprop;var txt_pos=box[5].txt.indexOf('<br />');if(txt_pos==-1)
var txt_pos=box[5].txt.indexOf('&nbsp;');box[5].txt=this.dragCoord.txt+box[5].txt.slice(txt_pos);this.dragDiv.style.display="none";box[3].innerHTML=box[5].txt;this.reposBoxes(box[5].scolumn,box[7]);if(oldcolumn!=box[5].scolumn)
this.reposBoxes(oldcolumn,box[7]);var me=this;var params="id="+box[5].id+'&start='+this.dragCoord.start;if(box[5].guid)
{params+='&guid='+box[5].guid;famundoApplication.openConfirmWindow(famundoCalendarText.editRecurEvent+' "'+box[5].txt+'"',famundoCalendarText.editRecurEventTxt,{recur_one_action:function(){new Ajax.Request(famundoCalendarUrl.get_update_event+'?'+params,{onComplete:function(){me.inDrop=false;},asynchronous:true});},recur_all_action:function(){new Ajax.Request(famundoCalendarUrl.get_update_event+'?'+params+'&all=1',{onComplete:function(){me.inDrop=false;},asynchronous:true});},all_label:famundoGenText.all_instances,one_label:famundoGenText.one_instance,cancel_label:famundoGenText.cancel,recur:true,id:'ConfirmModalDlg'});}
else
{new Ajax.Request(famundoCalendarUrl.get_update_event+'?'+params,{onComplete:function(){me.inDrop=false;},asynchronous:true});}}
this.cancelDrag();},dragInit:function(e)
{if(!this.currentDragBox||!this.currentDragBox[9]||!Event.isLeftClick(e))
return false;this.dragDiv.style.cursor='move';this.inDrag=true;this.showDragScaleDiv(famundoCalendarText.draggingEnabledtxt);},restoreHighlight:function(e)
{Position.clone(this.currentDragBox[2],this.dragDiv);var txt=document.getElementsByClassName('zoom_text',this.dragDiv);if(txt[0])
{Element.removeClassName(txt[0],'zoom_text');}
this.dragDiv.style.cursor='move';FamundoMainUtils.stopTT();this.inDrag=true;this.showDragScaleDiv(famundoCalendarText.draggingEnabledtxt);},showDragScaleDiv:function(str,hgh)
{if(!hgh)
hgh=16;famundoUtils.removeAllChildren(this.scaleDiv);this.scaleDiv.innerHTML=str;this.scaleDiv.style.width=Element.getDimensions(this.dragDiv).width+'px';this.scaleDiv.style.height=parseInt(hgh)+'px';this.scaleDiv.style.top=(Position.positionedOffset(this.dragDiv)[1]+Element.getDimensions(this.dragDiv).height-this.bodyDiv.scrollTop)+'px';this.scaleDiv.style.left=(Position.positionedOffset(this.dragDiv)[0]-this.bodyDiv.scrollLeft)+'px';this.scaleDiv.style.display='';},cancelDrag:function(e)
{var me=this;var func=function(e){this.addTooltip(e);};Event.stopObserving(me.dragDiv,'click',func,false);this.dragDiv.style.cursor='pointer';this.inDrag=false;this.scaleDiv.style.display='none';this.dragCoord=null;this.dragDiv.style.display='none';this.currentDragBox=null;this.dragSemafor=0;},addCancelTTEvents:function()
{},cancelTT:function(e)
{if(this.inDrag)
return false;this.inDrop=false;FamundoMainUtils.stopTT();this.cancelDrag();},unsetDrag:function(e)
{var box=this.bodyBoxes[this.dragDiv.getAttribute('ix')];if((!box)||(!this.inDrag))
{this.cancelDrag();}},setItemAsDraggable:function(item)
{me=this;new Draggable($(item).id,{revert:false});},cellAt:function(x,y)
{for(var i=(this.rowShInc+1);i<this.rowInc;i++)
{var crow=this._getBodyRow(i);var top=Position.positionedOffset(crow)[1];var bottom=top+Element.getDimensions(crow).height;var left=Position.positionedOffset(crow)[0];var right=left+Element.getDimensions(crow).width;if(top<=y&&bottom>=y&&left<=x&&right>=x)
{var leng=this._getHeaderColumnCnt()-crow.cells.length;for(var j=0;j<crow.cells.length;j++)
{var ccell=crow.cells[j];var ctop=Position.positionedOffset(ccell)[1];var cbottom=ctop+Element.getDimensions(ccell).height;var cleft=Position.positionedOffset(ccell)[0];var cright=cleft+Element.getDimensions(ccell).width;if(ctop<=y&&cbottom>=y&&cleft<=x&&cright>=x)
{return{'row':crow,'cell':ccell,'overBorder':(cright-x)};}}}}
return false;},buildLeft:function(nRowSpan)
{if(nRowSpan==null)
{nRowSpan=false;}
this.leftDiv=document.createElement('div');if(/Konqueror|Safari|KHTML/.test(navigator.userAgent))
this.leftDiv.style.display='none';this.leftDiv.className='grid_div grid_left_div';this.mainDiv.appendChild(this.leftDiv);this.leftTable=document.createElement('table');this.leftTable.className='grid_table grid_left_table';this.leftDiv.appendChild(this.leftTable);var ltbody=document.createElement('tbody');this.leftTable.appendChild(ltbody);if(this.hasHeaderDiv)
{this.leftRow=document.createElement('tr');ltbody.appendChild(this.leftRow);var leftFirstRow=this._getHeaderColumn(0,0).cloneNode(true);this.leftRow.appendChild(leftFirstRow);if(nRowSpan)
{var leftSecondRow=this._getHeaderColumn(0,0).cloneNode(true);leftSecondRow.style.width='0px';leftSecondRow.className='grid_white_cell';leftSecondRow.removeChild(leftSecondRow.firstChild);this.leftRow.appendChild(leftSecondRow);}}
this.hasLeftDiv=true;this.nRowSpan=nRowSpan;},addRow:function(row,rclass,cclass,rproprieties,rresize)
{var nRow=document.createElement('tr');var id=this.rowInc-(this.rowShInc+1);nRow.setAttribute('index',id);this.rowProprieties[id]=rproprieties;var cRow=new Array();var cText=new Array();var bodyRow=new Array();var bodyColumns=new Array();nRow.className=rclass;this.bodyTable.firstChild.appendChild(nRow);bodyRow[this.rowInc]=nRow;if(this.isHooverSelectable)
{this.setRowEvent(this.rowInc-(this.rowShInc+1),'mouseover','this.selectRow');this.setRowEvent(this.rowInc-(this.rowShInc+1),'mouseout','this.deselectRow');}
if(this.isClickSelectable)
{this.setInternalEvent('this._getBodyRow('+this.rowInc+')','click','clickSelect(e)');}
for(var i=0;i<row.length;i++)
{cRow[i]=document.createElement('td');cText[i]=document.createElement('div');cText[i].innerHTML=row[i];if(famundoUtils.isArray(cclass))
{cRow[i].className='grid_body_cell '+cclass[i];}
else
{cRow[i].className='grid_body_cell '+cclass;}
cRow[i].appendChild(cText[i]);cRow[i].setAttribute('UNSELECTABLE','on');nRow.appendChild(cRow[i]);this._getBodyColumn(this.rowInc,i).setAttribute('column',(i+(this._getHeaderColumnCnt()-row.length)));if(this.isResizable)
{this.setInternalEvent('this._getBodyColumn('+(this.rowInc)+','+i+')','mousemove','inResize(e)');this.setInternalEvent('this._getBodyColumn('+(this.rowInc)+','+i+')','mousedown','markCell(e)');this.setInternalEvent('this._getBodyColumn('+(this.rowInc)+','+i+')','mouseup','doResize(e)');this._getBodyColumn(this.rowInc,i).setAttribute('unselectable','on');}}
if(this.hasLeftDiv)
{var nLRow=document.createElement('tr');nLRow.className=rclass;this.leftTable.firstChild.appendChild(nLRow);var lCell=new Array();var cnt=1;if(this.nRowSpan)
{cnt=2;}
for(i=0;i<cnt-(this._getHeaderColumnCnt()-row.length);i++)
{lCell[i]=cRow[i].cloneNode(true);if((this._getHeaderColumnCnt()-row.length==0)&&i==0)
null;else
{lCell[i].style.width='0em';lCell[i].className='grid_white_cell';}
nLRow.appendChild(lCell[i]);}}
this.rowInc++;if(!rresize)
this.setDivsSize();return nRow;},replaceRow:function(ix,row,rclass,cclass,rproprieties)
{var nRow=this.findRow(ix);this.rowProprieties[ix]=rproprieties;var cRow=new Array();var cText=new Array();var bodyRow=new Array();var bodyColumns=new Array();nRow.className=rclass;famundoUtils.removeAllChildren(nRow);var incr=parseInt(ix)+parseInt((this.rowShInc+1));for(var i=0;i<row.length;i++)
{cRow[i]=document.createElement('td');cText[i]=document.createElement('div');cText[i].innerHTML=row[i];if(famundoUtils.isArray(cclass))
{cRow[i].className='grid_body_cell '+cclass[i];}
else
{cRow[i].className='grid_body_cell '+cclass;}
cRow[i].appendChild(cText[i]);cRow[i].setAttribute('unselectable','on');nRow.appendChild(cRow[i]);cRow[i].setAttribute('column',(i+(this._getHeaderColumnCnt()-row.length)));if(this.isResizable)
{this.setInternalEvent('this._getBodyColumn('+(incr)+','+i+')','mousemove','inResize(e)');this.setInternalEvent('this._getBodyColumn('+(incr)+','+i+')','mousedown','markCell(e)');this.setInternalEvent('this._getBodyColumn('+(incr)+','+i+')','mouseup','doResize(e)');}}
this.setDivsSize();return nRow;},rebuildIndex:function(row)
{var j=eval(row)+1;for(var i=j;i<(this.rowInc-(this.rowShInc+1));i++)
{var crow=this.findRow(i);crow.setAttribute('index',(i-1));this.rowProprieties[i-1]=this.rowProprieties[i];}},deleteRow:function(row)
{var tbody=this.bodyTable.firstChild;var ix=row.getAttribute('index');this.rebuildIndex(ix);tbody.removeChild(row);this.rowInc--;},deleteAllRows:function()
{while((this.rowInc-(this.rowShInc+1))>0)
{var crow=this.findRow(0);this.deleteRow(crow);}
this.rowProprieties=new Array();this.rowInc=this.rowShInc+1;},clearAll:function()
{this.containerDiv.removeChild(this.mainDiv);this.rowProprieties=new Array();},findRow:function(ix)
{for(var i=(this.rowShInc+1);i<this.rowInc;i++)
{var crow=this._getBodyRow(i);if(crow.getAttribute('index')==ix)
{return crow;}}
return false;},getRowProperties:function(ix)
{return this.rowProprieties[ix];},addHRow:function(row,rclass,cclass,id,visible)
{var nRow=document.createElement('tr');nRow.setAttribute('index',id);if(!visible)
nRow.style.display='none';var cRow=new Array();var cText=new Array();nRow.className=rclass;var htbody=this.headerTable.firstChild;var btbody=this.bodyTable.firstChild;htbody.appendChild(nRow);for(var i=0;i<row.length;i++)
{cRow[i]=document.createElement('td');cText[i]=document.createTextNode(row[i]);if(famundoUtils.isArray(cclass))
{cRow[i].className='grid_header_cell '+cclass[i];}
else
{cRow[i].className='grid_header_cell '+cclass;}
cRow[i].appendChild(cText[i]);nRow.appendChild(cRow[i]);}
var bodyShRow=new Array();bodyShRow=nRow.cloneNode(true);if(this.rowShInc>0)
{btbody.insertBefore(bodyShRow,this._getBodyRow(this.rowShInc));}
else
{btbody.appendChild(bodyShRow);}
var nLRow=null;if(this.hasLeftDiv)
{nLRow=document.createElement('tr');nLRow.className=rclass;if(this.rowShInc>0)
{this.leftTable.firstChild.insertBefore(nLRow,this._getLeftRow(this.rowShInc));}
else
{this.leftTable.firstChild.appendChild(nLRow);}
var lCell=new Array();var cnt=1;if(this.nRowSpan)
{cnt=2;}
for(i=0;i<cnt-(this._getHeaderColumnCnt()-row.length);i++)
{lCell[i]=cRow[i].cloneNode(true);if((this._getHeaderColumnCnt()-row.length==0)&&i==0)
null;else
{lCell[i].style.width='0em';lCell[i].className='grid_white_cell';}
nLRow.appendChild(lCell[i]);}
this.cornerTable.firstChild.appendChild(nLRow.cloneNode(true));}
this.rowInc++;this.rowShInc++;this.setDivsSize();return nRow;},deleteSHRow:function(row)
{var ix=row.getAttribute('index');var brow=null;for(var i=1;i<this.rowShInc;i++)
{var crow=this._getBodyRow(i);if(crow.getAttribute('index')==ix)
{brow=crow;break}}
Element.remove(row);this.rowShInc--;if(brow!=null)
{Element.remove(brow);this.rowInc--;}},setCellAttr:function(row,column,attr,val)
{this._getBodyColumn(row,column).setAttribute(attr,val);if(this.hasLeftDiv)
{var lColumn=this._getLeftColumn(row,column);if(lColumn)
this._getLeftColumn(row,column).setAttribute(attr,val);}},build:function(elm)
{this.containerDiv=elm;this.scaleDiv=document.createElement('div');this.scaleDiv.className='grid_div grid_scale_div';this.dragDiv=document.createElement('div');this.dragDiv.className='grid_div grid_drag_div';this.dragDiv.id=this.objID+'__drag';this.mainDiv.appendChild(this.scaleDiv);this.scaleDiv.style.display="none";this.bodyDiv.appendChild(this.dragDiv);elm.appendChild(this.mainDiv);if(this.isResizable)
{this.resizeDiv=document.createElement('div');this.resizeDiv.className='grid_resize_div';this.resizeDiv.style.display='none';this.mainDiv.appendChild(this.resizeDiv);this.resizeDiv.appendChild(document.createElement('br'));this.setInternalEvent('this.resizeDiv','mouseup','doResize(e)');this.setInternalEvent('this.bodyDiv','mouseup','doResize(e)');this.setInternalEvent('this.resizeDiv','mousemove','inResize(e)');}
this.setDivsSize();var me=this;famundoUtils.addEvent(this.bodyDiv,'scroll',function(){me.onGridScroll();},false);Event.observe(window,'resize',this.resFunc,false);this.bodyTable.id=this.objID+'__table';if(!this.isReadOnly)
{this.setItemAsDraggable(this.dragDiv);this.setItemAsDroppable(this.bodyTable);this.setInternalEvent('this.dragDiv','mouseup','doDrop(e)');this.setInternalEvent('this.dragDiv','mousedown','dragInit(e)');}
this.setInternalEvent('this.bodyDiv','mouseup','cancelDrag(e)');this.setInternalEvent('this.dragDiv','mouseout','unsetDrag(e)');Event.observe(this.bodyDiv,'mousedown',this.onBodyTableContextMenu);Event.observe(this.bodyDiv,'contextmenu',function(e){Event.stop(e);});if(this.isResizable&&this.columnRelativeWidth)
this.setFixedWidth();},setFixedWidth:function()
{var nCol=this._getHeaderColumnCnt();for(var i=0;i<nCol;i++)
{var cell=this._getHeaderColumn(i);if(i==(nCol-1))
{cell.style.width='auto';}
else
{cell.style.width=(Element.getDimensions(cell).width)+'px';}}
var btbody=this.bodyTable.firstChild;var bodyFirstRow=this._getBodyRow(0);btbody.removeChild(bodyFirstRow);bodyFirstRow=this._getHeaderRow(0).cloneNode(true);if(this._getBodyRow(0))
btbody.insertBefore(bodyFirstRow,this._getBodyRow(0));if(famundoUtils.isIE)
{this.headerTable.style.width=(Element.getDimensions(this.bodyTable).width-this.bodyDiv.scrollLeft)+'px';}},setRowEvent:function(rowCnt,event,jsfunction)
{eval('famundoUtils.addEvent(this._getBodyRow(parseInt(rowCnt)+1),"'+event+'",'+jsfunction+',false)');this.rowEvents[rowCnt]={'event':event,'jsfunction':jsfunction}},removeRowEvent:function(rowCnt,event,jsfunction)
{Event.stopObserving(this._getBodyRow(parseInt(rowCnt)+1),event,eval(jsfunction));this.rowEvents[rowCnt]=null;},setHCellEvent:function(cellCnt,event,jsfunction)
{var hederColumns=this._getAllHeaderColumns();eval('famundoUtils.addEvent(headerColumns[cellCnt],"'+event+'",'+jsfunction+',false)');},setInternalEvent:function(obj,event,jsfunction)
{var me=this;eval('famundoUtils.addEvent('+obj+',"'+event+'",function(e) { me.'+jsfunction+'; },false)');},getSelectedRow:function()
{for(var i=(this.rowShInc+1);i<this.rowInc;i++)
{var crow=this._getBodyRow(i);if(Element.hasClassName(crow,'clickSelected'))
{return crow;}}
return false;},getSelectedIndex:function()
{var srow=this.getSelectedRow();if(srow)
{var ix=srow.getAttribute('index');return ix;}
else
return false;},getRowData:function(ix)
{var cRow=this.findRow(ix);if(cRow)
{var propr=this.rowProprieties[ix];return propr;}
else
return false},setSelectedRow:function(ix)
{this.clearSelectedRow();if(ix.nodeName)
var selectedRow=ix;else
var selectedRow=this.findRow(ix);if(selectedRow)
Element.addClassName(selectedRow,'clickSelected');},scrollToSelectedItem:function()
{famundoApplication.scrollToElement(this.bodyDiv,this.getSelectedRow(),[20,0]);},clearSelectedRow:function()
{var crow=this.getSelectedRow();if(crow)
Element.removeClassName(crow,'clickSelected');},clickSelect:function(e)
{var selectedRow=Event.findElement(e,'tr');var ix=selectedRow.getAttribute('index');var propr=this.rowProprieties[ix];if(this.procRowSelected)
{this.procRowSelected(ix,propr);}},selectRow:function(e)
{var selectedRow=Event.findElement(e,'tr');selectedRow.style.backgroundColor='';Element.addClassName(selectedRow,'selected');},deselectRow:function(e)
{var selectedRow=Event.findElement(e,'tr');Element.removeClassName(selectedRow,'selected');},sortColumn:function(e)
{var sortCell=Event.findElement(e,'td');var sortKind=sortCell.getAttribute('sort');var column=sortCell.getAttribute('column');var sColumn=new Array();var initial=new Array();for(var i=(this.rowShInc+1);i<this.rowInc;i++)
{sColumn[i-(this.rowShInc+1)]=this._getBodyCellText(i,column);initial[i-(this.rowShInc+1)]=this._getBodyCellText(i,column);}
sColumn.sort();if(sortKind=='asc')
{sColumn.reverse();}
this.rebuildRows(initial,sColumn);this.togleSort(sortCell,sortKind);},rebuildRows:function(initial,after)
{var emptyRows=this.rowShInc+1;for(var i=0;i<initial.length;i++)
{var pos=famundoUtils.inArray(initial.slice(i),after[i]);pos=pos+i;if(initial[i]!=after[i]&&i!=pos)
{initial[pos]=initial[i];initial[i]=after[i];this.replaceRows(this._getBodyRow(i+emptyRows),this._getBodyRow(pos+emptyRows));var buffRow=this._getBodyRow(i+emptyRows);}}},replaceRows:function(row1,row2)
{var ix1=row1.getAttribute('index');var ix2=row2.getAttribute('index');var vbBefore=true;var tbody=famundoUtils.ascendDOM(row1,'tbody');var buffRow=famundoUtils.getNextSiblingOfNodeName(row1,'tr');if(buffRow==null||buffRow==row2)
{vbBefore=false;buffRow=famundoUtils.getPreviousSiblingOfNodeName(row1,'tr');}
tbody.insertBefore(row1,row2);row1.setAttribute('index',ix2);row2.setAttribute('index',ix1);var buffPropr=this.rowProprieties[ix1];this.rowProprieties[ix1]=this.rowProprieties[ix2];this.rowProprieties[ix2]=buffPropr;tbody.removeChild(row2);if(vbBefore)
tbody.insertBefore(row2,buffRow);else
tbody.insertBefore(row2,buffRow.nextSibling);},togleSort:function(sortCell,sortKind)
{if(this.lastSortColumn!=null)
{var lastImg=famundoUtils.getChildOfClass(this.lastSortColumn,'grid_up');if(lastImg==null)
{lastImg=famundoUtils.getChildOfClass(this.lastSortColumn,'grid_down');Element.removeClassName(lastImg,'grid_down');}
else
{Element.removeClassName(lastImg,'grid_up');}
this.lastSortColumn.setAttribute('sort','')}
var column=sortCell.getAttribute('column');var img=famundoUtils.getChildOfClass(sortCell,this.sortableCols[column]);if(sortKind=='asc')
{famundoUtils.replaceClass(img,'grid_up','grid_down');sortCell.setAttribute('sort','desc');}
else if(sortKind=='desc')
{famundoUtils.replaceClass(img,'grid_down','grid_up');sortCell.setAttribute('sort','asc');}
else
{Element.addClassName(img,'grid_up');sortCell.setAttribute('sort','asc');}
this.lastSortColumn=sortCell;},onGridScroll:function(e)
{if(this.scroll_semafor)
{clearTimeout(this.scroll_semafor);}
this.setDivsPos();var me=this;this.scroll_semafor=setTimeout(function(){me.scrollTimer()},200);},scrollTimer:function()
{this.scroll_semafor=null;this.setDivsPos();},setDivsPos:function()
{var lft=this.bodyDiv.scrollLeft;var tp=Position.realOffset(this.bodyDiv)[1];var offset=famundoUtils.isIE?0:1;if(this.headerDiv!=null)
{this.headerDiv.style.width=parseInt(this.bodyDiv.clientWidth)+parseInt(lft)+'px';this.headerDiv.style.left=-parseInt(lft)+'px';}
if(this.leftDiv!=null&&!(/Konqueror|Safari|KHTML/.test(navigator.userAgent)))
{this.leftDiv.style.height=parseInt(this.bodyDiv.clientHeight)+parseInt(tp)+offset+'px';this.leftDiv.style.top=-parseInt(tp)+'px';}},setDivsSize:function()
{this.setDivsPos();var offset=famundoUtils.isIE?1:0;if(this.hasLeftDiv)
{this.leftDiv.style.width='0px';this.cornerDiv.style.width='0px';}
if(famundoUtils.isIE)
this.bodyTable.style.width=this.headerTable.offsetWidth+'px';this.headerDiv.style.display='';if(this.bodyBoxesCount>0||this.shBoxesCount>0)
{var cnt=this._getHeaderColumnCnt();for(var i=0;i<cnt;i++)
{this.reposBoxes(i,true);this.reposBoxes(i,false);}}},inResize:function(e)
{if(Event&&Event.element&&Event.element(e))
var selectedCell=Event.findElement(e,'td');else
return false;if(this.isMarked)
{if(selectedCell.style)
selectedCell.style.cursor='w-resize';this.resizeDiv.style.height=this.bodyDiv.clientHeight+'px';this.resizeDiv.style.top='0px';this.resizeDiv.style.left=(Position.positionedOffset(this.resizeCell)[0]-Position.realOffset(this.bodyDiv)[0])+'px';this.resizeDiv.style.width=(Event.pointerX(e)-Position.cumulativeOffset(this.resizeCell)[0]+Position.realOffset(this.resizeCell)[0])+'px';this.resizeDiv.style.display='block';}
else
{if(!FamundoMainUtils.isIE)
var offs=1;else
var offs=10;var xPos=Position.cumulativeOffset(selectedCell)[0]-Position.realOffset(selectedCell)[0];if((Event.pointerX(e)>=(xPos+parseInt(Element.getDimensions(selectedCell).width)-offs)))
{selectedCell.style.cursor='w-resize';this.resizeCell=selectedCell;}
else
{selectedCell.style.cursor='auto';this.resizeCell=null;}}},markCell:function(e)
{if(this.resizeCell)
{this.isMarked=true;this.resizeCell.style.cursor='w-resize';this.startX=Event.pointerX(e);}},doResize:function(e)
{if(!this.isMarked)
return false;var btbody=this.bodyTable.firstChild;if(this.resizeCell)
{if((this.resizeCell.clientWidth+Event.pointerX(e)-this.startX)>1)
{var column=this.resizeCell.getAttribute('column');this._getHeaderColumn(column).style.width=this.resizeCell.clientWidth+Event.pointerX(e)-this.startX+'px';var diff=parseInt(Event.pointerX(e)-this.startX);var bodyFirstRow=this._getBodyRow(0);btbody.removeChild(bodyFirstRow);bodyFirstRow=this._getHeaderRow(0).cloneNode(true);btbody.insertBefore(bodyFirstRow,this._getBodyRow(0));for(var i=(this.rowShInc+1);i<this.rowInc;i++)
{this._getBodyColumn(i,column).style.width=this.resizeCell.style.width;}}
this.startX=0;this.resizeCell.style.cursor='auto';this.resizeCell=null;this.isMarked=false;this.resizeDiv.style.display='none';}
if(famundoUtils.isIE)
{this.headerTable.style.width=(Element.getDimensions(this.bodyTable).width-this.bodyDiv.scrollLeft)+'px';}
this.setDivsSize();},abortResize:function(e)
{this.startX=0;if(this.resizeCell)
{this.resizeCell.style.cursor='auto';this.resizeCell=null;}
this.isMarked=false;this.resizeDiv.style.display='none';},makeDiv:function(prm)
{var scolumns=new Array();var cdivs=new Array();var j=0;for(var k=0;k<prm.length;k++)
{var Content=prm[k].content;var Caption=prm[k].caption;var multiev=prm[k].multiev;var tpd=prm[k].tpd;var TT=prm[k].TT;var drag=prm[k].drag;if(multiev==null||!multiev)
multiev=1;if(drag==null)
drag=false;var captionDiv=null;var captionTxtDiv=null;if(Caption!=null)
{captionDiv=document.createElement('div');captionDiv.className+='calendar_user_tdiv';captionTxtDiv=document.createElement('div');captionTxtDiv.className='calendar_user_tdiv '+Caption.css;captionTxtDiv.innerHTML=Caption.txt;}
var contentDiv=document.createElement('div');contentDiv.className+='calendar_user_div';var contentTxtDiv=document.createElement('div');if(!tpd)
contentTxtDiv.className='calendar_user_div';else
{contentTxtDiv.className='calendar_user_tdiv';}
if(Content.css_txt)
{contentTxtDiv.className+=' '+Content.css_txt;}
contentTxtDiv.innerHTML=Content.txt;var me=this;if(!tpd)
{if(multiev!=1)
{this.reposMultiev(Content);}
this.bodyBoxes[this.bodyBoxesCount]=[captionDiv,captionTxtDiv,contentDiv,contentTxtDiv,Caption,Content,multiev,tpd,TT,drag];cdivs[this.bodyBoxesCount]=contentDiv;this.bodyDiv.appendChild(contentDiv);contentDiv.id=this.objID+'__'+this.bodyBoxesCount;this.bodyBoxesCount++;}
else
{this.shBoxes[this.shBoxesCount]=[captionDiv,captionTxtDiv,contentDiv,contentTxtDiv,Caption,Content,multiev,tpd,TT,false];this.headerDiv.appendChild(contentDiv);cdivs[this.shBoxesCount]=contentDiv;contentDiv.style.cursor="pointer";this.shBoxesCount++;}
this.addTriggers(contentDiv,tpd,drag,multiev,Content.showTooltip);var pos=FamundoMainUtils.inArray(scolumns,Content.scolumn);if(pos==-1)
{scolumns[j]=Content.scolumn;j++;}}
for(var i=0;i<scolumns.length;i++)
this.reposBoxes(scolumns[i],tpd);return cdivs;},addTriggers:function(obj,tpd,drag,multiev,showTooltip)
{var me=this;if(!tpd)
{if(drag)
{famundoUtils.addEvent(obj,'mouseover',function(e,object){me.doDraggable(e,obj);},false);}
else if(multiev==1)
{famundoUtils.addEvent(obj,'mouseover',function(e,object){me.highlightBox(e,obj);},false);}
if(showTooltip)
{}}
else
{if(showTooltip)
{famundoUtils.addEvent(obj,'click',function(e,objct){me.addTooltip(e,obj);},false);}}},addTT:function(obj)
{var me=this;},moveDiv:function(Caption,Content,TT,drag)
{var id=Content.id;var box=this.getBoxById(id);if(!box)
return false;this.bodyBoxes[box.row_num][4]=Caption;this.bodyBoxes[box.row_num][5]=Content;this.bodyBoxes[box.row_num][8]=TT;this.bodyBoxes[box.row_num][9]=drag;if(Caption!=null)
{if(this.bodyBoxes[box.row_num][1])
var captionTxtDiv=this.bodyBoxes[box.row_num][1];else
{var captionTxtDiv=document.createElement('div');this.bodyBoxes[box.row_num][1]=captionTxtDiv;if(!this.bodyBoxes[box.row_num][0])
{var captionDiv=document.createElement('div');captionDiv.className+='calendar_user_tdiv';this.bodyBoxes[box.row_num][0]=captionDiv;}}
captionTxtDiv.className='calendar_user_tdiv '+Caption.css;captionTxtDiv.innerHTML=Caption.txt;}
else
{this.bodyBoxes[box.row_num][0]=null;this.bodyBoxes[box.row_num][1]=null;}
var contentTxtDiv=this.bodyBoxes[box.row_num][3];contentTxtDiv.className='calendar_user_div';if(Content.css_txt)
{contentTxtDiv.className+=' '+Content.css_txt;}
contentTxtDiv.innerHTML=Content.txt;this.reposBoxes(Content.scolumn,false);},removeDiv:function(id,guid)
{var nrows=-1;while(this.getBoxById(id,guid))
{var bx=this.getBoxById(id,guid);if(bx)
{this.removeBox(bx.obj);this.rebuildBoxIndex(bx.row_num,bx.kind);}}},removeBox:function(objct)
{Effect.Fade(objct[3],{duration:2,afterFinish:function(){if(objct[2])Element.remove(objct[2]);}});},rebuildBoxIndex:function(incr,kind)
{var j=incr+1;if(kind=='sh')
{for(var i=j;i<(this.shBoxesCount);i++)
{this.shBoxes[i-1]=this.shBoxes[i];}
this.shBoxes.splice((this.shBoxes.length-1))
this.shBoxesCount--;}
else
{for(var i=j;i<(this.bodyBoxesCount);i++)
{this.bodyBoxes[i-1]=this.bodyBoxes[i];}
this.bodyBoxes.splice(this.bodyBoxes.length-1)
this.bodyBoxesCount--;}},addTooltip:function(e,objct)
{this.unHighlightBoxes();if(this.inDrag||this.inDrop)
return false;this.inDrop=false;this.inDrag=false;var caption='';var end_caption='';var menu='';var tt=null;object=$(objct);if(object)
{var containerBox=this.getBox(object);var mousetop=Position.cumulativeOffset(containerBox[2])[1];}
else
{if(this.dragDiv.getAttribute('ix')>=0)
{var obj=famundoUtils.ascendDOMtoClass(Event.element(e),'calendar_user_div');if((!obj)||(obj!=this.dragDiv&&(!obj.parentNode||obj.parentNode!=this.dragDiv)))
return false;var containerBox=this.bodyBoxes[this.dragDiv.getAttribute('ix')];object=this.dragDiv;var mousetop=Math.max(Position.cumulativeOffset(containerBox[2])[1]-this.bodyDiv.scrollTop,Position.cumulativeOffset(this.headerDiv)[1]+Element.getDimensions(this.headerDiv).height);}}
if(containerBox)
{if(containerBox[5]&&containerBox[5].css)
{var dvs=document.getElementsByClassName(containerBox[5].css,this.mainDiv);this.highlightBoxes(dvs);}
var offset=0;if(FamundoMainUtils.isIE&&!domLib_isIE7)
offset=10;var mouseleft=Position.cumulativeOffset(containerBox[2])[0]-offset;tt=containerBox[8];if(tt!=null)
{caption=tt.caption;content=tt.content;}
domTT_close(this.dragDiv);var domTT_styleClass='domTTOverlib';var domTT_oneOnly=true;var tid=FamundoMainUtils.generateId()+'content';if(containerBox[4]!=null)
{caption='<table class="TT_caption" cellspacing=\'0\'><tr><td class="'+containerBox[4].css+' TT_cell_title">'+caption+'</td><td>';end_caption='</td></tr></table>';}
if(tt&&tt.menu!=null)
{var menu='<table class="TT_caption"  cellspacing=\'0\'><tr><td class="TT_cell_menu">';var ttid=new Array();var j=tt.menu.length;for(var k=0;k<j;k++)
{ttid[k]=null;if(tt.menu[k]&&tt.menu[k].lbOn)
{ttid[k]='menu_'+containerBox[5].id+'_'+k;menu+='<A href="'+tt.menu[k].action+'" class="lbOn" id="'+ttid[k]+'">'+tt.menu[k].label+'</A>';}
else if(tt.menu[k]&&tt.menu[k].dialogBox)
{ttid[k]='menu_'+containerBox[5].id+'_'+k;menu+='<span class="span_href" value="true" txt="'+tt.menu[k].label+'" onClick="" id="'+ttid[k]+'">'+tt.menu[k].label+'</span>';}
else
{menu+='<span class="span_href" onClick="'+tt.menu[k].action+'">'+tt.menu[k].label+'</span>';}
if(k<j-1)
menu+=' | ';}
menu+='</td></tr></table>';}
var closeLink="<div class='cancel_icon float_right'></div>";var tt_id='TT_'+FamundoMainUtils.generateId();domTT_activate(object,e,'caption',caption+menu+end_caption,'content','<table id="'+tid+'"><tr><td>'+content+'</td></tr></table>','trail',true,'fade','neither','type','sticky','styleClass','domTT','delay',0,'inframe',true,'closeAction','destroy','closeLink',closeLink,'x',(mouseleft),'y',mousetop,'id',tt_id);domTT_flag=object;var twidth=Element.getDimensions($(tid)).width;if(twidth>300)
{$(tt_id).style.display='none';$(tid).style.width='300px';if(FamundoMainUtils.isIE)
{$(tt_id).style.width='300px';var ifrms=document.getElementsByClassName('protect_iframe');for(var k=0;k<ifrms.length;k++)
{Position.clone($(tid),ifrms[k]);}}
$(tt_id).style.left=(Position.cumulativeOffset(containerBox[2])[0]+Element.getDimensions(containerBox[2]).width-300)+'px';$(tt_id).style.display='';}
this.dbox=new Array();var dlg_action=new Array();if(tt&&tt.menu!=null)
{for(var k=0,j=tt.menu.length;k<j;k++)
{if($(ttid[k]))
{if(tt.menu[k].dialogBox)
{this.dbox[k]=tt.menu[k].dialogBox;var me=this;$(ttid[k]).setAttribute('ix',k);dlg_action=function(e){me.doShowBox(e);};Event.observe($(ttid[k]),'click',dlg_action);}}}}}
if(OS=='Mac'&&!famundoUtils.isIE&&!famundoUtils.isSafari)
{var cdif=20+(mouseleft+Element.getDimensions($(tt_id)).width)-(Position.cumulativeOffset(this.bodyDiv)[0]+Element.getDimensions(this.bodyDiv).width);if(cdif>0)
{var lft=mouseleft-cdif;$(tt_id).style.left=lft+'px';}}
Event.stop(e);},doShowBox:function(e)
{var obj=Event.element(e);var k=obj.getAttribute('ix');if(this.dbox[k])
this.dbox[k].showBox();},doDraggable:function(e,obj)
{if(this.inDrop)
{return false;}
if(this.inDrag)
return false;var me=this;if(this.highlightBox(e,obj))
{if(this.headerTable.rows[0].cells.length>2)
setTimeout(function(){me.showDragScaleDiv("<div class='grid_scale_txt_div'>"+famundoCalendarText.clickforDragtxt+'</div><div class="grid_scale_txt_div">'+famundoCalendarText.clickforTT+'</div>',32);},100);else
setTimeout(function(){me.showDragScaleDiv("<span class='grid_scale_txt_span'>"+famundoCalendarText.clickforDragtxt+'</span> OR <span class="grid_scale_txt_span">'+famundoCalendarText.clickforTT+'</span>');},100);}},highlightBox:function(e,obj,zoomOut)
{this.dragDiv.style.visibility='hidden';famundoUtils.removeAllChildren(this.dragDiv);if(!obj)
{if(Event&&Event.element(e))
var txtBox=Event.findElement(e,'div');var containerBox=this.getBoxByText(txtBox);}
else
var containerBox=this.getBox(obj);if(!containerBox)
{return false;}
var text=containerBox[3].cloneNode(true);if(containerBox[5].ztxt)
text.innerHTML=containerBox[5].ztxt;this.dragDiv.appendChild(text);var box=null;var ix=this.getBoxIx(containerBox[2]);this.dragDiv.style.display='';Position.clone(containerBox[2],this.dragDiv);this.dragDiv.className='grid_drag_div '+containerBox[5].css;this.dragDiv.setAttribute('ix',ix);this.dragDiv.setAttribute('drag',containerBox[9]);if(containerBox[0]!=null)
{var hdrag=containerBox[0].cloneNode(true);var htxt=containerBox[1].cloneNode(true);famundoUtils.removeAllChildren(hdrag);hdrag.className=containerBox[4].css+' grid_hdrag_div';this.dragDiv.appendChild(hdrag);this.dragDiv.style.border='0px'}
else
{if(zoomOut)
this.dragDiv.style.borderTop='2px solid red';}
this.currentDragBox=containerBox;var me=this;if(!zoomOut)
{Element.addClassName(text,'zoom_text');text.style.overflow='visible';text.style.height='auto';var content_start_td=this._getBodyDataColumn(containerBox[5].srow,containerBox[5].scolumn);text.style.width='auto';var h=Math.max(Element.getDimensions(text).height,Element.getDimensions(containerBox[2]).height);var w=Math.max(120,Element.getDimensions(content_start_td).width);document.getElementsByClassName('grid_full_text',text).each(function(item){item.style.width=w+'px';});this.dragDiv.style.height=(h+5)+'px';text.style.height=h+'px';this.dragDiv.style.width=(w)+'px';var posit=Position.cumulativeOffset(content_start_td)[0]+w;var bdiv=Position.cumulativeOffset(this.bodyDiv)[0]+Element.getDimensions(this.bodyDiv).width;var lft=posit-bdiv;if(lft<=0)
{lft=0;}
else
{lft+=15;}
if(hdrag)
hdrag.style.width=w+'px';this.dragDiv.style.left=(parseInt(famundoUtils.findPosX(content_start_td))-lft-parseInt(famundoUtils.findPosX(this.bodyDiv)))+'px';}
this.dragDiv.style.visibility='visible';if(!containerBox[9]&&containerBox[5].showTooltip)
{this.showDragScaleDiv('<div class="grid_scale_txt_div">'+famundoCalendarText.clickforTT+'</div>');}
this.inDrag=false;return true;},unHighlightBoxes:function()
{for(var i=0;i<this.lastHilighted.length;i++)
{if(this.lastHilighted[i])
{if(!famundoUtils.isIE)
{this.lastHilighted[i].style.opacity=0.7;}
else
{var xg=70;this.lastHilighted[i].style.filter='alpha(opacity='+xg+')';}
if(this.lastHilighted[i]&&this.lastHilighted[i].parentNode&&this.lastHilighted[i].parentNode.style)
this.lastHilighted[i].parentNode.style.zIndex='';}}
this.lastHilighted=new Array();},highlightBoxes:function(dvs)
{var j=0;for(var i=0;i<dvs.length;i++)
{gradient_div=dvs[i];if(Element.hasClassName(gradient_div,'calendar_gradient_div'))
{if(!famundoUtils.isIE)
{gradient_div.style.opacity=1;}
else
{var xg=100;gradient_div.style.filter='alpha(opacity='+xg+')';}
if(gradient_div.parentNode)
gradient_div.parentNode.style.zIndex=100;this.lastHilighted[j]=gradient_div;j++;}}},getBoxById:function(boxid,guid)
{for(var i=0;i<this.bodyBoxesCount;i++)
{if(boxid==this.bodyBoxes[i][5].id)
{var vb=true;if(guid&&this.bodyBoxes[i][5].guid!=guid)
vb=false;if(vb)
return{'kind':'body','row_num':i,'obj':this.bodyBoxes[i]};}}
for(var i=0;i<this.shBoxesCount;i++)
{if(boxid===this.shBoxes[i][5].id)
{var vb=true;if(guid&&this.shBoxes[i][5].guid!=guid)
vb=false;if(vb)
return{'kind':'sh','row_num':i,'obj':this.shBoxes[i]};}}
return false;},getNboxesByRow:function(rnum)
{var j=0;for(var i=0;i<this.shBoxesCount;i++)
{if(rnum==this.shBoxes[i][5].srow)
{j++;}}
return j;},getBoxByText:function(txtBox)
{for(var i=0;i<this.bodyBoxesCount;i++)
{if((txtBox===this.bodyBoxes[i][1])||(txtBox===this.bodyBoxes[i][3]))
{return this.bodyBoxes[i];}}
for(var i=0;i<this.shBoxesCount;i++)
{if((txtBox===this.shBoxes[i][1])||(txtBox===this.shBoxes[i][3]))
{return this.shBoxes[i];}}
return false;},getBox:function(div)
{for(var i=0;i<this.bodyBoxesCount;i++)
{if((div===this.bodyBoxes[i][2])||(div===this.bodyBoxes[i][0]))
{return this.bodyBoxes[i];}}
for(var i=0;i<this.shBoxesCount;i++)
{if((div===this.shBoxes[i][2])||(div===this.shBoxes[i][0]))
{return this.shBoxes[i];}}
return false;},getBoxIx:function(div)
{for(var i=0;i<this.bodyBoxesCount;i++)
{if((div===this.bodyBoxes[i][2])||(div===this.bodyBoxes[i][0]))
{return i;}}
for(var i=0;i<this.shBoxesCount;i++)
{if((div===this.shBoxes[i][2])||(div===this.shBoxes[i][0]))
{return i;}}
return false;},getNBoxes:function(scolumn)
{var result=0;for(var i=0;i<this.bodyBoxes.length;i++)
{if(this.bodyBoxes[i][5].scolumn==scolumn)
result++;}
return result;},getColumnBoxes:function(scolumn)
{var result=new Array();var subresult=new Array();var tmp=new Array();var pos=new Array();var j=0;for(var i=0;i<this.bodyBoxes.length;i++)
{if(this.bodyBoxes[i][5].scolumn==scolumn)
{tmp[j]=this.bodyBoxes[i][5].srow.zTrail(3);pos[i]=this.bodyBoxes[i][5].srow.zTrail(3);j++;}}
tmp.sort();var j=0;var k=0;var diff=10000;for(var i=0;i<tmp.length;i++)
{var posBox=famundoUtils.inArray(pos,tmp[i]);pos[posBox]='';var vbRange=false;for(var l=0;l<k;l++)
{var coord=this.getCoord(this.bodyBoxes[posBox],false);var left=coord[0];var top=coord[1];var right=coord[0]+coord[2];var bottom=coord[1]+coord[3];var coord2=this.getCoord(subresult[l],false);var left2=coord2[0];var top2=coord2[1];var right2=coord2[0]+coord2[2];var bottom2=coord2[1]+coord2[3];var vbRange=true;if((left2<right&&left2>=left&&top2>=top&&top2<=bottom&&top<=diff)||(right2<right&&right2>=left&&top2>=top&&top2<=bottom&&top<=diff)||(left<right2&&left>=left2&&top>=top2&&top<=bottom2&&top<=diff)||(right<right2&&right>=left2&&top>=top2&&top<=bottom2&&top<=diff))
{diff=bottom2
vbRange=false;break}}
if(vbRange)
{result[j]=subresult;j++;k=0;subresult=new Array();vbRange=false;var diff=10000;}
subresult[k]=this.bodyBoxes[posBox];k++;}
if(!vbRange&&subresult[0])
{result[j]=subresult;}
return result;},reposBoxes:function(scolumn,tpd)
{if(!tpd)
{var boxes=this.bodyBoxes;var groups=this.getColumnBoxes(scolumn);if(groups[0])
{for(var gi=0;gi<groups.length;gi++)
{this.drawBoxes(scolumn,tpd,groups[gi],groups[gi].length);}
return;}}
else
{var boxes=this.shBoxes;}
this.drawBoxes(scolumn,tpd,boxes);},drawBoxes:function(scolumn,tpd,boxes,nBoxes)
{var j=0;var lincr=0;if(nBoxes==null)
nBoxes=this.getNBoxes(scolumn);for(var i=0;i<boxes.length;i++)
{if(boxes[i][5].scolumn==scolumn)
{var coord=this.getCoord(boxes[i],tpd);var width=coord[2];var height=coord[3];var top=coord[1];var left=false;var caption_height=coord[4];if(!tpd)
{var start_td=this._getBodyDataColumn(boxes[i][5].srow,scolumn);}
else
{var start_td=this._getSHeaderColumn(boxes[i][5].srow,scolumn);}
var diff=start_td.clientWidth-parseInt(width);if((!tpd)&&(nBoxes-1!=0)&&(boxes[i][6]==1))
{lincr=diff/(nBoxes-1);}
famundoUtils.removeAllChildren(boxes[i][2]);var gradient_div=document.createElement('div');gradient_div.className+='calendar_gradient_div '+boxes[i][5].css;gradient_div.style.height=height+'px';if(!famundoUtils.isIE)
{gradient_div.style.opacity=0.7;}
else
{var xg=70;gradient_div.style.filter='alpha(opacity='+xg+')';gradient_div.appendChild(document.createElement('<!-->'));}
boxes[i][2].appendChild(gradient_div);boxes[i][2].style.zIndex='';if(boxes[i][0]!=null)
{var gradient_div=document.createElement('div');gradient_div.className+='calendar_gradient_div ';gradient_div.style.height=caption_height+'px';if(!famundoUtils.isIE)
{gradient_div.style.opacity=0.5;}
else
{var xg=50;gradient_div.style.filter='alpha(opacity='+xg+')';gradient_div.appendChild(document.createElement('<!-->'));}
boxes[i][0].appendChild(gradient_div);}
boxes[i][2].style.width=width+'px';boxes[i][2].style.height=height+'px';boxes[i][2].style.top=top+'px';boxes[i][2].style.left=eval(coord[0]+lincr*j+1)+'px';if(width>7)
boxes[i][3].style.width=((width-7)+'px');if(height>caption_height)
boxes[i][3].style.height=((height-caption_height)+'px');boxes[i][3].style.top=(caption_height+2)+'px';boxes[i][3].style.left='3px';var icons=document.getElementsByClassName('grid_full_text',boxes[i][3]);if(icons.length>0)
{var dwidth=parseInt(boxes[i][3].style.width);icons[0].style.width=(dwidth)+'px';}
if(boxes[i][0]!=null)
{boxes[i][0].style.width=width+'px';boxes[i][0].style.height=caption_height+'px';boxes[i][0].style.top='0px';boxes[i][0].style.left='0px';boxes[i][1].style.width=width+'px';boxes[i][1].style.height=caption_height+'px';boxes[i][1].style.top='0px';boxes[i][1].style.left='0px';boxes[i][0].appendChild(boxes[i][1]);Element.addClassName(boxes[i][1],boxes[i][1].css);boxes[i][1].style.paddingLeft='25px';boxes[i][2].appendChild(boxes[i][0]);}
boxes[i][2].appendChild(boxes[i][3]);j++;}}},getBoxesOfRow:function(row)
{var result=new Array();var j=0;for(var i=0;i<this.bodyBoxesCount;i++)
{if(row==this.bodyBoxes[i][5].srow)
{result[j]=this.bodyBoxes[i];j++;}}
return result;},getMaxSprop:function(row,column)
{var rBoxes=this.getBoxesOfRow(row);var result=0;for(var i=0;i<rBoxes.length;i++)
{if(rBoxes[i][5].scolumn<=column&&rBoxes[i][5].ecolumn>=column&&rBoxes[i][5].sprop>result)
{result=rBoxes[i][5].sprop;}}
return result;},reposMultiev:function(boxPos)
{var row=boxPos.srow;var boxes=this.getBoxesOfRow(row);var unorderPos=new Array();var orderPos=new Array();var repos=new Array();for(var i=0;i<boxes.length;i++)
{unorderPos[i]=boxes[i][5].scolumn+boxes[i][5].sprop;orderPos[i]=boxes[i][5].scolumn+boxes[i][5].sprop;}
orderPos.sort();var j=0;var intersection=new Array();var boxesSprop=new Array();for(var i=0;i<unorderPos.length;i++)
{var pos=famundoUtils.inArray(unorderPos,orderPos[i]);unorderPos[pos]='-100';repos[i]=boxes[pos];if((boxPos.scolumn<=repos[i][5].ecolumn&&boxPos.scolumn>=repos[i][5].scolumn)||(boxPos.scolumn<=repos[i][5].scolumn&&boxPos.ecolumn>=repos[i][5].scolumn))
{intersection[j]=i;boxesSprop[j]=repos[i][5].sprop;j++;}}
for(var i=0;i<6;i++)
{var emptyPos=famundoUtils.inArray(boxesSprop,i*(1/8));if(emptyPos==-1)
{emptyPos=i*(1/8);break;}
else
emptyPos=-1;}
if(emptyPos!=-1)
{boxPos.sprop=emptyPos;}
else
{var j=1;var vb=false;var changed=new Array();var mx_ecolumn=0;var prop=0;var k=0;for(var i=0;i<repos.length;i++)
{if(repos[i][5].ecolumn>mx_ecolumn)
mx_ecolumn=repos[i][5].ecolumn;var pos=famundoUtils.inArray(intersection,i);var inInters=false;if(pos>=0)
inInters=true;if(inInters&&!vb)
{if((boxPos.scolumn<repos[i][5].scolumn))
{if(boxPos.ecolumn>=repos[i][5].scolumn)
{boxPos.sprop=prop;repos[i][5].sprop=repos[i][5].sprop+repos[i][6];vb=true;}}
else if((!intersection[k+1]&&boxPos.scolumn<=mx_ecolumn))
{boxPos.sprop=repos[i][6]+repos[i][5].sprop;break;}
else
{prop+=repos[i][6];k++;}}
if(vb)
{if((boxPos.ecolumn>=repos[i][5].scolumn)||(repos[i-1][5].ecolumn>=repos[i][5].scolumn))
{if(boxPos.sprop<=repos[i][5].sprop)
repos[i][5].sprop=repos[i][5].sprop+repos[i][6];changed[j]=repos[i];j++;}}}
for(var i=1;i<changed.length;i++)
{this.reposBoxes(changed[i][5].scolumn,false)}}},getOpacCoef:function(heigh)
{if(heigh<50&&heigh>=0)
return 0.03;if(heigh<500&&heigh>=50)
return 0.01;if(heigh<1000&&heigh>=500)
return 0.0085
if(heigh>=1000)
return 0.009;},destroy:function()
{Event.stopObserving(window,'resize',this.resFunc,false);if(this.containerDiv.firstChild)
Element.remove(this.containerDiv.firstChild);},getSafariCellHeight:function(css_class,css_file)
{var cel_css=css_class.split(' ');for(var i=0;i<cel_css.length;i++)
{var h=famundoUtils.findStyle('td.'+cel_css[i]+'[class"'+cel_css[i]+'"]',css_file);if(h&&h.height)
{return parseInt(h.height);}}
return false;},getCoord:function(box,tpd)
{var endSpace=1;var caption_height=0;var vb_saf=false;if(!tpd)
{var content_start_td=this._getBodyDataColumn(box[5].srow,box[5].scolumn);var content_end_td=this._getBodyDataColumn(box[5].erow,box[5].ecolumn);if(/Konqueror|Safari|KHTML/.test(navigator.userAgent))
{if(box[6]!=1)
vb_saf=130;else
vb_saf=20;}
if(vb_saf)
{if(box[5].erow>box[5].srow)
var content_height=(box[5].erow-box[5].srow+box[5].eprop-box[5].sprop)*(vb_saf+3)*box[6];else
var content_height=(box[5].eprop-box[5].sprop)*(vb_saf+3)*box[6];if(box[0]!=null)
{var caption_start_td=this._getBodyDataColumn(box[4].srow,box[4].scolumn);var caption_end_td=this._getBodyDataColumn(box[4].erow,box[4].ecolumn);if(box[5].erow>box[5].srow)
var caption_height=(box[4].erow-box[4].srow+box[4].eprop-box[4].sprop)*(vb_saf+3)*box[6];else
var caption_height=(box[4].eprop-box[4].sprop)*(vb_saf+3)*box[6];}}
else
{if(box[5].erow>box[5].srow)
{var content_height=(box[5].erow-box[5].srow+box[5].eprop-box[5].sprop)*(Element.getDimensions(content_start_td).height)*box[6];}
else
{var content_height=(box[5].eprop-box[5].sprop)*(Element.getDimensions(content_start_td).height)*box[6];}
if(box[0]!=null)
{var caption_start_td=this._getBodyDataColumn(box[4].srow,box[4].scolumn);var caption_end_td=this._getBodyDataColumn(box[4].erow,box[4].ecolumn);if(box[5].erow>box[5].srow)
var caption_height=(box[4].erow-box[4].srow+box[4].eprop-box[4].sprop)*(caption_start_td.clientHeight+1)*box[6];else
var caption_height=(box[4].eprop-box[4].sprop)*(caption_start_td.clientHeight+1)*box[6];}}
endSpace=3/4;var height=content_height+caption_height;if(box[6]!=1)
endSpace=1;}
else
{var content_start_td=this._getSHeaderColumn(box[5].srow,box[5].scolumn);var content_end_td=this._getSHeaderColumn(box[5].erow,box[5].ecolumn);if(/Konqueror|Safari|KHTML/.test(navigator.userAgent))
{vb_saf=20;}
if(vb_saf)
var height=vb_saf+4;else
var height=(content_start_td.offsetHeight+1);}
if(vb_saf)
if(box[6]!=1)
var content_top=Position.cumulativeOffset(content_start_td)[1]-vb_saf-Position.cumulativeOffset(this.bodyDiv)[1]+(box[5].sprop*(vb_saf+1))+box[6]*(vb_saf)+6;else
var content_top=Position.cumulativeOffset(content_start_td)[1]-vb_saf/2-Position.cumulativeOffset(this.bodyDiv)[1]+(box[5].sprop*(vb_saf+1));else
var content_top=parseInt(famundoUtils.findPosY(content_start_td))-parseInt(famundoUtils.findPosY(this.bodyDiv))+(box[5].sprop*(content_start_td.clientHeight+1));var caption_top=content_top-caption_height;var top=caption_top;var left=parseInt(famundoUtils.findPosX(content_start_td))-parseInt(famundoUtils.findPosX(this.bodyDiv));var offset=famundoUtils.isIE?0:1;var width=parseInt(famundoUtils.findPosX(content_end_td))-parseInt(famundoUtils.findPosX(this.bodyDiv))+(endSpace*(content_end_td.clientWidth))-left+offset;if(box[6]!=1)
{if(vb_saf)
height=box[6]*vb_saf;else
height=box[6]*content_start_td.clientHeight;}
return[left,top,width,height,caption_height];},_onBodyTableContextMenu:function(e)
{if(!Event.isLeftClick(e))
{var obj=famundoUtils.ascendDOMtoClass(Event.element(e),'calendar_user_div');if((!obj)||(obj!=this.dragDiv&&(!obj.parentNode||obj.parentNode!=this.dragDiv)))
{if(this.options['onBodyTableContextMenu'])
{this.options['onBodyTableContextMenu'](e,this);Event.stop(e);}}
else
{if(this.options['onDragDivContextMenu'])
{this.options['onDragDivContextMenu'](e,this);Event.stop(e);}}}}}
var FamundoDayGrid=Class.create();FamundoDayGrid.prototype={initialize:function(kind,options)
{this.options=Object.extend({},options||{});if(kind&&kind=='day')
{this.isDay=true;}
else
{this.isDay=false;}
this.nColumns=7;this.calendar=null;this.wDays=null;this.dHours=null;this.hStart=24;this.hColumns=null;this.sheaderClass=null;this.nShRows=0;this.startDate=null;this.firstDate=null;this.minDate=new Date();this.maxDate=new Date();this.split_row=null;this.mDayE=new Array();this.mDayDiv=new Array();this.hDayDiv=new Array();this.hDates=new Array();this.drawPoints=null;this.drawDiv=null;this.isReadOnly=false;this.h24Format=false;},destroy:function()
{this.calendar.destroy();},setReadOnly:function(kind)
{this.isReadOnly=kind;},seth24Format:function(kind)
{this.h24Format=kind;},setStartHour:function(startH)
{this.calendar.setStartRow((parseInt(startH))*2);},setDivsSize:function()
{this.calendar.setDivsSize();},setCurentDay:function(startD)
{this.startDate=startD;},setStartDay:function(startD)
{this.firstDate=startD;},setNDays:function(nr)
{this.nColumns=nr;},build:function(container,gclass,gtitle)
{if(this.isDay)
this.setNDays(1);this.wDays=new Array();this.dHours=new Array();var columns=new Array();this.hcolumns=new Array();if(gclass==null)
{gclass='calendar_main_div';}
if(gtitle==null)
{gtitle='day calendar';}
this.calendar=new FamundoGrid(gclass,gtitle);if(this.startDate)
{today=famundoDateUtil.parseISO(this.startDate);if(null==today)
today=new Date();}
else
{today=new Date();}
var wDescription=this.getWeekDescription(today);var sd=today.getDate()
dn=famundoUtils.inArray(wDescription[3],sd)+1;if(!this.isDay)
{if(!this.firstDate)
{if(dn<=(7-this.nColumns+1))
{var start=dn;this.minDate=today;}
else
{var start=7-this.nColumns+1;var ddiff=today.getDate()-dn+start;this.minDate.setDate(ddiff);}}
else
{start=famundoUtils.inArray(wDescription[3],famundoDateUtil.parseISO(this.firstDate).getDate())+1;this.minDate=famundoDateUtil.parseISO(this.firstDate);}
columns[0]=today.format('yyyy');}
else
{columns[0]='';start=dn;this.minDate=today;}
var ddiff=this.minDate.getDate()+this.nColumns-1;this.maxDate=famundoDateUtil.addDays(this.minDate,this.nColumns-1);this.hcolumns[0]='';var j=1;var limit=(this.nColumns+start-1);for(var i=start;i<=limit;i++)
{this.hDates[j]={'date':famundoDateUtil.addDays(today,start-dn+j-1).format('yyyy-mm-dd')};var s=famundoDateUtil.addDays(today,start-dn+j-1).format('ddd, mmm dd');if(!this.isDay)
columns[j]=s;else
columns[j]='';this.wDays[j]=famundoDateUtil.addDays(today,start-dn+j-1).format('mmm dd');j++;}
var headerClass=new Array();this.sheaderClass=new Array();headerClass[0]='calendar_year_cell calendar_header_cell';this.sheaderClass[0]='calendar_year_cell  calendar_sheader_white_cell';for(var i=1;i<=this.nColumns;i++)
{headerClass[i]='calendar_day_cell  calendar_header_cell';this.sheaderClass[i]='calendar_day_cell  calendar_sheader_cell';this.hcolumns[i]='';}
headerClass[(dn-start+1)]='calendar_current_day_cell  calendar_header_cell';this.calendar.buildHeader(columns,headerClass,!this.isDay);Element.addClassName(this.calendar.headerTable,'calendar_header');if(!this.isDay)
{this.calendar.buildLeft(true);}
var rows=new Array();this.calendar.buildBody(rows,'','');var srows=new Array();var bodyClass=new Array();var sbodyClass=new Array();var nextDay=new Array();var hourDesc=famundoDateUtil.getDayHours(this.hStart,'b',false,this.h24Format);var hours=hourDesc[0];var dHours=hourDesc[1];this.addShRow(1,true);var k=this.calendar.rowShInc+1;bodyClass[0]='calendar_year_cell calendar_left_cell';nextDay[0]='next_day';var climit=columns.length;for(var j=1;j<climit;j++)
{rows[j]='';srows[j-1]='';bodyClass[j]='calendar_day_cell calendar_body_cell';sbodyClass[j-1]='calendar_body_cell';nextDay[j]='next_day';}
var holimit=hours.length;for(i=0;i<holimit;i++)
{rows[0]=hours[i];this.calendar.addRow(rows,'',bodyClass,k,true);this.calendar.setCellAttr(k,0,'rowSpan',2);this.dHours[k-this.calendar.rowShInc]=dHours[i];k++;this.calendar.addRow(srows,'',sbodyClass,k,true);k++;}
rows[0]='';this.calendar.addRow(rows,'',nextDay,k,true);this.calendar.setCellAttr(k,0,'valign','midle');if(this.isReadOnly)
this.calendar.setReadOnly(true);this.calendar.build(document.getElementById(container));this.calendar.setColumnProperties(this.hDates);this.calendar.addCancelTTEvents();if(!this.isReadOnly)
{this.drawDiv=document.createElement('div');Element.addClassName(this.drawDiv,'grid_draw_div');this.calendar.bodyDiv.appendChild(this.drawDiv);var me=this;var down=function(e){me.markPos(e);}
Event.observe(this.calendar.bodyDiv,'mousedown',down,false);var up=function(e){me.buildEvent(e);}
Event.observe(this.calendar.bodyDiv,'mouseup',up,false);var move=function(e){me.drawEvent(e);}
Event.observe(this.calendar.bodyDiv,'mousemove',move,false);var scrl=function(){me.cancelDraw();}
Event.observe(this.calendar.bodyDiv,'scroll',scrl,false);}
var me=this;Event.observe(this.calendar.bodyDiv,'click',function(e,object){me.calendar.addTooltip(e,null);});},markPos:function(e)
{if(!Event.isLeftClick(e))
return true;if(!this.calendar.inDrag)
{var y=(Event.pointerY(e)-Position.cumulativeOffset(this.calendar.mainDiv)[1]+this.calendar.bodyDiv.scrollTop);var x=(Event.pointerX(e)-Position.cumulativeOffset(this.calendar.mainDiv)[0]+this.calendar.bodyDiv.scrollLeft);var crow=this.calendar.cellAt(x,y);if(crow&&crow.row.getAttribute('index')>0&&crow.cell.getAttribute('column')>0)
{var lft=(Position.cumulativeOffset(crow.cell)[0]-Position.cumulativeOffset(this.calendar.mainDiv)[0]+this.calendar.bodyDiv.scrollLeft);var scale=this.calendar.getScale(crow,y,0,crow.cell,true,lft);var start=this.calendar.columnProperties[crow.cell.getAttribute('column')].date+' '+scale.h+':'+scale.min+scale.am;var left=Position.positionedOffset(crow.cell)[0];var width=Element.getDimensions(crow.cell).width;this.drawPoints={'direction':'down','Y':y,'height':0,'start':start,'end':'','scolumn':crow.cell.getAttribute('column')};this.drawDiv.style.display='';this.drawDiv.style.top=y+'px';this.drawDiv.style.left=left+'px';this.drawDiv.style.width=width+'px';this.drawDiv.style.height='0px';}}},getDateForContextMenu:function(e)
{if(this.getInfoForContextMenu(e))
return this.getInfoForContextMenu(e)[0];},getInfoForContextMenu:function(e)
{var y=(Event.pointerY(e)-Position.cumulativeOffset(this.calendar.mainDiv)[1]+this.calendar.bodyDiv.scrollTop);var x=(Event.pointerX(e)-Position.cumulativeOffset(this.calendar.mainDiv)[0]+this.calendar.bodyDiv.scrollLeft);var crow=this.calendar.cellAt(x,y);if(crow&&crow.row.getAttribute('index')>0&&crow.cell.getAttribute('column')>0)
{var scale=this.calendar.getScale(crow,y,0,crow.cell,true);var cm_date=this.calendar.columnProperties[crow.cell.getAttribute('column')].date+' '+scale.h+':'+scale.min+scale.am;return[cm_date];}
return false;},drawEvent:function(e)
{if(!this.calendar.inDrag&&this.drawPoints!=null)
{var y=(Event.pointerY(e)-Position.cumulativeOffset(this.calendar.mainDiv)[1]+this.calendar.bodyDiv.scrollTop);var x=(Event.pointerX(e)-Position.cumulativeOffset(this.calendar.mainDiv)[0]+this.calendar.bodyDiv.scrollLeft);var crow=this.calendar.cellAt(x,y);if(crow&&crow.row.getAttribute('index')>0&&crow.cell.getAttribute('column')>0)
{var scale=this.calendar.getScale(crow,y,0,crow.cell,true);var end=this.calendar.columnProperties[this.drawPoints.scolumn].date+' '+scale.h+':'+scale.min+scale.am;}
var height=y-this.drawPoints.Y;if(height<0)
{this.drawDiv.style.top=y+'px';height=(-1)*height;this.drawPoints.direction='up';}
else
{this.drawPoints.direction='down';}
this.drawDiv.style.height=height+'px';this.drawPoints.height=height;this.drawPoints.end=end;}},buildEvent:function(e)
{if(!this.calendar.inDrag&&this.drawPoints!=null&&this.drawPoints.height>10)
{if(this.drawPoints.direction=='down')
{var start=this.drawPoints.start;var end=this.drawPoints.end;}
else
{var end=this.drawPoints.start;var start=this.drawPoints.end;}
this.drawPoints=null;new Ajax.Updater(famundoApplication.openModalWindow().getContent(),famundoCalendarUrl.get_edit_event+'?kind=quick&start_date='+start+'&end_date='+end,{evalScripts:true,method:'get',onComplete:function(){Windows.getWindow('famundoModalWindow').showCenter(true);famundoApplication.setOverlayOpacity();setTimeout(function(){famundoApplication.updateModalWindowSize2();},1);}});}
else
this.cancelDraw();},cancelDraw:function()
{this.drawPoints=null;this.drawDiv.style.display='none';this.calendar.scaleDiv.style.display='none';},addShRow:function(id,visible)
{this.calendar.addHRow(this.hcolumns,'',this.sheaderClass,id,visible);},removeSplit:function()
{if(this.nShRows>3)
{if(this.split_row!=null)
{this.calendar.deleteSHRow(this.split_row);}}},addSplit:function()
{if(this.nShRows>3)
{var cellClass=new Array();cellClass[0]='calendar_header_white';for(var i=1;i<this.hcolumns.length;i++)
cellClass[i]='calendar_sheader_split';this.split_row=this.calendar.addHRow(this.hcolumns,'',cellClass,-1,true);var me=this;famundoUtils.addEvent(this.split_row,'click',function(e){me.switchRows(e)});this.hideRows();return true;}
return false;},getRowPosition:function(scolumn)
{for(var i=1;i<this.mDayE.length;i++)
{if(scolumn>this.mDayE[i])
{return i;break;}}
return false;},addAllMultiDayEvents:function(colect)
{var prm=new Array();var dv=false;var incr=0;for(var i=0;i<colect.length;i++)
{var descript=colect[i];dv=this.addMultiDayEvent(descript,descript.TT,i+this.mDayDiv.length);if(dv)
{prm[incr]=dv;incr++;}}
var res=this.calendar.makeDiv(prm);for(var i=0;i<res.length;i++)
{if(res[i])
this.mDayDiv[this.mDayDiv.length]=res[i];}
if(this.nShRows>3)
{var pos=-1;for(var i=0;i<this.hDayDiv.length;i++)
{pos=parseInt(this.hDayDiv[i]);if(this.mDayDiv[pos])
{this.mDayDiv[pos].style.display="none";}}}},addAllDayEvents:function(colect)
{var prm=new Array();j=0;for(var i=0;i<colect.length;i++)
{var descript=colect[i];var drive={};if(descript.drive_txt)
drive.summary=descript.drive_txt;if(descript.drive_css)
drive.css_id=descript.drive_css;if(descript.drive_duration)
drive.duration=descript.drive_duration;if(!drive.summary)
drive=null;var ret=this.addDayEvent(drive,descript,false,false,descript.TT,descript.drag);if(ret)
{prm[j]=ret;j++;}}
this.calendar.makeDiv(prm);},addMultiDayEvent:function(descript,TT,pos)
{if(!descript.ends_at&&descript.duration)
descript.ends_at=famundoDateUtil.addDays(famundoDateUtil.parseISO(descript.starts_at),(parseInt(descript.duration)-1)).strftime("%Y-%m-%d");var coord=this.verifPos(descript);if(!coord)
return false;this.nShRows++;var result=false;if(this.nShRows!=1)
{var posRow=this.getRowPosition(coord.scolumn);if(!posRow)
{this.removeSplit();this.addShRow(this.nShRows,true);result=this.addDayEvent(null,descript,false,true,descript.TT);if(this.addSplit()&&result.content.srow>=3)
this.hDayDiv[this.hDayDiv.length]=pos;this.mDayE[this.nShRows]=coord.ecolumn;}
else
{this.nShRows--;this.removeSplit();result=this.addDayEvent(null,descript,false,true,descript.TT,null,null,posRow-1);if(this.addSplit()&&result.content.srow>=3)
this.hDayDiv[this.hDayDiv.length]=pos;this.mDayE[posRow]=coord.ecolumn;}}
else
{this.mDayE[1]=coord.ecolumn;result=this.addDayEvent(null,descript,false,true,descript.TT);}
return result;},hideRows:function()
{for(var i=3;i<this.calendar.rowShInc-1;i++)
{this.calendar._getSHeaderRow(i).style.display='none';this.calendar._getBodyRow(i).style.display='none';}},switchRows:function(e)
{for(var i=3;i<this.calendar.rowShInc-1;i++)
{Element.toggle(this.calendar._getSHeaderRow(i));Element.toggle(this.calendar._getBodyRow(i));if(this.calendar._getSHeaderRow(i).style.display!='none')
famundoUtils.replaceClass(this.calendar.headerTable,'calendar_header','calendar_header_on');else
famundoUtils.replaceClass(this.calendar.headerTable,'calendar_header_on','calendar_header');}
for(var i=0;i<this.hDayDiv.length;i++)
if(this.mDayDiv[this.hDayDiv[i]])
{Element.toggle(this.mDayDiv[this.hDayDiv[i]]);}
for(var i=0;i<this.hcolumns.length;i++)
{this.calendar.reposBoxes(i,true);this.calendar.reposBoxes(i,false);}},verifPos:function(descript)
{var sDate=famundoDateUtil.parseISO(descript.starts_at);var eDate=famundoDateUtil.parseISO(descript.ends_at);var scolumn=famundoUtils.inArray(this.wDays,sDate.format('mmm dd'));var ecolumn=famundoUtils.inArray(this.wDays,eDate.format('mmm dd'));if(ecolumn<0&&scolumn<0&&(eDate<this.minDate||sDate>this.maxDate))
{return false;}
else
{if(scolumn<0)
scolumn=1;if(ecolumn<0)
ecolumn=this.wDays.length-1;}
return{'scolumn':scolumn,'ecolumn':ecolumn};},addDayEvent:function(drive,descript,multiev,tpd,TT,drag,move,posRow)
{if(multiev==null)
{multiev=false;}
if(tpd==null)
{tpd=false;}
if(drag==null)
{drag=false;}
if(move==null)
{move=false;}
var sDate=famundoDateUtil.parseISO(descript.starts_at);var eDate=famundoDateUtil.parseISO(descript.ends_at);var coord=this.verifPos(descript);if(!coord)
return false
var scolumn=coord.scolumn;var ecolumn=coord.ecolumn;var icons_div='';var icons_end='';if(!descript.clip)
descript.clip=false;if(!descript.recurrent)
descript.recurrent=false;if(descript.clip||descript.recurrent||descript.sdate||descript.edate)
{var icons_size=0;var icons_content="";if(descript.clip)
{icons_size+=11;icons_content+='<div class="float_left calendar_clip_div"></div>';}
if(descript.recurrent)
{icons_size+=17;if(descript.birthday)
{icons_content+='<div class="float_right calendar_birthday_div"></div>';}
else if(descript.anniversary)
{icons_content+='<div class="float_right calendar_anniversary_div"></div>';}
else
{icons_content+='<div class="float_right calendar_recurrence_div"></div>';}}
if(descript.sdate||descript.edate)
{icons_size+=13;icons_content+='<div class="float_left calendar_timer_div"></div>';}
var icons_div='<div class="float_left" style="margin:0px;padding:0px;width:';if(FamundoMainUtils.isIE)
{var itop='-14px;';var ileft='0px;';}
else
{var itop='0px;';var ileft=-icons_size+'px;';}
var wspace='';if(!tpd)
wspace="white-space:normal;";icons_div+=icons_size+'px;">'+icons_content+'</div><div class="grid_full_text" style="left:'+ileft+' top:'+itop+'position:relative;text-indent:'+(icons_size+2)+'px;'+wspace+'">';icons_end='</div>';}
if(!tpd)
{var srow=famundoUtils.inArray(this.dHours,sDate.getHours());var sdtxt=this.getHourDescription(sDate);var sdTTtxt=sDate.strftime(famundoDateTimeFormats.short_date)+' @'+this.getHourDescription(sDate);if(descript.sdate)
{var sdt=famundoDateUtil.parseISO(descript.sdate);sdtxt=sdt.strftime(famundoDateTimeFormats.short_date)+'<br />@ '+this.getHourDescription(sdt);sdTTtxt=sdt.strftime(famundoDateTimeFormats.short_date)+' @'+this.getHourDescription(sdt);}
var edtxt=this.getHourDescription(eDate);var edTTtxt=eDate.strftime(famundoDateTimeFormats.short_date)+' @'+this.getHourDescription(eDate);if(descript.edate)
{var edt=famundoDateUtil.parseISO(descript.edate);edtxt=edt.strftime(famundoDateTimeFormats.short_date)+' '+this.getHourDescription(edt);edTTtxt=edt.strftime(famundoDateTimeFormats.short_date)+' @'+this.getHourDescription(edt);}
var ztxt="<table>";ztxt+="<tr><td class='' style='color:#dddddd;' valign='top'>Ends:</td><td class='TT_description'>"+" @"+edtxt+"</td></tr>";if(drive&&drive.duration)
ztxt+="<tr><td class='' style='color:#dddddd;white-space:nowrap;'>Driving:</td><td class='TT_description' style='white-space:nowrap;'>"+drive.duration+" min.</td></tr>";if(descript.location&&descript.location.trim()!='')
{var lmap='';ztxt+="<tr><td class='' style='color:#dddddd;' valign='top'>Location:</td><td class='TT_description'>"+descript.location+"</td></tr>"+lmap;}
if(!this.isDay)
{ztxt=icons_div+sdtxt+'<br />'+descript.summary+ztxt;var txt=icons_div+sdtxt+'<br />'+descript.summary+icons_end;ztxt+="</table>"+icons_end;}
else
{ztxt=icons_div+sdtxt+'&nbsp;'+descript.summary+ztxt;if(descript.notes&&descript.notes.trim()!='')
ztxt+="<tr><td class='' style='color:#dddddd;'>Notes:</td><td class='TT_description'>"+FamundoMainUtils.unescape_javascript(descript.notes).unescapeHTML()+"</td></tr>";if(descript.clip&&descript.documents.trim()!='')
ztxt+="<tr><td class='' style='color:#dddddd;'>Documents:</td><td class='TT_description'>"+descript.documents+"</td></tr>";ztxt+="</table>"+icons_end;var txt=ztxt;}
if(srow<0)
{return false;}
if(sDate.getMinutes()>=30)
{srow++;var sProp=(sDate.getMinutes()-30)/30;}
else
{var sProp=sDate.getMinutes()/30;}
if(eDate.getHours()==0&&eDate.getMinutes()==0)
{var erow=famundoUtils.inArray(this.dHours,23);ecolumn=scolumn;}
else
var erow=famundoUtils.inArray(this.dHours,eDate.getHours());if(erow<0)
{return false;}
if((eDate-sDate)<1800000&&erow<=45)
erow+=2;if(eDate.getMinutes()>=30)
{erow++;var eProp=(eDate.getMinutes()-30)/30;}
else
{if(eDate.getHours()==0&&eDate.getMinutes()==0)
var eProp=59/30;else
var eProp=eDate.getMinutes()/30;}}
else
{if(posRow==null)
{srow=this.calendar.rowShInc-1;erow=this.calendar.rowShInc-1;}
else
{srow=posRow;erow=posRow;}
sProp=0;eProp=0;var txt=icons_div+descript.summary+icons_end;}
if(descript.guid)
var gid=descript.guid;else
var gid=null;var content={'id':descript.id,'srow':srow,'erow':erow,'scolumn':scolumn,'ecolumn':ecolumn,'sprop':sProp,'eprop':eProp,'showTooltip':!descript.no_tooltip,'ztxt':ztxt,'txt':txt,'css':'bg_color_'+descript.css_id,'css_txt':descript.css_txt,'clip':descript.clip,'recurrent':descript.recurrent,'guid':gid};var caption=null;var caption_text='';if(drive!=null)
{erow=srow;srow--;caption_text=drive.summary;var caption={'srow':srow,'erow':erow,'scolumn':scolumn,'ecolumn':ecolumn,'sprop':0,'eprop':0,'showTooltip':false,'txt':drive.summary,'css':'bg_calendar_'+drive.css_id};}
if(TT==null||TT=='')
{this.calendar.event_actions=null;if(TT==null)
{var guid='';if(descript.guid)
guid="&guid="+descript.guid;var readOnlyEvent=false;if(descript.read_only)
readOnlyEvent=true;var get_action=getActionFunction();if(!this.isReadOnly&&!readOnlyEvent)
{var params="id="+descript.id;if(descript.guid)
params+='&guid='+descript.guid;if(descript.recurrent){this.calendar.event_actions=[{'label':'edit','action':get_action(famundoCalendarUrl.get_edit_event,'edit_recur',params,famundoCalendarText.editRecurEvent+' "'+descript.summary+'"',famundoCalendarText.editRecurEventTxt)},{'label':'delete','action':get_action(famundoCalendarUrl.get_delete_event,'confirm_recur',params,famundoCalendarText.deleteRecurEvent+' "'+descript.summary+'"',famundoCalendarText.deleteRecurEventTxt)},{'label':'copy','action':get_action(famundoCalendarUrl.get_copy_event,'window',params)},{'label':'complete','action':get_action(famundoCalendarUrl.get_complete_url,'confirm',params,famundoCalendarText.completeEventTitle+' "'+descript.summary+'"',famundoCalendarText.completeEventTxt)}];}
else{this.calendar.event_actions=[{'label':'edit','action':get_action(famundoCalendarUrl.get_edit_event,'window',params)},{'label':'delete','action':get_action(famundoCalendarUrl.get_delete_event,'confirm',params,famundoCalendarText.deleteEvent+' "'+descript.summary+'"',famundoCalendarText.deleteEventTxt)},{'label':'copy','action':get_action(famundoCalendarUrl.get_copy_event,'window',params)},{'label':'complete','action':get_action(famundoCalendarUrl.get_complete_url,'confirm',params,famundoCalendarText.completeEventTitle+' "'+descript.summary+'"',famundoCalendarText.completeEventTxt)}];}}
else if(!descript.no_action)
{this.calendar.event_actions=[{'label':'view','action':get_action(famundoCalendarUrl.get_view_event+'?event_id='+descript.id+guid)}];drag=false;}}
var icons_tt=descript.summary;if(descript.view_access&&descript.view_access[0])
{icons_tt="<span title='"+descript.view_access[1]+"' class='calendar_"+descript.view_access[0]+"_div'>"+descript.summary+"</span>";}
if(!tpd)
{var TTtxt="<table><tr><td colspan='2' class='TT_summary'>"+icons_tt+"</td></tr>";if(!descript.sdate&&!descript.edate)
TTtxt+="<tr><td class='TT_label'>Time:</td><td class='TT_description' style='white-space:nowrap;'>"+this.getHourDescription(sDate)+" - "+this.getHourDescription(eDate)+"</td></tr>";else
TTtxt+="<tr><td class='TT_label'>Dates:</td><td class='TT_description' style='white-space:nowrap;'>"+sdTTtxt+" - "+edTTtxt+"</td></tr>";if(drive&&drive.duration)
TTtxt+="<tr><td class='TT_label'>Driving time:</td><td class='TT_description'>"+drive.duration+" min.</td></tr>";if(descript.location&&descript.location.trim()!='')
{var lmap='';if(descript.gmap)
{var lnk='show_google_map("'+descript.gmap.from_location+'","'+descript.gmap.to_location+'",""); return false;';lmap="<tr><td></td><td class='TT_description'><a title='"+descript.gmap.title+"' href='' onclick='"+lnk+"'><img alt='"+descript.gmap.title+"' src='"+descript.gmap.icon+"' /></a></td>";}
TTtxt+="<tr><td class='TT_label'>Location:</td><td class='TT_description'>"+descript.location+"</td></tr>"+lmap;}
if(descript.notes&&descript.notes.trim()!='')
TTtxt+="<tr><td class='TT_label'>Notes:</td><td class='TT_description'>"+FamundoMainUtils.unescape_javascript(descript.notes).unescapeHTML()+"</td></tr>";if(descript.clip&&descript.documents.trim()!='')
TTtxt+="<tr><td class='TT_label'>Documents:</td><td class='TT_description'>"+descript.documents+"</td></tr>";TTtxt+="</table>";TT={'caption':caption_text,'content':TTtxt,'menu':this.calendar.event_actions};}
else
{var TTtxt="<table><tr><td colspan='2' class='TT_summary'>"+icons_tt+"</td></tr>";if(parseInt(descript.duration)>1)
TTtxt+="<tr><td class='TT_label'>Dates:</td><td class='TT_description'>"+sDate.strftime(famundoDateTimeFormats.short_date)+" - "+famundoDateUtil.addDays(sDate,(parseInt(descript.duration)-1)).strftime(famundoDateTimeFormats.short_date)+"</td></tr>";else
TTtxt+="<tr><td class='TT_label'>Date:</td><td class='TT_description'>"+sDate.strftime(famundoDateTimeFormats.short_date)+"</td></tr>";if(descript.location&&descript.location.trim()!='')
{var lmap='';if(descript.gmap)
{var lnk='show_google_map("'+descript.gmap.from_location+'","'+descript.gmap.to_location+'",""); return false;';lmap="<tr><td></td><td class='TT_description'><a title='"+descript.gmap.title+"' href='' onclick='"+lnk+"'><img alt='"+descript.gmap.title+"' src='"+descript.gmap.icon+"' /></a></td>";}
TTtxt+="<tr><td class='TT_label'>Location:</td><td class='TT_description'>"+descript.location+"</td></tr>"+lmap;}
if(descript.notes&&descript.notes.trim()!='')
TTtxt+="<tr><td class='TT_label'>Notes:</td><td class='TT_description'>"+FamundoMainUtils.unescape_javascript(descript.notes).unescapeHTML()+"</td></tr>";if(descript.clip&&descript.documents.trim()!='')
TTtxt+="<tr><td class='TT_label'>Documents:</td><td class='TT_description'>"+descript.documents+"</td></tr>";TTtxt+="</table>";TT={'caption':caption_text,'content':TTtxt,'menu':this.calendar.event_actions};}}
if(!move)
{return{'caption':caption,'content':content,'multiev':multiev,'tpd':tpd,'TT':TT,'drag':drag};}
else
{this.calendar.moveDiv(caption,content,TT,drag);return false;}},moveEvent:function(descript)
{for(var i=0;i<descript.length;i++)
{var drive={};if(descript[i].drive_txt)
drive.summary=descript[i].drive_txt;if(descript[i].drive_css)
drive.css_id=descript[i].drive_css;if(descript[i].drive_duration)
drive.duration=descript[i].drive_duration;if(!drive.summary)
drive=null;this.addDayEvent(drive,descript[i],false,false,descript[i].TT,descript[i].drag,true);}},removeEvent:function(id,guid)
{this.calendar.removeDiv(id,guid);},getWeekDescription:function(data)
{var day_n=new Array();var day_w=new Array();var month=new Array();var year=new Array();var dn=data.getDay();var startDay=famundoDateUtil.getFirstDayOfWeek();if(dn<startDay)
data=famundoDateUtil.addDays(data,-7);for(var i=1;i<=7;i++)
{var add=0;if((i-1-startDay)<0)
{var incr=7+(i-1-startDay);add=7;}
else
var incr=i-1-startDay;var day=famundoDateUtil.addDays(data,(i-1-dn+add));day_w[incr]=famundoDateUtil.getShortWeekDay(i-1);day_n[incr]=day.getDate();month[incr]=famundoDateUtil.getShortMonthName(day.getMonth());year[incr]=day.getFullYear();}
var result=new Array();result[0]=year;result[1]=month;result[2]=day_w;result[3]=day_n;return result;},setCaprion:function(ix)
{alert(ix);},getHourDescription:function(dte)
{var nhours=dte.getHours();var nmins=dte.getMinutes();var AorP=" ";if(!this.h24Format)
{if(nhours>=12)
AorP=" "+famundoDateUtil.getTextPM();else
AorP=" "+famundoDateUtil.getTextAM();if(nhours>=13)
nhours-=12;if(nhours==0)
nhours=12;}
if(nmins<10)
nmins="0"+nmins;if(nhours<10)
nhours="0"+nhours;return nhours+":"+nmins+AorP;},enableGridContextMenu:function()
{var me=this;this.calendar.options['onBodyTableContextMenu']=function(e,grid_obj){buildScheduleMenu(e,grid_obj,me);}
this.calendar.options['onDragDivContextMenu']=function(e,grid_obj){buildDragDivContextMenu(e,grid_obj,me);}}};var FamundoABookGrid=Class.create();Object.extend(FamundoABookGrid.prototype,FamundoGrid);Object.extend(FamundoABookGrid.prototype,{initialize:function()
{this.aBook=null;this.titles=['Name','Home Phone','Work Phone','Home Cell','Work Cell','Birthday'];this.columnsClass=['h_name_column','h_home_phone_column','h_work_phone_column','h_home_cell_column','h_work_cell_column','h_birthday_column'];this.iCellClass=['name_column','home_phone_column','work_phone_column','home_cell_column','work_cell_column','birthday_column'];this.cellClass=new Array();this.rows=new Array();this.rClass=new Array();this.rPropr=new Array();this.cntRow=0;this.cellEvents=new Array();this.rowEvents=new Array();this.isBuild=false;this.relativeWidths=false;this.multipleSelections=false;this.hooverSelectable=true;this.clickSelectable=true;this.sortable=true;this.removeHscroll=true;this.scrollCall=false;this.scrollPos=0;this.scrollLimit=50;this.endRecords=false;},destroy:function()
{this.aBook.destroy();},setHooverSelectable:function(hoover)
{this.hooverSelectable=hoover;},setSortable:function(hoover)
{this.sortable=hoover;},setClickSelectable:function(hoover)
{this.clickSelectable=hoover;},setRemoveHscroll:function(hoover)
{this.removeHscroll=hoover;},setRowEvent:function(ix,evt,fname)
{this.aBook.setRowEvent(ix,evt,fname);},setMultipleSelected:function(rel)
{this.multipleSelections=rel;},setColumnsRelativeWidth:function(rel)
{this.relativeWidths=rel;},setScrollCall:function(rel)
{this.scrollCall=rel;},setScrollLimit:function(rel)
{this.scrollLimit=rel;},setInternalRowEvent:function(ix,event,jsfunction)
{var me=this;var obj=this.aBook.findRow(ix);eval('famundoUtils.addEvent('+obj+',"'+event+'",function(e) { '+jsfunction+'},false)');},addColumns:function(titles,headerClass)
{if(!this.multipleSelections)
{this.titles=new Array();this.columnsClass=new Array();var start=0;}
else
{this.titles=new Array("<input type='checkbox' name='row_all'  id='abook_row_all'>");this.columnsClass=new Array('h_select_column');start=1;}
for(var i=0;i<headerClass.length;i++)
{this.columnsClass[(start+i)]=headerClass[i];this.titles[(start+i)]=titles[i];}},addRow:function(row,rPropr,rClass,cellClass)
{this.rClass[this.cntRow]=rClass;this.rPropr[this.cntRow]=rPropr;if(!this.multipleSelections)
{this.rows[this.cntRow]=row;if(cellClass)
this.cellClass[this.cntRow]=cellClass;else
this.cellClass[this.cntRow]=this.iCellClass;}
else
{this.rows[this.cntRow]=new Array("<input type='checkbox' name='row[]'  id='abook_row_"+this.cntRow+"'>").concat(row);if(cellClass)
this.cellClass[this.cntRow]=new Array('select_column').concat(cellClass);else
this.cellClass[this.cntRow]=new Array('select_column').concat(this.iCellClass);}
this.cntRow++;},deleteRow:function(ix,noefect)
{var crow=this.aBook.findRow(ix);if(crow)
{if(!noefect)
{var me=this;new Effect.Puff(crow,{duration:1});setTimeout(function(){me.aBook.deleteRow(crow);me.rebuildInputId(ix);},1500);}
else
{this.aBook.deleteRow(crow);this.rebuildInputId(ix);}
this.cntRow--;}},rebuildInputId:function(ix)
{for(var i=ix;i<this.cntRow;i++)
{var crow=this.aBook.findRow(i);if(crow)
{var checks=crow.getElementsByTagName('input');for(var j=0;j<checks.length;j++)
{if(checks[j].name=='row[]')
{checks[j].id="abook_row_"+crow.getAttribute('index');}}}}},deleteAllRows:function()
{this.aBook.deleteAllRows();this.cntRow=0;},clearAll:function()
{if(this.aBook)
this.aBook.clearAll();this.isBuild=false;this.cntRow=0;},build:function(container,gclass,gtitle)
{if(!this.isBuild)
{var headerClass=new Array;var columns=new Array();if(gclass==null)
{gclass='abook_main_div';}
if(gtitle==null)
{gtitle='Address Book';}
this.aBook=new FamundoGrid(gclass,gtitle);this.aBook.setHooverSelectable(this.hooverSelectable);this.aBook.setClickSelectable(this.clickSelectable);this.aBook.setResizable(true,this.relativeWidths);if(this.sortable)
if(this.multipleSelections)
this.aBook.setSortableColumns([false,'abook_sort_img',false,false,false,false,'abook_sort_img']);else
this.aBook.setSortableColumns(['abook_sort_img',false,false,false,false,'abook_sort_img']);for(var i=0;i<this.columnsClass.length;i++)
{headerClass[i]=this.columnsClass[i]+' abook_header_cell';}
this.aBook.buildHeader(this.titles,headerClass);var rows=new Array();this.aBook.buildBody(rows,'','');}
var bodyClass=new Array();for(var i=0;i<this.cntRow;i++)
{for(var j=0;j<this.titles.length;j++)
{if(this.cellClass[i][j])
bodyClass[j]=this.cellClass[i][j]+' abook_body_cell';else
bodyClass[j]='abook_body_cell';}
this.aBook.addRow(this.rows[i],this.rClass[i],bodyClass,this.rPropr[i]);}
this.aBook.bodyTable.style.borderBottom='1px solid #989898';if(!this.isBuild)
{this.aBook.build($(container));this.isBuild=true;}
if(!FamundoMainUtils.isIE&&this.removeHscroll)
{this.aBook.bodyTable.style.width=(Element.getDimensions(this.aBook.bodyTable).width-2)+'px';this.aBook.headerTable.style.width=(Element.getDimensions(this.aBook.headerTable).width-2)+'px';}
if(this.multipleSelections)
{var me=this;Event.observe($('abook_row_all'),'click',function(){me.togleChecks();});for(var i=0;i<this.cntRow;i++)
{var objct=$('abook_row_'+i);if(objct)
this.addChecksEvnt(objct);}}
if(this.scrollCall)
{var me=this;Event.observe(this.aBook.bodyDiv,'scroll',function(e){me.buildScrollEvent(e);});if(this.cntRow<this.scrollLimit)
this.endRecords=true;}},buildScrollEvent:function(e)
{if(this.endRecords)
return false;if(this.aBook.bodyDiv.scrollHeight-Element.getDimensions(this.aBook.bodyDiv).height-this.aBook.bodyDiv.scrollTop>0)
return;this.scrollPos+=this.scrollLimit;var params='?ot='+this.scrollPos+'&cnt='+this.scrollLimit;this.endRecords=true;new Ajax.Request(this.scrollCall+params,{method:'get',asynchronous:true,evalScripts:true});},addChecksEvnt:function(objct)
{var me=this;Event.observe(objct,'click',function(e,obj){me.verifyChecks(e,objct);});},togleChecks:function()
{var chk=$('abook_row_all').checked;for(var i=0;i<this.cntRow;i++)
{if($('abook_row_'+i))
$('abook_row_'+i).checked=chk;}},verifyChecks:function(e,obj)
{var chk=obj.checked;var vb=true;for(var i=0;i<this.cntRow;i++)
{if($('abook_row_'+i)&&$('abook_row_'+i).checked!=chk)
{$('abook_row_all').checked=false;vb=false;break;}}
if(vb)
$('abook_row_all').checked=chk;},appendRow:function(row,rPropr,rClass,cellClass,effect)
{var bodyClass=new Array();if(this.multipleSelections)
{row=new Array("<input type='checkbox' name='row[]'  id='abook_row_"+this.cntRow+"'>").concat(row);if(cellClass)
bodyClass=new Array('select_column').concat(cellClass);else
{bodyClass[0]='select_column';for(var i=0;i<this.iCellClass.length;i++)
bodyClass[i+1]=this.iCellClass[i]+' abook_body_cell';}}
var newRow=this.aBook.addRow(row,rClass,bodyClass,rPropr);if(effect)
{var row_height=Element.getDimensions(newRow).height;var container_height=Element.getDimensions(this.aBook.bodyDiv).height;var row_top=Position.cumulativeOffset(newRow)[1];var container_top=Position.cumulativeOffset(this.aBook.bodyDiv)[1];var dif=(row_height+row_top)-(container_height+container_top);if(dif>0)
{this.endRecords=true;this.aBook.bodyDiv.scrollTop=row_top;}
var me=this;new Effect.Highlight(newRow,{duration:2});setTimeout(function(){me.setSelectedRow(newRow);if(me.scrollCall){me.endRecords=false;if(me.aBook.bodyDiv.scrollTop>=1)me.aBook.bodyDiv.scrollTop=(me.aBook.bodyDiv.scrollTop-1);}},2500);}
this.cntRow++;return newRow;},replaceRow:function(ix,row,rPropr,rClass,bodyClass,effect)
{var bodyClass=new Array();if(this.multipleSelections)
{row=new Array("<input type='checkbox' name='row[]'  id='abook_row_"+ix+"'>").concat(row);bodyClass[0]='select_column';for(var i=0;i<this.iCellClass.length;i++)
bodyClass[i+1]=this.iCellClass[i]+' abook_body_cell';}
var newRow=this.aBook.replaceRow(ix,row,rClass,bodyClass,rPropr);if(effect)
{var row_height=Element.getDimensions(newRow).height;var container_height=Element.getDimensions(this.aBook.bodyDiv).height;var row_top=Position.cumulativeOffset(newRow)[1];var container_top=Position.cumulativeOffset(this.aBook.bodyDiv)[1];var dif=(row_height+row_top)-(container_height+container_top);if(dif>0)
{this.aBook.bodyDiv.scrollTop=row_top;}
var me=this;new Effect.Highlight(newRow,{duration:2});setTimeout(function(){me.setSelectedRow(newRow)},2500);}
return newRow;},getSelectedIndex:function()
{var result=this.aBook.getSelectedIndex();return result;},getRowData:function(ix)
{var result=this.aBook.getRowData(ix);return result;},findRowByData:function(k,v)
{for(var i=0;i<this.cntRow;i++)
{var rpropr=this.getRowData(i);if(rpropr[k]==v)
{return i;}}
return false;},setSelectedRow:function(ix,scroll_to_selected)
{this.aBook.setSelectedRow(ix);if(scroll_to_selected)
this.aBook.scrollToSelectedItem();},clearSelectedRow:function()
{this.aBook.clearSelectedRow();},setProcRowSelected:function(proc)
{this.aBook.setProcRowSelected(proc);}});var FamundoMonthGrid=Class.create();FamundoMonthGrid.prototype={n_dayEvents:$H(),n_singleDay:$H(),singleDay:{},TT_dayEvents:$H(),initialize:function()
{this.calendar=null;this.startDate=false;this.currentDate=false;this.year=null;this.month=null;this.firstDay=null;this.lastDay=null;this.wDays=new Array();this.TT_day={};this.TTSiv=null;this.nrR=0;this.n_dayEvents=$H();this.n_singleDay=$H();this.TT_dayEvents=$H();this.isReadOnly=false;this.currentEvent=null;this.currentTT=null;this.highlighted=null;this.currentMenu=null;},destroy:function()
{this.calendar.destroy();},setReadOnly:function(kind)
{this.isReadOnly=kind;},setStartDay:function(startD)
{this.startDate=startD;},setCurentDay:function(startD)
{this.currentDate=startD;},setDivsSize:function()
{this.calendar.setDivsSize();},build:function(container,gclass,gtitle)
{var columns=new Array();if(gclass==null)
{gclass='calendarm_main_div';}
if(gtitle==null)
{gtitle='monthly calendar';}
this.calendar=new FamundoGrid(gclass,gtitle);if(this.startDate)
today=famundoDateUtil.parseISO(this.startDate);else
today=new Date();if(this.currentDate)
var curDate=famundoDateUtil.parseISO(this.currentDate);else
var curDate=new Date();this.year=today.getFullYear();this.month=today.getMonth();var firstWeekDayOfMonth=famundoDateUtil.getFirstWeekDayOfMonth(this.year,this.month);var lastDayOfMonth=famundoDateUtil.getLastDayOfMonth(this.year,this.month);var headerClass=new Array();var headerColumns=new Array();var startDay=famundoDateUtil.getFirstDayOfWeek();firstWeekDayOfMonth=firstWeekDayOfMonth-startDay;if(firstWeekDayOfMonth<0)
firstWeekDayOfMonth=7+firstWeekDayOfMonth
for(var i=0;i<famundoDateUtil.longDayName.length;i++)
{if((i-startDay)<0)
{var incr=7+(i-startDay);}
else
var incr=i-startDay;headerClass[incr]='calendarm_day_cell  calendarm_header_cell';headerColumns[incr]=famundoDateUtil.longDayName[i];}
this.calendar.buildHeader(headerColumns,headerClass);var nWeeks=(lastDayOfMonth+firstWeekDayOfMonth)/7;if(nWeeks>4&&nWeeks<=5)
{nWeeks=5;}
else if(nWeeks>5&&nWeeks<=6)
{nWeeks=6;}
var k=1;var rows=new Array();var full_rows=new Array();var dt=new Date(this.year,this.month,1);this.calendar.buildBody(rows,'','');var bodyClass=new Array();var cRow=new Array();var msec=new Array();this.nrR=nWeeks-1;var curMonth='';for(var i=1;i<=nWeeks;i++)
{rows=new Array();full_rows=new Array();for(var j=0;j<7;j++)
{var cDay=(((i-1)*7)+(j+1))-firstWeekDayOfMonth;full_rows[j]=famundoDateUtil.addDays(dt,cDay-1);var smonth=famundoDateUtil.getShortMonthName(full_rows[j].getMonth());if(curMonth!=smonth)
{curMonth=smonth;}
else
smonth='';var stil='';var bck='';if(j==0&&i==1)
this.firstDay=full_rows[j];if(j==6&&i==nWeeks)
this.lastDay=full_rows[j];if(today.getDate()==full_rows[j].getDate())
{stil=' color:black;'}
rows[j]='<table class="msec" msec="'+full_rows[j].valueOf()+'" style="width:100%; padding:0px; margin:0px;"><tr><td style="width:50%; text-align:left;padding:0px; margin:0px;" valign="bottom">'+smonth+'</td><td style="width:50%; text-align:right;padding:0px; margin:0px;'+stil+'" valign="bottom">'+full_rows[j].getDate()+'</td></tr></table>';if(curDate.getDate()==full_rows[j].getDate()&&curDate.getFullYear()==full_rows[j].getFullYear()&&curDate.getMonth()==full_rows[j].getMonth())
{bodyClass[j]='calendarm_day_cell calendarm_body_current_cell';}
else if(cDay<=0||cDay>lastDayOfMonth)
{bodyClass[j]='calendarm_day_cell calendarm_body_out_cell';}
else
{bodyClass[j]='calendarm_day_cell calendarm_body_cell';}
full_rows[j]=full_rows[j].strftime(famundoDateTimeFormats.short_date);}
this.wDays[i-1]=full_rows;cRow[i]=this.calendar.addRow(rows,'',bodyClass,i);Event.observe(document,'click',function(e){FamundoMainUtils.stopTT(e);});}
this.calendar.build(document.getElementById(container));var offset=famundoUtils.isIE?1:0;var rowHeight=(this.calendar.bodyDiv.clientHeight-this.calendar.headerDiv.clientHeight)/nWeeks;var hSum=0;for(var i=1;i<cRow.length-1;i++)
{cRow[i].style.height=(rowHeight-(2*offset))+'px';hSum+=Element.getDimensions(cRow[i]).height;}
cRow[cRow.length-1].style.height=(this.calendar.bodyDiv.clientHeight-this.calendar.headerDiv.clientHeight-hSum-2*offset)+'px';if(this.isReadOnly)
this.calendar.setReadOnly(true);var me=this;Event.observe(this.calendar.dragDiv,'click',function(e,obj,tt){me.addEventTT(e,null,null,true);});},addAllDayEvents:function(colect,isInsert)
{var cdate=null;var events=new Array();for(var i=0;i<colect.length;i++)
{var descript=colect[i];cdate=descript[0];events=new Array();for(var j=0;j<descript[1].length;j++)
{events[j]=descript[1][j].event;}
this.addDayEvent(cdate,events,isInsert);}},addDayEvent:function(day,events,isInsert)
{today=famundoDateUtil.parseISO(day);var obj_tt=new Array();var cYear=today.getFullYear();var cMonth=today.getMonth();var cDay=today.getDate();var cDay_format_msec=today.valueOf();var cDay_format=today.strftime('%Y%m%d');var lastDayOfMonth=famundoDateUtil.getLastDayOfMonth(this.year,this.month);if(today>=this.firstDay&&today<=this.lastDay)
{var firstWeekDayOfMonth=famundoDateUtil.getFirstWeekDayOfMonth(this.year,this.month);var startDay=famundoDateUtil.getFirstDayOfWeek();firstWeekDayOfMonth=firstWeekDayOfMonth-startDay;if(firstWeekDayOfMonth<0)
firstWeekDayOfMonth=7+firstWeekDayOfMonth
var col=today.getDay()-startDay;if(col<0)
col=7+col
if(cMonth==this.month&&cYear==this.year)
var row=Math.floor((cDay+firstWeekDayOfMonth-1)/7);else if((cMonth<this.month&&cYear==this.year)||(cYear<this.year))
var row=0
else
var row=Math.floor((lastDayOfMonth+firstWeekDayOfMonth-1)/7)
var cCell=this.calendar._getBodyDataColumn(row,col);for(var i=0;i<events.length;i++)
{if(events[i].ends_at)
if(famundoUserSettings.display.time.is_am_pm)
var etime=famundoDateUtil.parseISO(events[i].ends_at).strftime('%I:%M %p');else
var etime=famundoDateUtil.parseISO(events[i].ends_at).strftime('%H:%M');if(this.n_singleDay[cDay_format])
this.n_singleDay[cDay_format]+=1;else
this.n_singleDay[cDay_format]=1;if(!this.n_dayEvents[cDay_format])
this.n_dayEvents[cDay_format]=0;if((this.n_dayEvents[cDay_format]+this.n_singleDay[cDay_format])<=7)
{var cSpan=document.createElement('p');if((this.n_dayEvents[cDay_format]+this.n_singleDay[cDay_format])<7)
{this.singleDay[cDay_format+'__'+events[i].time+'__'+events[i].id]=cSpan;cSpan.setAttribute('event_id',events[i].id);var txt=document.createTextNode(events[i].time+' - '+events[i].summary.unescapeHTML())
Element.addClassName(cSpan,'calendarm_text_span');Element.addClassName(cSpan,'txt_color_'+events[i].css_id);var me=this;var txtcol=events[i].css_id;var readOnlyEvent=false;if(events[i].read_only)
readOnlyEvent=true;if(!this.isReadOnly&&!readOnlyEvent)
{var links=this.getContextualMenu(events[i]);}
else
{var guid='';if(events[i].guid)
{guid="&guid="+events[i].guid;}
var get_action=getActionFunction();var links=[];if(!events[i].no_action)
links=[{'label':'view','action':get_action(famundoCalendarUrl.get_view_event+'?event_id='+events[i].id+guid)}];}
var icons_tt=events[i].summary;if(events[i].view_access&&events[i].view_access[0])
{icons_tt="<span title='"+events[i].view_access[1]+"' class='calendar_"+events[i].view_access[0]+"_div'>"+events[i].summary+"</span>";}
var TTtxt="<table><tr><td colspan='2' class='TT_summary'>"+icons_tt+"</td></tr>";TTtxt+="<tr><td class='TT_label'>Time:</td><td class='TT_description' style='white-space:nowrap;'>"+events[i].time+" - "+etime+"</td></tr>";if(events[i].drive_duration)
TTtxt+="<tr><td class='TT_label'>Driving time:</td><td class='TT_description'>"+events[i].drive_duration+" min.</td></tr>";if(events[i].location&&events[i].location.trim()!='')
{var lmap='';if(events[i].gmap)
{var lnk='show_google_map("'+events[i].gmap.from_location+'","'+events[i].gmap.to_location+'",""); return false;';lmap="<tr><td></td><td class='TT_description'><a title='"+events[i].gmap.title+"' href='' onclick='"+lnk+"'><img alt='"+events[i].gmap.title+"' src='"+events[i].gmap.icon+"' /></a></td>";}
TTtxt+="<tr><td class='TT_label'>Location:</td><td class='TT_description'>"+events[i].location+"</td></tr>"+lmap;}
if(events[i].notes&&events[i].notes.trim()!='')
TTtxt+="<tr><td class='TT_label'>Notes:</td><td class='TT_description'>"+FamundoMainUtils.unescape_javascript(events[i].notes).unescapeHTML()+"</td></tr>";if(events[i].clip&&events[i].documents.trim()!='')
TTtxt+="<tr><td class='TT_label'>Documents:</td><td class='TT_description'>"+events[i].documents+"</td></tr>";TTtxt+="</table>";var TT={'caption':'','content':TTtxt,'menu':links};this.setEventsActions(cSpan,txtcol,TT,links);}
else
{var txt=document.createTextNode('more...')
this.singleDay[cDay_format+'__more']=cSpan;Element.addClassName(cSpan,'calendarm_text_span');Element.addClassName(cSpan,'m_dots');var me=this;Event.observe(cSpan,'click',function(e,current_date){me.getDayGrid(e,day);});}
cSpan.appendChild(txt);var txtNod=famundoUtils.getAllChildsOfNodeName(cCell,'div');cCell.insertBefore(cSpan,txtNod[0]);cSpan.setAttribute('strdate',cDay_format);}
if(events[i].TT==null)
{events[i].TT={'caption':'','content':'<tr><td style="width:60px; text-align:right; color:#6a6a6a;" nowrap>'+events[i].time+'</td><td style="text-align:left" nowrap>'+events[i].summary.unescapeHTML()+'</td></tr>'};}
if(this.TT_dayEvents[cDay_format])
this.TT_dayEvents[cDay_format]={'caption':today.strftime(famundoDateTimeFormats.short_date),'content':this.TT_dayEvents[cDay_format].content+events[i].TT.content};else
this.TT_dayEvents[cDay_format]={'caption':today.strftime(famundoDateTimeFormats.short_date),'content':events[i].TT.content};obj_tt[i]={'ev_id':events[i].id,'caption':today.strftime(famundoDateTimeFormats.short_date),'content':events[i].TT.content};var me=this;cCell.setAttribute('strdate',cDay_format);cCell.setAttribute('msec',cDay_format_msec);famundoUtils.addEvent(cCell,'click',function(e,obj){me.addTooltip(e,cCell)});}
if(!this.TT_day[cDay_format])
this.TT_day[cDay_format]=obj_tt;else
this.TT_day[cDay_format]=this.TT_day[cDay_format].concat(obj_tt);}},rebuild_TT:function(ev_key,ev_id)
{var tts=this.TT_day[ev_key];var content='';var caprion='';var rem_icr=-1;for(var i=0;i<tts.length;i++)
{if(tts[i].ev_id==ev_id)
rem_incr=i
else
{caption=tts[i].caption;content+=tts[i].content;}}
if(rem_incr!=-1)
tts.splice(rem_incr,1);if(tts.length>0)
this.TT_dayEvents[ev_key]={'caption':caption,'content':content};else
this.TT_dayEvents[ev_key]=null;},removeDayEvent:function(ev_id)
{var evnts=this.findEventsById(ev_id);for(var i=0;i<evnts.length;i++)
{this.removeEventsActions(evnts[i]['elm']);Element.remove(evnts[i]['elm']);this.singleDay[evnts[i]['key']]=null;var n_key=evnts[i]['key'].split('__')[0];this.n_singleDay[n_key]--;var more_key=n_key+'__more';if(this.singleDay[more_key]&&((this.n_dayEvents[n_key]+this.n_singleDay[n_key])<7))
{var me=this;Event.stopObserving(this.singleDay[more_key],'click',function(e,current_date){me.getDayGrid(e,null);});Element.remove(this.singleDay[more_key]);}
this.rebuild_TT(n_key,ev_id);}},findEventsById:function(ev_id)
{var res=new Array();var j=0;for(var x in this.singleDay)
{if(this.singleDay[x])
{var elm_ev_id=this.singleDay[x].getAttribute('event_id');if(elm_ev_id&&elm_ev_id==ev_id)
{res[j]={'key':x,'elm':this.singleDay[x]};j++;}}}
return res;},setEventsActions:function(objct,txtcol,TT,links)
{var me=this;Event.observe(objct,'mouseover',function(e,obj,col,restore){me.highlightEvent(e,objct,txtcol,false);});Event.observe(objct,'mouseout',function(e,obj,col,restore){me.highlightEvent(e,objct,txtcol,true);});Event.observe(objct,'click',function(e,obj,tt){me.addEventTT(e,objct,TT);});Event.observe(objct,'mousedown',function(e,obj,lnk){me._onEventContextMenu(e,objct,links);});},removeEventsActions:function(objct)
{var me=this;Event.stopObserving(objct,'mouseover',function(e,obj,col,restore){me.highlightEvent(e,null,null,false);});Event.stopObserving(objct,'mouseout',function(e,obj,col,restore){me.highlightEvent(e,null,null,true);});Event.stopObserving(objct,'click',function(e,obj,tt){me.addEventTT(e,objct,null);});},getDayGrid:function(e,current_day)
{var myAjax=new Ajax.Request(famundoCalendarUrl.get_refresh_url+'?kind=day&current_date='+current_day,{method:'get',parameters:""})},removeCurrentHighlight:function()
{if(this.highlighted)
{if(this.highlighted.isMutiday)
this.calendar.dragDiv.style.display='none';else
{Element.removeClassName(this.highlighted.obj,'txt_white_color');Element.removeClassName(this.highlighted.obj,'bg_color_'+this.highlighted.col);Element.addClassName(this.highlighted.obj,'txt_color_'+this.highlighted.col);}
this.highlighted=null;}},highlightEvent:function(e,obj,col,restore)
{if(domTT_flag)
return false;if(!restore)
{this.removeCurrentHighlight();Element.removeClassName(obj,'txt_color_'+col);Element.addClassName(obj,'txt_white_color');Element.addClassName(obj,'bg_color_'+col);this.highlighted={'obj':obj,'col':col};}
else
{Element.removeClassName(obj,'txt_white_color');Element.removeClassName(obj,'bg_color_'+col);Element.addClassName(obj,'txt_color_'+col);this.highlighted=null;}
Event.stop(e);},highlightMultiEvent:function(e,col,tt,restore,links)
{if(domTT_flag)
return false;var obj=Event.element(e);if(!Element.hasClassName(obj,'calendar_user_div'))
{obj=famundoUtils.ascendDOMtoClass(obj,'calendar_user_div');}
if(!obj)
return false;var obj1=obj.previousSibling;if(!obj1)
return false;if(restore)
{this.calendar.dragDiv.style.display='none';this.highlighted=null;return;}
this.removeCurrentHighlight();this.calendar.dragDiv.style.visibility='hidden';this.calendar.dragDiv.style.width='1px';this.calendar.dragDiv.style.left='0px';famundoUtils.removeAllChildren(this.calendar.dragDiv);var text=obj.cloneNode(true);this.calendar.dragDiv.appendChild(text);this.calendar.dragDiv.style.display='';Position.clone(obj1,this.calendar.dragDiv);this.calendar.dragDiv.style.visibility='visible';this.calendar.dragDiv.className='grid_drag_div '+'bg_color_'+col;var me=this;this.calendar.dragDiv.style.cursor='pointer';this.currentEvent=obj1;this.currentTT=tt;this.highlighted={'isMultiday':true,'obj':this.calendar.dragDiv,'col':col};this.currentMenu=links;},addTooltip:function(e,obj)
{var mouseleft=Event.pointerX(e);var mousetop=Event.pointerY(e);var trig_obj=Event.element(e);if(obj!=trig_obj)
return false;if(!obj)
{if(trig_obj.nodeName!='TD')
{if(trig_obj.nodeName=='DIV')
{if(famundoUtils.isIE)
{var pos=Position.cumulativeOffset(this.calendar.mainDiv);pos[0]=pos[0]-5;}
else
{var pos=Position.cumulativeOffset(this.calendar.mainDiv);}
var object=this.calendar.cellAt(mouseleft-pos[0]+this.calendar.bodyDiv.scrollLeft,mousetop-pos[1]+this.calendar.bodyDiv.scrollTop+2).cell;}
else
{var object=famundoUtils.ascendDOM(trig_obj,'td');}}
else
{var object=trig_obj;}}
else
var object=obj;var txt=famundoUtils.getAllChildsOfNodeName(object,'#text');day=object.getAttribute('strdate');var tt=this.TT_dayEvents[day];if(!tt)
return false;var domTT_styleClass='domTTOverlib';var domTT_oneOnly=true;var tid=FamundoMainUtils.generateId()+'content';var tt_id='TT_'+tid;this.removeCurrentHighlight();domTT_activate(trig_obj,e,'caption','<table class="TT_caption"  cellspacing="0"><tr><td style="text-align:left">'+tt.caption+'</td></tr></table>','content','<table id="'+tid+'" style="width:100%;"><tr><td>'+tt.content+'</td></tr></table>','trail',true,'fade','neither','type','greasy','styleClass','domTT','delay',50,'inframe',true,'closeAction','destroy','x',mouseleft,'y',mousetop,'id',tt_id);var twidth=Element.getDimensions($(tid)).width;if(twidth>300)
{$(tt_id).style.display='none';$(tid).style.width='300px';if(FamundoMainUtils.isIE)
{$(tt_id).style.width='300px';var ifrms=document.getElementsByClassName('protect_iframe');for(var k=0;k<ifrms.length;k++)
{Position.clone($(tid),ifrms[k]);}}
$(tt_id).style.left=(Position.cumulativeOffset(object)[0]+Element.getDimensions(object).width-300)+'px';$(tt_id).style.display='';}
domTT_flag=trig_obj;Event.stop(e);},addEventTT:function(e,obj,tt,isMultiDay)
{if(domTT_flag)
{this.removeCurrentHighlight();return false;}
var trig_obj=Event.element(e);var offset=0;if(FamundoMainUtils.isIE&&!domLib_isIE7)
offset=10;if(!isMultiDay)
{var mouseleft=Position.cumulativeOffset(trig_obj)[0]-offset;var mousetop=Position.cumulativeOffset(trig_obj)[1]-this.calendar.bodyDiv.scrollTop;}
else
{obj=this.currentEvent;tt=this.currentTT;var mouseleft=Position.cumulativeOffset(obj)[0]-offset;var mousetop=Position.cumulativeOffset(obj)[1]-this.calendar.bodyDiv.scrollTop;}
if(!tt)
return false;if(tt.menu!=null)
{var menu='<table class="TT_caption"  cellspacing=\'0\'><tr><td class="TT_cell_menu">';var ttid=new Array();var j=tt.menu.length;for(var k=0;k<j;k++)
{ttid[k]=null;if(tt.menu[k]&&tt.menu[k].lbOn)
{ttid[k]='menu_'+FamundoMainUtils.generateId()+'_'+k;menu+='<A href="'+tt.menu[k].action+'" class="lbOn" id="'+ttid[k]+'">'+tt.menu[k].label+'</A>';}
else if(tt.menu[k]&&tt.menu[k].dialogBox)
{ttid[k]='menu_'+FamundoMainUtils.generateId()+'_'+k;menu+='<span class="span_href" value="true" txt="'+tt.menu[k].label+'" onClick="" id="'+ttid[k]+'">'+tt.menu[k].label+'</span>';}
else
{menu+='<span class="span_href" onClick="'+tt.menu[k].action+'">'+tt.menu[k].label+'</span>';}
if(k<j-1)
menu+=' | ';}
menu+='</td></tr></table>';}
var domTT_styleClass='domTTOverlib';var domTT_oneOnly=true;var closeLink="<div class='cancel_icon float_right'></div>";var tid=FamundoMainUtils.generateId()+'content';var tt_id='TT_'+tid;domTT_activate(trig_obj,e,'caption','<table class="TT_caption"  cellspacing="0"><tr><td style="text-align:left">'+tt.caption+menu+'</td></tr></table>','content','<table id="'+tid+'" style="width:100%;"><tr><td>'+tt.content+'</td></tr></table>','trail',true,'fade','neither','closeLink',closeLink,'type','sticky','styleClass','domTT','delay',50,'inframe',true,'closeAction','destroy','x',mouseleft,'y',mousetop,'id',tt_id);var twidth=Element.getDimensions($(tid)).width;if(twidth>300)
{$(tt_id).style.display='none';$(tid).style.width='300px';if(FamundoMainUtils.isIE)
{$(tt_id).style.width='300px';var ifrms=document.getElementsByClassName('protect_iframe');for(var k=0;k<ifrms.length;k++)
{Position.clone($(tid),ifrms[k]);}}
if(!isMultiDay)
$(tt_id).style.left=(Position.cumulativeOffset(trig_obj)[0]+Element.getDimensions(trig_obj).width-300)+'px';else
$(tt_id).style.left=mouseleft+'px';$(tt_id).style.display='';}
domTT_flag=trig_obj;this.dbox=new Array();var dlg_action=new Array();if(tt&&tt.menu!=null)
{for(var k=0,j=tt.menu.length;k<j;k++)
{if($(ttid[k]))
{if(tt.menu[k].dialogBox)
{this.dbox[k]=tt.menu[k].dialogBox;var me=this;$(ttid[k]).setAttribute('ix',k);dlg_action=function(e){me.doShowBox(e);};Event.observe($(ttid[k]),'click',dlg_action);}}}}
Event.stop(e);},doShowBox:function(e)
{var obj=Event.element(e);var k=obj.getAttribute('ix');if(this.dbox[k])
this.dbox[k].showBox();},removeTooltip:function(e)
{this.removeCurrentHighlight();this.TTDiv.style.display='none';domTT_close(this.TTDiv);},removeEvent:function(id)
{var nrows=-1;while(this.calendar.getBoxById(id))
{var bx=this.calendar.getBoxById(id);if(bx)
{var sdate=new Date(parseInt(bx.obj[3].getAttribute('msecdate')));var duration=parseInt(bx.obj[3].getAttribute('duration'));var evKey=bx.obj[3].getAttribute('strdate');this.rebuild_TT(evKey,id);var dte=sdate;for(var i=1;i<=duration;i++)
{dte=famundoDateUtil.addDays(dte,1);this.rebuild_TT(dte.strftime('%Y%m%d'),id);}
this.calendar.removeBox(bx.obj);this.calendar.rebuildBoxIndex(bx.row_num,bx.kind);}}},addAllMultiDayEvents:function(colect)
{var prm=new Array();for(var i=0;i<colect.length;i++)
{var descript=colect[i];prm[i]=this.addMultiDayEvent(descript,descript.TT);}},addMultiDayEvent:function(descript,TT)
{var dt1=this.firstDay;var dt2=famundoDateUtil.parseISO(descript.starts_at);if(dt2>dt1)
var sDate=dt2;else
var sDate=dt1;if(descript.ends_at)
var eDate=famundoDateUtil.parseISO(descript.ends_at);else
var eDate=famundoDateUtil.addDays(famundoDateUtil.parseISO(descript.starts_at),(parseInt(descript.duration)-1));if(eDate<dt1)
return false;var start_msec=sDate.getTime();var col=sDate.getDate();var col_str=sDate.strftime('%Y%m%d');var scolumn=-1;var srow=-1;var ecolumn=-1;var erow=-1;for(var i=0;i<this.wDays.length;i++)
{if(scolumn<0)
{scolumn=famundoUtils.inArray(this.wDays[i],sDate.strftime(famundoDateTimeFormats.short_date));}
else if(srow<0)
{srow=i-1;}
if(ecolumn<0)
{ecolumn=famundoUtils.inArray(this.wDays[i],eDate.strftime(famundoDateTimeFormats.short_date));}
else if(erow<0)
{erow=i-1;}}
if(srow<0)
{srow=i-1;}
if(erow<0)
{erow=i-1;}
if(ecolumn<0&&scolumn<0)
{return false;}
else
{if(scolumn<0)
scolumn=0;if(ecolumn<0)
ecolumn=6;}
var sProp=0;var eProp=0;var multiev=1/8;var mdays=false;var rowDif=erow-srow;var icons_div='';var icons_end='';if(!descript.clip)
descript.clip=false;if(!descript.recurrent)
descript.recurrent=false;if(descript.clip||descript.recurrent||descript.sdate||descript.edate)
{var icons_size=0;var icons_content="";if(descript.clip)
{icons_size+=11;icons_content+='<div class="float_left calendar_clip_div"></div>';}
if(descript.recurrent)
{icons_size+=17;if(descript.birthday)
{icons_content+='<div class="float_right calendar_birthday_div"></div>';}
else if(descript.anniversary)
{icons_content+='<div class="float_right calendar_anniversary_div"></div>';}
else
{icons_content+='<div class="float_right calendar_recurrence_div"></div>';}}
if(descript.sdate||descript.edate)
{icons_size+=13;icons_content+='<div class="float_left calendar_timer_div"></div>';}
var icons_div='<div class="float_left" style="margin:0px;padding:0px;width:';if(FamundoMainUtils.isIE)
{var itop='-14px;';var ileft='0px;';}
else
{var itop='0px;';var ileft=-icons_size+'px;';}
icons_div+=icons_size+'px;">'+icons_content+'</div><div class="grid_full_text" style="left:'+ileft+' top:'+itop+'position:relative;text-indent:'+(icons_size+2)+'px;">';icons_end='</div>';}
var txt=descript.summary;if(descript.time)
txt=descript.time+' - '+txt;txt=icons_div+txt+icons_end;var caption=null;if(rowDif>0)
{var v_ecolumn=6;var v_erow=srow+1;}
else
{var v_ecolumn=ecolumn;var v_erow=erow+1;}
v_scolumn=scolumn;var cCell=this.calendar._getBodyDataColumn(srow,scolumn+j);if(TT==null)
{this.calendar.event_actions=null;var readOnlyEvent=false;if(descript.read_only)
readOnlyEvent=true;if(!this.isReadOnly&&!readOnlyEvent)
{var links=this.getContextualMenu(descript);}
else if(!descript.no_action)
{var get_action=getActionFunction();var links=[{'label':'view','action':get_action(famundoCalendarUrl.get_view_event+'?event_id='+descript.id+guid)}];}
else
var links=[];this.calendar.event_actions=links;var icons_tt=descript.summary;if(descript.view_access&&descript.view_access[0])
{icons_tt="<span title='"+descript.view_access[1]+"' class='calendar_"+descript.view_access[0]+"_div'>"+descript.summary+"</span>";}
var TTtxt="<table><tr><td colspan='2' class='TT_summary'>"+icons_tt+"</td></tr>";if(parseInt(descript.duration)>1)
if(!descript.sdate&&!descript.edate)
TTtxt+="<tr><td class='TT_label'>Dates:</td><td class='TT_description'>"+sDate.strftime(famundoDateTimeFormats.short_date)+" - "+famundoDateUtil.addDays(sDate,(parseInt(descript.duration)-1)).strftime(famundoDateTimeFormats.short_date)+"</td></tr>";else
{var sdTTtxt=sDate.strftime(famundoDateTimeFormats.short_date);if(descript.sdate)
{var sdt=famundoDateUtil.parseISO(descript.sdate);sdTTtxt=sdt.strftime(famundoDateTimeFormats.short_date)+' @'+sdt.strftime(famundoDateTimeFormats.time_format);}
var edTTtxt=eDate.strftime(famundoDateTimeFormats.short_date);if(descript.edate)
{var edt=famundoDateUtil.parseISO(descript.edate);edTTtxt=edt.strftime(famundoDateTimeFormats.short_date)+' @'+edt.strftime(famundoDateTimeFormats.time_format);}
TTtxt+="<tr><td class='TT_label'>Dates:</td><td class='TT_description' style='white-space:nowrap;'>"+sdTTtxt+" - "+edTTtxt+"</td></tr>";}
else
TTtxt+="<tr><td class='TT_label'>Date:</td><td class='TT_description'>"+sDate.strftime(famundoDateTimeFormats.short_date)+"</td></tr>";if(descript.location&&descript.location.trim()!='')
{var lmap='';if(descript.gmap)
{var lnk='show_google_map("'+descript.gmap.from_location+'","'+descript.gmap.to_location+'",""); return false;';lmap="<tr><td></td><td class='TT_description'><a title='"+descript.gmap.title+"' href='' onclick='"+lnk+"'><img alt='"+descript.gmap.title+"' src='"+descript.gmap.icon+"' /></a></td>";}
TTtxt+="<tr><td class='TT_label'>Location:</td><td class='TT_description'>"+descript.location+"</td></tr>"+lmap;}
if(descript.notes&&descript.notes.trim()!='')
TTtxt+="<tr><td class='TT_label'>Notes:</td><td class='TT_description'>"+FamundoMainUtils.unescape_javascript(descript.notes).unescapeHTML()+"</td></tr>";if(descript.clip&&descript.documents.trim()!='')
TTtxt+="<tr><td class='TT_label'>Documents:</td><td class='TT_description'>"+descript.documents+"</td></tr>";TTtxt+="</table>";TT={'caption':'','content':TTtxt,'menu':links};}
if(v_erow>this.nrR)
v_erow=this.nrR;if(descript.guid)
var gid=descript.guid;else
var gid=null;var content={'id':descript.id,'srow':srow,'erow':v_erow,'scolumn':v_scolumn,'ecolumn':v_ecolumn,'sprop':sProp,'eprop':eProp,'showTooltip':!descript.no_tooltip,'txt':txt,'css':'bg_color_'+descript.css_id,'css_txt':descript.css_txt,'guid':gid};this.calendar.makeDiv([{'caption':caption,'content':content,'multiev':multiev,'tpd':false,'TT':null}]);for(var k=v_scolumn;k<=v_ecolumn;k++)
{cCellTT=this.calendar._getBodyDataColumn(srow,k);this.buildTTCall(cCellTT);}
var me=this;this.calendar.bodyBoxes[this.calendar.bodyBoxesCount-1][3].setAttribute('strdate',col_str);var time_dif=(v_ecolumn-v_scolumn);this.calendar.bodyBoxes[this.calendar.bodyBoxesCount-1][3].setAttribute('duration',time_dif);this.calendar.bodyBoxes[this.calendar.bodyBoxesCount-1][3].setAttribute('msecdate',start_msec);var obj=this.calendar.bodyBoxes[this.calendar.bodyBoxesCount-1][3];var txtcol=descript.css_id;famundoUtils.addEvent(obj,'mouseover',function(e,col,tt,restore){me.highlightMultiEvent(e,txtcol,TT,false,links);});this.n_dayEvents[col_str]=1+this.calendar.bodyBoxes[this.calendar.bodyBoxesCount-1][5].sprop/this.calendar.bodyBoxes[this.calendar.bodyBoxesCount-1][6];if(!this.n_singleDay[col_str])
this.n_singleDay[col_str]=0;if((this.n_dayEvents[col_str]+this.n_singleDay[col_str])>6)
{this.calendar.removeDiv(descript.id);};var vb_cnt=true;if((this.n_dayEvents[col_str]+this.n_singleDay[col_str])==7)
{vb_cnt=false;}
this.n_dayEvents[col_str]=1+this.calendar.getMaxSprop(srow,v_scolumn)/this.calendar.bodyBoxes[this.calendar.bodyBoxesCount-1][6];var j=0;var obj_tt=new Array();for(var i=0;i<=(v_ecolumn-scolumn);i++)
{var sdate=famundoDateUtil.addDays(sDate,i);if(!vb_cnt&&i==0)
{this.addDayEvent(famundoDateUtil.formatDate2ISO(sdate)+' 00:00:00',[{'text':'...','css':descript.css_id,'TT':{'caption':sdate.strftime(famundoDateTimeFormats.short_date),'content':'<tr><td style="width:60px; color:#6a6a6a;" nowrap>all day</td><td style="text-align:left;" nowrap>'+descript.summary+'</td></tr>'}}]);}
else
{var sdate=famundoDateUtil.addDays(sDate,i);var sdate_str=sdate.strftime('%Y%m%d');if(sdate_str!=col_str)
{this.n_dayEvents[sdate_str]=this.n_dayEvents[col_str];}
if(this.TT_dayEvents[sdate_str])
this.TT_dayEvents[sdate_str]={'caption':sdate.strftime(famundoDateTimeFormats.short_date),'content':this.TT_dayEvents[sdate_str].content+'<tr><td style="width:60px; color:#6a6a6a;" nowrap>all day</td><td style="text-align:left;" nowrap>'+descript.summary+'</td></tr>'};else
this.TT_dayEvents[sdate_str]={'caption':sdate.strftime(famundoDateTimeFormats.short_date),'content':'<tr><td style="width:60px; color:#6a6a6a;" nowrap>all day</td><td style="text-align:left;" nowrap>'+descript.summary+'</td></tr>'};var cCell=this.calendar._getBodyDataColumn(srow,scolumn+j);obj_tt[0]={'ev_id':descript.id,'caption':sdate.strftime(famundoDateTimeFormats.short_date),'content':'<tr><td style="width:60px; color:#6a6a6a;" nowrap>all day</td><td style="text-align:left;" nowrap>'+descript.summary+'</td></tr>'};j++;cCell.setAttribute('strdate',sdate_str);if(!this.TT_day[sdate_str])
this.TT_day[sdate_str]=obj_tt;else
this.TT_day[sdate_str]=this.TT_day[sdate_str].concat(obj_tt);}}
for(var i=1;i<=rowDif;i++)
{var sdate=famundoDateUtil.addDays(sdate,1);start_msec=sdate.getTime();var sdate_str=sdate.strftime('%Y%m%d');var old_date_str=sdate_str;var v_scolumn=0;var v_erow=srow+i;var v_srow=srow+i;if(i<rowDif)
{var v_ecolumn=6;}
else
{var v_ecolumn=ecolumn;}
if(v_erow>this.nrR)
v_erow=this.nrR;if(descript.guid)
var gid=descript.guid;else
var gid=null;var content={'id':descript.id,'srow':v_srow,'erow':v_erow,'scolumn':v_scolumn,'ecolumn':v_ecolumn,'sprop':sProp,'eprop':eProp,'showTooltip':!descript.no_tooltip,'txt':txt,'css':'bg_color_'+descript.css_id,'css_txt':descript.css_txt,'guid':gid};this.calendar.makeDiv([{'caption':caption,'content':content,'multiev':multiev,'tpd':false,'TT':null}]);for(var k=v_scolumn;k<=v_ecolumn;k++)
{var cCellTT=this.calendar._getBodyDataColumn(v_srow,k);this.buildTTCall(cCellTT);}
var me=this;this.calendar.bodyBoxes[this.calendar.bodyBoxesCount-1][3].setAttribute('strdate',sdate_str);var time_dif=(v_ecolumn-v_scolumn);this.calendar.bodyBoxes[this.calendar.bodyBoxesCount-1][3].setAttribute('duration',time_dif);this.calendar.bodyBoxes[this.calendar.bodyBoxesCount-1][3].setAttribute('msecdate',start_msec);var obj=this.calendar.bodyBoxes[this.calendar.bodyBoxesCount-1][3];var txtcol=descript.css_id;if(TT==null)
{this.calendar.event_actions=null;var readOnlyEvent=false;if(descript.read_only)
readOnlyEvent=true;if(!this.isReadOnly&&!readOnlyEvent)
{var guid='';if(descript.guid)
guid="&guid="+descript.guid;var deleteAction=this.setDeleteMenuAction(descript.id,descript.summary,descript.guid);var completeAction=this.setCompleteMenuAction(descript.id,descript.summary,descript.guid);var links=[{'label':'edit','action':famundoCalendarUrl.get_edit_event+'?id='+descript.id+guid,"lbOn":true},{'label':'delete','action':'',"dialogBox":deleteAction},{'label':'copy','action':famundoCalendarUrl.get_copy_event+'?id='+descript.id+guid,"lbOn":true},{'label':'complete','action':'',"dialogBox":completeAction}];}
else if(!descript.no_action)
{var links=[{'label':'view','action':famundoCalendarUrl.get_view_event+'?event_id='+descript.id+guid,"lbOn":true}];}
else
var links=[];this.calendar.event_actions=links;var icons_tt=descript.summary;if(descript.view_access&&descript.view_access[0])
{icons_tt="<span title='"+descript.view_access[1]+"' class='calendar_"+descript.view_access[0]+"_div'>"+descript.summary+"</span>";}
var TTtxt="<table><tr><td colspan='2' class='TT_summary'>"+icons_tt+"</td></tr>";if(parseInt(descript.duration)>1)
TTtxt+="<tr><td class='TT_label'>Dates:</td><td class='TT_description'>"+sDate.strftime(famundoDateTimeFormats.short_date)+" - "+famundoDateUtil.addDays(sDate,(parseInt(descript.duration)-1)).strftime(famundoDateTimeFormats.short_date)+"</td></tr>";else
TTtxt+="<tr><td class='TT_label'>Date:</td><td class='TT_description'>"+sDate.strftime(famundoDateTimeFormats.short_date)+"</td></tr>";if(descript.location&&descript.location.trim()!='')
{var lmap='';if(descript.gmap)
{var lnk='show_google_map("'+descript.gmap.from_location+'","'+descript.gmap.to_location+'",""); return false;';lmap="<tr><td></td><td class='TT_description'><a title='"+descript.gmap.title+"' href='' onclick='"+lnk+"'><img alt='"+descript.gmap.title+"' src='"+descript.gmap.icon+"' /></a></td>";}
TTtxt+="<tr><td class='TT_label'>Location:</td><td class='TT_description'>"+descript.location+"</td></tr>"+lmap;}
if(descript.notes&&descript.notes.trim()!='')
TTtxt+="<tr><td class='TT_label'>Notes:</td><td class='TT_description'>"+FamundoMainUtils.unescape_javascript(descript.notes).unescapeHTML()+"</td></tr>";if(descript.clip&&descript.documents.trim()!='')
TTtxt+="<tr><td class='TT_label'>Documents:</td><td class='TT_description'>"+descript.documents+"</td></tr>";TTtxt+="</table>";TT={'caption':'','content':TTtxt,'menu':links};}
famundoUtils.addEvent(obj,'mouseover',function(e,col,tt,restore){me.highlightMultiEvent(e,txtcol,TT,false,links);});this.n_dayEvents[sdate_str]=1+this.calendar.bodyBoxes[this.calendar.bodyBoxesCount-1][5].sprop/this.calendar.bodyBoxes[this.calendar.bodyBoxesCount-1][6];if(!this.n_singleDay[sdate_str])
this.n_singleDay[sdate_str]=0;if((this.n_dayEvents[sdate_str]+this.n_singleDay[sdate_str])>6)
{this.calendar.removeDiv(descript.id);};vb_cnt=true;if((this.n_dayEvents[sdate_str]+this.n_singleDay[sdate_str])==7)
{vb_cnt=false;}
this.n_dayEvents[sdate_str]=1+this.calendar.getMaxSprop(v_srow,v_scolumn)/this.calendar.bodyBoxes[this.calendar.bodyBoxesCount-1][6];if(TT==null)
{TT={'caption':'','content':descript.summary};}
var l=0;obj_tt=new Array();for(var k=0;k<=(v_ecolumn-v_scolumn);k++)
{if(k>0)
{var sdate=famundoDateUtil.addDays(sdate,1);var sdate_str=sdate.strftime('%Y%m%d');}
if(!vb_cnt&&k==0)
{this.addDayEvent(sdate.strftime(famundoDateTimeFormats.short_date)+' 00:00:00',[{'text':'...','css':descript.css_id,'TT':{'caption':sdate.strftime(famundoDateTimeFormats.short_date),'content':'<tr><td style="width:60px; color:#6a6a6a;" nowrap>all day</td><td style="text-align:left;" nowrap>'+descript.summary+'</td></tr>'}}]);}
else
{if(old_date_str!=sdate_str)
{this.n_dayEvents[sdate_str]=this.n_dayEvents[old_date_str];}
if(this.TT_dayEvents[sdate_str])
this.TT_dayEvents[sdate_str]={'caption':sdate.strftime(famundoDateTimeFormats.short_date),'content':this.TT_dayEvents[sdate_str].content+'<tr><td style="width:60px; color:#6a6a6a;" nowrap>all day</td><td style="text-align:left;" nowrap>'+descript.summary+'</td></tr>'};else
this.TT_dayEvents[sdate_str]={'caption':sdate.strftime(famundoDateTimeFormats.short_date),'content':'<tr><td style="width:60px; color:#6a6a6a;" nowrap>all day</td><td style="text-align:left;" nowrap>'+descript.summary+'</td></tr>'};obj_tt[0]={'ev_id':descript.id,'caption':sdate.strftime(famundoDateTimeFormats.short_date),'content':'<tr><td style="width:60px; color:#6a6a6a;" nowrap>all day</td><td style="text-align:left;" nowrap>'+descript.summary+'</td></tr>'};if(!this.TT_day[sdate_str])
this.TT_day[sdate_str]=obj_tt;else
this.TT_day[sdate_str]=this.TT_day[sdate_str].concat(obj_tt);var cCell=this.calendar._getBodyDataColumn(v_srow,v_scolumn+l);l++;cCell.setAttribute('strdate',sdate_str);}}}},buildTTCall:function(objct)
{var me=this;famundoUtils.addEvent(objct,'click',function(e,obj){me.addTooltip(e,objct)});},getContextualMenu:function(event_obj)
{var params="id="+event_obj.id;if(event_obj.guid)
params+='&guid='+event_obj.guid;var get_action=getActionFunction();if(event_obj.recurrent){return[{'label':'edit','action':get_action(famundoCalendarUrl.get_edit_event,'edit_recur',params,famundoCalendarText.editRecurEvent+' "'+event_obj.summary+'"',famundoCalendarText.editRecurEventTxt)},{'label':'delete','action':get_action(famundoCalendarUrl.get_delete_event,'confirm_recur',params,famundoCalendarText.deleteRecurEvent+' "'+event_obj.summary+'"',famundoCalendarText.deleteRecurEventTxt)},{'label':'copy','action':get_action(famundoCalendarUrl.get_copy_event,'window',params)},{'label':'complete','action':get_action(famundoCalendarUrl.get_complete_url,'confirm',params,famundoCalendarText.completeEventTitle+' "'+event_obj.summary+'"',famundoCalendarText.completeEventTxt)}];}
else{return[{'label':'edit','action':get_action(famundoCalendarUrl.get_edit_event,'window',params)},{'label':'delete','action':get_action(famundoCalendarUrl.get_delete_event,'confirm',params,famundoCalendarText.deleteEvent+' "'+event_obj.summary+'"',famundoCalendarText.deleteEventTxt)},{'label':'copy','action':get_action(famundoCalendarUrl.get_copy_event,'window',params)},{'label':'complete','action':get_action(famundoCalendarUrl.get_complete_url,'confirm',params,famundoCalendarText.completeEventTitle+' "'+event_obj.summar+'"',famundoCalendarText.completeEventTxt)}];}},enableGridContextMenu:function()
{var cal=this.calendar;var me=this;this.calendar.options['onBodyTableContextMenu']=function(e,grid_obj,grid_day_obj){buildScheduleMenu(e,cal,me,true);}
this.calendar.options['onDragDivContextMenu']=function(e,grid_obj){buildDragDivContextMenu(e,cal,me,false,true);}},getDateForContextMenu:function(e)
{var y=(Event.pointerY(e)-Position.cumulativeOffset(this.calendar.mainDiv)[1]+this.calendar.bodyDiv.scrollTop);var x=(Event.pointerX(e)-Position.cumulativeOffset(this.calendar.mainDiv)[0]+this.calendar.bodyDiv.scrollLeft);var bodyD=Element.getDimensions(this.calendar.bodyDiv);var crow=this.calendar.cellAt(x,y);if(!crow||!crow.cell)
return false;var start='';var tbl_info=document.getElementsByClassName('msec',crow.cell);var sdate=new Date(parseInt(tbl_info[0].getAttribute('msec')));var txt=null;if(sdate)
{var today=new Date();txt=sdate.strftime(famundoDateTimeFormats.short_date)+" "+today.getHours()+':'+today.getMinutes();}
return txt;},_onEventContextMenu:function(e,obj,lnk)
{if(!Event.isLeftClick(e))
{buildDragDivContextMenu(e,this.calendar,this,lnk,true);Event.stop(e);}}};var scroll=false;var sf=0;var famundoScrollers={scrollers:[],add:function(scroll)
{if(!this.find(scroll.elem_id))
{this.scrollers.push(scroll);}},find:function(elem)
{var scroll=false;this.scrollers.each(function(item)
{if(item.elem_id==elem.id)
{scroll=item;}});return scroll;},remove:function(elem)
{},showAll:function()
{this.scrollers.each(function(scroll)
{scroll.show();});}}
var famundoScroll=Class.create();famundoScroll.prototype={initialize:function(elem)
{this.elem_id=$(elem).getAttribute('id');this.scroll_up=this._createScrollZone('up');this.scroll_down=this._createScrollZone('down');this.scroll_left=this._createScrollZone('left');this.scroll_right=this._createScrollZone('right');famundoScrollers.add(this);},show:function()
{this.scroll_up.style.width=Element.getDimensions(this.elem_id).width+"px";this.scroll_up.style.height="10px";this.scroll_up.style.top=Position.page($(this.elem_id))[1]+$(this.elem_id).scrollTop+document.documentElement.scrollTop-10+'px';this.scroll_up.style.left=Position.page($(this.elem_id))[0]+$(this.elem_id).scrollLeft+'px';this.scroll_down.style.width=Element.getDimensions(this.elem_id).width+"px";this.scroll_down.style.height="10px";this.scroll_down.style.top=Position.page($(this.elem_id))[1]+$(this.elem_id).scrollTop+document.documentElement.scrollTop+Element.getDimensions(this.elem_id).height+'px';this.scroll_down.style.left=Position.page($(this.elem_id))[0]+'px';this.scroll_left.style.width="20px";this.scroll_left.style.height=Element.getDimensions(this.elem_id).height+"px";;this.scroll_left.style.top=Position.page($(this.elem_id))[1]+$(this.elem_id).scrollTop+document.documentElement.scrollTop+'px';this.scroll_left.style.left=Position.page($(this.elem_id))[0]-20+'px';this.scroll_right.style.width="20px";this.scroll_right.style.height=Element.getDimensions(this.elem_id).height+"px";this.scroll_right.style.top=Position.page($(this.elem_id))[1]+$(this.elem_id).scrollTop+document.documentElement.scrollTop+'px';this.scroll_right.style.left=Position.page($(this.elem_id))[0]+Element.getDimensions(this.elem_id).width+'px';},scroll:function(drag,drop)
{var elem=drop.getAttribute('famundoScrollElementId');var scroll_type=drop.getAttribute('famundoScrollType');switch(scroll_type)
{case'up':var step=-2;break;case'down':var step=2;break;case'left':var step=-2;break;case'right':var step=2;break;}
if((scroll_type=='up')||(scroll_type=='down'))
{if(!scroll)
{scroll=true;sf=setInterval("famundoScroll.prototype._verticalScroll('"+elem+"','"+drag.id+"', '"+drop.id+"', "+step+")",50);}}
if((scroll_type=='left')||(scroll_type=='right'))
{if(!scroll)
{scroll=true;sf=setInterval("famundoScroll.prototype._horizontalScroll('"+elem+"','"+drag.id+"', '"+drop.id+"', "+step+")",50);}}},_createScrollZone:function(scroll_type)
{var scroll_zone=document.createElement('div');document.body.appendChild(scroll_zone);Element.addClassName(scroll_zone,'famundoScroll');scroll_zone.setAttribute('id',"famundoScroll"+scroll_type+"_"+famundoUtils.generateId());scroll_zone.setAttribute('famundoScrollElementId',this.elem_id);scroll_zone.setAttribute('famundoScrollType',scroll_type);scroll_zone.style.position="absolute";scroll_zone.style.visibility="hidden";Droppables.add(scroll_zone.id,{accept:famundoTree.prototype.item_class,hoverclass:'',onHover:function(draggable,droppable)
{famundoScroll.prototype.scroll(draggable,droppable);}});return scroll_zone;},_verticalScroll:function(elem,drag,drop,step)
{var pos=Position.page($(drag));var page_scroll=[document.documentElement.scrollLeft,document.documentElement.scrollTop];var offset=Draggables.activeDraggable.offset;Position.within($(drop),pos[0]+offset[0]+page_scroll[0],pos[1]+offset[1]+page_scroll[1]);if((Position.overlap('vertical',$(drop))>0)&&(Position.overlap('vertical',$(drop))<1))
{$(drop).style.visibility="visible";var tmp=$(elem).scrollTop;$(elem).scrollTop+=step;if(tmp==$(elem).scrollTop)
{famundoScroll.prototype._stopScrolling();}}
else
{famundoScroll.prototype._stopScrolling();}},_horizontalScroll:function(elem,drag,drop,step)
{var pos=Position.page($(drag));var offset=Draggables.activeDraggable.offset;var page_scroll=[document.documentElement.scrollLeft,document.documentElement.scrollTop];Position.within($(drop),pos[0]+offset[0]+page_scroll[0],pos[1]+offset[1]+page_scroll[1]);if((Position.overlap('horizontal',$(drop))>0)&&(Position.overlap('horizontal',$(drop))<1))
{$(drop).style.visibility="visible";var tmp=$(elem).scrollLeft;$(elem).scrollLeft+=step;if(tmp==$(elem).scrollLeft)
{famundoScroll.prototype._stopScrolling();}}
else
{famundoScroll.prototype._stopScrolling();}},_hideScrollers:function()
{document.getElementsByClassName('famundoScroll').each(function(elem)
{elem.style.visibility='hidden';});},_stopScrolling:function()
{clearInterval(sf);scroll=false;famundoScroll.prototype._hideScrollers();}}
PeriodicalExecuter.prototype.registerCallback=function(){this.intervalID=setInterval(this.onTimerEvent.bind(this),this.frequency*1000);}
PeriodicalExecuter.prototype.stop=function(){clearInterval(this.intervalID);}
var FamundoProgressBar=Class.create();FamundoProgressBar.prototype={initialize:function()
{this.delay=2;this.cnt=0;this.currentId=null;},serverCall:function(url)
{if($('progressbar'))
{var myAjax=new Ajax.Request(url,{method:'get',parameters:"notspin=true&notnotify=true"});}},startPbar:function(url,cClass,delay)
{removeWaitingMessage();var ihtml='<div class="pbar_container" style="">';ihtml+="<div id='pbar' class='pbar' style=''>";ihtml+='</div><span id="procs" class="pbar_txt"></span></div>';if(!cClass)
cClass='progressbar';else
cClass='progressbar '+cClass;var pbcontainer=document.createElement('div');pbcontainer.className=cClass;pbcontainer.id='progressbar';pbcontainer.innerHTML=ihtml;var bod=document.getElementsByTagName('body')[0];bod.appendChild(pbcontainer);var dimensH=$('progressbar').offsetHeight;var dimensW=$('progressbar').offsetWidth;var wSize=getWindowSize();var scrl=getScrollXY();var winH=wSize[1]-10;var winW=wSize[0]-10+scrl[0];$('progressbar').style.top=Math.max(Math.floor((winH-dimensH)/2)+scrl[1],2)+'px';$('progressbar').style.left=Math.max(Math.floor((winW-dimensW)/2)+scrl[0],2)+'px';$('progressbar').style.display='none';if(delay)
this.delay=delay;var me=this;this.callN=new PeriodicalExecuter(function(){me.serverCall(url);},this.delay);},stepIt:function(step)
{if(step<2)
step=2;if($('progressbar').style.display=='none')
$('progressbar').style.display='';$('pbar').style.width=step+'%';$('procs').innerHTML=step+'%';if(step>=100)
this.stopPbar();},stopPbar:function()
{this.callN.stop();$('progressbar').style.display='none';}};var pb=new FamundoProgressBar();function initPage()
{if(fmGrid)
fmGrid.setDivsSize();FamundoMainUtils.addStopTTListner();famundoActions.add({func:loadCalendar,action_type:'ajax'})
famundoActions.add({func:adjust_page});famundoActions.add({func:famundoApplication.adjust_layout});if(!FamundoMainUtils.isIE)
Event.observe(window,'scroll',function(){scrollLB()});}
function scrollLB()
{FamundoMainUtils.stopTT();return false;}
function adjust_page()
{if($('calendar_left_column')&&$('calendar_right_column'))
h=Math.max($('calendar_left_column').offsetHeight,$('calendar_right_column').offsetHeight);if($('bs_container'))
h=$('bs_container').offsetHeight;if(famundoUtils.isIE||famundoUtils.isSafari)
{$('div_content_data').style.height=h+30+'px';famundoApplication.adjust_borders();}
else
{$('div_content').style.height=30+h+$('footer').offsetHeight+'px';}
if(famundoUtils.isSafari)
{famundoUtils.replaceClass($('bottom_left_corner'),'display_block','display_none');famundoUtils.replaceClass($('bottom_right_corner'),'display_block','display_none');famundoUtils.replaceClass($('bottom_border'),'display_block','display_none');setTimeout(function(){famundoUtils.replaceClass($('bottom_left_corner'),'display_none','display_block');famundoUtils.replaceClass($('bottom_right_corner'),'display_none','display_block');famundoUtils.replaceClass($('bottom_border'),'display_none','display_block');},1000);}}
function onDatePickerDaySelected(dayPickerElement,selectedDate,isMonthNav)
{if(!isMonthNav)
{var crt_date=selectedDate.getFullYear()+'-'+(selectedDate.getMonth()+1)+'-'+selectedDate.getDate();var f=function(){return new Ajax.Request(famundoCalendarUrl.get_refresh_url,{parameters:'current_date='+crt_date,asynchronous:true,method:'get'});}
famundoActions.add({func:f,action_type:'custom',custom_type:'calendar_drop_date',action_id:crt_date});famundoDayPicker.setDateAndSelectedDate(dayPickerElement.id,selectedDate);}}
function onDatePickerNextMonth(dayPicElm)
{var sd=famundoDayPicker.getSelectedDate(dayPicElm)
var current_date=sd.getFullYear()+'-'+(sd.getMonth()+1)+'-'+sd.getDate();famundoActions.add({action_type:'custom',custom_type:'calendar_next_month',current_date:current_date});}
function onDatePickerPreviousMonth(dayPicElm)
{var sd=famundoDayPicker.getSelectedDate(dayPicElm)
var current_date=sd.getFullYear()+'-'+(sd.getMonth()+1)+'-'+sd.getDate();famundoActions.add({action_type:'custom',custom_type:'calendar_previous_month',current_date:current_date});}
function onClickGoPrev()
{famundoActions.add({action_type:'custom',custom_type:'calendar_previous_month'});}
function onClickGoNext()
{famundoActions.add({action_type:'custom',custom_type:'calendar_next_month'});}
function onClickGoToday()
{famundoActions.add({func:function(){return new Ajax.Request(famundoCalendarUrl.get_go_today_url,{asynchronous:true,method:'get'});},action_type:'ajax',action_id:'calendar_go_today',limit:1});}
function selectUserCallback(user_id,param)
{new Ajax.Request(famundoCalendarUrl.get_refresh_url+'?selected_user_id='+user_id,{asynchronous:true,method:'get'});}
function onClick(e)
{var elem=Event.element(e);if(Element.hasClassName(elem,'ec_arrow'))
{famundoApplication.toggleBox(e,'can_be_hidden');if(elem.id.substr(0,16)=='sharing_category')
{famundoApplication.updateModalWindowSize2();}}
else if(Element.hasClassName(elem,'calendar_checkbox'))
{var chk=famundoUtils.getEventElement(e,'input');var action='';if(chk.checked==true)
action='checked';else
action='unchecked';famundoActions.add({func:[[getCalendarIdFromCheckbox(chk),action]],action_type:'custom',custom_type:'display_calendar',action_id:action+'_calendar_'+getCalendarIdFromCheckbox(chk),limit:1});}
else if(Element.hasClassName(elem,'calendar_check_all'))
{var y=getCalendarsFromBox(elem,'calendar_checkbox').map(function(item){return[item,'checked'];});famundoActions.add({func:y,action_type:'custom',custom_type:'display_calendar',action_id:'checked_calendar_'+getCalendarIdFromCheckbox(chk),limit:1});}
else if(Element.hasClassName(elem,'calendar_uncheck_all'))
{var y=getCalendarsFromBox(elem,'calendar_checkbox').map(function(item){return[item,'unchecked'];});famundoActions.add({func:y,action_type:'custom',custom_type:'display_calendar',action_id:'unchecked_calendar_'+getCalendarIdFromCheckbox(chk),limit:1});}
else if(Element.hasClassName(elem,'user_checkbox'))
{var chk=famundoUtils.getEventElement(e,'input');var action='';if(chk.checked==true)
action='checked';else
action='unchecked';famundoActions.add({func:[[getCalendarIdFromCheckbox(chk),action]],action_type:'custom',custom_type:'display_user',action_id:action+'_user_'+getCalendarIdFromCheckbox(chk),limit:1});}
else if(Element.hasClassName(elem,'user_check_all'))
{var y=getCalendarsFromBox(elem,'user_checkbox').map(function(item){return[item,'checked'];});famundoActions.add({func:y,action_type:'custom',custom_type:'display_user',action_id:'checked_user_'+getCalendarIdFromCheckbox(chk),limit:1});}
else if(Element.hasClassName(elem,'user_uncheck_all'))
{var y=getCalendarsFromBox(elem,'user_checkbox').map(function(item){return[item,'unchecked'];});famundoActions.add({func:y,action_type:'custom',custom_type:'display_user',action_id:'unchecked_user_'+getCalendarIdFromCheckbox(chk),limit:1});}
else if(Element.hasClassName(elem,'calendar_day_view'))
{var f=function(){return new Ajax.Request(famundoCalendarUrl.get_day_url,{asynchronous:true,method:'get',onComplete:function(){famundoOverflowElements=false;}});}
famundoActions.add({func:f,action_type:'ajax',action_id:'calendar_view',limit:2,limit_type:'remove'});}
else if(Element.hasClassName(elem,'calendar_week_view'))
{var f=function(){return new Ajax.Request(famundoCalendarUrl.get_week_url,{asynchronous:true,method:'get',onComplete:function(){famundoOverflowElements=false;}});}
famundoActions.add({func:f,action_type:'ajax',action_id:'calendar_view',limit:2,limit_type:'remove'});}
else if(Element.hasClassName(elem,'calendar_month_view'))
{var f=function(){return new Ajax.Request(famundoCalendarUrl.get_month_url,{asynchronous:true,method:'get',onComplete:function(){famundoOverflowElements=false;}});}
famundoActions.add({func:f,action_type:'ajax',action_id:'calendar_view',limit:2,limit_type:'remove'});}
else if(Element.hasClassName(elem,'calendar_agenda_view'))
{var f=function(){return new Ajax.Request(famundoCalendarUrl.get_agenda_url,{asynchronous:true,method:'get',onComplete:function(){famundoOverflowElements=false;}});}
famundoActions.add({func:f,action_type:'ajax',action_id:'calendar_view',limit:2,limit_type:'remove'});}
else if(Element.hasClassName(elem,'calendar_tags_view'))
{var f=function(){return new Ajax.Request(famundoCalendarUrl.get_tags_url,{asynchronous:true,method:'get',onComplete:function(){famundoOverflowElements=false;}});}
famundoActions.add({func:f,action_type:'ajax',action_id:'calendar_view',limit:2,limit_type:'remove'});}
else if(Element.hasClassName(elem,'closeQuickEventPopup')||famundoUtils.ascendDOMtoClass(elem,'closeQuickEventPopup'))
{hideGridDrawDiv();famundoApplication.closeModalWindow();}}
function buildCategoriesMenu(e,readOnly,category_id)
{var links;if(readOnly)
links=[{'label':famundoCalendarText.menuNewCategory,'action':famundoCalendarUrl.get_edit_category}];else
links=[{'label':famundoCalendarText.menuNewCategory,'action':famundoCalendarUrl.get_edit_category},{'label':famundoCalendarText.menuEditCategory,'action':famundoCalendarUrl.get_edit_category+'?id='+category_id},{'dbox':true,'label':famundoCalendarText.menuDeleteCategory,'action':"famundoApplication.openConfirmWindow('"+famundoCalendarText.menuDeleteCategory+"','"+famundoCalendarText.deleteCategoryTxt+"',{ok_action:function(){setDeleteCategory('"+category_id+"');} });"},{'label':famundoCalendarText.menuAddCalendar,'action':famundoCalendarUrl.get_edit_calendar+'?category_id='+category_id},{'label':famundoCalendarText.menuSubscribe2Calendar,'action':famundoCalendarUrl.subscribe_to_calendar+'?category_id='+category_id}];FamundoMainUtils.buildTT_menu(e,links,true);}
function buildCalendarMenu(e)
{var links=[{'label':famundoCalendarText.menuAddCalendar,'action':famundoCalendarUrl.get_edit_calendar},{'label':famundoCalendarText.menuNewCalCategory,'action':famundoCalendarUrl.get_edit_category}];FamundoMainUtils.buildTT_menu(e,links,true);}
function loadCalendar()
{new Ajax.Request(famundoCalendarUrl.get_refresh_url+'?redraw=0',{asynchronous:true,method:'get'});}
function setDeleteCalendar(id,txt,cached)
{var action=function(){var myAjax=new Ajax.Request(famundoCalendarUrl.get_delete_calendar+'?id='+id+(cached!=null?'&cached=true':''),{method:'post',parameters:""})};var options={'ok_label':famundoGenText.yes,'cancel_label':famundoGenText.no,'ok_action':action};famundoApplication.openConfirmWindow(famundoCalendarText.deleteCalendarTitle+' "'+txt+'"',famundoCalendarText.deleteCalendarTxt,options);famundoApplication.updateModalWindowSize();}
function setDeleteCategory(id)
{new Ajax.Request(famundoCalendarUrl.get_delete_category+'?item_id='+id,{method:'post',parameters:""})}
var Quickcalendar={displayAddlink:function(text,id){if($("extra_calendar_id"))
$("extra_calendar_id").options[$("extra_calendar_id").options.length]=new Option(text,id,true,true);else if($("extra_calendar_home_team"))
$("extra_calendar_home_team").options[$("extra_calendar_home_team").options.length]=new Option(text,id,true,true);famundoUtils.replaceClass($('new_cal'),'form_zone','form_zone_h');famundoApplication.updateModalWindowSize();}}
function openCalendarModalWindow(event_type,id)
{item_id="";if(id)
item_id='?item_id='+id
switch(event_type)
{case'quick_event':var f=function(){famundoApplication.openModalWindow(famundoCalendarText.titleQuickEvent,false,famundoCalendarUrl.get_add_quick_event);}
break;case'edit_event':var f=function(){famundoApplication.openModalWindow(famundoCalendarText.menuOther,false,famundoCalendarUrl.get_edit_event+"?kind=event");}
break;case'share_on_web':var f=function(){famundoApplication.openModalWindow(famundoCalendarText.shareOnWeb,false,famundoCalendarUrl.get_share_on_web);}
break;case'edit_calendar':var f=function(){new Ajax.Updater(famundoApplication.openModalWindow().getContent(),famundoCalendarUrl.get_edit_calendar+item_id,{evalScripts:true,method:'get',onComplete:function(){Windows.getWindow('famundoModalWindow').showCenter(true);famundoApplication.setOverlayOpacity();famundoApplication.updateModalWindowSize2();}});}
break;case'edit_category':var f=function(){new Ajax.Updater(famundoApplication.openModalWindow().getContent(),famundoCalendarUrl.get_edit_category+item_id,{evalScripts:true,method:'get',onComplete:function(){Windows.getWindow('famundoModalWindow').showCenter(true);famundoApplication.setOverlayOpacity();famundoApplication.updateModalWindowSize2();}});}
break;case'new_notice':var f=function(){new Ajax.Updater(famundoApplication.openModalWindow(false,false,false,true).getContent(),famundoMessageUrl.get_edit_todo,{parameters:'edit_type=popup',evalScripts:true,method:'get',onComplete:function(){Windows.getWindow('famundoModalWindow').setTitle(famundoMessageText.addTodo);Windows.getWindow('famundoModalWindow').showCenter(true);famundoApplication.setOverlayOpacity();famundoApplication.updateModalWindowSize2();}});}
break;case'edit_notice':var f=function(){new Ajax.Updater(famundoApplication.openModalWindow(false,false,false,true).getContent(),famundoMessageUrl.get_edit_todo,{parameters:'edit_type=popup&id='+id,evalScripts:true,method:'get',onComplete:function(){Windows.getWindow('famundoModalWindow').setTitle(famundoMessageText.editTodo);Windows.getWindow('famundoModalWindow').showCenter(true);famundoApplication.setOverlayOpacity();famundoApplication.updateModalWindowSize2();}});}
break;case'external_calendar_subscribing':var f=function(){famundoApplication.openModalWindow(famundoCalendarText.calSubscribing,false,famundoCalendarUrl.subscribe_to_calendar+"?"+id);}
break;case'calendar_subscribing':var f=function(){famundoApplication.openModalWindow(famundoCalendarText.calSubscribing,false,famundoCalendarUrl.subscribe_to_calendar);}
break;default:return false;}
famundoActions.add({func:f,action_type:'ajax',limit:1,action_id:'calendar_action',limit_type:'restrict'});}
function buildCalendarMenu(e,is_share)
{var items=new Array();var i=0;if(is_share)
{items.push({'label':famundoCalendarText['share'],'action':'window.location.href=\''+famundoCalendarUrl.share+'\';'});}
items.push({'label':famundoCalendarText['addc'],'action':'openCalendarModalWindow(\'edit_calendar\'); return false;'});items.push({'label':famundoCalendarText.menuSubscribe2Calendar,'action':'openCalendarModalWindow(\'calendar_subscribing\'); return false;'});items.push({'label':famundoCalendarText['addcc'],'action':'openCalendarModalWindow(\'edit_category\'); return false;'});items.push({'label':famundoCalendarText['importc'],'action':'new Ajax.Request(\''+famundoCalendarUrl.imports+'\', {asynchronous:true, evalScripts:true}); return false;'});items.push({'label':famundoCalendarText['exportc'],'action':'new Ajax.Request(\''+famundoCalendarUrl.exports+'\', {asynchronous:true, evalScripts:true}); return false;'});FamundoMainUtils.buildTT_menu(e,items,false);}
function getCalendarsFromBox(elem,classname)
{var elem=(Element.hasClassName($(elem),'calendar_selection_box'))?$(elem):famundoUtils.ascendDOMtoClass($(elem),'calendar_selection_box');if(elem)
{var calendars=new Array();document.getElementsByClassName(classname,elem).each(function(item){calendars.push(getCalendarIdFromCheckbox(item));});return calendars;}
return false;}
function getCalendarIdFromCheckbox(checkbox)
{if($(checkbox))
return $(checkbox).getAttribute('id').substr(9);return false;}
function initDragableLinkEvents()
{var obj=$('dragable_link');if(obj)
{Event.observe(obj,'mousedown',function(e,objt){initLinkDrag(e,obj);});Event.observe(obj,'mouseup',function(e,objt){dropLinkDrag(e,obj);});setLinkAsDraggable(obj);}}
function initLinkDrag(e,obj)
{Element.removeClassName(obj,'span_href');Element.addClassName(obj,'bg_color_user'+obj.getAttribute('cur_user')+' span_dragable_href');obj.setAttribute('drag',true);FamundoDOMUtils.toglePosition(obj,true);}
function dropLinkDrag(e,obj)
{var start=obj.getAttribute('start');if(start&&start!='')
new Ajax.Updater(famundoApplication.openModalWindow().getContent(),famundoCalendarUrl.get_edit_event+'?kind=quick&start_date='+start,{evalScripts:true,method:'get',onComplete:function(){Windows.getWindow('famundoModalWindow').showCenter(true);famundoApplication.setOverlayOpacity();setTimeout(function(){famundoApplication.updateModalWindowSize2();},1);}});Element.removeClassName(obj,'bg_color_user'+obj.getAttribute('cur_user'));Element.removeClassName(obj,'span_dragable_href');Element.addClassName(obj,'span_href');obj.innerHTML=famundoCalendarText.linkDrag;obj.style.width="";obj.setAttribute('drag',false);setTimeout(function(){FamundoDOMUtils.toglePosition(obj,false,$("draggable_link_container"));},1);}
function setLinkAsDraggable(item)
{new Draggable($(item).id,{revert:false,ghosting:false,zindex:10000000});}
function cancelLinkDrag(e,obj)
{obj.innerHTML=famundoCalendarText.linkDrag;obj.style.width="";}
function buildAgenda(container,h_titles,h_classes,colect)
{$(container).innerHTML='';if(fmGrid)
fmGrid.destroy;fmGrid=new FamundoABookGrid();if(!h_titles)
var header=["Date","Time","","Event","Location","Notes"];else
var header=h_titles;if(!h_classes)
var headerClass=['h_date_column','h_time_column','h_icons_column','h_event_column','h_location_column','h_notes_column'];else
var headerClass=h_classes;fmGrid.setMultipleSelected(false);fmGrid.addColumns(header,headerClass);incr=0;var oldDate='';var bg_ix=0;var iconsize=0;var TT=[];var cmenu=[];for(var i=0;i<colect.length;i++)
{var descript=colect[i];var column_classes=['h_date_column date_column','h_time_column time_column','h_icons_column icons_column','h_event_column event_column','h_location_column location_column','h_notes_column notes_column'];var dv=this.addAgendaEvent(descript,column_classes,oldDate,bg_ix,iconsize);if(dv)
{var row=dv.row;bg_ix=dv.bg_ix;iconsize=dv.iconsize;if(oldDate!=row[0])
{oldDate=row[0];}
else
{row[0]='';}
var rpropr={"event_id":descript.id};TT[fmGrid.cntRow]=dv.TT;cmenu[fmGrid.cntRow]=dv.menu;fmGrid.addRow(row,rpropr,dv.rclass,dv.classes);incr++;}}
fmGrid.setHooverSelectable(false);fmGrid.setClickSelectable(true);fmGrid.setSortable(false);fmGrid.setRemoveHscroll(false);fmGrid.build($(container));fmGrid.aBook._getHeaderColumn(2).style.width=iconsize+'px';fmGrid.aBook._getBodyColumn(0,2).style.width=iconsize+'px';for(var i=0;i<fmGrid.cntRow;i++)
{if(TT[i])
{var objct=fmGrid.aBook.findRow(i);var tt=TT[i];var menu=cmenu[i]
setTTClickEvent(objct,tt,menu);}}}
function setTTClickEvent(objct,tt,menu)
{Event.observe(objct,'click',function(e,obj,tti){addAgendaEventTT(e,objct,tt);});Event.observe(objct,'contextmenu',function(e,obj,tti){addAgendaEventMenu(e,objct,menu);});}
function addAgendaEventMenu(e,objct,menu)
{buildAgendaContextMenu(e,objct,menu);fmGrid.setSelectedRow(objct.getAttribute('index'));}
function addAgendaEvent(descript,column_classes,oldDate,bg_ix,iconsize)
{var frow={};var icons_div='';var icons_end='';var str_limit=150;if(!descript.clip)
descript.clip=false;if(!descript.recurrent)
descript.recurrent=false;if(descript.clip||descript.recurrent||(descript.view_access&&descript.view_access[0]))
{var icons_size=0;var icons_content="";if(descript.view_access&&descript.view_access[0])
{icons_size+=17;icons_content+="<div style='height:15px;margin:0px;padding:0px;width:17px;' title='"+descript.view_access[1]+"' class='float_left calendar_"+descript.view_access[0]+"_div'></div>";}
if(descript.sdate||descript.edate)
{icons_size+=13;icons_content+='<div class="float_left calendar_timer_div" title="Multiple days timed event"></div>';}
if(descript.clip)
{icons_size+=11;icons_content+='<div class="float_left calendar_clip_div" title="Documents attached"></div>';}
if(descript.recurrent)
{icons_size+=17;if(descript.birthday)
{icons_content+='<div class="float_right calendar_birthday_div" title="Birthday"></div>';}
else if(descript.anniversary)
{icons_content+='<div class="float_right calendar_anniversary_div" title="Anniversary"></div>';}
else
{icons_content+='<div class="float_right calendar_recurrence_div" title="Recurrent Event"></div>';}}
if(icons_size>iconsize)
iconsize=icons_size;var icons_div='<div class="float_left" style="margin:0px;padding:0px;width:';if(FamundoMainUtils.isIE)
{var itop='-14px;';var ileft='0px;';}
else
{var itop='0px;';var ileft=-icons_size+'px;';}
var wspace='';wspace="white-space:normal;";icons_div+=icons_size+'px;">'+icons_content+'</div><div class="grid_full_text" style="left:'+ileft+' top:'+itop+'position:relative;text-indent:'+(icons_size+2)+'px;'+wspace+'">';icons_end='</div>';}
var sdate=famundoDateUtil.parseISO(descript.starts_at);if(!descript.ends_at&&descript.duration)
var edate=famundoDateUtil.addDays(famundoDateUtil.parseISO(descript.starts_at),(parseInt(descript.duration)-1));else
var edate=famundoDateUtil.parseISO(descript.ends_at);var sDate=sdate.strftime("%A, %b %d");var bgs=['background_white','background_theme'];if(oldDate!=sDate)
{if(bg_ix!=1)
bg_ix=1;else
bg_ix=0;}
if(!descript.duration)
var stime=sdate.strftime(famundoDateTimeFormats.time_format);else
{if(descript.duration==1)
var stime=famundoCalendarText.allDay;else
var stime=famundoCalendarText.xDays.replace(/%d/,descript.duration);}
if(!descript.location)
descript.location='';if(!descript.notes)
descript.notes='';else
descript.notes=descript.notes.unescapeHTML();var row_class=bgs[bg_ix];column_classes[0]=column_classes[0]+' ';for(var i=1;i<column_classes.length;i++)
{column_classes[i]=column_classes[i]+' txt_color_'+descript.css_id;}
var drive={};if(descript.drive_txt)
drive.summary=descript.drive_txt;if(descript.drive_css)
drive.css_id=descript.drive_css;if(descript.drive_duration)
drive.duration=descript.drive_duration;if(!drive.summary)
drive=null;var TT=null;if(descript.TT==null||descript.TT=='')
{var event_actions=null;if(descript.TT==null)
{var guid='';if(descript.guid)
guid="&guid="+descript.guid;var readOnlyEvent=false;if(descript.read_only)
readOnlyEvent=true;var get_action=getActionFunction();if(!readOnlyEvent)
{var params="id="+descript.id;if(descript.guid)
params+='&guid='+descript.guid;if(descript.recurrent)
event_actions=[{'label':'edit','action':get_action(famundoCalendarUrl.get_edit_event,'edit_recur',params,famundoCalendarText.editRecurEvent+' "'+descript.summary+'"',famundoCalendarText.editRecurEventTxt)},{'label':'delete','action':get_action(famundoCalendarUrl.get_delete_event,'confirm_recur',params,famundoCalendarText.deleteRecurEvent+' "'+descript.summary+'"',famundoCalendarText.deleteRecurEventTxt)},{'label':'copy','action':get_action(famundoCalendarUrl.get_copy_event,'window',params)},{'label':'complete','action':get_action(famundoCalendarUrl.get_complete_url,'confirm',params,famundoCalendarText.completeEventTitle+' "'+descript.summary+'"',famundoCalendarText.completeEventTxt)}];else
event_actions=[{'label':'edit','action':get_action(famundoCalendarUrl.get_edit_event,'window',params)},{'label':'delete','action':get_action(famundoCalendarUrl.get_delete_event,'confirm',params,famundoCalendarText.deleteEvent+' "'+descript.summary+'"',famundoCalendarText.deleteEventTxt)},{'label':'copy','action':get_action(famundoCalendarUrl.get_copy_event,'window',params)},{'label':'complete','action':get_action(famundoCalendarUrl.get_complete_url,'confirm',params,famundoCalendarText.completeEventTitle+' "'+descript.summary+'"',famundoCalendarText.completeEventTxt)}];}
else if(!descript.no_action)
{event_actions=[{'label':'view','action':get_action(famundoCalendarUrl.get_view_event+'?event_id='+descript.id+guid)}];}
else
{event_actions=[]}}
var icons_tt=descript.summary;if(descript.view_access&&descript.view_access[0])
{icons_tt="<span title='"+descript.view_access[1]+"' class='calendar_"+descript.view_access[0]+"_div'>"+descript.summary+"</span>";}
if(!descript.duration)
{var startTime=sdate.strftime(famundoDateTimeFormats.time_format);var endTime=edate.strftime(famundoDateTimeFormats.time_format);var TTtxt="<table><tr><td colspan='2' class='TT_summary'>"+icons_tt+"</td></tr>";if(!descript.sdate&&!descript.edate)
TTtxt+="<tr><td class='TT_label'>Time:</td><td class='TT_description' style='white-space:nowrap;'>"+startTime+" - "+endTime+"</td></tr>";else
{var sdTTtxt=sdate.strftime(famundoDateTimeFormats.short_date)+' @'+startTime;if(descript.sdate)
{var sdt=famundoDateUtil.parseISO(descript.sdate);sdTTtxt=sdt.strftime(famundoDateTimeFormats.short_date)+' @'+sdt.strftime(famundoDateTimeFormats.time_format);;}
var edTTtxt=edate.strftime(famundoDateTimeFormats.short_date)+' @'+endTime;if(descript.edate)
{var edt=famundoDateUtil.parseISO(descript.edate);edTTtxt=edt.strftime(famundoDateTimeFormats.short_date)+' @'+edt.strftime(famundoDateTimeFormats.time_format);;}
TTtxt+="<tr><td class='TT_label'>Dates:</td><td class='TT_description' style='white-space:nowrap;'>"+sdTTtxt+" - "+edTTtxt+"</td></tr>";}
if(drive&&drive.duration)
TTtxt+="<tr><td class='TT_label'>Driving time:</td><td class='TT_description'>"+drive.duration+" min.</td></tr>";if(descript.location&&descript.location.trim()!='')
{var lmap='';if(descript.gmap)
{var lnk='show_google_map("'+descript.gmap.from_location+'","'+descript.gmap.to_location+'",""); return false;';lmap="<tr><td></td><td class='TT_description'><a title='"+descript.gmap.title+"' href='' onclick='"+lnk+"'><img alt='"+descript.gmap.title+"' src='"+descript.gmap.icon+"' /></a></td>";}
TTtxt+="<tr><td class='TT_label'>Location:</td><td class='TT_description'>"+descript.gmap.to_location+"</td></tr>"+lmap;}
if(descript.notes&&descript.notes.trim()!='')
TTtxt+="<tr><td class='TT_label'>Notes:</td><td class='TT_description'>"+FamundoMainUtils.unescape_javascript(descript.notes).unescapeHTML()+"</td></tr>";if(descript.clip&&descript.documents.trim()!='')
TTtxt+="<tr><td class='TT_label'>Documents:</td><td class='TT_description'>"+descript.documents+"</td></tr>";TTtxt+="</table>";TT={'caption':'','content':TTtxt,'menu':event_actions};}
else
{var TTtxt="<table><tr><td colspan='2' class='TT_summary'>"+icons_tt+"</td></tr>";if(parseInt(descript.duration)>1)
TTtxt+="<tr><td class='TT_label'>Dates:</td><td class='TT_description'>"+sdate.strftime(famundoDateTimeFormats.short_date)+" - "+famundoDateUtil.addDays(sdate,(parseInt(descript.duration)-1)).strftime(famundoDateTimeFormats.short_date)+"</td></tr>";else
TTtxt+="<tr><td class='TT_label'>Date:</td><td class='TT_description'>"+sdate.strftime(famundoDateTimeFormats.short_date)+"</td></tr>";if(descript.location&&descript.location.trim()!='')
{var lmap='';if(descript.gmap)
{var lnk='show_google_map("'+descript.gmap.from_location+'","'+descript.gmap.to_location+'",""); return false;';lmap="<tr><td></td><td class='TT_description'><a title='"+descript.gmap.title+"' href='' onclick='"+lnk+"'><img alt='"+descript.gmap.title+"' src='"+descript.gmap.icon+"' /></a></td>";}
TTtxt+="<tr><td class='TT_label'>Location:</td><td class='TT_description'>"+descript.location+"</td></tr>"+lmap;}
if(descript.notes&&descript.notes.trim()!='')
TTtxt+="<tr><td class='TT_label'>Notes:</td><td class='TT_description'>"+FamundoMainUtils.unescape_javascript(descript.notes).unescapeHTML()+"</td></tr>";if(descript.clip&&descript.documents.trim()!='')
TTtxt+="<tr><td class='TT_label'>Documents:</td><td class='TT_description'>"+descript.documents+"</td></tr>";TTtxt+="</table>";TT={'caption':'','content':TTtxt,'menu':event_actions};}}
if(descript.summary.length>str_limit)
descript.summary=descript.summary.substr(0,(str_limit-3))+'...';if(descript.location.length>str_limit)
descript.location=descript.location.substr(0,(str_limit-3))+'...';if(descript.notes.length>str_limit)
descript.notes=descript.notes.substr(0,(str_limit-3))+'...';frow={'menu':event_actions,'row':[sDate,stime,icons_div,descript.summary,descript.location,descript.notes],'rclass':row_class,'classes':column_classes,'bg_ix':bg_ix,'iconsize':iconsize,'TT':TT};return frow;}
function addAgendaEventTT(e,obj,tt)
{if(domTT_flag)
{return false;}
var ix=obj.getAttribute('index');if(ix)
fmGrid.setSelectedRow(ix);var trig_obj=Event.element(e);var offset=0;if(FamundoMainUtils.isIE&&!domLib_isIE7)
offset=10;if(!tt)
return false;var mouseleft=Position.cumulativeOffset(trig_obj)[0]-offset;var mousetop=Position.cumulativeOffset(trig_obj)[1]-fmGrid.aBook.bodyDiv.scrollTop;if(tt.menu!=null)
{var menu='<table class="TT_caption"  cellspacing=\'0\'><tr><td class="TT_cell_menu">';var ttid=new Array();var j=tt.menu.length;for(var k=0;k<j;k++)
{ttid[k]=null;if(tt.menu[k]&&tt.menu[k].lbOn)
{ttid[k]='menu_'+FamundoMainUtils.generateId()+'_'+k;menu+='<A href="'+tt.menu[k].action+'" class="lbOn" id="'+ttid[k]+'">'+tt.menu[k].label+'</A>';}
else if(tt.menu[k]&&tt.menu[k].dialogBox)
{ttid[k]='menu_'+FamundoMainUtils.generateId()+'_'+k;menu+='<span class="span_href" value="true" txt="'+tt.menu[k].label+'" onClick="" id="'+ttid[k]+'">'+tt.menu[k].label+'</span>';}
else
{menu+='<span class="span_href" onClick="'+tt.menu[k].action+'">'+tt.menu[k].label+'</span>';}
if(k<j-1)
menu+=' | ';}
menu+='</td></tr></table>';}
var domTT_styleClass='domTTOverlib';var domTT_oneOnly=true;var closeLink="<div class='cancel_icon float_right'></div>";var tid=FamundoMainUtils.generateId()+'content';var tt_id='TT_'+tid;domTT_activate(trig_obj,e,'caption','<table class="TT_caption"  cellspacing="0"><tr><td style="text-align:left">'+tt.caption+menu+'</td></tr></table>','content','<table id="'+tid+'" style="width:100%;"><tr><td>'+tt.content+'</td></tr></table>','trail',true,'fade','neither','closeLink',closeLink,'type','sticky','styleClass','domTT','delay',50,'inframe',true,'closeAction','destroy','x',mouseleft,'y',mousetop,'id',tt_id);var twidth=Element.getDimensions($(tid)).width;if(twidth>300)
{$(tt_id).style.display='none';$(tid).style.width='300px';if(FamundoMainUtils.isIE)
{$(tt_id).style.width='300px';var ifrms=document.getElementsByClassName('protect_iframe');for(var k=0;k<ifrms.length;k++)
{Position.clone($(tid),ifrms[k]);}}
$(tt_id).style.left=(Position.cumulativeOffset(trig_obj)[0]+Element.getDimensions(trig_obj).width-300)+'px';$(tt_id).style.display='';}
domTT_flag=trig_obj;this.dbox=new Array();var dlg_action=new Array();if(tt&&tt.menu!=null)
{for(var k=0,j=tt.menu.length;k<j;k++)
{if($(ttid[k]))
{if(tt.menu[k].dialogBox)
{this.dbox[k]=tt.menu[k].dialogBox;var me=this;$(ttid[k]).setAttribute('ix',k);dlg_action=function(e){me.doShowBox(e);};Event.observe($(ttid[k]),'click',dlg_action);}}}}
Event.stop(e);}
function deleteAgendaEvent(evid)
{var ix=fmGrid.getSelectedIndex();var selid=fmGrid.getRowData(ix);if(selid&&selid.event_id&&selid.event_id==evid)
{var cdata=fmGrid.aBook._getBodyColumn((parseInt(ix)+1),0).firstChild;if(cdata&&cdata.innerHTML.trim()!=''&&(parseInt(ix)+1)<fmGrid.cntRow)
{var old_val=cdata.innerHTML;var ndata=fmGrid.aBook._getBodyColumn((parseInt(ix)+2),0).firstChild;if(ndata&&ndata.innerHTML.trim()=='')
{ndata.innerHTML=old_val;}}
fmGrid.deleteRow(ix);}}
function initCalendar()
{if($('form_import_edit'))
{famundoApplication.adjust_page();famundoApplication.adjust_layout();return false;}
famundoHeaderUserList.setCallBack(selectUserCallback,0);initPage();famundoUtils.addEvent(document,'click',onClick,false);}
function splitTimedEvents(ev_item)
{var descripts=new Array();var millisecondsToDays=1/(1000*60*60*24);var ev_start=famundoDateUtil.parseISO(ev_item.starts_at,true);if(!ev_item.ends_at&&ev_item.duration)
var ev_ends=famundoDateUtil.addDays(ev_start,(parseInt(ev_item.duration)-1));else
var ev_ends=famundoDateUtil.parseISO(ev_item.ends_at,true);var dif=(ev_ends-ev_start)*millisecondsToDays;if(dif==0)
return[ev_item]
for(var i=0;i<=dif;i++)
{descripts[i]=$H(ev_item);var sDate=famundoDateUtil.addDays(ev_start,(parseInt(i)));sDate.setHours(0);sDate.setMinutes(0);var eDate=famundoDateUtil.addDays(ev_start,(parseInt(i)));eDate.setHours(24);eDate.setMinutes(00);descripts[i].starts_at=sDate.strftime("%Y-%m-%d %H:%M");descripts[i].ends_at=eDate.strftime("%Y-%m-%d %H:%M");descripts[i].drag=false;if(i>0)
descripts[i]['sdate']=ev_item.starts_at;if(i<dif)
descripts[i]['edate']=ev_item.ends_at;if(i==0)
descripts[i].starts_at=ev_item.starts_at;if(i==dif)
descripts[i].ends_at=ev_item.ends_at;}
return descripts;}
var fmGrid=false;global_initializers.push(function(){initCalendar();});function processLocationAutoComplete(elem,li)
{var new_str="";var v="";var values=elem.value.split("\n");for(var i=0;i<values.length;i++)
{var v=values[i].trim();if(v!=null&&v!="")
{if(i>0)
{if(i==1&&new_str.length>0&&new_str[0]=='(')
new_str+=" ";else
new_str+=", ";}
new_str+=v}}
elem.value=new_str;var id=li.id.slice(7);$('event_location_id').value=id;}
var interval_labels=['','days(s)','week(s)','month(s)','year(s)']
function showEndOptions(event)
{var el=event?Event.element(event):$('recurrence_recur_ends');switch(el.selectedIndex)
{case 0:showEndCountOptions();break;case 1:showEndUntilDateOptions();break;case 2:hideEndOptions();break;}}
function showOptions(event)
{var el=event?Event.element(event):$('recurrence_freq');switch(el.selectedIndex)
{case 1:showDailyOptions();break;case 2:showWeeklyOptions();break;case 3:showMonthlyOptions();break;case 4:showYearlyOptions();break;case 0:hideRecurrence();break;}
$('repeat_interval_label').innerHTML=interval_labels[el.selectedIndex];(el.selectedIndex==1)?$('repeat_skip_weekends').show():$('repeat_skip_weekends').hide();setTimeout(function(){famundoApplication.updateModalWindowSize2();},10);}
function showDailyOptions()
{$('recur_ends_row').show();$('recur_interval_row').show();$('recur_weekly_row').hide();$('recur_monthly1_row').hide();$('recur_monthly2_row').hide();$('recur_yearly1_row').hide();$('recur_yearly2_row').hide();}
function showWeeklyOptions()
{$('recur_ends_row').show();$('recur_interval_row').show();$('recur_weekly_row').show();$('recur_monthly1_row').hide();$('recur_monthly2_row').hide();$('recur_yearly1_row').hide();$('recur_yearly2_row').hide();}
function showMonthlyOptions()
{$('recur_ends_row').show();$('recur_interval_row').show();$('recur_weekly_row').hide();$('recur_monthly1_row').show();$('recur_monthly2_row').show();$('recur_yearly1_row').hide();$('recur_yearly2_row').hide();}
function showYearlyOptions()
{$('recur_ends_row').show();$('recur_interval_row').show();$('recur_yearly1_row').show();$('recur_yearly2_row').show();$('recur_monthly1_row').hide();$('recur_monthly2_row').hide();$('recur_weekly_row').hide();}
function hideRecurrence()
{$('recur_ends_row').hide();$('recur_interval_row').hide();$('recur_monthly1_row').hide();$('recur_monthly2_row').hide();$('recur_yearly1_row').hide();$('recur_yearly2_row').hide();$('recur_weekly_row').hide();}
function showEndCountOptions()
{$('recurrence_count_area').show();$('recurrence_until_area').hide();}
function showEndUntilDateOptions()
{$('recurrence_until_area').show();$('recurrence_count_area').hide();}
function hideEndOptions()
{$('recurrence_until_area').hide();$('recurrence_count_area').hide();}
var famundoTree=Class.create();famundoTree.prototype={tree_class:'famundoTree',item_class:'famundoTreeItem',item_icon_class:'famundoTreeItemIcon',item_text_class:'famundoTreeItemText',item_checkbox_class:'famundoTreeItemCheckbox',item_indent:20,DnD_enabled:false,onDnDDropItem:Prototype.emptyFunction,onDnDHoverItem:Prototype.emptyFunction,hoverDnDClass:'',initialize:function(treeContainer,treeDef)
{this.root=this.addItem(treeContainer,treeDef);Element.addClassName(this.root,famundoTree.prototype.tree_class);Element.addClassName(famundoTree.prototype.getItemText(this.root),'famundoTreeRootText');Element.addClassName(famundoTree.prototype.getItemIcon(this.root),'famundoTreeRootIcon');},addItem:function(parentNode,item_def)
{var item_obj=new famundoTreeItem(item_def);var item=item_obj.getItem();item_obj.setParentNode(parentNode);var children_def=item_obj.getItemsDef();if(children_def)
{for(var i=0;i<children_def.length;i++)
{this.addItem(item,children_def[i]);}}
return item;},moveItem:function(item,parent)
{var info={};info[item.id]=famundoTree.prototype.isExpandedItem(item);famundoTree.prototype._removeItemIcon(item);famundoTree.prototype.getItems(item).each(function(child)
{info[child.id]=famundoTree.prototype.isExpandedItem(child)?true:false;famundoTree.prototype._removeItemIcon(child);});if(!famundoTree.prototype.isExpandedItem(parent))
{Element.hide(item);}
$(parent).appendChild(item);(info[item.id])?famundoTree.prototype._setItemOpenIcon(item):famundoTree.prototype._setItemCloseIcon(item);famundoTree.prototype.getItems(item).each(function(child)
{(info[child.id])?famundoTree.prototype._setItemOpenIcon(child):famundoTree.prototype._setItemCloseIcon(child);});this._setItemLevel(item);},deleteItem:function(elem)
{var item=famundoTree.prototype.getItem(elem);var root=famundoTree.prototype.getRootItem2(elem);if(item&&root&&(item!=root))
{famundoTree.prototype.getItemParent(item).removeChild(item);return true;}
return false;},getRootItem:function()
{return this.root;},getRootItem2:function(elem)
{while(famundoTree.prototype.isFamundoTreeItem(elem)||famundoTree.prototype.getItemParent(elem))
{if(!famundoTree.prototype.getItemParent(elem))
{return elem;}
else
{elem=famundoTree.prototype.getItemParent(elem);}}
return elem;},deleteAllItems:function(elem)
{var items=famundoTree.prototype.getItems(elem);for(var i=0;i<items.length;i++)
{if($(items[i]))
Element.remove(items[i]);}},getItems:function(item,level)
{var items=new Array();if(!item)
{elem=this.getRootItem();items.push(elem);}
else
{elem=$(item);}
document.getElementsByClassName(this.item_class,elem).each(function(child)
{if(level)
{if((famundoTree.prototype.getItemLevel(elem)+level)>=famundoTree.prototype.getItemLevel(child))
{items.push(child);}}
else
{items.push(child);}});return items;},getItem:function(elem)
{return famundoUtils.ascendDOMtoClass($(elem),famundoTree.prototype.item_class);},getItemParent:function(item)
{return famundoUtils.ascendDOMtoClass($(item).parentNode,famundoTree.prototype.item_class);},getItemLevel:function(item)
{return parseInt($(item).getAttribute('item_level'));},getItemCheckbox:function(item)
{return $($(item).getAttribute('id')+'_'+famundoTree.prototype.item_checkbox_class);},getItemText:function(item)
{return $($(item).getAttribute('id')+'_'+famundoTree.prototype.item_text_class);},updateItemText:function(item,text)
{var item_text=famundoTree.prototype.getItemText(item);var cn=item_text.childNodes;for(var i=0;i<cn.length;i++)
{item_text.removeChild(cn[i]);}
return item_text.appendChild(document.createTextNode(text));},getItemIcon:function(item)
{return $($(item).getAttribute('id')+'_'+famundoTree.prototype.item_icon_class);},getItemIconClass:function(item,type)
{var attr=(type=='open')?'famundoTree_open_icon_class':'famundoTree_close_icon_class';while(famundoTree.prototype.isFamundoTreeItem(item))
{if($(item).getAttribute(attr))
{return $(item).getAttribute(attr);}
item=famundoTree.prototype.getItemParent(item);}
return false;},getItemOpenIconClass:function(item)
{return famundoTree.prototype.getItemIconClass(item,'open');},getItemCloseIconClass:function(item)
{return famundoTree.prototype.getItemIconClass(item,'close');},_setItemLevel:function(item)
{if(!this.getItemLevel(item))
{var item_level=(this.getItemLevel(this.getItemParent(item)||item)+1)||'0';$(item).setAttribute('item_level',item_level);famundoTree.prototype.setItemIndent(item);}
else
{var offset=this.getItemLevel(this.getItemParent(item))-this.getItemLevel(item)+1;$(item).setAttribute('item_level',parseInt(this.getItemLevel(item)+offset));this.getItems(item).each(function(child)
{$(child).setAttribute('item_level',parseInt(famundoTree.prototype.getItemLevel(child)+offset));famundoTree.prototype.setItemIndent(child);});}},setItemIndent:function(item,indent)
{if($(item).getAttribute('item_level')&&famundoTree.prototype.getItemLevel(item)>1)
{$(item).style.marginLeft=(indent||this.item_indent)+'px';}},isFamundoTreeRoot:function(elem)
{return Element.hasClassName(famundoTree.prototype.getItem(elem),famundoTree.prototype.tree_class);},isFamundoTreeItem:function(elem)
{return Element.hasClassName(elem,famundoTree.prototype.item_class);},isFamundoTreeItemIcon:function(elem)
{return Element.hasClassName(elem,famundoTree.prototype.item_icon_class);},isExpandedItem:function(item)
{var icon=famundoTree.prototype.getItemIcon(item);vb=true;famundoTree.prototype.getItemOpenIconClass(item).split(' ').each(function(cls)
{if(!Element.hasClassName(icon,cls))
{vb=false;}});return vb;},collapseAll:function()
{this._setDisplay(this.getRootItem(),'none');},expandAll:function(item)
{this._setDisplay(item||this.getRootItem(),'block');},expandToLevel:function(level)
{this.getItems().each(function(item)
{(famundoTree.prototype.getItemLevel(item)<level)?famundoTree.prototype.openItem(item):famundoTree.prototype.closeItem(item);});},toggleItem:function(e)
{famundoTree.prototype._setDisplay(famundoTree.prototype.getItemParent(Event.element(e)),'toggle');famundoTree.prototype.setSelectedItem(Event.element(e),'toggle');},openItem:function(item,level)
{this._setDisplay(item,'block',level||1);},closeItem:function(item)
{this._setDisplay(item,'none',1);},clickItemText:function(e)
{famundoTree.prototype.setSelectedItem(Event.element(e),'toggle');},_setDisplay:function(item,display,level)
{switch(display)
{case"block":famundoTree.prototype._setItemOpenIcon(item);document.getElementsByClassName(famundoTree.prototype.item_class,$(item)).each(function(child)
{var max_level=famundoTree.prototype.getItemLevel(item)+(level||famundoTree.prototype.getItemLevel(child))+1;if(max_level>=famundoTree.prototype.getItemLevel(child))
{Element.show(child);if(famundoTree.prototype.getItemLevel(child)<max_level)
{famundoTree.prototype._setItemOpenIcon(child);}}});break;case"none":famundoTree.prototype._setItemCloseIcon(item);famundoTree.prototype.getItems(item).each(function(child)
{Element.hide(child);famundoTree.prototype._setItemCloseIcon(child);});break;case"toggle":var children=famundoTree.prototype.getItems(item,1);children.each(function(child)
{Element.toggle(child);});(famundoTree.prototype.isExpandedItem(item))?famundoTree.prototype._setItemCloseIcon(item):famundoTree.prototype._setItemOpenIcon(item);}},_setItemOpenIcon:function(item)
{famundoTree.prototype._removeItemIcon(item);famundoTree.prototype._addItemIcon(item,'open');},_setItemCloseIcon:function(item)
{famundoTree.prototype._removeItemIcon(item);famundoTree.prototype._addItemIcon(item,'close');},_removeItemIcon:function(item)
{if(famundoTree.prototype.isExpandedItem(item))
{var cls=famundoTree.prototype.getItemOpenIconClass(item).split(' ');}
else
{var cls=famundoTree.prototype.getItemCloseIconClass(item).split(' ');}
cls.each(function(c)
{Element.removeClassName(famundoTree.prototype.getItemIcon(item),c);});},_addItemIcon:function(item,icon_type)
{if(icon_type=='open')
{var cls=famundoTree.prototype.getItemOpenIconClass(item).split(' ');}
else
{var cls=famundoTree.prototype.getItemCloseIconClass(item).split(' ');}
cls.each(function(c)
{Element.addClassName(famundoTree.prototype.getItemIcon(item),c);});},setSelectedItem:function(item,scroll)
{var root=famundoTree.prototype.getRootItem2(item);famundoTree.prototype.getItems(root).each(function(child)
{Element.removeClassName(child,'famundoTreeSelectedItem');});if(!famundoTree.prototype.isFamundoTreeItem(item))
{item=famundoTree.prototype.getItemParent(item);}
Element.addClassName(item,'famundoTreeSelectedItem');if(scroll)
{famundoApplication.scrollToElement($(root),$(item));}},getSelectedItem:function(root)
{return document.getElementsByClassName('famundoTreeSelectedItem',root)[0]||false;},enableDragAndDrop:function(options)
{this.scroll=new famundoScroll(this.root.id);this.DnD_enabled=true;Position.includeScrollOffsets=true;this.onDnDDropItem=(options&&options['onDrop'])||Prototype.emptyFunction;this.onDnDHoverItem=(options&&options['onHover'])||Prototype.emptyFunction;this.hoverDnDClass=(options&&options['hoverClass'])||'';this._setDnDItems(this.getItems());Event.observe(document,'mouseup',famundoScroll.prototype._stopScrolling);},disableDragAndDrop:function()
{},isDragAndDropEnabled:function()
{return this.DnD_enabled;},isDraggableItem:function(item)
{var vb=false;Draggables.drags.each(function(drag)
{if(drag.element==$(item))
{vb=true;}});return vb;},isDroppableItem:function(item)
{var vb=false;Droppables.drops.each(function(drop)
{if(drop.element==$(item))
{vb=true;}});return vb;},setItemAsDraggable:function(item)
{if(!famundoTree.prototype.isDraggableItem(item))
{new famundoTreeDraggable($(item).id,{revert:true,handle:famundoTree.prototype.item_icon_class+" "+famundoTree.prototype.item_text_class,ghosting:true,reverteffect:function(element,top_offset,left_offset){var dur=0;element._revert=new Effect.Move(element,{x:-left_offset,y:-top_offset,duration:dur});}});this._setDnDCursorStyle(this.getItemText(item));this._setDnDCursorStyle(this.getItemIcon(item));}},setItemAsDroppable:function(item)
{Droppables.add($(item).id,{accept:famundoTree.prototype._getItemDropAccept(item).replace(' ','').split(',')||'',hoverclass:this.hoverDnDClass,onDrop:function(draggable,droppable,event)
{draggable.style.top='0px';draggable.style.left='0px';draggable.style.position='static';famundoTree.prototype.moveItem(draggable,droppable);famundoTree.prototype._sortDroppables();famundoTree.prototype.onDnDDropItem(draggable,droppable,event);},onHover:function(draggable,droppable)
{famundoTree.prototype.onDnDHoverItem(draggable,droppable);}});},_getItemDropAccept:function(item)
{return $(item).getAttribute('famundoTree_drop_accept_class');},_setDnDItems:function(items)
{for(var i=items.length-1;i>=0;i--)
{if(items[i].getAttribute('famundoTree_draggable')!=='false')
{this.setItemAsDraggable(items[i]);}
if(items[i].getAttribute('famundoTree_droppable')!=='false')
{this.setItemAsDroppable(items[i],this.hoverDnDClass);}}},_sortDroppables:function()
{var trees=document.getElementsByClassName(famundoTree.prototype.tree_class);trees.reverse();trees.each(function(tree)
{var tmp=new Array();var max=0;var items=document.getElementsByClassName(famundoTree.prototype.item_class,tree);items.unshift(tree);items.each(function(item)
{var item_level=famundoTree.prototype.getItemLevel(item);max=Math.max(max,item_level);if(!tmp[item_level])
{tmp[item_level]=new Array();}
if(Droppables.getDroppableFamundo(item))
{tmp[item_level].push(Droppables.getDroppableFamundo(item));}
Droppables.remove(item);});for(var i=max;i>=0;i--)
{for(var j=0;tmp[i]&&tmp[i].length&&j<tmp[i].length;j++)
{Droppables.add(tmp[i][j].element.id,tmp[i][j]);}}});},_setDnDCursorStyle:function(elem)
{$(elem).style.cursor="move";},setItemAsChecked:function(item)
{var checkbox=famundoTree.prototype.getItemCheckbox(item);Element.removeClassName(checkbox,'famundoTreeUncheckedItem');Element.removeClassName(checkbox,'famundoTreePCheckedItem');Element.addClassName(checkbox,'famundoTreeCheckedItem');},setItemAsUnchecked:function(item)
{var checkbox=famundoTree.prototype.getItemCheckbox(item);Element.removeClassName(checkbox,'famundoTreeCheckedItem');Element.removeClassName(checkbox,'famundoTreePCheckedItem');Element.addClassName(checkbox,'famundoTreeUncheckedItem');},setItemAsPartialChecked:function(item)
{var checkbox=famundoTree.prototype.getItemCheckbox(item);Element.removeClassName(checkbox,'famundoTreeCheckedItem');Element.removeClassName(checkbox,'famundoTreeUncheckedItem');Element.addClassName(checkbox,'famundoTreePCheckedItem');},isCheckedItem:function(item)
{return Element.hasClassName(famundoTree.prototype.getItemCheckbox(item),'famundoTreeCheckedItem');},isUncheckedItem:function(item)
{return Element.hasClassName(famundoTree.prototype.getItemCheckbox(item),'famundoTreeUncheckedItem');},isPartialCheckedItem:function(item)
{return Element.hasClassName(famundoTree.prototype.getItemCheckbox(item),'famundoTreePCheckedItem');},checkItem:function(item)
{famundoTree.prototype.setItemAsChecked(item);var children=famundoTree.prototype.getItems(item);for(var i=0;i<children.length;i++)
{famundoTree.prototype.setItemAsChecked(children[i]);}
item=famundoTree.prototype.getItemParent(item);while(item)
{var all_checked=true;var c=famundoTree.prototype.getItems(item,1);for(var i=0;i<c.length;i++)
{if(famundoTree.prototype.isUncheckedItem(c[i])||famundoTree.prototype.isPartialCheckedItem(c[i]))
{all_checked=false;break;}}
if(all_checked)
{famundoTree.prototype.setItemAsChecked(item);item=famundoTree.prototype.getItemParent(item);}
else
{famundoTree.prototype._setPartialCheckedItems(item);break;}}},uncheckItem:function(item)
{famundoTree.prototype.setItemAsUnchecked(item);var children=famundoTree.prototype.getItems(item);for(var i=0;i<children.length;i++)
{famundoTree.prototype.setItemAsUnchecked(children[i]);}
item=famundoTree.prototype.getItemParent(item);while(item)
{var all_unchecked=true;var c=famundoTree.prototype.getItems(item,1);for(var i=0;i<c.length;i++)
{if(famundoTree.prototype.isCheckedItem(c[i])||famundoTree.prototype.isPartialCheckedItem(c[i]))
{all_unchecked=false;break;}}
if(all_unchecked)
{famundoTree.prototype.setItemAsUnchecked(item);item=famundoTree.prototype.getItemParent(item);}
else
{famundoTree.prototype._setPartialCheckedItems(item);break;}}},onClickCheckbox:function(e)
{var item=famundoTree.prototype.getItem(Event.element(e));(famundoTree.prototype.isUncheckedItem(item))?famundoTree.prototype.checkItem(item):famundoTree.prototype.uncheckItem(item);},_setPartialCheckedItems:function(item)
{while(item)
{famundoTree.prototype.setItemAsPartialChecked(item);item=famundoTree.prototype.getItemParent(item);}},getCheckedItems:function(tree)
{var items=famundoTree.prototype.getItems($(tree));var checked_items=new Array();for(var i=0;i<items.length;i++)
{if(famundoTree.prototype.isCheckedItem(items[i]))
{checked_items.push(items[i]);}}
return checked_items;}}
var famundoTreeItem=Class.create();famundoTreeItem.prototype={initialize:function(item_def)
{item_def['text']=Object.extend({'value':''},item_def['text']);item_def['attributes']=Object.extend({'id':famundoUtils.generateId()},item_def['attributes']);this.item_def=item_def;this.eventClickIcon=famundoTree.prototype.toggleItem;this.eventClickText=famundoTree.prototype.clickItemText;this._createMainDiv(item_def['attributes']);this._createIcon();if(item_def['settings']&&item_def['settings']['checkbox'])
this._createCheckbox();this._createText(item_def['text']);if(item_def['extra_elements'])
this.createExtraElements(item_def['extra_elements']);this._makeSettings(item_def['settings']);},getItem:function()
{return this.item_element;},getItemText:function()
{return this.item_text;},getItemIcon:function()
{return this.item_icon;},getItemsDef:function()
{return(this.item_def['items']&&this.item_def['items'].length>0)?this.item_def['items']:false;},_createMainDiv:function(attr)
{this.item_element=document.createElement('div');Element.addClassName(this.item_element,famundoTree.prototype.item_class);for(var prop in attr)
{if(prop=='class')
{Element.addClassName(this.item_element,attr[prop]);}
else
{this.item_element.setAttribute(prop,attr[prop]);}}},_createText:function(text_def)
{this.item_text=document.createElement('span');this.item_text.setAttribute('id',this.item_element.getAttribute('id')+'_'+famundoTree.prototype.item_text_class);var text=document.createTextNode(text_def['value']);Element.addClassName(this.item_text,famundoTree.prototype.item_text_class);Element.addClassName(this.item_text,'cursor_hand');Event.observe(this.item_text,'mousedown',this.eventClickText);if(text_def['url'])
{var a=document.createElement('a');(text_def['url'])?a.setAttribute('href',text_def['url']):'';(text_def['target'])?a.setAttribute('target',text_def['target']):'';a.appendChild(text);this.item_text.appendChild(a);}
else
{this.item_text.appendChild(text);}
if(text_def['js'])
{(a)?eval("famundoUtils.addEvent(a,'click',"+text_def['js']+",false)"):eval("famundoUtils.addEvent(this.item_text,'click',"+text_def['js']+",false)");}
this.item_element.appendChild(this.item_text);},_createIcon:function()
{this.item_icon=document.createElement('div');this.item_icon.setAttribute('id',this.item_element.getAttribute('id')+'_'+famundoTree.prototype.item_icon_class);Element.addClassName(this.item_icon,famundoTree.prototype.item_icon_class);Event.observe(this.item_icon,'click',this.eventClickIcon);this.item_element.appendChild(this.item_icon);if(this.item_def['attributes']['icon_class'])
Element.addClassName(this.item_icon,this.item_def['attributes']['icon_class']);},_createCheckbox:function()
{this.checkbox=document.createElement('div');this.item_element.appendChild(this.checkbox);Element.addClassName(this.checkbox,famundoTree.prototype.item_checkbox_class);Element.addClassName(this.checkbox,'float_left');Element.addClassName(this.checkbox,'famundoTreeUncheckedItem');this.checkbox.id=this.item_element.id+'_'+famundoTree.prototype.item_checkbox_class;var me=this;Event.observe(this.checkbox,'click',function(event){if(me.item_def['settings']&&me.item_def['settings']['onCheckboxClick'])
{me.item_def['settings']['onCheckboxClick'](me.item_element);}
famundoTree.prototype.onClickCheckbox(event);});},_makeSettings:function(settings_def)
{for(var prop in settings_def)
{this.item_element.setAttribute('famundoTree_'+prop,settings_def[prop]);}},setParentNode:function(parentNode)
{$(parentNode).appendChild(this.item_element);famundoTree.prototype._setItemLevel(this.item_element);Element.addClassName(this.item_icon,famundoTree.prototype.getItemOpenIconClass(this.item_element));},createExtraElements:function(elems)
{for(var i=0;i<elems.length;i++)
{this.addExtraElement(elems[i]);}},addExtraElement:function(options)
{if(options['src'])
{var elem=new Image();elem.src=options['src'];}
else
var elem=document.createElement('div');if(options['id'])
elem.id=options['id'];if(options['class'])
Element.addClassName(elem,options['class']);var position=options['position']||'after_text';if(options['tooltip_text'])
elem.title=options['tooltip_text'];switch(position)
{case'after_text':this.item_element.appendChild(elem);break;case'before_text':this.item_element.insertBefore(elem,this.item_text);break;}}}
Object.extend(Droppables,{getDroppableFamundo:function(elem)
{var drop=false;this.drops.each(function(d)
{if(d.element==elem)
{drop=d;}});return drop;}});var famundoTreeDraggable=Class.create();Object.extend(famundoTreeDraggable.prototype,Draggable.prototype);Object.extend(famundoTreeDraggable.prototype,{initDrag:function(event){if(Event.isLeftClick(event)){var src=Event.element(event);if(src.tagName&&(src.tagName=='INPUT'||src.tagName=='SELECT'||src.tagName=='BUTTON'||src.tagName=='TEXTAREA'))return;if(this.element._revert){this.element._revert.cancel();this.element._revert=null;}
var pointer=[Event.pointerX(event),Event.pointerY(event)];var pos=Position.page(this.element);var page_scroll=[document.documentElement.scrollLeft,document.documentElement.scrollTop];this.offset=[0,1].map(function(i){return(pointer[i]-pos[i]-page_scroll[i])});Draggables.activate(this);Event.stop(event);}},startDrag:function(event){this.dragging=true;if(this.options.zindex){this.originalZ=parseInt(Element.getStyle(this.element,'z-index')||0);this.element.style.zIndex=this.options.zindex;}
if(this.options.ghosting){this._clone=this.element.cloneNode(true);var clone_id=famundoUtils.generateId();this._clone.setAttribute('id',clone_id);Position.absolutize(this.element);this.element.parentNode.insertBefore(this._clone,this.element);this.element.setAttribute('clone_id',clone_id);if(!this.element.parentNode.id)
this.element.parentNode.id=famundoUtils.generateId();this.element.setAttribute('parent_id',this.element.parentNode.id);document.body.appendChild(this.element);}
Draggables.notify('onStart',this,event);if(this.options.starteffect)this.options.starteffect(this.element);},updateDrag:function(event,pointer){if(!this.dragging)this.startDrag(event);Position.prepare();Droppables.show(pointer,this.element,event);Draggables.notify('onDrag',this,event);this.draw(pointer);if(this.options.change)this.options.change(this);if(navigator.appVersion.indexOf('AppleWebKit')>0)window.scrollBy(0,0);Event.stop(event);},finishDrag:function(event,success){this.dragging=false;if(this.options.ghosting){Position.relativize(this.element);$(this.element.getAttribute('parent_id')).insertBefore(this.element,this._clone);Element.remove(this._clone);this._clone=null;}
if(success)Droppables.fire(event,this.element);Draggables.notify('onEnd',this,event);var revert=this.options.revert;if(revert&&typeof revert=='function')revert=revert(this.element);var d=this.currentDelta();if(revert&&this.options.reverteffect){this.options.reverteffect(this.element,d[1]-this.delta[1],d[0]-this.delta[0]);}else{this.delta=d;}
if(this.options.zindex)
this.element.style.zIndex=this.originalZ;if(this.options.endeffect)
this.options.endeffect(this.element);Draggables.deactivate(this);Droppables.reset();},show:function(point,element)
{if(!this.drops.length)
{return;}
if(this.last_active)
{this.deactivate(this.last_active);}
this.drops.each(function(drop)
{if(Droppables.isAffected(point,element,drop))
{if(drop.onHover)
{drop.onHover(element,drop.element,Position.overlap(drop.overlap,drop.element));}
if(drop.greedy)
{Droppables.activate(drop);}
throw $break;}});}});var doing_attach_docs=false;function onClickAttachDocument(item)
{id=item.getAttribute('id').substr(17);value=famundoTree.prototype.getItemText(item).innerHTML;check=famundoTree.prototype.isUncheckedItem(item)
uncheck=famundoTree.prototype.isCheckedItem(item)
updateAttachedDocs(check,id,value);}
function createAttachTree(id)
{var container_id=id;var root={'text':{'value':'root'},'attributes':{'id':container_id+'_root','class':'attach_file_tree_root'},'settings':{'open_icon_class':'arrow_down','close_icon_class':'arrow_right','draggable':'false','drop_accept_class':"file_item, photo_item"}}
doing_attach_docs=true;tree=new famundoTree($(container_id),root);}
function loadAttachFileTree(e,tree_prefix)
{var elem=(e?Event.element(e):$('document_user_id'));var user=elem.value;root_item=tree_prefix+'_root';famundoTree.prototype.deleteAllItems($(root_item));var params=user+'?tree_prefix='+tree_prefix
new Ajax.Request('/library/files/load_user_files/'+params,{method:'get',asynchronous:true,evalScripts:true});}
function loadAttachedDocs(names_id,docs_id)
{var doc_names=$(names_id).value;var doc_ids=$(docs_id).value;doc_names=doc_names.match(/.+/g);doc_ids=doc_ids.match(/\d+/g);if(doc_ids&&doc_ids.length>0)
{for(var i=0;i<doc_ids.length;i++)
updateAttachedDocs(true,doc_ids[i],doc_names[i]);setSelectionFromAttachedDocs('attach_file_tree_root');}}
function updateAttachedDocs(check,id,value)
{var ulElem=$('attached_docs');var found=false;var nodeFound=null;for(var i=0;i<ulElem.childNodes.length;i++)
{found=(ulElem.childNodes[i].childNodes[0].id.substr(13)==id);if(found)
{nodeFound=ulElem.childNodes[i];break;}}
if((check&&found)||(!check&&!found))
{return false;}
if(check)
{var li=document.createElement('li');Element.addClassName(li,'li_attached_doc');Element.addClassName(li,'clear_both');var li_id='attached_doc_'+id;li.innerHTML="<div id='"+li_id+"' class='visibility_hidden attached_doc_delete_icon cursor_hand trashcan'></div>"+value;ulElem.appendChild(li);Event.observe($(li_id),'click',function(){Element.remove(li);if($('attach_file_tree_'+id))
famundoTree.prototype.uncheckItem('attach_file_tree_'+id);});Event.observe(li,'mouseover',function(){Element.removeClassName($(li_id),'visibility_hidden');});Event.observe(li,'mouseout',function(){Element.addClassName($(li_id),'visibility_hidden');});}
else if(nodeFound)
{ulElem.removeChild(ulElem.childNodes[i]);}
return true;}
function setSelectionFromAttachedDocs(tree_root)
{var ulElem=$('attached_docs');for(var i=0;i<ulElem.childNodes.length;i++)
{var id=ulElem.childNodes[i].childNodes[0].id.substr(13);var elem=$('attach_file_tree_'+id);if(elem)
{var item=famundoTree.prototype.getItem(elem);famundoTree.prototype.checkItem(item);}}
return true;}
function saveAttachedDocs(update_link_id,f)
{var ids_a=[];var names='';var ulElem=$('attached_docs');for(var i=0;i<ulElem.childNodes.length;i++)
{ids_a.push(ulElem.childNodes[i].childNodes[0].id.substr(13));names+=ulElem.childNodes[i].childNodes[1].data+"\n";}
ids=ids_a.join("\n");var hidden_names=$('hidden_attached_doc_names_'+update_link_id);var hidden_ids=$('hidden_attached_doc_ids_'+update_link_id);hidden_names.value=names;hidden_ids.value=ids;var updateElem=$(update_link_id);var value=(ulElem.childNodes.length>0?ulElem.childNodes.length+' documents attached':'Attach documents');updateElem.innerHTML=value;if(f)
f(ids_a.join(","));}
function reset_attach_docs_flag()
{doing_attach_docs=false;}