-var frames={horde_main:true},KronolithCore={view:"",remove_gc:[],debug:function(A,B){if(!this.is_logout&&Kronolith.conf.debug){alert(A+": "+(B instanceof Error?B.name+"-"+B.message:Object.inspect(B)))}},setTitle:function(A){document.title=Kronolith.conf.name+" :: "+A},showNotifications:function(A){if(!A.size()||this.is_logout){return}A.find(function(B){switch(B.type){case"kronolith.timeout":this.logout(Kronolith.conf.timeout_url);return true;case"horde.error":case"horde.message":case"horde.success":case"horde.warning":case"kronolith.request":case"kronolith.sticky":var E,D,C,G=$("alerts"),H=new Element("DIV",{className:B.type.replace(".","-")}),F=B.message;if(!G){G=new Element("DIV",{id:"alerts"});$(document.body).insert(G)}if($w("kronolith.request kronolith.sticky").indexOf(B.type)==-1){F=F.unescapeHTML().unescapeHTML()}G.insert(H.update(F));if(Kronolith.conf.is_ie6){E=new Element("DIV",{id:"ie6alertsfix"}).clonePosition(H,{setLeft:false,setTop:false});E.insert(H.remove());G.insert(E)}if($w("horde.error kronolith.request kronolith.sticky").indexOf(B.type)==-1){this.alertsFade.bind(this,H).delay(B.type=="horde.warning"?10:3)}if(B.type=="kronolith.request"){this.alertrequest=H}if(C=$("alertslog")){switch(B.type){case"horde.error":D=Kronolith.text.alog_error;break;case"horde.message":D=Kronolith.text.alog_message;break;case"horde.success":D=Kronolith.text.alog_success;break;case"horde.warning":D=Kronolith.text.alog_warning;break}if(D){C=C.down("DIV UL");if(C.down().hasClassName("noalerts")){C.down().remove()}C.insert(new Element("LI").insert(new Element("P",{className:"label"}).insert(D)).insert(new Element("P",{className:"indent"}).insert(F).insert(new Element("SPAN",{className:"alertdate"}).insert("["+(new Date).toLocaleString()+"]"))))}}}},this)},alertsFade:function(A){if(A){Effect.Fade(A,{duration:1.5,afterFinish:this.removeAlert.bind(this)})}},toggleAlertsLog:function(){var A=$("alertsloglink").down("A"),C=$("alertslog").down("DIV"),B={duration:0.5};if(C.visible()){Effect.BlindUp(C,B);A.update(Kronolith.text.showalog)}else{Effect.BlindDown(C,B);A.update(Kronolith.text.hidealog)}},removeAlert:function(C){try{var A=$(C.element),B=A.up();A.remove();if(!B.childElements().size()&&B.readAttribute("id")=="ie6alertsfix"){B.remove()}}catch(D){this.debug("removeAlert",D)}},logout:function(A){this.is_logout=true;this.redirect(A||(Kronolith.conf.URI_IMP+"/LogOut"))},redirect:function(A){A=this.addSID(A);if(parent.frames.horde_main){parent.location=A}else{window.location=A}},addMouseEvents:function(A){this.DMenu.addElement(A.id,"ctx_"+A.type,A)},removeMouseEvents:function(A){this.DMenu.removeElement($(A).identify());this.addGC(A)},addPopdown:function(B,A){var C=$(B);C.insert({after:$($("popdown_img").cloneNode(false)).writeAttribute("id",B+"_img").show()});this.addMouseEvents({id:B+"_img",type:A,offset:C.up(),left:true})},addGC:function(A){this.remove_gc=this.remove_gc.concat(A)},addSID:function(A){if(!Kronolith.conf.SESSION_ID){return A}return this.addURLParam(A,Kronolith.conf.SESSION_ID.toQueryParams())},addURLParam:function(A,C){var B=A.indexOf("?");if(B!=-1){C=$H(A.toQueryParams()).merge(C).toObject();A=A.substring(0,B)}return A+"?"+Object.toQueryString(C)},go:function(A,D){var G,C,E;if(A.startsWith("compose:")){return}var B=A.split(":");var F=B.shift();switch(F){case"day":case"week":case"month":case"year":case"agenda":case"tasks":if(this.view==F){break}var H=F.capitalize();this._addHistory(A);["Day","Week","Month","Year","Tasks","Agenda"].each(function(I){$("kronolithNav"+I).removeClassName("on")});if(this.view){$("kronolithView"+this.view.capitalize()).fade()}if($("kronolithView"+H)){$("kronolithView"+H).appear()}$("kronolithNav"+H).addClassName("on");switch(F){case"day":case"week":case"month":case"year":$("kronolithMinical").select("td").each(function(I){I.removeClassName("kronolithSelected");if(B.length){if(!I.hasClassName("kronolithMinicalWeek")&&(F=="month"||(F=="day"&&I.readAttribute("date")==B[0]))){I.addClassName("kronolithSelected")}}});if(F=="week"&&B.length){$("kronolithMinical").select("td").each(function(J){if(J.readAttribute("date")==B[0]){var I=J.parentNode.childNodes;for(i=0;i<I.length;i++){if(I.item(i)!=J&&I.item(i).tagName=="TD"){$(I.item(i)).addClassName("kronolithSelected")}}throw $break}})}$("kronolithBody").select("div.kronolithEvent").each(function(I){I.observe("mouseover",I.addClassName.curry("kronolithSelected"));I.observe("mouseout",I.removeClassName.curry("kronolithSelected"))});break}this.view=F;break;case"options":this._addHistory(F);this.setTitle(Kronolith.text.prefs);this.iframeContent(F,Kronolith.conf.prefs_url);break}},_addHistory:function(B,A){if(Horde.dhtmlHistory.getCurrentLocation()!=B){Horde.dhtmlHistory.add(B,A)}},iframeContent:function(B,D){if(B===null){B=D}var A=$("dimpmain_portal"),C;if(!A){this.showNotifications([{type:"horde.error",message:"Bad portal!"}]);return}C=new Element("IFRAME",{id:"iframe"+B,className:"iframe",frameBorder:0,src:D});this._resizeIE6Iframe(C);if(B=="options"){C.observe("load",function(){$("iframeoptions").contentWindow.document.getElementById("menu").style.display="none"})}A.insert(C)},_onMenuShow:function(A){var E,C,B,D;switch(A.ctx){case"ctx_folder":E=$("ctx_folder_create","ctx_folder_rename","ctx_folder_delete");C=this.DMenu.element();if(C.readAttribute("mbox")=="INBOX"){E.invoke("hide")}else{if(Kronolith.conf.fixed_folders.indexOf(C.readAttribute("mbox"))!=-1){E.shift();E.invoke("hide")}else{E.invoke("show")}}if(C.hasAttribute("u")){$("ctx_folder_poll").hide();$("ctx_folder_nopoll").show()}else{$("ctx_folder_poll").show();$("ctx_folder_nopoll").hide()}break;case"ctx_message":[$("ctx_message_reply_list")].invoke(this.viewport.createSelection("domid",A.id).get("dataob").first().listmsg?"show":"hide");break;case"ctx_reply":D=this.viewport.getSelected();if(D.size()==1){B=D.get("dataob").first()}[$("ctx_reply_reply_list")].invoke(B&&B.listmsg?"show":"hide");break;case"ctx_otheractions":$("oa_seen","oa_unseen","oa_flagged","oa_clear","oa_sep1","oa_blacklist","oa_whitelist","oa_sep2").compact().invoke(this.viewport.getSelected().size()?"show":"hide");break}return true},_onResize:function(B,A){if(this.viewport){this.viewport.onResize(B,A)}this._resizeIE6()},updateTitle:function(){var B,A,C;if(this.viewport.isFiltering()){A=Kronolith.text.search+" :: "+this.viewport.getMetaData("total_rows")+" "+Kronolith.text.resfound}else{B=$(this.getFolderId(this.folder));if(B){C=B.readAttribute("u");A=B.readAttribute("l");if(C>0){A+=" ("+C+")"}}else{A=this.viewport.getMetaData("label")}}this.setTitle(A)},_keydownHandler:function(B){var A=B.keyCode||B.charCode;switch(A){case Event.KEY_ESC:$("kronolithEventForm").fade({duration:0.5});break}},_keyupHandler:function(A){},_clickHandler:function(D,C){if(D.isRightClick()){return}var A=D.element(),F=D.element(),E,B;if(this.alertrequest){this.alertsFade(this.alertrequest);this.alertrequest=null}while(Object.isElement(A)){E=A.readAttribute("id");switch(E){case"kronolithLogo":this.go("portal");D.stop();return;case"id_fullday":$("kronolithEventForm").select(".edit_at").each(Element.toggle);D.stop();return;case"kronolithNewEvent":this.editEvent();D.stop();return;case"kronolithEventActions":if(F.match("input.button")){$("kronolithEventForm").fade()}D.stop();return;case"kronolithNavDay":case"kronolithNavWeek":case"kronolithNavMonth":case"kronolithNavYear":case"kronolithNavTasks":case"kronolithNavAgenda":this.go(E.substring(12).toLowerCase());D.stop();return;case"kronolithMenu":if(F.match("div.kronolithCalendars div")){this.toggleCalendar(F)}D.stop();return;case"kronolithMinicalDate":this.go("month:"+$("kronolithMinicalDate").readAttribute("date"));D.stop();return;case"kronolithMinical":var B=F;if(B.tagName!="td"){B.up("td")}if(B){if(B.hasClassName("kronolithMinicalWeek")){this.go("week:"+B.readAttribute("date"))}else{if(!B.hasClassName("empty")){this.go("day:"+B.readAttribute("date"))}}}D.stop();return;case"kronolithViewMonth":if(F.hasClassName("kronolithFirstCol")){this.go("week")}else{if(F.hasClassName("kronolithDay")){this.go("day")}}D.stop();return;case"kronolithBody":var B=F;if(!B.match("div.kronolithEvent")){B=B.up("div.kronolithEvent")}if(B){$("kronolithEventForm").appear()}D.stop();return;case"alertsloglink":this.toggleAlertsLog();break;case"alerts":this.alertsFade(A);break}A=A.up()}},_mouseHandler:function(B,A){},_closeRedBox:function(){RedBox.close()},_onLoad:function(){var A,B=this.clickObserveHandler;if(Horde.dhtmlHistory.initialize()){Horde.dhtmlHistory.addListener(this.go.bind(this))}if(!Horde.dhtmlHistory.getCurrentLocation()){this.go(Kronolith.conf.login_view)}$("kronolithEventForm").select("div.kronolithTags span").each(function(C){$("id_tags").value=$F("id_tags")+C.getText()+", "});$("kronolithMenu").select("div.kronolithCalendars div").each(function(C){C.observe("mouseover",C.addClassName.curry("kronolithCalOver"));C.observe("mouseout",C.removeClassName.curry("kronolithCalOver"))});this._resizeIE6()},_resizeIE6:function(){var C=(($("kronolithViewMonth").getWidth()-20-2-2-16)/7)-2-2;$("kronolithViewMonth").select(".kronolithCol").invoke("setStyle",{width:C+"px"});var A=(($("kronolithViewMonth").getHeight()-25)/6)-2-2;$("kronolithViewMonth").select(".kronolithViewBody .kronolithCol").invoke("setStyle",{height:A+"px"});$("kronolithViewMonth").select(".kronolithViewBody .kronolithFirstCol").invoke("setStyle",{height:A+"px"});$("kronolithViewWeek").select(".kronolithCol").invoke("setStyle",{width:(C-1)+"px"});var B=$("kronolithViewDay").getWidth()-20-2-2-16-3;var C=((B+7)/7)-1;$("kronolithViewDay").select(".kronolithViewHead .kronolithCol").invoke("setStyle",{width:B+"px"});$("kronolithViewDay").select(".kronolithViewBody .kronolithCol").invoke("setStyle",{width:C+"px"});$("kronolithViewDay").select(".kronolithViewBody .kronolithAllDay .kronolithCol").invoke("setStyle",{width:B+"px"})},_resizeIE6Iframe:function(A){if(Kronolith.conf.is_ie6){A.setStyle({width:$("kronolithmain").getStyle("width"),height:(document.viewport.getHeight()-20)+"px"})}},editEvent:function(){$("kronolithEventForm").appear({duration:0.5})},toggleCalendar:function(A){if(A.hasClassName("on")){A.removeClassName("on")}else{A.addClassName("on")}}};if(typeof ContextSensitive!="undefined"){KronolithCore.DMenu=new ContextSensitive()}document.observe("dom:loaded",function(){try{if(parent.opener&&parent.opener.location.host==window.location.host&&parent.opener.KronolithCore){Kronolith.baseWindow=parent.opener.Kronolith.baseWindow||parent.opener}}catch(A){}new PeriodicalExecuter(function(){if(KronolithCore.remove_gc.size()){try{$A(KronolithCore.remove_gc.splice(0,75)).compact().invoke("stopObserving")}catch(B){KronolithCore.debug("remove_gc[].stopObserving",B)}}},10);KronolithCore._onLoad();document.observe("keydown",KronolithCore._keydownHandler.bindAsEventListener(KronolithCore));document.observe("keyup",KronolithCore._keyupHandler.bindAsEventListener(KronolithCore));document.observe("click",KronolithCore._clickHandler.bindAsEventListener(KronolithCore));document.observe("dblclick",KronolithCore._clickHandler.bindAsEventListener(KronolithCore,true));document.observe("mouseover",KronolithCore._mouseHandler.bindAsEventListener(KronolithCore,"over"));Event.observe(window,"resize",KronolithCore._onResize.bind(KronolithCore));if(Kronolith.conf.is_ie6){document.observe("selectstart",Event.stop);$("foobar").compact().invoke("select","LI").flatten().compact().each(function(B){B.observe("mouseover",B.addClassName.curry("over")).observe("mouseout",B.removeClassName.curry("over"))})}});Event.observe(window,"load",function(){KronolithCore.window_load=true});Element.addMethods({setText:function(B,C){var A=0;$A(B.childNodes).each(function(D){if(D.nodeType==3){if(A++){Element.remove(D)}else{D.nodeValue=C}}});if(!A){$(B).insert(C)}},getText:function(B,A){var C="";$A(B.childNodes).each(function(D){if(D.nodeType==3){C+=D.nodeValue}else{if(A&&D.hasChildNodes()){C+=$(D).getText(true)}}});return C}});Object.extend(Array.prototype,{numericSort:function(){return this.sort(function(B,A){if(B>A){return 1}else{if(B<A){return-1}}return 0})}});Object.extend(String.prototype,{evalScripts:function(){var re=/function\s+([^\s(]+)/g;this.extractScripts().each(function(s){var func;eval(s);while(func=re.exec(s)){window[func[1]]=eval(func[1])}})}});
\ No newline at end of file
+var frames={horde_main:true},KronolithCore={view:"",remove_gc:[],date:new Date(),debug:function(A,B){if(!this.is_logout&&Kronolith.conf.debug){alert(A+": "+(B instanceof Error?B.name+"-"+B.message:Object.inspect(B)))}},setTitle:function(A){document.title=Kronolith.conf.name+" :: "+A},showNotifications:function(A){if(!A.size()||this.is_logout){return}A.find(function(B){switch(B.type){case"kronolith.timeout":this.logout(Kronolith.conf.timeout_url);return true;case"horde.error":case"horde.message":case"horde.success":case"horde.warning":case"kronolith.request":case"kronolith.sticky":var E,D,C,G=$("alerts"),H=new Element("DIV",{className:B.type.replace(".","-")}),F=B.message;if(!G){G=new Element("DIV",{id:"alerts"});$(document.body).insert(G)}if($w("kronolith.request kronolith.sticky").indexOf(B.type)==-1){F=F.unescapeHTML().unescapeHTML()}G.insert(H.update(F));if(Kronolith.conf.is_ie6){E=new Element("DIV",{id:"ie6alertsfix"}).clonePosition(H,{setLeft:false,setTop:false});E.insert(H.remove());G.insert(E)}if($w("horde.error kronolith.request kronolith.sticky").indexOf(B.type)==-1){this.alertsFade.bind(this,H).delay(B.type=="horde.warning"?10:3)}if(B.type=="kronolith.request"){this.alertrequest=H}if(C=$("alertslog")){switch(B.type){case"horde.error":D=Kronolith.text.alog_error;break;case"horde.message":D=Kronolith.text.alog_message;break;case"horde.success":D=Kronolith.text.alog_success;break;case"horde.warning":D=Kronolith.text.alog_warning;break}if(D){C=C.down("DIV UL");if(C.down().hasClassName("noalerts")){C.down().remove()}C.insert(new Element("LI").insert(new Element("P",{className:"label"}).insert(D)).insert(new Element("P",{className:"indent"}).insert(F).insert(new Element("SPAN",{className:"alertdate"}).insert("["+(new Date).toLocaleString()+"]"))))}}}},this)},alertsFade:function(A){if(A){Effect.Fade(A,{duration:1.5,afterFinish:this.removeAlert.bind(this)})}},toggleAlertsLog:function(){var A=$("alertsloglink").down("A"),C=$("alertslog").down("DIV"),B={duration:0.5};if(C.visible()){Effect.BlindUp(C,B);A.update(Kronolith.text.showalog)}else{Effect.BlindDown(C,B);A.update(Kronolith.text.hidealog)}},removeAlert:function(C){try{var A=$(C.element),B=A.up();A.remove();if(!B.childElements().size()&&B.readAttribute("id")=="ie6alertsfix"){B.remove()}}catch(D){this.debug("removeAlert",D)}},logout:function(A){this.is_logout=true;this.redirect(A||(Kronolith.conf.URI_IMP+"/LogOut"))},redirect:function(A){A=this.addSID(A);if(parent.frames.horde_main){parent.location=A}else{window.location=A}},addMouseEvents:function(A){this.DMenu.addElement(A.id,"ctx_"+A.type,A)},removeMouseEvents:function(A){this.DMenu.removeElement($(A).identify());this.addGC(A)},addPopdown:function(B,A){var C=$(B);C.insert({after:$($("popdown_img").cloneNode(false)).writeAttribute("id",B+"_img").show()});this.addMouseEvents({id:B+"_img",type:A,offset:C.up(),left:true})},addGC:function(A){this.remove_gc=this.remove_gc.concat(A)},addSID:function(A){if(!Kronolith.conf.SESSION_ID){return A}return this.addURLParam(A,Kronolith.conf.SESSION_ID.toQueryParams())},addURLParam:function(A,C){var B=A.indexOf("?");if(B!=-1){C=$H(A.toQueryParams()).merge(C).toObject();A=A.substring(0,B)}return A+"?"+Object.toQueryString(C)},go:function(A,D){var B=A.split(":");var E=B.shift();switch(E){case"day":case"week":case"month":case"year":case"agenda":case"tasks":if(this.view==E){break}var F=E.capitalize();["Day","Week","Month","Year","Tasks","Agenda"].each(function(G){$("kronolithNav"+G).removeClassName("on")});if(this.view){$("kronolithView"+this.view.capitalize()).fade()}if($("kronolithView"+F)){$("kronolithView"+F).appear()}$("kronolithNav"+F).addClassName("on");switch(E){case"day":case"week":case"month":case"year":var C=B.shift();if(C){C=this.parseDate(C)}else{C=this.date}this.updateMinical(C,E);$("kronolithBody").select("div.kronolithEvent").each(function(G){G.observe("mouseover",G.addClassName.curry("kronolithSelected"));G.observe("mouseout",G.removeClassName.curry("kronolithSelected"))});this.date=C;break}this._addHistory(A);this.view=E;break;case"options":this._addHistory(E);this.setTitle(Kronolith.text.prefs);this.iframeContent(E,Kronolith.conf.prefs_url);break}},updateMinical:function(B,G){var D=$("kronolithMinical").down("tbody"),I=B.clone(),E=B.clone(),J,A,H,C,F;I.setDate(1);if(I.getDay()!=Kronolith.conf.week_start){I.moveToDayOfWeek(Kronolith.conf.week_start,-1)}E.moveToLastDayOfMonth();H=Kronolith.conf.week_start+6;if(H>6){H-=7}if(E.getDay()!=H){E.moveToDayOfWeek(H,1)}$("kronolithMinicalDate").setText(B.toString("MMMM yyyy")).setAttribute("date",B.toString("yyyyMMdd"));D.childElements().each(Element.remove);while(I.compareTo(E)<1){if(I.getDay()==Kronolith.conf.week_start){F=new Element("tr");D.appendChild(F);C=new Element("td",{"class":"kronolithMinicalWeek",date:I.toString("yyyyMMdd")});C.setText(I.getWeek());F.appendChild(C);J=I.clone();A=I.clone();A.add(6).days()}C=new Element("td",{date:I.toString("yyyyMMdd")});if(I.getMonth()!=B.getMonth()){C.addClassName("kronolithMinicalEmpty")}if(G&&(G=="month"||(G=="week"&&B.between(J,A))||(G=="day"&&B.compareTo(I)==0))){C.addClassName("kronolithSelected")}C.setText(I.getDate());F.appendChild(C);I.next().day()}},parseDate:function(A){return new Date(A.substr(0,4),A.substr(4,2)-1,A.substr(6,2))},_addHistory:function(B,A){if(Horde.dhtmlHistory.getCurrentLocation()!=B){Horde.dhtmlHistory.add(B,A)}},iframeContent:function(B,D){if(B===null){B=D}var A=$("dimpmain_portal"),C;if(!A){this.showNotifications([{type:"horde.error",message:"Bad portal!"}]);return}C=new Element("IFRAME",{id:"iframe"+B,className:"iframe",frameBorder:0,src:D});this._resizeIE6Iframe(C);if(B=="options"){C.observe("load",function(){$("iframeoptions").contentWindow.document.getElementById("menu").style.display="none"})}A.insert(C)},_onMenuShow:function(A){var E,C,B,D;switch(A.ctx){case"ctx_folder":E=$("ctx_folder_create","ctx_folder_rename","ctx_folder_delete");C=this.DMenu.element();if(C.readAttribute("mbox")=="INBOX"){E.invoke("hide")}else{if(Kronolith.conf.fixed_folders.indexOf(C.readAttribute("mbox"))!=-1){E.shift();E.invoke("hide")}else{E.invoke("show")}}if(C.hasAttribute("u")){$("ctx_folder_poll").hide();$("ctx_folder_nopoll").show()}else{$("ctx_folder_poll").show();$("ctx_folder_nopoll").hide()}break;case"ctx_message":[$("ctx_message_reply_list")].invoke(this.viewport.createSelection("domid",A.id).get("dataob").first().listmsg?"show":"hide");break;case"ctx_reply":D=this.viewport.getSelected();if(D.size()==1){B=D.get("dataob").first()}[$("ctx_reply_reply_list")].invoke(B&&B.listmsg?"show":"hide");break;case"ctx_otheractions":$("oa_seen","oa_unseen","oa_flagged","oa_clear","oa_sep1","oa_blacklist","oa_whitelist","oa_sep2").compact().invoke(this.viewport.getSelected().size()?"show":"hide");break}return true},_onResize:function(B,A){if(this.viewport){this.viewport.onResize(B,A)}this._resizeIE6()},updateTitle:function(){var B,A,C;if(this.viewport.isFiltering()){A=Kronolith.text.search+" :: "+this.viewport.getMetaData("total_rows")+" "+Kronolith.text.resfound}else{B=$(this.getFolderId(this.folder));if(B){C=B.readAttribute("u");A=B.readAttribute("l");if(C>0){A+=" ("+C+")"}}else{A=this.viewport.getMetaData("label")}}this.setTitle(A)},_keydownHandler:function(B){var A=B.keyCode||B.charCode;switch(A){case Event.KEY_ESC:$("kronolithEventForm").fade({duration:0.5});break}},_keyupHandler:function(A){},_clickHandler:function(E,D){if(E.isRightClick()){return}var B=E.element(),G=E.element(),F,C;if(this.alertrequest){this.alertsFade(this.alertrequest);this.alertrequest=null}while(Object.isElement(B)){F=B.readAttribute("id");switch(F){case"kronolithLogo":this.go("portal");E.stop();return;case"id_fullday":$("kronolithEventForm").select(".edit_at").each(Element.toggle);E.stop();return;case"kronolithNewEvent":this.editEvent();E.stop();return;case"kronolithEventActions":if(G.match("input.button")){$("kronolithEventForm").fade()}E.stop();return;case"kronolithNavDay":case"kronolithNavWeek":case"kronolithNavMonth":case"kronolithNavYear":case"kronolithNavTasks":case"kronolithNavAgenda":this.go(F.substring(12).toLowerCase());E.stop();return;case"kronolithMenu":if(G.match("div.kronolithCalendars div")){this.toggleCalendar(G)}E.stop();return;case"kronolithMinicalDate":this.go("month:"+G.readAttribute("date"));E.stop();return;case"kronolithMinical":if(G.id=="kronolithMinicalPrev"){var A=this.parseDate($("kronolithMinicalDate").readAttribute("date"));A.previous().month();this.updateMinical(A);E.stop();return}if(G.id=="kronolithMinicalNext"){var A=this.parseDate($("kronolithMinicalDate").readAttribute("date"));A.next().month();this.updateMinical(A);E.stop();return}var C=G;if(C.tagName!="td"){C.up("td")}if(C&&C.readAttribute("date")){if(C.hasClassName("kronolithMinicalWeek")){this.go("week:"+C.readAttribute("date"))}else{if(!C.hasClassName("empty")){this.go("day:"+C.readAttribute("date"))}}}E.stop();return;case"kronolithViewMonth":if(G.hasClassName("kronolithFirstCol")){this.go("week")}else{if(G.hasClassName("kronolithDay")){this.go("day")}}E.stop();return;case"kronolithBody":var C=G;if(!C.match("div.kronolithEvent")){C=C.up("div.kronolithEvent")}if(C){$("kronolithEventForm").appear()}E.stop();return;case"alertsloglink":this.toggleAlertsLog();break;case"alerts":this.alertsFade(B);break}B=B.up()}},_mouseHandler:function(B,A){},_closeRedBox:function(){RedBox.close()},onLoad:function(){if(Horde.dhtmlHistory.initialize()){Horde.dhtmlHistory.addListener(this.go.bind(this))}if(!Horde.dhtmlHistory.getCurrentLocation()){this.go(Kronolith.conf.login_view)}$("kronolithEventForm").select("div.kronolithTags span").each(function(A){$("id_tags").value=$F("id_tags")+A.getText()+", "});$("kronolithMenu").select("div.kronolithCalendars div").each(function(A){A.observe("mouseover",A.addClassName.curry("kronolithCalOver"));A.observe("mouseout",A.removeClassName.curry("kronolithCalOver"))});this._resizeIE6()},_resizeIE6:function(){var C=(($("kronolithViewMonth").getWidth()-20-2-2-16)/7)-2-2;$("kronolithViewMonth").select(".kronolithCol").invoke("setStyle",{width:C+"px"});var A=(($("kronolithViewMonth").getHeight()-25)/6)-2-2;$("kronolithViewMonth").select(".kronolithViewBody .kronolithCol").invoke("setStyle",{height:A+"px"});$("kronolithViewMonth").select(".kronolithViewBody .kronolithFirstCol").invoke("setStyle",{height:A+"px"});$("kronolithViewWeek").select(".kronolithCol").invoke("setStyle",{width:(C-1)+"px"});var B=$("kronolithViewDay").getWidth()-20-2-2-16-3;var C=((B+7)/7)-1;$("kronolithViewDay").select(".kronolithViewHead .kronolithCol").invoke("setStyle",{width:B+"px"});$("kronolithViewDay").select(".kronolithViewBody .kronolithCol").invoke("setStyle",{width:C+"px"});$("kronolithViewDay").select(".kronolithViewBody .kronolithAllDay .kronolithCol").invoke("setStyle",{width:B+"px"})},_resizeIE6Iframe:function(A){if(Kronolith.conf.is_ie6){A.setStyle({width:$("kronolithmain").getStyle("width"),height:(document.viewport.getHeight()-20)+"px"})}},editEvent:function(){$("kronolithEventForm").appear({duration:0.5})},toggleCalendar:function(A){if(A.hasClassName("on")){A.removeClassName("on")}else{A.addClassName("on")}}};if(typeof ContextSensitive!="undefined"){KronolithCore.DMenu=new ContextSensitive()}document.observe("dom:loaded",function(){try{if(parent.opener&&parent.opener.location.host==window.location.host&&parent.opener.KronolithCore){Kronolith.baseWindow=parent.opener.Kronolith.baseWindow||parent.opener}}catch(A){}new PeriodicalExecuter(function(){if(KronolithCore.remove_gc.size()){try{$A(KronolithCore.remove_gc.splice(0,75)).compact().invoke("stopObserving")}catch(B){KronolithCore.debug("remove_gc[].stopObserving",B)}}},10);KronolithCore.onLoad();document.observe("keydown",KronolithCore._keydownHandler.bindAsEventListener(KronolithCore));document.observe("keyup",KronolithCore._keyupHandler.bindAsEventListener(KronolithCore));document.observe("click",KronolithCore._clickHandler.bindAsEventListener(KronolithCore));document.observe("dblclick",KronolithCore._clickHandler.bindAsEventListener(KronolithCore,true));document.observe("mouseover",KronolithCore._mouseHandler.bindAsEventListener(KronolithCore,"over"));Event.observe(window,"resize",KronolithCore._onResize.bind(KronolithCore));if(Kronolith.conf.is_ie6){document.observe("selectstart",Event.stop);$("foobar").compact().invoke("select","LI").flatten().compact().each(function(B){B.observe("mouseover",B.addClassName.curry("over")).observe("mouseout",B.removeClassName.curry("over"))})}});Event.observe(window,"load",function(){KronolithCore.window_load=true});Element.addMethods({setText:function(B,C){var A=0;$A(B.childNodes).each(function(D){if(D.nodeType==3){if(A++){Element.remove(D)}else{D.nodeValue=C}}});if(!A){$(B).insert(C)}return B},getText:function(B,A){var C="";$A(B.childNodes).each(function(D){if(D.nodeType==3){C+=D.nodeValue}else{if(A&&D.hasChildNodes()){C+=$(D).getText(true)}}});return C}});Object.extend(Array.prototype,{numericSort:function(){return this.sort(function(B,A){if(B>A){return 1}else{if(B<A){return-1}}return 0})}});Object.extend(String.prototype,{evalScripts:function(){var re=/function\s+([^\s(]+)/g;this.extractScripts().each(function(s){var func;eval(s);while(func=re.exec(s)){window[func[1]]=eval(func[1])}})}});
\ No newline at end of file
* kronolith.js - Base application logic.
* NOTE: ContextSensitive.js must be loaded before this file.
*
- * $Horde$
- *
- * Copyright 2008 The Horde Project (http://www.horde.org/)
+ * Copyright 2008-2009 The Horde Project (http://www.horde.org/)
*
* See the enclosed file COPYING for license information (GPL). If you
* did not receive this file, see http://www.fsf.org/copyleft/gpl.html.
view: '',
remove_gc: [],
+ date: new Date(),
debug: function(label, e)
{
go: function(fullloc, data)
{
- var app, f, separator;
-
- if (fullloc.startsWith('compose:')) {
- return;
- }
-
- /*
- $('dimpmain_portal').update(Kronolith.text.loading).show();
-
- if (loc.startsWith('app:')) {
- app = loc.substr(4);
- if (app == 'imp' || app == 'dimp') {
- this.go('folder:INBOX');
- return;
- }
- this.highlightSidebar('app' + app);
- this._addHistory(loc, data);
- if (data) {
- this.iframeContent(loc, data);
- } else if (Kronolith.conf.app_urls[app]) {
- this.iframeContent(loc, Kronolith.conf.app_urls[app]);
- }
- return;
- }
- */
var locParts = fullloc.split(':');
var loc = locParts.shift();
}
var locCap = loc.capitalize();
- this._addHistory(fullloc);
-
[ 'Day', 'Week', 'Month', 'Year', 'Tasks', 'Agenda' ].each(function(a) {
$('kronolithNav' + a).removeClassName('on');
});
case 'week':
case 'month':
case 'year':
- $('kronolithMinical').select('td').each(function(td) {
- td.removeClassName('kronolithSelected');
- if (locParts.length) {
- if (!td.hasClassName('kronolithMinicalWeek') &&
- (loc == 'month' ||
- (loc == 'day' &&
- td.readAttribute('date') == locParts[0]))) {
- td.addClassName('kronolithSelected');
- }
- }
- });
- if (loc == 'week' && locParts.length) {
- $('kronolithMinical').select('td').each(function(td) {
- if (td.readAttribute('date') == locParts[0]) {
- var tds = td.parentNode.childNodes;
- for (i = 0; i < tds.length; i++) {
- if (tds.item(i) != td &&
- tds.item(i).tagName == 'TD') {
- $(tds.item(i)).addClassName('kronolithSelected');
- }
- }
- throw $break;
- }
- });
+ var date = locParts.shift();
+ if (date) {
+ date = this.parseDate(date);
+ } else {
+ date = this.date;
}
+
+ this.updateMinical(date, loc);
$('kronolithBody').select('div.kronolithEvent').each(function(s) {
s.observe('mouseover', s.addClassName.curry('kronolithSelected'));
s.observe('mouseout', s.removeClassName.curry('kronolithSelected'));
});
+ this.date = date;
+
break;
}
+ this._addHistory(fullloc);
this.view = loc;
break;
}
},
+ updateMinical: function(date, view)
+ {
+ // Maybe we should only rebuild the minical if necessary.
+ var tbody = $('kronolithMinical').down('tbody'),
+ oDate = date.clone(), monthEnd = date.clone(),
+ weekStart, weekEnd, weekEndDay, td, tr;
+
+ oDate.setDate(1);
+ if (oDate.getDay() != Kronolith.conf.week_start) {
+ oDate.moveToDayOfWeek(Kronolith.conf.week_start, -1);
+ }
+ monthEnd.moveToLastDayOfMonth();
+ weekEndDay = Kronolith.conf.week_start + 6;
+ if (weekEndDay > 6) {
+ weekEndDay -= 7;
+ }
+ if (monthEnd.getDay() != weekEndDay) {
+ monthEnd.moveToDayOfWeek(weekEndDay, 1);
+ }
+
+ $('kronolithMinicalDate').setText(date.toString('MMMM yyyy')).setAttribute('date', date.toString('yyyyMMdd'));
+ tbody.childElements().each(Element.remove);
+
+ while (oDate.compareTo(monthEnd) < 1) {
+ if (oDate.getDay() == Kronolith.conf.week_start) {
+ tr = new Element('tr');
+ tbody.appendChild(tr);
+ td = new Element('td', { 'class': 'kronolithMinicalWeek', date: oDate.toString('yyyyMMdd') });
+ td.setText(oDate.getWeek());
+ tr.appendChild(td);
+ weekStart = oDate.clone();
+ weekEnd = oDate.clone();
+ weekEnd.add(6).days();
+ }
+ td = new Element('td', {date: oDate.toString('yyyyMMdd')});
+ if (oDate.getMonth() != date.getMonth()) {
+ td.addClassName('kronolithMinicalEmpty');
+ }
+ if (view &&
+ (view == 'month' ||
+ (view == 'week' && date.between(weekStart, weekEnd)) ||
+ (view == 'day' && date.compareTo(oDate) == 0))) {
+ td.addClassName('kronolithSelected');
+ }
+ td.setText(oDate.getDate());
+ tr.appendChild(td);
+ oDate.next().day();
+ }
+ },
+
+ parseDate: function(date)
+ {
+ return new Date(date.substr(0, 4), date.substr(4, 2) - 1, date.substr(6, 2));
+ },
+
_addHistory: function(loc, data)
{
if (Horde.dhtmlHistory.getCurrentLocation() != loc) {
return;
case 'id_fullday':
- $('kronolithEventForm').select('.edit_at').each(Element.toggle);
+ $('kronolithEventForm').select('.edit_at').each(Element.toggle);
e.stop();
return;
return;
case 'kronolithMinicalDate':
- this.go('month:' + $('kronolithMinicalDate').readAttribute('date'));
+ this.go('month:' + orig.readAttribute('date'));
e.stop();
return;
case 'kronolithMinical':
+ if (orig.id == 'kronolithMinicalPrev') {
+ var date = this.parseDate($('kronolithMinicalDate').readAttribute('date'));
+ date.previous().month();
+ this.updateMinical(date);
+ e.stop();
+ return;
+ }
+ if (orig.id == 'kronolithMinicalNext') {
+ var date = this.parseDate($('kronolithMinicalDate').readAttribute('date'));
+ date.next().month();
+ this.updateMinical(date);
+ e.stop();
+ return;
+ }
+
var tmp = orig;
if (tmp.tagName != 'td') {
tmp.up('td');
}
- if (tmp) {
+ if (tmp && tmp.readAttribute('date')) {
if (tmp.hasClassName('kronolithMinicalWeek')) {
this.go('week:' + tmp.readAttribute('date'));
} else if (!tmp.hasClassName('empty')) {
},
/* Onload function. */
- _onLoad: function() {
- var tmp,
- C = this.clickObserveHandler;
-
+ onLoad: function()
+ {
if (Horde.dhtmlHistory.initialize()) {
Horde.dhtmlHistory.addListener(this.go.bind(this));
}
//$('kronolithPage').show();
/* Start message list loading as soon as possible. */
- KronolithCore._onLoad();
+ KronolithCore.onLoad();
/* Bind key shortcuts. */
document.observe('keydown', KronolithCore._keydownHandler.bindAsEventListener(KronolithCore));
if (!t) {
$(element).insert(text);
}
+
+ return element;
},
getText: function(element, recursive)
'URI_AJAX' => Horde::url($kronolith_webroot . '/ajax.php', true, -1),
'URI_PREFS' => Horde::url($horde_webroot . '/services/prefs/', true, -1),
//'URI_VIEW' => Util::addParameter(Horde::url($imp_webroot . '/view.php', true, -1), array('actionID' => 'view_source', 'id' => 0), null, false),
-
'SESSION_ID' => defined('SID') ? SID : '',
-
'prefs_url' => str_replace('&', '&', Horde::getServiceLink('options', 'kronolith')),
-
'name' => $registry->get('name'),
-
'is_ie6' => ($browser->isBrowser('msie') && ($browser->getMajor() < 7)),
-
'login_view' => $prefs->getValue('defaultview'),
-
+ 'week_start' => (int)$prefs->getValue('week_start_monday'),
// Turn debugging on?
'debug' => !empty($conf['js']['debug']),
);
</caption>
<thead>
- <tr><th class="kronolithMinicalEmpty"> </th><th title="<?php echo _("Monday") ?>"><?php echo substr(_("Monday"), 0, 1) ?></th><th title="<?php echo _("Tuesday") ?>"><?php echo substr(_("Tuesday"), 0, 1) ?></th><th title="<?php echo _("Wednesday") ?>"><?php echo substr(_("Wednesday"), 0, 1) ?></th><th title="<?php echo _("Thursday") ?>"><?php echo substr(_("Thursday"), 0, 1) ?></th><th title="<?php echo _("Friday") ?>"><?php echo substr(_("Friday"), 0, 1) ?></th><th title="<?php echo _("Saturday") ?>"><?php echo substr(_("Saturday"), 0, 1) ?></th><th title="<?php echo _("Sunday") ?>"><?php echo substr(_("Sunday"), 0, 1) ?></th></tr>
+ <tr>
+ <th class="kronolithMinicalEmpty"> </th>
+ <?php for ($i = $prefs->getValue('week_start_monday'), $c = $i + 7; $i < $c; $i++): ?>
+ <th title="<?php echo NLS::getLangInfo(constant('DAY_' . ($i % 7 + 1))) ?>"><?php echo substr(NLS::getLangInfo(constant('DAY_' . ($i % 7 + 1))), 0, 1) ?></th>
+ <?php endfor; ?>
+ </tr>
</thead>
<tbody>
- <?php
- $currentDay = null;
- $firstDay = clone $today;
- $firstDay->mday = 1;
- $week = $firstDay->weekOfYear();
- while (!$currentDay || $currentDay->month == $today->month):
- $currentDay = Horde_Date::firstDayOfWeek($week, $today->year);
- ?>
- <tr>
- <td class="kronolithMinicalWeek" date="<?php echo $currentDay->dateString() ?>"><?php echo $week ?></td>
- <?php for ($i = 0; $i < 7; $i++): ?>
- <td class="<?php if ($currentDay->month != $today->month) echo 'kronolithMinicalEmpty'; elseif ($currentDay->mday == $today->mday) echo 'on' ?>" date="<?php echo $currentDay->dateString() ?>"><?php echo $currentDay->mday ?></td>
- <?php $currentDay->mday++; endfor; ?>
- </tr>
- <?php $week++; endwhile; ?>
</tbody>
</table>
</div>
border-bottom: 1px #000 dotted;
text-align: left;
}
+#kronolithMinicalDate {
+ cursor: pointer;
+}
#kronolithMinicalPrev, #kronolithMinicalNext {
position: absolute;
top: 0;
.panel-tags li:hover {
text-decoration: underline;
-}
\ No newline at end of file
+}