]> CyberLeo.Net >> Repos - Github/sugarcrm.git/blob - modules/Calendar/Cal.js
Release 6.5.6
[Github/sugarcrm.git] / modules / Calendar / Cal.js
1 /*********************************************************************************
2  * SugarCRM Community Edition is a customer relationship management program developed by
3  * SugarCRM, Inc. Copyright (C) 2004-2012 SugarCRM Inc.
4  *
5  * This program is free software; you can redistribute it and/or modify it under
6  * the terms of the GNU Affero General Public License version 3 as published by the
7  * Free Software Foundation with the addition of the following permission added
8  * to Section 15 as permitted in Section 7(a): FOR ANY PART OF THE COVERED WORK
9  * IN WHICH THE COPYRIGHT IS OWNED BY SUGARCRM, SUGARCRM DISCLAIMS THE WARRANTY
10  * OF NON INFRINGEMENT OF THIRD PARTY RIGHTS.
11  *
12  * This program is distributed in the hope that it will be useful, but WITHOUT
13  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
14  * FOR A PARTICULAR PURPOSE.  See the GNU Affero General Public License for more
15  * details.
16  *
17  * You should have received a copy of the GNU Affero General Public License along with
18  * this program; if not, see http://www.gnu.org/licenses or write to the Free
19  * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
20  * 02110-1301 USA.
21  *
22  * You can contact SugarCRM, Inc. headquarters at 10050 North Wolfe Road,
23  * SW2-130, Cupertino, CA 95014, USA. or at email address contact@sugarcrm.com.
24  *
25  * The interactive user interfaces in modified source and object code versions
26  * of this program must display Appropriate Legal Notices, as required under
27  * Section 5 of the GNU Affero General Public License version 3.
28  *
29  * In accordance with Section 7(b) of the GNU Affero General Public License version 3,
30  * these Appropriate Legal Notices must retain the display of the "Powered by
31  * SugarCRM" logo. If the display of the logo is not reasonably feasible for
32  * technical reasons, the Appropriate Legal Notices must display the words
33  * "Powered by SugarCRM".
34  ********************************************************************************/
35 var CAL={};CAL.slot_height=14;CAL.dropped=0;CAL.records_openable=true;CAL.moved_from_cell="";CAL.deleted_id="";CAL.deleted_module="";CAL.tmp_header="";CAL.disable_creating=false;CAL.record_editable=false;CAL.shared_users={};CAL.shared_users_count=0;CAL.script_evaled=false;CAL.editDialog=false;CAL.settingsDialog=false;CAL.sharedDialog=false;CAL.basic={};CAL.basic.items={};CAL.update_dd=new YAHOO.util.CustomEvent("update_dd");CAL.dd_registry=new Object();CAL.resize_registry=new Object();CAL.print=false;CAL.dom=YAHOO.util.Dom;CAL.get=YAHOO.util.Dom.get;CAL.query=YAHOO.util.Selector.query;CAL.arrange_slot=function(cell_id){if(!cell_id)
36 return;cellElm=document.getElementById(cell_id);if(cellElm){var total_height=0;var prev_i=0;var first=1;var top=0;var height=0;var cnt=0;var child_cnt=cellElm.childNodes.length;for(var i=0;i<child_cnt;i++){var width_p=(92 / child_cnt);width=width_p.toString()+"%";if(cellElm.childNodes[i].tagName=="DIV"){cellElm.childNodes[i].style.top="-1px";cellElm.childNodes[i].style.left="-"+(cnt+1)+"px";cellElm.childNodes[i].style.width=width
37 cnt++;prev_i=i;}}}}
38 CAL.arrange_column=function(column){for(var i=0;i<column.childNodes.length;i++){for(var j=0;j<column.childNodes[i].childNodes.length;j++){var el=column.childNodes[i].childNodes[j];if(YAHOO.util.Dom.hasClass(el,"empty")){el.parentNode.removeChild(el);j--;}}}
39 var slots=column.childNodes;var start=0;var end=slots.length;var slot_count=end;var level=0;var affected_slots=new Array();var affected_items=Array();var ol=new Array();find_overlapping(null,start,end,level,null);for(var i=0;i<ol.length;i++){var ol_group=ol[i];var depth=ol_group.depth;for(var j=0;j<ol_group.items.length;j++){var el_id=ol_group.items[j]['id'];var level=ol_group.items[j]['level'];var el=CAL.get(el_id);var node=el;var pos=0;while(node.previousSibling){pos++;node=node.previousSibling;}
40 insert_empty_items(el,level-1-pos,false);}}
41 for(var i=0;i<ol.length;i++){var ol_group=ol[i];var depth=ol_group.depth;for(var j=0;j<ol_group.items.length;j++){var el_id=ol_group.items[j]['id'];var el=CAL.get(el_id);var cnt=el.parentNode.childNodes.length;insert_empty_items(el,depth-cnt,true);}}
42 CAL.each(affected_slots,function(i,v){CAL.arrange_slot(affected_slots[i]);});function find_overlapping(el,start,end,level,ol_group){if(level>20)
43 return;var depth=level;if(el!=null){if(level==1){ol_group={};ol_group.items=new Array();}
44 ol_group.items.push({id:el.id,level:level});affected_items.push(el.id);}
45 for(var i=start;i<end;i++){if(i>=slot_count)
46 break;if(typeof slots[i].childNodes!='undefined'&&typeof slots[i].childNodes[0]!='undefined'){var pos=0;if(i==start){var node=slots[i].childNodes[0];while(node.nextSibling&&CAL.contains(affected_items,node.id)){node=node.nextSibling;pos++;}}
47 var current=slots[i].childNodes[pos];var slots_takes=parseInt(current.getAttribute('duration_coef'));if(CAL.contains(affected_items,current.id))
48 continue;if(pos==0){var slot_id=current.parentNode.id;if(!CAL.contains(affected_slots,slot_id))
49 affected_slots.push(slot_id);}
50 if(slots_takes>0){var k=find_overlapping(current,i,i+slots_takes,level+1,ol_group);if(k>depth)
51 depth=k;}}}
52 if(level==1){ol_group.depth=depth;ol.push(ol_group);}
53 return depth;}
54 function insert_empty_items(el,count,to_end){var slot=el.parentNode;for(var i=0;i<count;i++){var empty=document.createElement("div");empty.className="act_item empty";empty.style.zIndex="-1";empty.style.width="1px";if(to_end==true){slot.appendChild(empty);}else{slot.insertBefore(empty,slot.firstChild);}}}}
55 CAL.arrange_advanced=function(){var nodes=CAL.query("#cal-grid #cal-scrollable .col");for(var i=0;i<nodes.length;i++){CAL.arrange_column(nodes[i]);}
56 CAL.update_dd.fire();}
57 CAL.create_item=function(params){var item=params.item;var id=params.id+params.id_suffix;var el=document.createElement("div");var elHead=document.createElement("div");elHead.setAttribute("class","head");var elHeadInfo=document.createElement("div");elHeadInfo.setAttribute("class","adicon");elHeadInfo.setAttribute("id","div_"+id);var params_click=new Object();params_click.id=id;YAHOO.util.Event.on(elHeadInfo,"click",function(e){YAHOO.util.Event.stopPropagation(e);CAL.show_additional_details(params_click.id);},params_click);var head_text=document.createElement("div");head_text.innerHTML=params.head_text;elHead.appendChild(elHeadInfo);elHead.appendChild(head_text);el.appendChild(elHead);if(params.type=="advanced"){var elContent=document.createElement("div");elContent.setAttribute("class","content");if(params.content_style!=""){elContent.style[params.content_style]=params.content_style_value;}
58 elContent.innerHTML=params.item_text;el.appendChild(elContent);}
59 el.setAttribute("id",id);el.className="act_item"+" "+item.type+"_item";el.style.backgroundColor=CAL.activity_colors[item.module_name]['body'];el.style.borderColor=CAL.activity_colors[item.module_name]['border'];el.setAttribute("record",params.id);el.setAttribute("module_name",item.module_name);el.setAttribute("record",item.record);el.setAttribute("status",item.status);el.setAttribute("detail",item.detail);el.setAttribute("edit",item.edit);if(typeof item.repeat_parent_id!="undefined"&&item.repeat_parent_id!="")
60 el.setAttribute("repeat_parent_id",item.repeat_parent_id);if(params.type=="basic"){el.style.left="-1px";el.style.display="block";el.setAttribute("days",params.days);el.style.width=((params.days)*100)+"%";el.style.top=parseInt(params.position*CAL.slot_height-params.slot.childNodes.length*(CAL.slot_height+1))+"px";}else{el.style.height=parseInt((CAL.slot_height+1)*params.duration_coef-1)+"px";el.setAttribute("duration_coef",params.duration_coef);}
61 YAHOO.util.Event.on(el,"mouseover",function(){if(!CAL.records_openable)
62 return;CAL.disable_creating=true;var e;if(e=CAL.get(el.id))
63 e.style.zIndex=2;});YAHOO.util.Event.on(el,"mouseout",function(event){if(!CAL.records_openable)
64 return;var node=event.toElement||event.relatedTarget;var i=3;while(i>0){if(node==this)
65 return;else
66 node=node.parentNode;i--;}
67 CAL.get(el.id).style.zIndex='';CAL.disable_creating=false;});CAL.clear_additional_details(params.id);return el;}
68 CAL.make_draggable=function(id,type){var border;var prefix;var id_prefix;border="cal-grid";if(type=="basic"){if(CAL.view!="month"&&CAL.view!="shared")
69 border="cal-multiday-bar";prefix="basic_";id_prefix="b_";}else{if(CAL.view!="month")
70 border="cal-scrollable";prefix="";id_prefix="t_";}
71 var dd=new YAHOO.util.DDCAL(id,prefix+"cal",{isTarget:false,cont:border});CAL.dd_registry[id]=dd;dd.onInvalidDrop=function(e){if(type=="basic"){CAL.basic.populate_grid();CAL.fit_grid();}else{CAL.arrange_slot(this.el.parentNode.getAttribute("id"));if(CAL.dropped==0){this.el.childNodes[0].innerHTML=CAL.tmp_header;}}
72 CAL.records_openable=true;CAL.disable_creating=false;}
73 dd.onMouseDown=function(e){YAHOO.util.DDM.mode=YAHOO.util.DDM.POINT;YAHOO.util.DDM.clickPixelThresh=20;}
74 dd.onMouseUp=function(e){YAHOO.util.DDM.mode=YAHOO.util.DDM.INTERSECT;YAHOO.util.DDM.clickPixelThresh=3;}
75 dd.startDrag=function(x,y){this.el=document.getElementById(this.id);this.el.style.zIndex=5;CAL.dropped=0;CAL.records_openable=false;CAL.disable_creating=true;CAL.tmp_header=this.el.childNodes[0].innerHTML;CAL.moved_from_cell=this.el.parentNode.id;this.setDelta(2,2);}
76 dd.endDrag=function(x,y){this.el=document.getElementById(this.id);this.el.style.zIndex="";var nodes=CAL.query("#cal-grid div."+prefix+"slot");CAL.each(nodes,function(i,v){YAHOO.util.Dom.removeClass(nodes[i],"slot_active");});}
77 dd.onDragDrop=function(e,id){var slot=document.getElementById(id);YAHOO.util.Dom.removeClass(slot,"slot_active");if(CAL.dropped)
78 return;CAL.dropped=1;this.el.style.position="relative";this.el.style.cssFloat="none";if(type=="advanced"){if(CAL.view!='shared'){var box_id=this.id;var slot_id=id;var ex_slot_id=CAL.moved_from_cell;CAL.move_activity(box_id,slot_id,ex_slot_id);}else{var record=this.el.getAttribute("record");var tid=id;var tar=tid.split("_");var timestamp=tar[1];var tid=CAL.moved_from_cell;var tar=tid.split("_");var ex_timestamp=tar[1];for(i=0;i<CAL.shared_users_count;i++){var box_id=record+"____"+i;var slot_id=id_prefix+timestamp+"_"+i;var ex_slot_id=id_prefix+ex_timestamp+"_"+i;CAL.move_activity(box_id,slot_id,ex_slot_id);}}}
79 var callback={success:function(o){try{res=eval("("+o.responseText+")");}catch(err){alert(CAL.lbl_error_saving);ajaxStatus.hideStatus();return;}
80 if(res.access=='yes'){CAL.add_item(res);CAL.disable_creating=false;CAL.records_openable=true;CAL.update_vcal();ajaxStatus.hideStatus();}else{if(res.errorMessage!='undefined'){alert(res.errorMessage);}
81 CAL.refresh();ajaxStatus.hideStatus();}}};ajaxStatus.showStatus(SUGAR.language.get('app_strings','LBL_SAVING'));var url="index.php?module=Calendar&action=Reschedule&sugar_body_only=true";var data={"current_module":this.el.getAttribute("module_name"),"record":this.el.getAttribute("record"),"datetime":slot.getAttribute("datetime"),"calendar_style":type};YAHOO.util.Connect.asyncRequest('POST',url,callback,CAL.toURI(data));YAHOO.util.Dom.removeClass(slot,"slot_active");}
82 dd.onDragOver=function(e,id){var slot=document.getElementById(id);if(!YAHOO.util.Dom.hasClass(slot,"slot_active"))
83 YAHOO.util.Dom.addClass(slot,"slot_active");if(type=="advanced")
84 this.el.childNodes[0].childNodes[1].childNodes[0].innerHTML=slot.getAttribute('time');}
85 dd.onDragOut=function(e,id){var slot=document.getElementById(id);YAHOO.util.Dom.removeClass(slot,"slot_active");}}
86 CAL.make_resizable=function(id,slot){var pos=0,e=slot;while(e=e.previousSibling){pos++;}
87 var max_height=(CAL.cells_per_day-pos)*(CAL.slot_height+1)-1;var old_width;var resize=new YAHOO.util.Resize(id,{handles:['b'],maxHeight:max_height});CAL.resize_registry[id]=resize;resize.on('startResize',function(e){var el=CAL.get(id);if(el){el.style.zIndex=3;}
88 CAL.records_openable=false;CAL.disable_creating=true;});resize.on('endResize',function(e){elm_id=id;var duration=e.height /(CAL.slot_height+1)*CAL.t_step;var remainder=duration%15;if(remainder>7.5)
89 remainder=(-1)*(15-remainder);duration=duration-remainder;var duration_hours=parseInt(duration / 60);var duration_minutes=duration%60;var new_size=(duration / CAL.t_step)*(CAL.slot_height+1)-1;var el=CAL.get(elm_id);if(el){el.style.zIndex='';el.style.height=new_size+"px";CAL.arrange_slot(slot.id);var nodes=CAL.query("#cal-grid div.act_item");CAL.each(nodes,function(i,v){nodes[i].style.zIndex='';});var duration_coef=duration / CAL.t_step;el.setAttribute("duration_coef",duration_coef);if(duration_coef<1.75)
90 el.childNodes[1].style.display="none";else
91 el.childNodes[1].style.display="";var callback={success:function(o){try{res=eval("("+o.responseText+")");}catch(err){alert(CAL.lbl_error_saving);ajaxStatus.hideStatus();return;}
92 if(res.access=='yes'){CAL.update_vcal();CAL.clear_additional_details(el.getAttribute("record"));CAL.arrange_column(slot.parentNode);CAL.update_dd.fire();ajaxStatus.hideStatus();CAL.disable_creating=false;CAL.records_openable=true;}}};ajaxStatus.showStatus(SUGAR.language.get('app_strings','LBL_SAVING'));var url="index.php?module=Calendar&action=Resize&sugar_body_only=true";var data={"current_module":el.getAttribute("module_name"),"record":el.getAttribute("record"),"duration_hours":duration_hours,"duration_minutes":duration_minutes};YAHOO.util.Connect.asyncRequest('POST',url,callback,CAL.toURI(data));}});}
93 CAL.destroy_ui=function(id){if(CAL.items_resizable&&typeof CAL.resize_registry[id]!="undefined"){CAL.resize_registry[id].destroy();delete CAL.resize_registry[id];}
94 if(CAL.items_draggable&&typeof CAL.dd_registry[id]!="undefined")
95 CAL.dd_registry[id].unreg();delete CAL.dd_registry[id];}
96 CAL.basic.remove=function(item){if(typeof CAL.basic.items[item.user_id]=='undefined')
97 CAL.basic.items[item.user_id]=new Object();delete CAL.basic.items[item.user_id][item.record];}
98 CAL.basic.add=function(item){if(typeof CAL.basic.items[item.user_id]=='undefined')
99 CAL.basic.items[item.user_id]=new Object();CAL.basic.items[item.user_id][item.record]=item;}
100 CAL.basic.populate_grid=function(){var nodes=CAL.query("#cal-grid .cal-basic .col .act_item");CAL.each(nodes,function(i,v){nodes[i].parentNode.removeChild(nodes[i]);});var users_arr=new Array();if(CAL.view!="shared"){users_arr.push(CAL.current_user_id);}else{CAL.each(CAL.shared_users,function(i,v){users_arr.push(i);});}
101 for(ui=0;ui<users_arr.length;ui++){var user_id=users_arr[ui];suffix="";id_suffix="";if(CAL.view=='shared'){suffix="_"+CAL.shared_users[user_id];id_suffix='____'+CAL.shared_users[user_id];}
102 var step=7;if(CAL.view=="day")
103 step=1;var portions_count=1;if(CAL.view=="month"){var e=CAL.get("b_"+CAL.grid_start_ts+suffix);if(e)
104 portions_count=e.parentNode.parentNode.parentNode.parentNode.parentNode.childNodes.length;else
105 continue;}
106 var start=CAL.grid_start_ts;for(w=0;w<portions_count;w++){var end=start+step*3600*24;var portion=Array();CAL.each(CAL.basic.items[user_id],function(id,item){var c=!((item.ts_start<start&&item.ts_end<=start)||(end<=item.ts_start&&end<=item.ts_end));if(c){if(item.ts_start<start)
107 var from=start;else
108 var from=item.ts_start;if(end<=item.ts_end)
109 var to=end;else
110 var to=item.ts_end;portion.push({id:id,offset:item.offset,from:from,to:to});}});portion.sort(function(a,b){return a.offset-b.offset;});var equalizer=Array();for(i=0;i<step;i++){equalizer[i]=0;}
111 var max_pos=0;CAL.each(portion,function(i,v){var from=(portion[i].from-start)/(3600*24);var to=(portion[i].to-start)/(3600*24);var pos=0;for(d=from;d<to;d++){if(equalizer[d]>pos)
112 pos=equalizer[d];}
113 for(d=from;d<to;d++){equalizer[d]=pos+1;}
114 portion[i].position=pos;portion[i].days=to-from;if(pos>max_pos)
115 max_pos=pos;var item=CAL.basic.items[user_id][portion[i].id];var slot=CAL.get("b_"+portion[i].from+suffix);if(slot){var time_start=item.time_start;if(item.ts_start<start)
116 time_start="...&nbsp;";var head_text=CAL.get_header_text(item.type,time_start,item.name,item.record);var el=CAL.create_item({item:item,type:'basic',head_text:head_text,id:portion[i].id,position:portion[i].position,slot:slot,id_suffix:id_suffix,days:portion[i].days});YAHOO.util.Event.on(el,"click",function(){if(this.getAttribute('detail')=="1")
117 CAL.load_form(this.getAttribute('module_name'),this.getAttribute('record'),false);});slot.appendChild(el);if(CAL.items_draggable&&item.edit==1){CAL.make_draggable(el.getAttribute("id"),"basic");}}});h=parseInt((max_pos+1)*CAL.slot_height+(CAL.slot_height+1));if(h<CAL.basic.min_height)
118 h=CAL.basic.min_height;var height_string=h+"px";var row=CAL.get("b_"+start+suffix).parentNode.parentNode;row.parentNode.childNodes[0].childNodes[0].style.height=height_string;CAL.each(row.childNodes,function(i,v){if(typeof row.childNodes[i]=='object')
119 row.childNodes[i].childNodes[0].style.height=height_string;});start=start+step*3600*24;}}}
120 CAL.add_item_to_grid=function(item){var suffix="";var id_suffix="";if(item.user_id!=""&&CAL.view=='shared'){suffix="_"+CAL.shared_users[item.user_id];id_suffix='____'+CAL.shared_users[item.user_id];}
121 var e=CAL.get(item.record+id_suffix);if(e){e.parentNode.removeChild(e);CAL.destroy_ui(item.record+id_suffix);}
122 CAL.basic.remove(item);if(CAL.style=="basic"||item.days>1){CAL.basic.add(item);return;}
123 var head_text=CAL.get_header_text(item.type,item.time_start,item.name,item.record);var time_cell=item.timestamp-item.timestamp%(CAL.t_step*60);var duration_coef;if(item.module_name=='Tasks'){duration_coef=1;}else{if((item.duration_minutes<CAL.t_step)&&(item.duration_hours==0))
124 duration_coef=1;else
125 duration_coef=(parseInt(item.duration_hours)*60+parseInt(item.duration_minutes))/ CAL.t_step;}
126 var item_text=SUGAR.language.languages.app_list_strings[item.type+'_status_dom'][item.status];var content_style="";var content_style_value="";if(duration_coef<1.75){content_style="display";content_style_value="none";}
127 var elm_id=item.record+id_suffix;var el=CAL.create_item({item:item,type:'advanced',head_text:head_text,duration_coef:duration_coef,id:item.record,id_suffix:id_suffix,item_text:item_text,content_style:content_style,content_style_value:content_style_value});YAHOO.util.Event.on(el,"click",function(){if(this.getAttribute('detail')=="1")
128 CAL.load_form(this.getAttribute('module_name'),this.getAttribute('record'),false);});var slot;if(slot=CAL.get("t_"+time_cell+suffix)){slot.appendChild(el);if(item.edit==1){if(CAL.items_draggable)
129 CAL.make_draggable(elm_id,"advanced");if(item.module_name!="Tasks"&&CAL.items_resizable)
130 CAL.make_resizable(elm_id,slot);}
131 CAL.cut_record(item.record+id_suffix);}}
132 CAL.get_header_text=function(type,time_start,text,record){var start_text="<span class='start_time'>"+time_start+"</span> "+text;return start_text;}
133 CAL.cut_record=function(id){var el=CAL.get(id);if(!el)
134 return;var duration_coef=el.getAttribute("duration_coef");real_celcount=CAL.cells_per_day;var celpos=0;var s=el.parentNode;while(s.previousSibling){celpos++;s=s.previousSibling;}
135 celpos=celpos+1;if(real_celcount-celpos-duration_coef<0)
136 duration_coef=real_celcount-celpos+1;el.style.height=parseInt((CAL.slot_height+1)*duration_coef-1)+"px";}
137 CAL.init_edit_dialog=function(params){CAL.editDialog=false;var rd=CAL.get("cal-edit");var content=CAL.get("edit-dialog-content");if(CAL.dashlet&&rd){document.getElementById("content").appendChild(rd);}
138 rd.style.width=params.width+"px";content.style.height=params.height+"px";content.style.overflow="auto";content.style.padding="0";CAL.editDialog=new YAHOO.widget.Dialog("cal-edit",{draggable:true,visible:false,modal:true,close:true,y:1,zIndex:10});var listeners=new YAHOO.util.KeyListener(document,{keys:27},{fn:function(){CAL.editDialog.cancel();}});CAL.editDialog.cfg.queueProperty("keylisteners",listeners);CAL.editDialog.cancelEvent.subscribe(function(e,a,o){CAL.close_edit_dialog();});rd.style.display="block";CAL.editDialog.render();rd.style.overflow="auto";rd.style.overflowX="hidden";rd.style.outline="0 none";rd.style.height="auto";}
139 CAL.open_edit_dialog=function(params){document.getElementById("form_content").innerHTML="";CAL.editDialog.center();CAL.editDialog.show();var nodes=CAL.query("#cal-tabs li a");CAL.each(nodes,function(i,v){YAHOO.util.Event.on(nodes[i],'click',function(){CAL.select_tab(this.getAttribute("tabname"));});});stay_on_tab=false
140 if(typeof params!="undefined"&&typeof params.stay_on_tab!="undefined"&&params.stay_on_tab)
141 stay_on_tab=true;if(!stay_on_tab){var nodes_li=CAL.query("#cal-tabs li");CAL.each(nodes_li,function(j,v){CAL.dom.removeClass(nodes_li[j],"selected");if(j==0)
142 CAL.dom.addClass(nodes_li[j],"selected");});var nodes=CAL.query(".yui-nav");CAL.each(nodes,function(i,v){nodes[i].style.overflowX="visible";});}}
143 CAL.close_edit_dialog=function(){CAL.reset_edit_dialog();}
144 CAL.remove_edit_dialog=function(){var rd_c=CAL.get("cal-edit_c");if(rd_c){rd_c.parentNode.removeChild(rd_c);}}
145 CAL.reset_edit_dialog=function(){var e;document.forms["CalendarEditView"].elements["current_module"].value="Meetings";CAL.get("radio_call").removeAttribute("disabled");CAL.get("radio_meeting").removeAttribute("disabled");CAL.get("radio_call").checked=false;CAL.get("radio_meeting").checked=true;CAL.get("send_invites").value="";if(e=CAL.get("record"))
146 e.value="";if(e=CAL.get("list_div_win"))
147 e.style.display="none";if(typeof SugarWidgetSchedulerSearch.hideCreateForm!='undefined')
148 SugarWidgetSchedulerSearch.hideCreateForm();$("#scheduler .schedulerInvitees").css("display","");$("#create-invitees-title").css("display","");$("#create-invitees-buttons").css("display","");if(CAL.enable_repeat){CAL.reset_repeat_form();}
149 CAL.GR_update_focus("Meetings","");CAL.select_tab("cal-tab-1");QSFieldsArray=new Array();QSProcessedFieldsArray=new Array();}
150 CAL.reset_repeat_form=function(){document.forms['CalendarRepeatForm'].reset();var fields=['type','interval','count','until','dow'];CAL.each(fields,function(i,field){CAL.get('repeat_'+field).value="";});toggle_repeat_type();CAL.get("repeat_parent_id").value="";CAL.get("edit_all_recurrences").value="";CAL.get("edit_all_recurrences_block").style.display="none";CAL.get("cal-repeat-block").style.display="none";}
151 CAL.select_tab=function(tid){var nodes_li=CAL.query("#cal-tabs li");CAL.each(nodes_li,function(j,v){CAL.dom.removeClass(nodes_li[j],"selected");});CAL.dom.addClass(CAL.get(tid+"-link").parentNode,"selected");var nodes=CAL.query("#cal-tabs .yui-content");CAL.each(nodes,function(i,v){nodes[i].style.display="none";});var nodes=CAL.query("#cal-tabs #"+tid);CAL.each(nodes,function(i,v){nodes[i].style.display="block";});}
152 CAL.fill_repeat_data=function(){if(CAL.enable_repeat&&(CAL.get("current_module").value=="Meetings"||CAL.get("current_module").value=="Calls")){if(repeat_type=document.forms['CalendarRepeatForm'].repeat_type.value){document.forms['CalendarEditView'].repeat_type.value=repeat_type;document.forms['CalendarEditView'].repeat_interval.value=document.forms['CalendarRepeatForm'].repeat_interval.value;if(document.getElementById("repeat_count_radio").checked){document.forms['CalendarEditView'].repeat_count.value=document.forms['CalendarRepeatForm'].repeat_count.value;document.forms['CalendarEditView'].repeat_until.value="";}else{document.forms['CalendarEditView'].repeat_until.value=document.forms['CalendarRepeatForm'].repeat_until.value;document.forms['CalendarEditView'].repeat_count.value="";}
153 if(repeat_type=='Weekly'){var repeat_dow="";for(var i=0;i<7;i++)
154 if(CAL.get("repeat_dow_"+i).checked)
155 repeat_dow+=i.toString();CAL.get("repeat_dow").value=repeat_dow;}}}}
156 CAL.fill_repeat_tab=function(data){if(!CAL.enable_repeat)
157 return;if(typeof data.repeat_parent_id!="undefined"){CAL.get("cal-repeat-block").style.display="none";CAL.get("edit_all_recurrences_block").style.display="";CAL.get("edit_all_recurrences").value="";CAL.get("repeat_parent_id").value=data.repeat_parent_id;return;}
158 CAL.get("cal-repeat-block").style.display="";var repeat_type="";var set_default_repeat_until=true;if(typeof data.repeat_type!="undefined"){repeat_type=data.repeat_type;document.forms['CalendarRepeatForm'].repeat_type.value=data.repeat_type;document.forms['CalendarRepeatForm'].repeat_interval.value=data.repeat_interval;if(data.repeat_count!=''&&data.repeat_count!=0){document.forms['CalendarRepeatForm'].repeat_count.value=data.repeat_count;CAL.get("repeat_count_radio").checked=true;CAL.get("repeat_until_radio").checked=false;}else{document.forms['CalendarRepeatForm'].repeat_until.value=data.repeat_until;CAL.get("repeat_until_radio").checked=true;CAL.get("repeat_count_radio").checked=false;set_default_repeat_until=false;}
159 if(data.repeat_type=="Weekly"){var arr=data.repeat_dow.split("");CAL.each(arr,function(i,d){CAL.get("repeat_dow_"+d).checked=true;});}
160 CAL.get("cal-repeat-block").style.display="";CAL.get("edit_all_recurrences_block").style.display="none";toggle_repeat_type();}
161 CAL.get("edit_all_recurrences").value="true";if(typeof data.current_dow!="undefined"&&repeat_type!="Weekly")
162 CAL.get("repeat_dow_"+data.current_dow).checked=true;if(typeof data.default_repeat_until!="undefined"&&set_default_repeat_until)
163 CAL.get("repeat_until_input").value=data.default_repeat_until;}
164 CAL.repeat_tab_handle=function(module_name){if(!CAL.enable_repeat)
165 return;CAL.reset_repeat_form();if(module_name=="Meetings"||module_name=="Calls"){CAL.get("tab_repeat").style.display="";}else{CAL.get("tab_repeat").style.display="none";}
166 clear_all_errors();toggle_repeat_type();}
167 CAL.GR_update_user=function(user_id){var callback={success:function(o){res=eval(o.responseText);GLOBAL_REGISTRY.focus.users_arr_hash=undefined;}};var data={"users":user_id};var url="index.php?module=Calendar&action=GetGRUsers&sugar_body_only=true";YAHOO.util.Connect.asyncRequest('POST',url,callback,CAL.toURI(data));}
168 CAL.GR_update_focus=function(module,record){if(record==""){GLOBAL_REGISTRY["focus"]={"module":module,users_arr:[],fields:{"id":"-1"}};SugarWidgetScheduler.update_time();}else{var callback={success:function(o){res=eval(o.responseText);SugarWidgetScheduler.update_time();if(CAL.record_editable){CAL.enable_buttons();}}};var url='index.php?module=Calendar&action=GetGR&sugar_body_only=true&type='+module+'&record='+record;YAHOO.util.Connect.asyncRequest('POST',url,callback,false);}}
169 CAL.toggle_settings=function(){var sd=CAL.get("settings_dialog");if(!CAL.settingsDialog){CAL.settingsDialog=new YAHOO.widget.Dialog("settings_dialog",{fixedcenter:true,draggable:false,visible:false,modal:true,close:true});var listeners=new YAHOO.util.KeyListener(document,{keys:27},{fn:function(){CAL.settingsDialog.cancel();}});CAL.settingsDialog.cfg.queueProperty("keylisteners",listeners);}
170 CAL.settingsDialog.cancelEvent.subscribe(function(e,a,o){CAL.get("form_settings").reset();});sd.style.display="block";CAL.settingsDialog.render();CAL.settingsDialog.show();}
171 CAL.fill_invitees=function(){CAL.get("user_invitees").value="";CAL.get("contact_invitees").value="";CAL.get("lead_invitees").value="";CAL.each(GLOBAL_REGISTRY['focus'].users_arr,function(i,v){var field_name="";if(v.module=="User")
172 field_name="user_invitees";if(v.module=="Contact")
173 field_name="contact_invitees";if(v.module=="Lead")
174 field_name="lead_invitees";var str=CAL.get(field_name).value;CAL.get(field_name).value=str+v.fields.id+",";});}
175 CAL.repeat_type_selected=function(){var rt;if(rt=CAL.get("repeat_type")){if(rt.value=='Weekly'){var nodes=CAL.query(".weeks_checks_div");CAL.each(nodes,function(i,v){nodes[i].style.display="block";});}else{var nodes=CAL.query(".weeks_checks_div");CAL.each(nodes,function(i,v){nodes[i].style.display="none";});}
176 if(rt.value==''){CAL.get("repeat_interval").setAttribute("disabled","disabled");CAL.get("repeat_end_date").setAttribute("disabled","disabled");}else{CAL.get("repeat_interval").removeAttribute("disabled");CAL.get("repeat_end_date").removeAttribute("disabled");}}}
177 CAL.load_form=function(module_name,record,edit_all_recurrences){CAL.disable_creating=true;var e;var to_open=true;if(module_name=="Tasks")
178 to_open=false;if(to_open&&CAL.records_openable){CAL.get("form_content").style.display="none";CAL.disable_buttons();CAL.get("title-cal-edit").innerHTML=CAL.lbl_loading;CAL.repeat_tab_handle(module_name);ajaxStatus.showStatus(SUGAR.language.get('app_strings','LBL_LOADING'));params={};if(edit_all_recurrences)
179 params={stay_on_tab:true};CAL.open_edit_dialog(params);CAL.get("record").value="";if(!edit_all_recurrences)
180 edit_all_recurrences="";var callback={success:function(o){try{res=eval("("+o.responseText+")");}catch(err){alert(CAL.lbl_error_loading);CAL.editDialog.cancel();ajaxStatus.hideStatus();return;}
181 if(res.access=='yes'){var fc=document.getElementById("form_content");CAL.script_evaled=false;fc.innerHTML='<script type="text/javascript">CAL.script_evaled = true;</script>'+res.html;if(!CAL.script_evaled){SUGAR.util.evalScript(res.html);}
182 CAL.get("record").value=res.record;CAL.get("current_module").value=res.module_name;var mod_name=res.module_name;if(mod_name=="Meetings")
183 CAL.get("radio_meeting").checked=true;if(mod_name=="Calls")
184 CAL.get("radio_call").checked=true;if(res.edit==1){CAL.record_editable=true;}else{CAL.record_editable=false;}
185 CAL.get("radio_call").setAttribute("disabled","disabled");CAL.get("radio_meeting").setAttribute("disabled","disabled");eval(res.gr);SugarWidgetScheduler.update_time();if(CAL.record_editable){CAL.enable_buttons();}
186 CAL.get("form_content").style.display="";if(typeof res.repeat!="undefined"){CAL.fill_repeat_tab(res.repeat);}
187 CAL.get("title-cal-edit").innerHTML=CAL.lbl_edit;ajaxStatus.hideStatus();CAL.get("btn-save").focus();setTimeout(function(){if(!res.edit){$("#scheduler .schedulerInvitees").css("display","none");$("#create-invitees-buttons").css("display","none");$("#create-invitees-title").css("display","none");}
188 enableQS(false);disableOnUnloadEditView();},500);}else
189 alert(CAL.lbl_error_loading);},failure:function(){alert(CAL.lbl_error_loading);}};var url="index.php?module=Calendar&action=QuickEdit&sugar_body_only=true";var data={"current_module":module_name,"record":record,"edit_all_recurrences":edit_all_recurrences};YAHOO.util.Connect.asyncRequest('POST',url,callback,CAL.toURI(data));}}
190 CAL.edit_all_recurrences=function(){var record=CAL.get("record").value;if(CAL.get("repeat_parent_id").value!=""){record=CAL.get("repeat_parent_id").value;CAL.get("repeat_parent_id").value="";}
191 var module=CAL.get("current_module").value;if(record!=""){CAL.load_form(module,record,true);}}
192 CAL.remove_shared=function(record_id,edit_all_recurrences){if(typeof edit_all_recurrences=="undefined")
193 edit_all_recurrences=false;var e;var arr=new Array();if(CAL.enable_repeat&&edit_all_recurrences){var nodes=CAL.query("div.act_item[repeat_parent_id='"+record_id+"']");CAL.each(nodes,function(i,v){var record=nodes[i].getAttribute("record");if(!CAL.contains(arr,record))
194 arr.push(record);nodes[i].parentNode.removeChild(nodes[i]);CAL.destroy_ui(nodes[i].id);});}
195 CAL.each(CAL.shared_users,function(user_id,v){if(e=CAL.get(record_id+'____'+v)){CAL.destroy_ui(e.id);e.parentNode.removeChild(e);}
196 CAL.basic.remove({record:record_id,user_id:user_id});CAL.each(arr,function(i,id){CAL.basic.remove({record:id,user_id:user_id});});});}
197 CAL.add_item=function(item){var edit_all_recurrences=false;if(typeof item.edit_all_recurrences!="undefined"&&item.edit_all_recurrences=='true')
198 edit_all_recurrences=true;if(CAL.view!='shared'){var arr=new Array();if(CAL.enable_repeat&&edit_all_recurrences){var nodes=CAL.query("div.act_item[repeat_parent_id='"+item.record+"']");CAL.each(nodes,function(i,v){var record=nodes[i].getAttribute("record");if(!CAL.contains(arr,record))
199 arr.push(record);nodes[i].parentNode.removeChild(nodes[i]);});}
200 CAL.each(arr,function(i,id){CAL.basic.remove({record:id,user_id:CAL.current_user_id});});CAL.add_item_to_grid(item);var record_id=item.record;if(CAL.enable_repeat&&typeof item.repeat!="undefined"){CAL.each(item.repeat,function(j,r){var clone=CAL.clone(item);clone.record=r.id;clone.timestamp=r.timestamp;clone.ts_start=r.ts_start;clone.ts_end=r.ts_end;clone.repeat_parent_id=record_id;CAL.add_item_to_grid(clone);});}}else{CAL.remove_shared(item.record,edit_all_recurrences);record_id=item.record;CAL.each(item.users,function(i,user_id){item.user_id=user_id;CAL.add_item_to_grid(item);if(CAL.enable_repeat&&typeof item.repeat!="undefined"){CAL.each(item.repeat,function(j,r){var clone=CAL.clone(item);clone.record=r.id;clone.timestamp=r.timestamp;clone.ts_start=r.ts_start;clone.ts_end=r.ts_end;clone.repeat_parent_id=record_id;CAL.add_item_to_grid(clone);});}});}
201 CAL.arrange_advanced();CAL.basic.populate_grid();CAL.fit_grid();}
202 CAL.move_activity=function(box_id,slot_id,ex_slot_id){var u,s;if(u=CAL.get(box_id)){if(s=CAL.get(slot_id)){s.appendChild(u);CAL.destroy_ui(box_id);CAL.arrange_column(document.getElementById(slot_id).parentNode);CAL.arrange_column(document.getElementById(ex_slot_id).parentNode);CAL.update_dd.fire();CAL.cut_record(box_id);var start_text=CAL.get_header_text(CAL.act_types[u.getAttribute('module_name')],s.getAttribute('time'),' ... ',u.getAttribute('record'));var date_field="date_start";if(u.getAttribute('module_name')=="Tasks")
203 date_field="date_due";u.setAttribute(date_field,s.getAttribute("datetime"));u.childNodes[0].childNodes[1].innerHTML=start_text;}}}
204 CAL.change_activity_type=function(mod_name){if(typeof CAL.current_params.module_name!="undefined")
205 if(CAL.current_params.module_name==mod_name)
206 return;var e,user_name,user_id,date_start;CAL.get("title-cal-edit").innerHTML=CAL.lbl_loading;document.forms["CalendarEditView"].elements["current_module"].value=mod_name;CAL.current_params.module_name=mod_name;QSFieldsArray=new Array();QSProcessedFieldsArray=new Array();CAL.load_create_form(CAL.current_params);}
207 CAL.load_create_form=function(params){CAL.disable_buttons();ajaxStatus.showStatus(SUGAR.language.get('app_strings','LBL_LOADING'));CAL.repeat_tab_handle(CAL.current_params.module_name);var callback={success:function(o){try{res=eval("("+o.responseText+")");}catch(err){alert(CAL.lbl_error_loading);CAL.editDialog.cancel();ajaxStatus.hideStatus();return;}
208 if(res.access=='yes'){var fc=document.getElementById("form_content");CAL.script_evaled=false;fc.innerHTML='<script type="text/javascript">CAL.script_evaled = true;</script>'+res.html;if(!CAL.script_evaled){SUGAR.util.evalScript(res.html);}
209 CAL.get("record").value="";CAL.get("current_module").value=res.module_name;var mod_name=res.module_name;if(res.edit==1){CAL.record_editable=true;}else{CAL.record_editable=false;}
210 CAL.get("title-cal-edit").innerHTML=CAL.lbl_create_new;if(typeof res.repeat!="undefined"){CAL.fill_repeat_tab(res.repeat);}
211 CAL.enable_buttons();setTimeout(function(){SugarWidgetScheduler.update_time();enableQS(false);disableOnUnloadEditView();},500);ajaxStatus.hideStatus();}else{alert(CAL.lbl_error_loading);ajaxStatus.hideStatus();}},failure:function(){alert(CAL.lbl_error_loading);ajaxStatus.hideStatus();}};var url="index.php?module=Calendar&action=QuickEdit&sugar_body_only=true";var data={"current_module":params.module_name,"assigned_user_id":params.user_id,"assigned_user_name":params.user_name,"date_start":params.date_start};YAHOO.util.Connect.asyncRequest('POST',url,callback,CAL.toURI(data));}
212 CAL.full_form=function(){var e=document.createElement('input');e.setAttribute('type','hidden');e.setAttribute('name','module');e.value=CAL.get('current_module').value;CAL.get('form_content').parentNode.appendChild(e);var e=document.createElement('input');e.setAttribute('type','hidden');e.setAttribute('name','action');e.value='EditView';CAL.get('form_content').parentNode.appendChild(e);document.forms['CalendarEditView'].action="index.php";document.forms['CalendarEditView'].full_form="true";document.forms['CalendarEditView'].submit();}
213 CAL.disable_buttons=function(){CAL.get("btn-save").setAttribute("disabled","disabled");CAL.get("btn-send-invites").setAttribute("disabled","disabled");CAL.get("btn-delete").setAttribute("disabled","disabled");CAL.get("btn-full-form").setAttribute("disabled","disabled");if(CAL.enable_repeat){CAL.get("btn-edit-all-recurrences").setAttribute("disabled","disabled");CAL.get("btn-remove-all-recurrences").setAttribute("disabled","disabled");}}
214 CAL.enable_buttons=function(){CAL.get("btn-save").removeAttribute("disabled");CAL.get("btn-send-invites").removeAttribute("disabled");if(CAL.get("record").value!="")
215 CAL.get("btn-delete").removeAttribute("disabled");CAL.get("btn-full-form").removeAttribute("disabled");if(CAL.enable_repeat){CAL.get("btn-edit-all-recurrences").removeAttribute("disabled");CAL.get("btn-remove-all-recurrences").removeAttribute("disabled");}}
216 CAL.dialog_create=function(cell){var e,user_id,user_name;CAL.get("title-cal-edit").innerHTML=CAL.lbl_loading;CAL.open_edit_dialog();CAL.disable_buttons();var module_name=CAL.get("current_module").value;if(CAL.view=='shared'){parentWithUserValues=$('div[user_id][user_name]');user_name=parentWithUserValues.attr('user_name');user_id=parentWithUserValues.attr('user_id');if(parentWithUserValues.length>1){var theUserName,theUserId;var theUser=cell.parentNode;while(theUser){if(theUser.getAttribute("user_name")&&theUser.getAttribute("user_id")){theUserName=theUser.getAttribute("user_name");theUserId=theUser.getAttribute("user_id");break;}
217 else{theUser=theUser.parentNode;}}
218 if(theUserName&&theUserId){user_name=theUserName;user_id=theUserId;}}
219 CAL.GR_update_user(user_id);}else{user_id=CAL.current_user_id;user_name=CAL.current_user_name;CAL.GR_update_user(CAL.current_user_id);}
220 var params={'module_name':module_name,'user_id':user_id,'user_name':user_name,'date_start':cell.getAttribute("datetime")};CAL.current_params=params;CAL.load_create_form(CAL.current_params);}
221 CAL.dialog_save=function(){CAL.disable_buttons();ajaxStatus.showStatus(SUGAR.language.get('app_strings','LBL_SAVING'));if(CAL.get("send_invites").value=="1"){CAL.get("title-cal-edit").innerHTML=CAL.lbl_sending;}else{CAL.get("title-cal-edit").innerHTML=CAL.lbl_saving;}
222 CAL.fill_invitees();CAL.fill_repeat_data();var callback={success:function(o){try{res=eval("("+o.responseText+")");}catch(err){alert(CAL.lbl_error_saving);CAL.editDialog.cancel();ajaxStatus.hideStatus();return;}
223 if(res.access=='yes'){if(typeof res.limit_error!="undefined"){var alert_msg=CAL.lbl_repeat_limit_error;alert(alert_msg.replace("\$limit",res.limit));CAL.get("title-cal-edit").innerHTML=CAL.lbl_edit;ajaxStatus.hideStatus();CAL.enable_buttons();return;}
224 CAL.add_item(res);CAL.editDialog.cancel();CAL.update_vcal();ajaxStatus.hideStatus();}else{alert(CAL.lbl_error_saving);ajaxStatus.hideStatus();}},failure:function(){alert(CAL.lbl_error_saving);ajaxStatus.hideStatus();}};var url="index.php?module=Calendar&action=SaveActivity&sugar_body_only=true";YAHOO.util.Connect.setForm(CAL.get("CalendarEditView"));YAHOO.util.Connect.asyncRequest('POST',url,callback,false);}
225 CAL.remove_all_recurrences=function(){if(confirm(CAL.lbl_confirm_remove_all_recurring)){if(CAL.get("repeat_parent_id").value!=''){CAL.get("record").value=CAL.get("repeat_parent_id").value;}
226 CAL.get("edit_all_recurrences").value=true;CAL.dialog_remove();}}
227 CAL.dialog_remove=function(){CAL.deleted_id=CAL.get("record").value;CAL.deleted_module=CAL.get("current_module").value;var remove_all_recurrences=CAL.get("edit_all_recurrences").value;var isRecurrence=false;if(CAL.enable_repeat){if(CAL.get("repeat_parent_id").value!=''){var isRecurrence=true;}else{if(document.CalendarRepeatForm.repeat_type.value!=''){var isRecurrence=true;}}}
228 var callback={success:function(o){try{res=eval("("+o.responseText+")");}catch(err){alert(CAL.lbl_error_saving);CAL.editDialog.cancel();ajaxStatus.hideStatus();return;}
229 var e,cell_id;if(e=CAL.get(CAL.deleted_id))
230 cell_id=e.parentNode.id;if(CAL.view=='shared'){if(remove_all_recurrences&&isRecurrence){CAL.refresh();}else{CAL.remove_shared(CAL.deleted_id,remove_all_recurrences);}}else{if(e=CAL.get(CAL.deleted_id)){e.parentNode.removeChild(e);CAL.destroy_ui(CAL.deleted_id);}
231 CAL.basic.remove({record:CAL.deleted_id,user_id:CAL.current_user_id});if(CAL.enable_repeat&&remove_all_recurrences&&isRecurrence){CAL.refresh();}}
232 CAL.records_openable=true;CAL.disable_creating=false;CAL.arrange_advanced();CAL.basic.populate_grid();CAL.fit_grid();},failure:function(){alert(CAL.lbl_error_saving);}};var data={"current_module":CAL.deleted_module,"record":CAL.deleted_id,"remove_all_recurrences":remove_all_recurrences};var url="index.php?module=Calendar&action=Remove&sugar_body_only=true";YAHOO.util.Connect.asyncRequest('POST',url,callback,CAL.toURI(data));CAL.editDialog.cancel();}
233 CAL.refresh=function(){var callback={success:function(o){try{var activities=eval("("+o.responseText+")");}catch(err){alert(CAL.lbl_error_saving);ajaxStatus.hideStatus();return;}
234 CAL.each(activities,function(i,v){CAL.add_item_to_grid(activities[i]);});CAL.arrange_advanced();CAL.basic.populate_grid();CAL.fit_grid();CAL.update_dd.fire();}}
235 var data={"view":CAL.view,"year":CAL.year,"month":CAL.month,"day":CAL.day};var url="index.php?module=Calendar&action=getActivities&sugar_body_only=true";YAHOO.util.Connect.asyncRequest('POST',url,callback,CAL.toURI(data));CAL.clear();}
236 CAL.clear=function(){CAL.basic.items={};var nodes=CAL.query("#cal-grid div.act_item");CAL.each(nodes,function(i,v){nodes[i].parentNode.removeChild(nodes[i]);});}
237 CAL.show_additional_details=function(id){var obj=CAL.get(id);var record=obj.getAttribute("record");var module_name=obj.getAttribute("module_name");SUGAR.util.getAdditionalDetails(module_name,record,'div_'+id,true);return;}
238 CAL.clear_additional_details=function(id){if(typeof SUGAR.util.additionalDetailsCache[id]!="undefined")
239 SUGAR.util.additionalDetailsCache[id]=undefined;if(typeof SUGAR.util.additionalDetailsCalls[id]!="undefined")
240 SUGAR.util.additionalDetailsCalls[id]=undefined;}
241 CAL.toggle_shared_edit=function(){var sd=CAL.get("shared_cal_edit");if(!CAL.sharedDialog){CAL.sharedDialog=new YAHOO.widget.Dialog("shared_cal_edit",{fixedcenter:true,draggable:false,visible:false,modal:true,close:true});var listeners=new YAHOO.util.KeyListener(document,{keys:27},{fn:function(){CAL.sharedDialog.cancel();}});CAL.sharedDialog.cfg.queueProperty("keylisteners",listeners);}
242 CAL.sharedDialog.cancelEvent.subscribe(function(e,a,o){});sd.style.display="block";CAL.sharedDialog.render();CAL.sharedDialog.show();}
243 CAL.goto_date_call=function(){var date_string=CAL.get("goto_date").value;var date_arr=[];date_arr=date_string.split("/");window.location.href="index.php?module=Calendar&view="+CAL.view+"&day="+date_arr[1]+"&month="+date_arr[0]+"&year="+date_arr[2];}
244 CAL.check_forms=function(){if(!(check_form('CalendarEditView')&&cal_isValidDuration())){CAL.select_tab("cal-tab-1");return false;}
245 if(CAL.enable_repeat&&CAL.get("edit_all_recurrences").value!=""){lastSubmitTime=lastSubmitTime-2001;if(!check_form('CalendarRepeatForm')){CAL.select_tab("cal-tab-3");return false;}}
246 return true;}
247 CAL.toURI=function(a){t=[];for(x in a){if(!(a[x].constructor.toString().indexOf('Array')==-1)){for(i in a[x])
248 t.push(x+"[]="+encodeURIComponent(a[x][i]));}else
249 t.push(x+"="+encodeURIComponent(a[x]));}
250 return t.join("&");}
251 CAL.each=function(object,callback){if(typeof object=="undefined")
252 return;var name,i=0,length=object.length,isObj=(length===undefined)||(typeof(object)==="function");if(isObj){for(name in object){if(callback.call(object[name],name,object[name])===false){break;}}}else{for(;i<length;){if(callback.call(object[i],i,object[i++])===false){break;}}}
253 return object;}
254 CAL.clone=function(o){var c=new Object();for(var e in o)
255 c[e]=o[e];return c;}
256 CAL.contains=function(a,obj){var i=a.length;while(i--)
257 if(a[i]===obj)
258 return true;return false;}
259 CAL.update_vcal=function(){var v=CAL.current_user_id;var callback={success:function(result){if(typeof GLOBAL_REGISTRY.freebusy=='undefined'){GLOBAL_REGISTRY.freebusy=new Object();}
260 if(typeof GLOBAL_REGISTRY.freebusy_adjusted=='undefined'){GLOBAL_REGISTRY.freebusy_adjusted=new Object();}
261 GLOBAL_REGISTRY.freebusy[v]=SugarVCalClient.parseResults(result.responseText,false);GLOBAL_REGISTRY.freebusy_adjusted[v]=SugarVCalClient.parseResults(result.responseText,true);SugarWidgetScheduler.update_time();}};var url="vcal_server.php?type=vfb&source=outlook&user_id="+v;YAHOO.util.Connect.asyncRequest('GET',url,callback,false);}
262 CAL.fit_grid=function(control_call){if(CAL.view=='year'){return;}
263 var container_width=document.getElementById("cal-width-helper").offsetWidth;var left_column_width=53;var scroll_padding=0;if(CAL.print){if(CAL.view=="day")
264 container_width=720;else
265 container_width=800;}
266 else{var is_scrollable=document.getElementById("cal-scrollable");if(is_scrollable){scroll_padding=30;}}
267 var data_width=container_width-left_column_width-scroll_padding;var num_columns;if(CAL.view=="day"){num_columns=1;if(typeof control_call=="undefined"||!control_call){setTimeout(function(){CAL.fit_grid(true);setTimeout(function(){CAL.fit_grid(true);},100);},100);}}else{num_columns=7;}
268 var columns_width=CAL.calculate_columns_width(data_width,num_columns);var cell_nodes=CAL.query("#cal-grid div.col");CAL.each(cell_nodes,function(i)
269 {cell_nodes[i].style.width=columns_width[i%num_columns]+"px";});document.getElementById("cal-grid").style.visibility="";};CAL.calculate_columns_width=function(width,count)
270 {var result=[];var integer=Math.floor(width / count);var remainder=width-count*integer;var dispensed=0;for(var i=1,value;i<=count;i++)
271 {value=integer;if(dispensed*count<i*remainder){value++;dispensed++;}
272 result.push(value);}
273 return result;};YAHOO.util.DDCAL=function(id,sGroup,config){this.cont=config.cont;YAHOO.util.DDCAL.superclass.constructor.apply(this,arguments);}
274 YAHOO.extend(YAHOO.util.DDCAL,YAHOO.util.DD,{cont:null,init:function(){YAHOO.util.DDCAL.superclass.init.apply(this,arguments);this.initConstraints();CAL.update_dd.subscribe(function(type,args,dd){dd.resetConstraints();dd.initConstraints();},this);},initConstraints:function(){var region=YAHOO.util.Dom.getRegion(this.cont);var el=this.getEl();var xy=YAHOO.util.Dom.getXY(el);var width=parseInt(YAHOO.util.Dom.getStyle(el,'width'),10);var height=parseInt(YAHOO.util.Dom.getStyle(el,'height'),10);var left=xy[0]-region.left;var right=region.right-xy[0]-width;var top=xy[1]-region.top;var bottom=region.bottom-xy[1]-height;if(xy){this.setXConstraint(left,right);this.setYConstraint(top,bottom);}}});CAL.remove_edit_dialog();var cal_loaded=true;