type("TimetableFilterList",["CheckPopupWidget"],{draw:function(x,y){return this.CheckPopupWidget.prototype.draw.call(this,x,y,300,{position:'fixed',left:pixels(x),bottom:pixels(y)});}},function(filterName,timetableDrawer,chainElements,noOptionsMessage){var filterObject=TimetableDefaults.filters[filterName].filter;var optionStates=filterObject.getOptionStates();var optionNames=filterObject.getOptionNames();var optionColors=filterObject.getOptionColors();var optionTextColors=filterObject.getOptionTextColors();optionStates.observe(function(){if(!timetableDrawer.preventRedraw)
timetableDrawer.setLoading(true,timetableDrawer.redraw);});this.CheckPopupWidget(optionNames,optionStates,optionColors,optionTextColors,chainElements,noOptionsMessage);});type("TimetableFilterMenu",["PopupMenu"],{},function(triggerElement,timetableDrawer){var menu={};var self=this;each(TimetableDefaults.filters,function(value,key){menu[value.name]=new TimetableFilterList(key,timetableDrawer,[triggerElement,self],'No '+key+'s found');});this.PopupMenu(menu,[triggerElement]);this.timetableDrawer=timetableDrawer;});type("Filter",[],{getOptionNames:function(){return this.options;},getOptionStates:function(){return this.optionStates;},getOptionColors:function(){return this.optionColors;},getOptionTextColors:function(){return this.optionTextColors;},setData:function(data,day){this.data=data;this.day=day;this.computeOptions();},computeOptions:function(){var self=this;this.options.clear();this.optionStates.clear();var dayData=this.data[this.day];if(this.day=='all'){each(this.data,function(dayData,day){each(dayData,function(entryData,entry){self.processEvent(entryData,entry);});});}else{each(dayData,function(entryData,entry){self.processEvent(entryData,entry);});}},reset:function(){var self=this;each(this.options,function(value,id){self.resetEvent(id);});}},function(){this.options=new WatchObject();this.optionStates=new WatchObject();this.optionColors=new WatchObject();this.optionTextColors=new WatchObject();});type("SessionFilter",["Filter"],{apply:function(event){var show=true;this.optionStates.each(function(value,key){if(event.entryType=='Session'&&key==event.sessionId){if(!value){show=false;}}});return show;},processEvent:function(entryData,entry){var self=this;if(entryData.entryType=='Session'){self.options.set(entryData.sessionId,entryData.title);self.optionStates.set(entryData.sessionId,true);self.optionColors.set(entryData.sessionId,entryData.color);self.optionTextColors.set(entryData.sessionId,entryData.textColor);}},resetEvent:function(entry){this.optionStates.set(entry,true);}},function(){this.Filter();});type("RoomFilter",["Filter"],{apply:function(event){var show=true;this.optionStates.each(function(value,key){if(event.room==key){if(!value){show=false;}}});return show;},processEvent:function(entryData,entry){var self=this;if(exists(entryData.room)&&trim(entryData.room)!==''){self.options.set(entryData.room,entryData.room);self.optionStates.set(entryData.room,true);}},resetEvent:function(entry){this.optionStates.set(entry,true);}},function(){this.Filter();});type("TimeTableFilter",["IWidget"],{draw:function(){var self=this;var content=Html.div('content clearfix');var closeButton=Html.div('closeButton');closeButton.observeClick(function(e){if(self.closeHandler())
self.show(false);});content.append(closeButton);this.tableRow=Html.tr();content.append(Html.table({cellPadding:0,cellSpacing:1,border:0},Html.tbody({},this.tableRow)));var sessionsLink=Html.span('dropUpMenu fakeLink',$T('Sessions'));var sessionsMenu=new TimetableFilterList('session',self.timetableDrawer,[sessionsLink],$T('No sessions in the timetable'));this.setUpFilterMenu(sessionsLink,sessionsMenu);var roomsLink=Html.span('dropUpMenu fakeLink',$T('Rooms'));var roomsMenu=new TimetableFilterList('room',self.timetableDrawer,[roomsLink],$T('No rooms found in the timetable'));this.setUpFilterMenu(roomsLink,roomsMenu);this.tableRow.insert(Html.td({style:{width:'90px',color:'#777',fontWeight:'bold'}},$T('Filter options')));var resetButton=Html.input('button',{style:{cssFloat:'right',marginRight:'50px'}},$T('Reset filter'));resetButton.observeClick(function(){each(TimetableDefaults.filters,function(TTfilter){TTfilter.filter.reset()});});this.tableRow.append(Html.td({style:{width:'auto'}},resetButton));this.div.append(content);this.height=this.div.dom.offsetHeight;this.setPos(-this.height);this.div.dom.style.visibility='visible';},setUpFilterMenu:function(link,menu)
{var self=this;this.tableRow.append(Html.td({},link));link.observeClick(function(){if(menu.active){menu.close();return;}
var pos=link.getAbsolutePosition();menu.open(pos.x-30,self.height);});},move:function(direction,limit,curState,xPos,i){var self=this;if(!exists(curState)||!exists(xPos)||!exists(i)){var xPos=self.curXPos;var i=0;var curState=self.state;}
if(curState!=self.state)
return;xPos=xPos+(++i*direction);if(direction*xPos>=(direction*limit)){self.setPos(limit);return;}
self.setPos(xPos);setTimeout(function(){self.move(direction,limit,curState,xPos,i);},20);},show:function(show){this.state.set(!this.state.get());if(show)
this.move(1,0);else
this.move(-1,-this.height);},toggle:function(){this.show(!this.state.get())},setPos:function(pos){this.curXPos=pos;this.div.dom.style.bottom=pixels(pos);}},function(timetableDrawer,closeHandler){var self=this;this.timetableDrawer=timetableDrawer;this.closeHandler=closeHandler;this.state=new WatchValue(false);this.div=Html.div({className:'timetableFilter',style:{visibility:"hidden"}});$E(document.body).append(this.div);});type("TimetableLayoutManager",[],{_buildCheckpointTable:function(data){checkpoints={};var addCheckpoint=function(key,time,type,sessionId){if(!checkpoints[time]){checkpoints[time]=[];}
checkpoints[time].push([key,type,sessionId]);};var orderedKeys=keys(data);orderedKeys.sort(function(e1,e2){if(exists(data[e1].sessionCode)&&exists(data[e2].sessionCode)){var byCode=SortCriteria.Integer(data[e1].sessionCode,data[e2].sessionCode);if(byCode!=0){return byCode;}}
return SortCriteria.Integer(e1,e2);});each(orderedKeys,function(key){var value=data[key];sTime=value.startDate.time.replace(/:/g,'');eTime=value.endDate.time.replace(/:/g,'');if(value.isPoster&&value.duration>(TimetableDefaults.wholeDay*60)){addCheckpoint(key,sTime,'wholeday',value.sessionId);}
else{addCheckpoint(key,sTime,'start',value.sessionId);if(eTime>=sTime){addCheckpoint(key,eTime,'end');}else if(eTime=='000000'){addCheckpoint(key,'240000','end');}
else{addCheckpoint(key,'nextday','end');}}});return checkpoints;},pointsBetween:function(hStart,hEnd){var result=[];each(checkpoints,function(points,time){if((hStart=='nextday'&&time=='nextday')||(hStart!='nextday'&&time>hStart&&time<hEnd))
{result=concat(result,points);}});return result;},assign:function(assigned,block){var ks=keys(assigned);ks.sort();for(key in ks){if(!assigned[key]){block.assigned=key;assigned[key]=block;return;}}
var newElem=ks.length;block.assigned=newElem;assigned[newElem]=block;},reorderAssigned:function(assigned,lastAssigned,currentGroup){var correctlyAssigned=function(block){return exists(lastAssigned[block.sessionId])&&lastAssigned[block.sessionId].col==block.assigned;};var numAssignedBlocks=function(sessionId){var blocks=lastAssigned[sessionId].blocks;var keyss=keys(blocks);var length=keyss.length;return length;};var lastAssign=function(block,col){if(!exists(lastAssigned[block.sessionId])){lastAssigned[block.sessionId]={'blocks':{}};}
if(col!==undefined){lastAssigned[block.sessionId].col=col;}
lastAssigned[block.sessionId].blocks[block.id]=true;};var reassign=function(block,col){block.assigned=col;assigned[col]=block;if(!exists(block.sessionId)){lastAssign(block,col);}};for(key in currentGroup){var block=currentGroup[key];if(!exists(block.sessionId)){continue;}
if(!exists(lastAssigned[block.sessionId])){lastAssign(block,block.assigned);continue;}
lastAssign(block);if(correctlyAssigned(block)){continue;}
var preferedCol=lastAssigned[block.sessionId].col;var existingBlock=assigned[preferedCol];if(!existingBlock){continue;}
if(!exists(existingBlock.sessionId)||!exists(lastAssigned[existingBlock.sessionId])||numAssignedBlocks(block.sessionId)>numAssignedBlocks(existingBlock.sessionId)){if(existingBlock.start==block.start){reassign(existingBlock,block.assigned);reassign(block,preferedCol);}}}},getBlock:function(blocks,key){var block;if(blocks[key]){block=blocks[key];}else{block=blocks[key]={id:key,collapsed:false};}
return block;},addWholeDayBlock:function(blocks,key){block=blocks[key]={id:key};},getNumColumnsForGroup:function(group){return group[1];},getHeader:function(){return null;},shouldShowRoom:function(){return true;},reorderColumns:function(){}});type("IncrementalLayoutManager",["TimetableLayoutManager"],{drawDay:function(data,detailLevel,startTime,endTime){var self=this;this.eventData=data;this.detailLevel=any(detailLevel,'session');var checkpoints=this._buildCheckpointTable(data);var ks=keys(checkpoints);ks.sort();var startingHour,endingHour;if(ks.length>1){startingHour=parseInt(ks[0].substring(0,2),10);var last=ks.length-1;while(!endingHour&&last>=0){endingHour=parseInt(ks[last].substring(0,2),10);last--;}}else{startingHour=parseInt(any(startTime,'8:00').split(':')[0],10);endingHour=parseInt(any(endTime,'17:00').split(':')[0],10);}
var endMin;var algData={grid:[],assigned:{},blocks:{},active:0,currentGroup:[],topPx:0,groups:[],extraPx:{},lastAssigned:{},wholeDayBlocks:{}};var hEnd;for(var minutes=0;minutes<((endingHour+1-startingHour)*60);minutes+=TimetableDefaults.resolution){var startMin=(startingHour*60+minutes);endMin=(startingHour*60+minutes+TimetableDefaults.resolution);var hStart=zeropad(parseInt(startMin/60,10))+''+zeropad(startMin%60);hEnd=zeropad(parseInt(endMin/60,10))+''+zeropad(endMin%60);self.processTimeBlock(hStart,hEnd,startMin,minutes,algData);}
if($L(ks).indexOf('nextday')!==null){self.processTimeBlock('nextday','nextday',(startingHour*60+minutes),minutes,algData);}else{algData.grid.push([(endMin/60)%24,algData.topPx]);}
var counter=0;each(algData.groups,function(group){self.reorderColumns(group[0]);each(group[0],function(block){block.group=counter;});counter++;});return[algData.topPx,algData.grid,algData.blocks,algData.groups,algData.wholeDayBlocks];}});type("CompactLayoutManager",["IncrementalLayoutManager"],{processTimeBlock:function(hStart,hEnd,startMin,minutes,algData){var self=this;var points=self.pointsBetween(hStart,hEnd);var incrementPx=0;var block;var smallBlockList=[];var pxStep=Math.floor(TimetableDefaults.layouts.compact.values.pxPerHour*TimetableDefaults.resolution/60);each(points,function(point){if(point[1]=='end'){block=self.getBlock(algData.blocks,point[0]);block.end=algData.topPx;if(algData.assigned[block.assigned]){algData.active--;algData.assigned[block.assigned]=null;var diff=TimetableDefaults.layouts.compact.values.minPxPerBlock-(block.end-block.start);if(diff>0){block.end+=diff;incrementPx=diff>incrementPx?diff:incrementPx;algData.topPx+=incrementPx;}
if(hStart=='nextday'){block.end+=hStart=='nextday'?20:0;block.unfinished=true;}}else{smallBlockList.push(block);}}});if(minutes%60===0){algData.grid.push([startMin/60%24,algData.topPx]);}
if(!algData.active){if(algData.currentGroup.length>0){algData.groups.push([algData.currentGroup,keys(algData.assigned).length]);algData.currentGroup=[];algData.assigned={};}}
var blockAdded=false;each(points,function(point){if(point[1]=='start'){blockAdded=true;block=self.getBlock(algData.blocks,point[0]);block.sessionId=point[2];block.start=algData.topPx;algData.active++;self.assign(algData.assigned,block);algData.currentGroup.push(block);}else if(point[1]=='wholeday'){self.addWholeDayBlock(algData.wholeDayBlocks,point[0]);}});if(blockAdded){self.reorderAssigned(algData.assigned,algData.lastAssigned,algData.currentGroup);}
if(algData.active>0){var extraPx=0;each(algData.extraPx,function(value,key){if(value>extraPx){extraPx=value;}});algData.topPx+=pxStep+extraPx;}else{algData.topPx+=TimetableDefaults.layouts.compact.values.pxPerSpace;}
each(smallBlockList,function(block){block.end=block.start+TimetableDefaults.layouts.compact.values.minPxPerBlock;algData.topPx+=TimetableDefaults.layouts.compact.values.minPxPerBlock;algData.assigned[block.assigned]=null;algData.active--;});}});type("ProportionalLayoutManager",["IncrementalLayoutManager"],{processTimeBlock:function(hStart,hEnd,startMin,minutes,algData){var self=this;var points=self.pointsBetween(hStart,hEnd);var incrementPx=0;var block;var pxStep=Math.floor(TimetableDefaults.layouts.proportional.values.pxPerHour*TimetableDefaults.resolution/60);var smallBlocks=[];each(points,function(point){if(point[1]=='end'){block=self.getBlock(algData.blocks,point[0]);block.end=algData.topPx;if(algData.assigned[block.assigned]){algData.active--;algData.assigned[block.assigned]=null;var diff=TimetableDefaults.layouts.proportional.values.minPxPerBlock-(block.end-block.start);if(diff>0){block.end+=diff;block.collapsed=true;algData.topPx+=diff;}
if(hStart=='nextday'){block.end+=hStart=='nextday'?20:0;block.unfinished=true;}}else{smallBlocks.push(block);}}});if(minutes%60===0){algData.grid.push([startMin/60%24,algData.topPx]);}
if(!algData.active){if(algData.currentGroup.length>0){algData.groups.push([algData.currentGroup,keys(algData.assigned).length]);algData.currentGroup=[];algData.assigned={};}}
each(points,function(point){if(point[1]=='start'){block=self.getBlock(algData.blocks,point[0]);block.start=algData.topPx;algData.active++;self.assign(algData.assigned,block);algData.currentGroup.push(block);}});each(smallBlocks,function(block){algData.active--;algData.assigned[block.assigned]=null;block.collapsed=true;block.end=algData.topPx+TimetableDefaults.layouts.proportional.values.minPxPerBlock;});if(smallBlocks.length>0){algData.topPx+=TimetableDefaults.layouts.proportional.values.minPxPerBlock;}
algData.topPx+=pxStep;}});type("RoomLayoutManager",["CompactLayoutManager"],{drawDay:function(data,detailLevel,startTime,endTime){this.roomsCols={};return this.CompactLayoutManager.prototype.drawDay.call(this,data,detailLevel,startTime,endTime);},assign:function(assigned,block){var roomName=this.eventData[block.id].room;var col=0;if(!exists(this.roomsCols[roomName])){if(trim(roomName)!==""){col=this.roomsCols[roomName]=keys(this.roomsCols).length;}}else{col=this.roomsCols[roomName];}
block.assigned=col;assigned[col]=block;},reorderColumns:function(currentGroup){var self=this;var roomNames=keys(this.roomsCols);roomNames.sort();this.roomsCols={};var counter=0;each(roomNames,function(name){self.roomsCols[name]=counter;counter++;});for(key in currentGroup){var block=currentGroup[key];var roomName=this.eventData[block.id].room;var col=0;if(trim(roomName)!==""){col=this.roomsCols[roomName];}
block.assigned=col;}},getNumColumnsForGroup:function(group){if(group[0].length==1&&this.eventData[group[0][0].id].room===""){return 1;}else{return keys(this.roomsCols).length;}},getHeader:function(width){var roomNames=keys(this.roomsCols);var cols=roomNames.length;var borderPixels=1;return Html.div({style:{marginLeft:pixels(TimetableDefaults.leftMargin),paddingBottom:pixels(10),paddingTop:pixels(10)}},translate(roomNames,function(key){return Html.div({className:"headerRoomLayoutTimeTable",style:{width:pixels(Math.floor((width-TimetableDefaults.leftMargin)/cols)-borderPixels)}},key);}));},shouldShowRoom:function(){return false;}},function(){this.roomsCols={};});type("PosterLayoutManager",["TimetableLayoutManager"],{drawDay:function(data,detailLevel){return data;}});var TimetableDefaults={topMargin:30,bottomMargin:40,leftMargin:55,rightMargin:5,resolution:1,menuWidth:150,blockMargin:4,wholeDay:7,minContribHeight:20,layouts:{'compact':{name:"Compact",values:{pxPerHour:60,pxPerSpace:2,minPxPerBlock:50},manager:new CompactLayoutManager()},'proportional':{name:'Proportional',values:{pxPerHour:50,minPxPerBlock:25},manager:new ProportionalLayoutManager()},'poster':{name:'Poster',manager:new PosterLayoutManager()},'room':{name:'Room',manager:new RoomLayoutManager()}},filters:{'session':{name:$T('Session'),filter:new SessionFilter()},'room':{name:$T('Room'),filter:new RoomFilter()}}};type("TimeTable",["HistoryListener"],{_draw:function(timetableDiv){return Html.div({style:{width:this.width}},this.header,timetableDiv,this.loadingIndicator);},_getMenu:function(){return Html.div();},postDraw:function(){this.timetableDrawer.postDraw();this.LookupTabWidget.prototype.postDraw.call(this);},getData:function(){return this.data;},getById:function(id){var info=Util.parseId(id);var type=info[0];var compositeId="";info=info.slice(2);if(type=='Conference'){return this.eventInfo;}
else if(type=='Contribution'){throw'not implemented!';}else if(type=='Session'){return this.eventInfo.sessions[info[0]];}else if(type=='SessionSlot'){compositeId='s'+info[0]+'l'+info[1];}else{throw'unrecognized id!';}
for(day in this.data){if(this.data[day][compositeId]){return this.data[day][compositeId];}}},getTimetableDrawer:function(){return this.timetableDrawer;},setData:function(data,intervalData,startTime,endTime){this.timetableDrawer.setData(data,startTime,endTime);},_createLoadingIndicator:function(){return Html.div('timetableLoading',$T('Updating the timetable...'));},_getHeader:function(){return Html.div({});},_functionButtons:function(){return[];}},function(data,width,wrappingElement,detailLevel,managementMode){var self=this;this.data=data;this.enabled=true;this.processedWarnings=new WatchList();this.width=width;this.loadingIndicator=this._createLoadingIndicator();this.header=this._getHeader();});type("DisplayTimeTable",["TimeTable"],{filterMenu:function(){var self=this;var filterLink=Html.a({href:'#'},$T("Filter"));this.filterMenu=new TimetableFilterMenu(filterLink,self.timetableDrawer);filterLink.observeClick(function(e){var pos=filterLink.getAbsolutePosition();self.filterMenu.open(pos.x+filterLink.dom.offsetWidth,pos.y);return false;});return Html.ul({className:"inner",style:{display:'none'}},Html.li("menuConfMiddleCell",filterLink));},printMenu:function(){var self=this;var printLink=Html.a({href:'#'},$T("Printable version"));printLink.observeClick(function(e){self.print();});return Html.ul({className:"inner",style:{display:'none'}},Html.li("menuConfMiddleCell",printLink));},print:function(){var self=this;var bodyPadding=$E(document.body).dom.style.padding;var timetableElements=translate(self.timetableDrawer.canvas.dom.childNodes,function(value){return $E(value);});var elements=translate($E(document.body).dom.childNodes,function(value){return $E(value);});var goBackLink=Html.a({href:window.location.hash,style:{fontSize:'17px'}},$T('Go back'));var printLink=Html.a({href:window.location.hash,style:{fontSize:'17px'}},$T('Print'));var links=Html.span({style:{cssFloat:'right'}},printLink,' | ',goBackLink);var headerStyle={padding:'0px 5px 5px 5px',borderBottom:'1px solid black',textAlign:'center',width:pixels(self.timetableDrawer.width)};var header=Html.div({className:'timetableHeader clearfix',style:headerStyle},links,Html.span({style:{cssFloat:'left'}},self._titleTemplate(self.timetableDrawer.day)));goBackLink.observeClick(function(e){self.timetableDrawer.setPrintableVersion(false);$E(document.body).setStyle('padding',bodyPadding);$E(document.body).set(elements);});printLink.observeClick(function(e){window.print();});var timetableDiv=Html.div({style:{paddingTop:pixels(20),position:'relative'}},timetableElements);$E(document.body).set(header,timetableDiv);$E(document.body).setStyle('padding',pixels(30));},pdf:function(){window.location=Indico.Urls.ConfTimeTableCustomPDF+'?confId='+this.eventInfo.id+'&showDays=all&showSessions=all';},fullScreen:function(){var self=this;var bodyPadding=$E(document.body).dom.style.padding;var elements=translate($E(document.body).dom.childNodes,function(value){return $E(value);});IndicoUI.Dialogs.Util.progress($T("Switching to full screen mode..."));var goBackLink=Html.a({href:window.location.hash,style:{fontSize:'17px'}},$T('Go back'));var links=Html.span({style:{cssFloat:'right'}},goBackLink);self.previousWidth=self.timetableDrawer.width;goBackLink.observeClick(function(e){IndicoUI.Dialogs.Util.progress($T("Switching to normal mode..."));setTimeout(function(){self.timetableDrawer.width=self.previousWidth;self.timetableDrawer.setPrintableVersion(false);$E(document.body).setStyle('padding',bodyPadding);$E(document.body).set(elements);self.timetableDrawer.redraw(self.currentDay);},50);});setTimeout(function(){self.timetableDrawer.width=$E(document.body).dom.clientWidth-50;var headerStyle={padding:'0px 5px 5px 5px',borderBottom:'1px solid black',textAlign:'center',width:pixels(self.timetableDrawer.width)};var header=Html.div({className:'timetableHeader clearfix',style:headerStyle},links,Html.span({style:{cssFloat:'left'}},self._titleTemplate(self.timetableDrawer.day)));self.timetableDrawer.redraw(self.currentDay);var timetableElements=translate(self.timetableDrawer.canvas.dom.childNodes,function(value){return $E(value);});var timetableDiv=Html.div({style:{width:pixels(self.timetableDrawer.width),paddingTop:pixels(20),position:'relative'}},timetableElements);$E(document.body).set(header,timetableDiv);$E(document.body).setStyle('padding',pixels(30));},50);},_filterSetup:function(){var self=this;this.filter=new TimeTableFilter(this.timetableDrawer,function(){self.filterButtonContainer.dom.style.background="";return true;});this.filter.draw();},toggleDetailedView:function(){var detailLevel=this.timetableDrawer.detail.get();var newDetailLevel=detailLevel=='contribution'?'session':'contribution';this.timetableDrawer.detail.set(newDetailLevel);var state=(newDetailLevel=='contribution');this.inDetailedMode=state;this.detailsButton.btn.getParent().dom.style.background=state?"#9F883B":"";this._addToHistory(this.currentDay+(state?'.detailed':''));},_functionButtons:function(){var self=this;this.printButton={'btn':Html.div('printButtonWhite',$T('Print')),'onclick':function(btnContainer){self.print();}};this.pdfButton={'btn':Html.div('buttonWhite',$T('PDF')),'onclick':function(btnContainer){self.pdf();}};this.fullScreenButton={'btn':Html.div('buttonWhite',$T('Full screen')),'onclick':function(btnContainer){self.fullScreen();}};this.linkButton=Html.div('linkButtonWhite',$T('Link'));this.detailsButton={'btn':Html.div('buttonWhite',Html.span({},$T('Detailed view'))),'onclick':function(){self.toggleDetailedView();}};this.filterButton={'btn':Html.div('buttonWhite',$T('Filter')),'onclick':function(btnContainer){self.filterButtonContainer=btnContainer;self.filter.toggle();var state=self.filter.state.get();btnContainer.dom.style.background=state?"#9F883B":"";}};return[this.printButton,this.pdfButton,this.fullScreenButton,this.detailsButton,this.filterButton];}},function(data,width,wrappingElement,detailLevel){this.TimeTable(data,width,wrappingElement,detailLevel,false);if(keys(data).length>1){this.data.all=data;}});type("TopLevelTimeTableMixin",["LookupTabWidget"],{draw:function(){return this.LookupTabWidget.prototype.draw.call(this);},getDays:function(){return this.sortedKeys;},disable:function(){this.enabled=false;this.LookupTabWidget.prototype.disable.call(this);},enable:function(){this.enabled=true;this.LookupTabWidget.prototype.enable.call(this);},_titleTemplate:function(text){if(text=='all'){return $T('All days');}
var day=text.substring(6,8);var month=text.substring(4,6);var strDate=day+'/'+month+'/'+text.substring(0,4);var delements=parseDate(strDate);var nDate=new Date(delements[2],delements[1]-1,delements[0]);return Indico.Data.WeekDays[nDate.getDay()].substring(0,3)+' '+day+'/'+month;},_parseDayInterval:function(hash){var m=hash.match(/#(\d{8}|all)(?:\.((?:s\d+l\d+)|detailed))?/);if(m){return[m[1],m[2]];}else{return[null,null];}},switchToInterval:function(intervalId){this.disable();var intervalInfo=this.data[this.currentDay][intervalId];var data=intervalInfo.entries;this.intervalTimeTable=new IntervalManagementTimeTable(this,data,intervalInfo,this.eventInfo,this.width.slice(0,-2),this.canvas,'contribution',this.isSessionTimetable);this.intervalTimeTable.setData(intervalInfo);var content=this.intervalTimeTable.draw()
this.canvas.set(content);this.menu.dom.style.display='none';},postDraw:function(){this.TimeTable.prototype.postDraw.call(this);var self=this;},switchToTopLevel:function(){this.enable();this.setSelectedTab(this.currentDay);this._drawContent();this.menu.dom.style.display='block';this.timetableDrawer.redraw();}},function(data,width,wrappingElement,detailLevel,managementActions,historyBroker,timetableLayoutId){var self=this;this.managementActions=managementActions;this.canvas=Html.div({});historyBroker.addListener(this);this.timetableDrawer=new TimetableDrawer(this,width,wrappingElement,detailLevel,this._functionButtons(),this.loadingIndicator,!!managementActions,managementActions,timetableLayoutId);this.sortedKeys=keys(this.data);this.sortedKeys.sort();var today=new Date();var todayStr=IndicoUtil.formatDate2(today);var originalHash=window.location.hash;var dayAndInterval=this._parseDayInterval(originalHash);var initialTab=null;if(dayAndInterval[0]){initialTab=dayAndInterval[0];}
if(initialTab===null){if(exists(data[todayStr])){initialTab=todayStr;}else{initialTab=this.sortedKeys[0];}}
this.currentDay=initialTab;this.LookupTabWidget(translate(this.sortedKeys,function(key){return[key,function(){detailed=self.inDetailedMode?'.detailed':'';self.currentDay=key;if(key=='all'){self._addToHistory('all'+detailed);return self._draw(self.timetableDrawer.drawAllDays());}else{if(!self.enabled){throw"stopDrawing";}
self._addToHistory(key+detailed);return self._draw(self.timetableDrawer.drawDay(key));}}];}),this.width,100,initialTab,this._functionButtons(),this.canvas);if(dayAndInterval[1]){var subref=dayAndInterval[1];setTimeout(function(){if(subref=='detailed'){self.toggleDetailedView();}else{self.switchToInterval(subref);}},500);}});type("IntervalTimeTableMixin",[],{draw:function(){this.parentTimetable._addToHistory(this.currentDay+'.'+this.contextInfo.id);return this._draw(this.timetableDrawer.drawDay(this.currentDay));},_getInfoBoxContent:function(){return Html.div({},Html.span({style:{fontStyle:'italic',fontSize:'0.9em'}},$T('You are viewing the contents of the interval:')),Html.div({style:{fontWeight:'bold',marginTop:'5px',fontSize:'1.3em'}},this._generateSlotTitle(this.contextInfo),Html.span({style:{fontWeight:'normal'}}," (",$B(Html.span({}),this.slotStartTime)," - ",$B(Html.span({}),this.slotEndTime),")")));},setData:function(data){var day=IndicoUtil.formatDate2(IndicoUtil.parseJsonDate(data.startDate));var ttData={};this.data=data.entries;this.slotStartTime=new WatchValue(data.startDate.time.substring(0,5));this.slotEndTime=new WatchValue(data.endDate.time.substring(0,5));ttData[day]=data.entries;this.currentDay=day;this.timetableDrawer.setData(ttData,day,data.isPoster);this.infoBox.set(this._getInfoBoxContent());},getDays:function(){return this.parentTimetable.getDays();},getById:function(id){return this.parentTimetable.getById(id);}},function(parent,width,wrappingElement,managementActions){this.managementActions=managementActions;this.parentTimetable=parent;this.timetableDrawer=new IntervalTimetableDrawer(this,width,wrappingElement,this._functionButtons(),this.loadingIndicator,!!managementActions,managementActions);});type("ManagementTimeTable",["TimeTable"],{_generateSlotTitle:function(slotData){return slotData.title+(slotData.slotTitle?": "+slotData.slotTitle:'');},_createInfoArea:function(){var closeButton=Html.div({className:'balloonPopupCloseButton',style:{position:'absolute',top:'10px',right:'10px',padding:'0px'}});var self=this;closeButton.observeClick(function(){self._hideWarnings();});return Html.div("timetableManagementInfoArea",Html.div({},$T("Your changes triggered the automatic modification of some settings:")),$B(Html.ul({}),this.processedWarnings,function(item){var title=item[4];var atoms=Util.parseId(item[1]);var message={OWNER_START_DATE_EXTENDED:{SessionSlot:$T('The <strong>starting time</strong> of the session interval <strong>')+title+$T('</strong> was moved from '),Session:$T('The <strong>starting time</strong> of the session interval <strong>')+title+$T('</strong> was moved from '),Conference:$T('The <strong>starting time</strong> of the <strong>Conference</strong> was moved from ')},OWNER_END_DATE_EXTENDED:{SessionSlot:$T('The <strong>ending time</strong> of the session interval <strong>')+title+$T('</strong> was moved from '),Session:$T('The <strong>ending time</strong> of the session interval <strong>')+title+$T('</strong> was moved from '),Conference:$T('The <strong>ending time</strong> of the <strong>Conference</strong> was moved from ')},ENTRIES_MOVED:{SessionSlot:$T('The contents of the interval <strong>')+title+$T('</strong> were moved from ')}}[item[0]][atoms[0]];var span=Html.span({style:{verticalAlign:'middle',marginLeft:'5px'}});span.dom.innerHTML=message+' <strong>'+item[3]+'</strong>'+$T(' to ')+'<strong>'+item[2]+'</strong>';return Html.li({},span);}),closeButton);},_processAutoOps:function(result){this._hideWarnings();var self=this;if(result.autoOps&&result.autoOps.length>0){each(result.autoOps,function(op){var warning=self._processWarning(op);if(warning&&self.processedWarnings.indexOf(warning)===null){self.warningArea.dom.style.display='block';self.processedWarnings.append(warning);}});}},_hideWarnings:function(){this.warningArea.dom.style.display='none';this.warnings.clear();this.processedWarnings.clear();},_processWarning:function(entry){var msg=entry[1];var finalTime=entry[3];var type=Util.parseId(entry[2])[0];var slot=null;var title="";var startTime="";var endTime="";if(type=="Session"){return null;}else if(type=='Conference'){conference=self.timetable.getById(entry[2]);title=conference.title;startTime=conference.startDate.time.slice(0,5);endTime=conference.endDate.time.slice(0,5);}else if(type=='SessionSlot'){slot=this.getById(entry[2]);startTime=slot.startDate.time.slice(0,5);endTime=slot.endDate.time.slice(0,5);title=this._generateSlotTitle(slot);}
if(msg=="OWNER_END_DATE_EXTENDED"){if(endTime!=finalTime){return concat(entry.slice(1),[endTime,title]);}}else if(msg=="OWNER_START_DATE_EXTENDED"){if(startTime!=finalTime){return concat(entry.slice(1),[startTime,title]);}}else{return concat(entry.slice(1),[startTime,title]);}
return null;},_getHeader:function(){var self=this;this.infoBox=Html.div({className:'timetableInfoBox'});if(this.contextInfo.isPoster){this.addMenuLink=Html.a({className:'fakeLink',style:{margin:'0 15px'}},'Add poster');this.addMenuLink.observeClick(function(){self.managementActions.addContribution();});}else{this.addMenuLink=Html.a({className:'dropDownMenu fakeLink',style:{margin:'0 15px'}},'Add new');this.addMenuLink.observeClick(function(){self.managementActions._openAddMenu(self.addMenuLink,self.contextInfo);});}
this.separator=Html.span({}," | ");this.rescheduleLink=Html.span({className:'fakeLink',style:{paddingLeft:pixels(15),paddingRight:pixels(15)}},$T('Reschedule'));this.rescheduleLink.observeClick(function(){var popup=new RescheduleDialog(self);popup.open();});this.addIntervalLink=Html.span({className:'fakeLink',style:{paddingLeft:pixels(15),paddingRight:pixels(15)}},$T('Add new block'));this.separator2=Html.span({}," | ");this.fitInnerTimetableLink=Html.span({className:'fakeLink',style:{paddingLeft:pixels(15),paddingRight:pixels(15)}},$T('Fit to content'));if(self.isSessionTimetable){this.addIntervalLink.observeClick(function(){self.managementActions.addSessionSlot(self.eventInfo.timetableSession);});}
this.fitInnerTimetableLink.observeClick(function(){var popup=new FitInnerTimetableDialog(self);popup.open();});this.warningArea=this._createInfoArea();this.warningArea.dom.style.display='none';this.menu=Html.div({style:{cssFloat:'right',color:'#777'}},this.getTTMenu(),this.addMenuLink,this.addIntervalLink,this.contextInfo.isPoster?null:this.separator,this.contextInfo.isPoster?null:this.rescheduleLink,this.contextInfo.isPoster?null:this.separator2,this.contextInfo.isPoster?null:this.fitInnerTimetableLink);return Html.div({},this.warningArea,Html.div('clearfix',this.menu,this.infoBox));}},function(data,contextInfo,eventInfo,width,wrappingElement,detailLevel){this.eventInfo=eventInfo;this.contextInfo=contextInfo;this.warnings=new WatchList();this.TimeTable(data,width,wrappingElement,detailLevel,true);});type("TopLevelDisplayTimeTable",["DisplayTimeTable","TopLevelTimeTableMixin"],{_retrieveHistoryState:function(hash){var currentDay=this._parseDayInterval(hash)[0];this.setSelectedTab(currentDay);}},function(data,contextInfo,width,wrappingElement,detailLevel,historyBroker,timetableLayoutId){this.DisplayTimeTable(data,width,wrappingElement,detailLevel);this.TopLevelTimeTableMixin(data,width,wrappingElement,detailLevel,null,historyBroker,timetableLayoutId);this.eventInfo=contextInfo;this._filterSetup();this.postDraw=TopLevelTimeTableMixin.prototype.postDraw;});type("TopLevelManagementTimeTable",["ManagementTimeTable","TopLevelTimeTableMixin"],{_deleteOldEntry:function(data,result,oldEntryId){var oldStartTime,oldEndTime,oldStartDate;if(result.entry.entryType=="Session"&&data[this.currentDay][result.id]){var slot=data[this.currentDay][result.entry.id];oldStartTime=slot.startDate.time.slice(0,5);oldEndTime=slot.endDate.time.slice(0,5);oldStartDate=slot.startDate.date.replaceAll('-','');}else{var entry=data[result.day][result.entry.id];oldStartTime=this.eventInfo.startDate.time.slice(0,5);oldEndTime=this.eventInfo.endDate.time.slice(0,5);oldStartDate=this.currentDay;}
var oldEntries=data[oldStartDate][oldEntryId]?data[oldStartDate][oldEntryId].entries:null;delete data[oldStartDate][oldEntryId];return oldEntries;},_updateEntry:function(result,oldEntryId,updateCycle){var data=this.getData();this._processAutoOps(result);var oldContent=this._deleteOldEntry(data,result,oldEntryId);if(updateCycle){updateCycle(data);}else{data[result.day][result.id]=result.entry;if(oldContent){data[result.day][result.id].entries=result.entry.entryType=="Session"?result.entry.entries:oldContent;}
if(result.session){this.eventInfo.sessions[result.session.id]=result.session;}}
if((result.day==this.eventInfo.endDate.date.replaceAll('-',''))&&(result.entry.endDate.time.replaceAll(':','')>this.eventInfo.endDate.time.replaceAll(':',''))){this.eventInfo.endDate.time=result.entry.endDate.time;}
this.timetableDrawer.redraw();},_updateDay:function(result){this._processAutoOps(result);var data=this.getData();var entry={};entry[result.id]=result.entry;extend(data,entry);if(exists(result.session)){this.eventInfo.sessions[result.session.id]=result.session;}
var latestTime=null;for(var key in result.entry){if(!latestTime||result.entry[key].endDate.time.replaceAll(':','')>latestTime.replaceAll(':','')){latestTime=result.entry[key].endDate.time;}}
if((result.day==this.eventInfo.endDate.date.replaceAll('-',''))&&(latestTime.replaceAll(':','')>this.eventInfo.endDate.time.replaceAll(':',''))){this.eventInfo.endDate.time=latestTime;}
this.timetableDrawer.redraw();},_updateMovedEntry:function(result,oldEntryId){this._updateEntry(result,oldEntryId,function(data){if(exists(result.slotEntry)){data[result.day][result.slotEntry.id].entries[result.id]=result.entry;data[result.day][result.slotEntry.id].startDate.time=result.slotEntry.startDate.time;data[result.day][result.slotEntry.id].endDate.time=result.slotEntry.endDate.time;}else{data[result.day][result.id]=result.entry;}});},_updateSessionData:function(sessionId,fields,newValues){var data=this.getData();for(day in data){for(entry in data[day]){if(data[day][entry]["entryType"]=="Session"&&data[day][entry]["sessionId"]==sessionId){for(i=0;i<fields.length;++i){data[day][entry][fields[i]]=newValues[i];}}}}
this.timetableDrawer.redraw();},_getInfoBoxContent:function(){return'';},getTTMenu:function(){this.separator2.dom.style.display="none";this.fitInnerTimetableLink.dom.style.display="none";if(this.isSessionTimetable){this.addMenuLink.dom.style.display="none";this.addIntervalLink.dom.style.display="inline";this.rescheduleLink.dom.style.display="none";this.separator.dom.style.display="none";}else{this.addIntervalLink.dom.style.display="none";}
return'';},_retrieveHistoryState:function(hash){var dayInterval=this._parseDayInterval(hash);var currentDay=dayInterval[0]||keys(this.data)[0];if(dayInterval[1]){this.setSelectedTab(dayInterval[0]);this.switchToInterval(dayInterval[1]);}else{this.switchToTopLevel();this.setSelectedTab(dayInterval[0]);}}},function(data,eventInfo,width,wrappingElement,detailLevel,historyBroker,isSessionTimetable){this.isSessionTimetable=isSessionTimetable;this.ManagementTimeTable(data,eventInfo,eventInfo,width,wrappingElement,detailLevel);var managementActions=new TopLevelTimeTableManagementActions(this,eventInfo,eventInfo,isSessionTimetable);this.TopLevelTimeTableMixin(data,width,wrappingElement,detailLevel,managementActions,historyBroker);this.postDraw=TopLevelTimeTableMixin.prototype.postDraw;});type("IntervalManagementTimeTable",["ManagementTimeTable","IntervalTimeTableMixin"],{_updateTimes:function(newStartTime,newEndTime){this.slotStartTime.set(newStartTime.slice(0,5));this.slotEndTime.set(newEndTime.slice(0,5));},_updateEntry:function(result,oldEntryId,updateCycle){var slot=this.contextInfo;var data=this.getData();delete this.parentTimetable.data[this.currentDay][slot.id].entries[oldEntryId];this._processAutoOps(result);if(updateCycle){updateCycle(this.parentTimetable.getData());}else{data[result.id]=result.entry;if(result.session){this.parentTimetable.eventInfo.sessions[result.session.id]=result.session;}
if(exists(result.slotEntry)){result.slotEntry.entries=slot.entries;this.parentTimetable.data[result.day][result.slotEntry.id]=result.slotEntry;this.contextInfo=result.slotEntry;}
this.parentTimetable.data[result.day][slot.id].entries[result.entry.id]=result.entry;this._updateTimes(result.slotEntry.startDate.time,result.slotEntry.endDate.time);}
this.timetableDrawer.redraw();},_updateMovedEntry:function(result,oldEntryId){this._updateEntry(result,oldEntryId,function(data){if(exists(result.slotEntry)){data[result.day][result.slotEntry.id].entries[result.id]=result.entry;data[result.day][result.slotEntry.id].startDate.time=result.slotEntry.startDate.time;data[result.day][result.slotEntry.id].endDate.time=result.slotEntry.endDate.time;}else{data[result.day][result.id]=result.entry;}});},_updateDay:function(result){this._processAutoOps(result);var slot=this.contextInfo;var day=result.id;var data=this.getData();extend(data,result.entry);if(exists(result.session)){this.parentTimetable.eventInfo.sessions[result.session.id]=result.session;}
if(exists(result.slotEntry)){result.slotEntry.entries=slot.entries;this.parentTimetable.data[result.day][result.slotEntry.id]=result.slotEntry;this.contextInfo=result.slotEntry;this._updateTimes(result.slotEntry.startDate.time,result.slotEntry.endDate.time);}
this.timetableDrawer.redraw();},getTTMenu:function(){var self=this;if(this.isSessionTimetable){this.addMenuLink.dom.style.display="inline";this.addIntervalLink.dom.style.display="none";this.separator2.dom.style.display="none";this.fitInnerTimetableLink.dom.style.display="none";this.rescheduleLink.dom.style.display="none";this.separator.dom.style.display="inline";}else{this.addIntervalLink.dom.style.display="none";}
var goBackLink=Html.span({},Html.a({className:'fakeLink',style:{fontWeight:'bold',margin:'0 15px'}},'Go back to timetable'),' | ');goBackLink.observeClick(function(){self.parentTimetable.switchToTopLevel();self._hideWarnings();self.session=null;});return goBackLink;}},function(parent,data,contextInfo,eventInfo,width,wrappingElement,detailLevel,isSessionTimetable){this.ManagementTimeTable(data,contextInfo,eventInfo,width,wrappingElement,detailLevel);var managementActions=new IntervalTimeTableManagementActions(this,eventInfo,contextInfo,isSessionTimetable);this.IntervalTimeTableMixin(parent,width,wrappingElement,managementActions);this.canvas=Html.div({});this.isPoster=contextInfo.isPoster;this.setData=IntervalTimeTableMixin.prototype.setData;this.getById=IntervalTimeTableMixin.prototype.getById;});type("SessionManagementTimeTable",["TopLevelManagementTimeTable"],{},function(data,eventInfo,width,wrappingElement,historyBroker){this.TopLevelManagementTimeTable(data,eventInfo,width,wrappingElement,'session',historyBroker,true);});type("SessionDisplayTimeTable",["TopLevelDisplayTimeTable"],{_functionButtons:function(){var self=this;this.TopLevelDisplayTimeTable.prototype._functionButtons.call(this);return[this.printButton,this.fullScreenButton,this.filterButton];}},function(data,eventInfo,width,wrappingElement,historyBroker){this.TopLevelDisplayTimeTable(data,eventInfo,width,wrappingElement,'contribution',historyBroker,null);});type("TimetableBlockBase",[],{truncateTitle:function(numChars,title){if(numChars>=title.length){return title;}
if(numChars<0){if(-numChars>=title.length){return title;}
if(numChars>=-3){numChars=-4;}
numChars=title.length+numChars;}
title=title.substring(0,numChars)+"...";return title;},openPopup:function(event){var self=this;if(self.popupActive||self.materialMenuOpen){return;}
self.popupActive=true;self.div.dom.style.cursor='default';var cursor=getMousePointerCoordinates(event);this.popup=self._drawPopup();this.popup.open(cursor.x,cursor.y);},closePopup:function(){var self=this;if(!self.popupActive){return;}
this.popup.close();},createMaterialMenu:function(material,triggerElement,closeHandler){var sections={};each(material,function(value){var section=value.title;var menuItems={};sections[section]=menuItems;each(value.resources,function(item){var name=item.name;menuItems[name?name:item.url]=item.url;});});var menu=new SectionPopupMenu(sections,[triggerElement],null,null,true,closeHandler);return menu;},createMaterialButton:function(material){var self=this;this.materialMenuOpen=false;var button=Html.div('timetableBlockMaterial');button.observeClick(function(e){self.materialMenuOpen=true;self.closePopup();button.dom.className="timetableBlockMaterial timetableBlockMaterialActive";var menu=self.createMaterialMenu(material,button,function(){button.dom.className="timetableBlockMaterial";self.materialMenuOpen=false;return true;});var pos=button.getAbsolutePosition();menu.open(pos.x+20,pos.y+18);});return button;},_getRightSideDecorators:function(){return Html.span({});},_formatConveners:function(conveners){if(conveners){return translate(conveners,function(conv){return conv.firstName+' '+
conv.familyName;}).join(', ');}else{return'';}}},function(timetable){this.timetable=timetable;this.popupActive=false;this.popupAllowClose=true;});type("TimetableBlockNormal",["TimetableBlockBase"],{_getTitle:function(){var title=this.eventData.title;if(this.eventData.slotTitle&&this.eventData.slotTitle!==""){title+=": "+this.eventData.slotTitle;}
return title;},_blockDescription:function(block,event){var self=this;this.titleDiv=Html.div({className:'timetableBlockTitle',style:{fontWeight:this.eventData.fontWeight}},this._getTitle());this.titleWrapper=Html.div({},this._getRightSideDecorators(),this.titleDiv);this.div=Html.div({style:{width:'100%',height:'100%'}},this.titleWrapper);if(this.compactMode){this.timeDiv=Html.div('timetableBlockTimeDiscreet',this.eventData.startDate.time.substring(0,5)+' - '+this.eventData.endDate.time.substring(0,5));this.div.insert(this.timeDiv);}else{if(this.eventData.startDate.time==this.eventData.endDate.time){this.timeDiv=Html.div({className:'timetableBlockTime'},this.eventData.startDate.time.substring(0,5));}else{this.timeDiv=Html.div({className:'timetableBlockTime'},this.eventData.startDate.time.substring(0,5)+' - '+this.eventData.endDate.time.substring(0,5));}
this.locationDiv=Html.div('timetableBlockLocation');var addComma=false;if(this.eventData.room&&this.timetable.getTimetableDrawer().layoutChooser.get().shouldShowRoom()){this.locationDiv.append(this.eventData.room);addComma=true;}
if(this.eventData.location){this.locationDiv.append(addComma?', ':'');this.locationDiv.append(this.eventData.location);}
if(self.eventData.presenters&&self.eventData.presenters.length>0){this.presentersDiv=Html.div({className:'timetableBlockPresenters'});this.presentersDiv.append(self.eventData.presenters[0].name);if(self.eventData.presenters.length>1){this.presentersDiv.append($T(' et al.'));}
this.titleWrapper.insert(this.presentersDiv);}
if(!self.managementActions&&self.eventData.material&&self.eventData.material.length>0){this.titleWrapper.insert(this.createMaterialButton(this.eventData.material));}
this.convenerDiv=Html.div('timetableBlockConvener',self._formatConveners(this.eventData.conveners));this.div.append(this.convenerDiv);this.div.append(this.timeDiv);this.div.append(this.locationDiv);}
return this.div;},redraw:function(){this.block.clear();this.block.set(this._blockDescription());},draw:function(leftPos,width){var self=this;this.leftPos=leftPos;this.width=width;this.height=this.blockData.end-this.blockData.start-3;this.topPos=this.blockData.start;var classTable={'Session':'timetableSession','Contribution':'timetableContribution','Break':'timetableBreak'};this.block=Html.div({style:{position:'absolute',top:pixels(this.topPos),height:pixels(this.height),backgroundColor:this.printableVersion?'white':this.eventData.color,color:this.printableVersion?'black':this.eventData.textColor,borderColor:this.printableVersion?'black':'',left:pixels(this.leftPos),width:pixels(this.width-3),borderBottomStyle:this.blockData.unfinished?'dashed':''},className:'timetableBlock '+classTable[this.eventData.entryType]},this._blockDescription());if(this.detailLevel=='contribution'&&this.eventData.isPoster&&this.height>30){var pileDiv=this.createPileEffect();pileDiv.dom.onmouseover=function(){};var numContribs=0;each(this.eventData.entries,function(value,key){if(value.entryType=='Contribution'){numContribs++;}});pileDiv.dom.onmouseover=function(event){if(self.popupActive){return;}
IndicoUI.Widgets.Generic.tooltip(pileDiv.dom,event,"<div style='padding:3px'>"+
$T('This poster session has ')+numContribs+$T(' contribution(s).')+"<br / >"+
$T('Please click for more information.')+"</div>");};}
if(!self.printableVersion){this.block.dom.style.cursor='pointer';this.block.observeClick(function(e){self.openPopup(e);});highlightWithMouse(this.div,this.block);showWithMouse(this.div,this.arrows);}
return this.block;},postDraw:function(hook){var self=this;var title=this._getTitle();var contentHeight=function(){var h=0;if(!self.compactMode){locationHeight=self.locationDiv.dom.style.display!='none'?self.locationDiv.dom.offsetHeight:0;timeHeight=self.timeDiv.dom.style.display!='none'?self.timeDiv.dom.offsetHeight:0;h=Math.max(locationHeight,timeHeight);}
return self.titleDiv.dom.offsetHeight+h;};var contentWidth=function(){return self.timeDiv.dom.offsetWidth+self.locationDiv.dom.offsetWidth+2*self.margin;};var parentDivHeight=this.div.dom.parentNode.offsetHeight;var parentDivWidth=this.div.dom.parentNode.offsetWidth;if(!parentDivHeight){return;}
if(this.compactMode&&parentDivWidth<200){this.timeDiv.dom.style.display='none';}
if(!this.compactMode){var locationMaxWidth=parentDivWidth-20;if(this.timeDiv.dom.offsetWidth+8>=parentDivWidth){this.timeDiv.dom.style.display='none';}
else if(contentWidth()>=parentDivWidth||contentHeight()>=parentDivHeight){this.timeDiv.dom.style.display='none';}else{locationMaxWidth-=this.timeDiv.dom.offsetWidth;}
this.locationDiv.dom.style.maxWidth=locationMaxWidth>0?pixels(locationMaxWidth):'0px';if(contentWidth()>=parentDivWidth||contentHeight()>=parentDivHeight){this.timeDiv.dom.style.display='none';this.locationDiv.dom.style.maxWidth=pixels(parentDivWidth-20);}
if(this.presentersDiv&&this.presentersDiv.dom.offsetWidth>parentDivWidth/2){this.presentersDiv.dom.style.display='none';}
if(this.convenerDiv&&this.convenerDiv.dom.offsetWidth>parentDivWidth/2){var newLength=parentDivWidth/2/this.convenerDiv.dom.offsetWidth*this.convenerDiv.get().length;this.convenerDiv.set(this.truncateTitle(newLength-1,this.convenerDiv.get()));}
if(this.convenerDiv&&this.convenerDiv.dom.offsetHeight+contentHeight()>parentDivHeight){this.convenerDiv.dom.style.display='none';}}
if(contentHeight()<=parentDivHeight){return;}
if(this.timeDiv.dom.style.display=='none'){this.locationDiv.dom.style.display='none';}
if(contentHeight()<=parentDivHeight){return;}
var topContentWidth=function(){var width=2*self.margin;if(self.titleDiv)
width+=self.titleDiv.dom.offsetWidth;if(self.presentersDiv)
width+=self.presentersDiv.dom.offsetWidth;return width;}
title=this.truncateTitle(Math.ceil(title.length*((parentDivHeight)/contentHeight())),title);this.titleDiv.set(title);var step=2;while(title!=="..."&&contentHeight()>parentDivHeight&&topContentWidth()>parentDivWidth*0.8){title=this.truncateTitle(-step,title);this.titleDiv.set(title);}},createPileEffect:function(){var self=this;var pileEffect=Html.div({style:{position:'absolute',top:'3px',left:'0',width:pixels(this.width-3)}},Html.div({},Html.div('timetableBlock timetableBlockPileEffect'),Html.div('timetableBlock timetableBlockPileEffect'),Html.div('timetableBlock timetableBlockPileEffect')));this.div.insert(pileEffect);this.titleWrapper.dom.style.paddingTop='20px';if(this.compactMode){this.timeDiv.dom.style.paddingTop='20px';}
return pileEffect;},setColors:function(textColor,bgColor){this.block.dom.style.backgroundColor=bgColor;this.block.dom.style.color=textColor;}},function(timetable,eventData,blockData,compactMode,printableVersion,detailLevel){this.TimetableBlockBase(timetable);this.compactMode=compactMode;this.eventData=eventData;this.blockData=blockData;this.margin=TimetableDefaults.blockMargin;this.printableVersion=printableVersion;this.detailLevel=detailLevel;this.arrows=Html.span({});});type("TimetableBlockWholeDayBase",["TimetableBlockBase"],{_blockDescription:function(block,event){var self=this;this.titleDiv=Html.div({className:'timetableBlockTitle',style:{fontWeight:this.eventData.fontWeight}},this.eventData.title);this.titleWrapper=Html.div({},this._getRightSideDecorators(),this.titleDiv);this.div=Html.div({style:{width:'100%',height:'100%'}},this.titleWrapper);this.timeDiv=Html.div('timetableBlockTimeDiscreet',this.eventData.startDate.time.substring(0,5)+' - '+this.eventData.endDate.time.substring(0,5));this.div.insert(this.timeDiv);if(self.eventData.material&&self.eventData.material.length>0){this.titleWrapper.insert(this.createMaterialButton(this.eventData.material));}
return this.div;},draw:function(){var self=this;var classTable={'Session':'timetableSession','Contribution':'timetableContribution','Break':'timetableBreak'};block=Html.div({style:{backgroundColor:this.printableVersion?'white':this.eventData.color,color:this.printableVersion?'black':this.eventData.textColor,borderColor:this.printableVersion?'black':'',maxHeight:'30px',margin:'2px 0',overflow:'hidden'},className:'timetableBlock '+classTable[this.eventData.entryType]},this._blockDescription());if(!self.printableVersion){block.dom.style.cursor='pointer';block.observeClick(function(e){self.openPopup(e);});highlightWithMouse(this.div,block);showWithMouse(this.div,this.arrows);}
return block;},postDraw:function(){}},function(timetable,eventData,blockData){this.TimetableBlockBase(timetable);this.eventData=eventData;this.blockData=blockData;this.margin=TimetableDefaults.blockMargin;this.arrows=Html.span({});});type("TimetableBlockDisplayMixin",[],{_drawPopup:function(){var self=this;return new TimetableBlockPopup(this.timetable,this.eventData,this.div,function(){self.div.dom.style.cursor='pointer';self.popupActive=false;return self.popupAllowClose;},function(color){var parent=self.div.getParent();parent.setStyle('backgroundColor',color);});}});type("TimetableBlockManagementMixin",[],{_drawPopup:function(){var self=this;return new TimetableBlockPopupManagement(this.timetable,this,this.eventData,this.div,function(){self.div.dom.style.cursor='pointer';self.popupActive=false;return self.popupAllowClose;},this.managementActions);},_getRightSideDecorators:function()
{return this.arrows;}},function(){var arrowUp=Html.img({src:imageSrc('arrow_up'),title:$T('Move up')});var arrowDown=Html.img({src:imageSrc('arrow_down'),style:{paddingLeft:'5px'},title:$T('Move down')});var self=this;arrowUp.observeClick(function(event){self.managementActions.moveEntryUpDown(self.eventData,true);if(event.stopPropagation){event.stopPropagation();}else{event.cancelBubble=true;}
return false;});arrowDown.observeClick(function(event){self.managementActions.moveEntryUpDown(self.eventData,false);if(event.stopPropagation){event.stopPropagation();}else{event.cancelBubble=true;}
return false;});this.arrows=Html.div({},Html.div({className:"ttentryArrowsBackground"}),Html.div({className:"ttentryArrows"},arrowUp,arrowDown));});type("TimetableBlockWholeDayDisplay",["TimetableBlockWholeDayBase","TimetableBlockDisplayMixin"],{},function(timetable,eventData,blockData){this.TimetableBlockWholeDayBase(timetable,eventData,blockData);});type("TimetableBlockWholeDayManagement",["TimetableBlockWholeDayBase","TimetableBlockManagementMixin"],{},function(timetable,eventData,blockData,managementActions){this.TimetableBlockWholeDayBase(timetable,eventData,blockData);this.managementActions=managementActions;this.TimetableBlockManagementMixin();this._getRightSideDecorators=TimetableBlockManagementMixin.prototype._getRightSideDecorators;});type("TimetableBlockNormalDisplay",["TimetableBlockNormal","TimetableBlockDisplayMixin"],{},function(timetable,eventData,blockData,compactMode,printableVersion,detailLevel)
{this.TimetableBlockNormal(timetable,eventData,blockData,compactMode,printableVersion,detailLevel);});type("TimetableBlockNormalManagement",["TimetableBlockNormal","TimetableBlockManagementMixin"],{_getTitle:function(){var title=this.TimetableBlockNormal.prototype._getTitle.call(this);if(this.eventData.entryType=="Session"){return this.eventData.sessionId+" - "+title;}else if(this.eventData.entryType=="Contribution"){return this.eventData.contributionId+" - "+title;}
return title;}},function(timetable,eventData,blockData,compactMode,printableVersion,detailLevel,managementActions)
{this.TimetableBlockNormal(timetable,eventData,blockData,compactMode,printableVersion,detailLevel);this.managementActions=managementActions;this.TimetableBlockManagementMixin();this._getRightSideDecorators=TimetableBlockManagementMixin.prototype._getRightSideDecorators;});type("TimetableBlockPopup",["BalloonPopup","TimetableBlockBase"],{createContent:function(){var self=this;var div=Html.div({className:'timetablePopup',style:{width:pixels(this.popupWidth)}});var title=self.eventData.title;if(title.length>90){title=title.substring(0,87)+'...';}
var titleDiv=Html.div({className:'title'},title);div.append(titleDiv);if(self.eventData.entryType!='Session'&&exists(self.eventData.sessionSlotId)){var session=self.timetable.eventInfo.sessions[self.eventData.sessionId];var belongsToDiv=Html.div('balloonSubtitle',$T('inside'),' ',Html.span({style:{fontWeight:'bold'}},session.title));div.append(belongsToDiv);}
var menuBar=this._getMenuBar();div.append(menuBar);var infoDiv=this._getGeneralInfo();div.append(infoDiv);var contributions=this._getContributionInfo();if(contributions){div.append(contributions);div.dom.style.width=pixels(this.popupWidth+50);}
return div;},_getRoomLocationInfo:function(){var roomLocationInfo=Html.div({});if(this.eventData.room){roomLocationInfo.append(Html.div('roomPopupTitle','Room: '));roomLocationInfo.append(this.eventData.room);roomLocationInfo.append(Html.br());}
if(this.eventData.location){roomLocationInfo.append(Html.div('roomPopupTitle','Location: '));roomLocationInfo.append(this.eventData.location);roomLocationInfo.append(Html.br());}
return roomLocationInfo;},_getTimeLocationInfo:function(){return Html.div({},this._getTime(),this._getRoomLocationInfo())},_getGeneralInfo:function(){var self=this;var infoContentDiv=Html.div({className:'timetablePopupInfoContent'});infoContentDiv.append(this._getTimeLocationInfo());if(self.eventData.conveners&&self.eventData.conveners.length>0)
{infoContentDiv.append(Html.div('roomPopupTitle',(self.eventData.conveners.length>1)?$T('Conveners'):$T('Convener'),': '));infoContentDiv.append(self._formatConveners(this.eventData.conveners));infoContentDiv.append(Html.br());}
if(self.eventData.entryType=='Contribution'){var speakers=Html.span();var i=0;each(self.eventData.presenters,function(p){speakers.append((i++>0?'; ':'')+p.name);if(p.affiliation&&p.affiliation!==''){speakers.append(Html.em({style:{fontSize:'12px'}},' ('+p.affiliation+')'));}});if(i>0){infoContentDiv.append(Html.strong({style:{fontStyle:'normal'}},'Presenter(s): '));infoContentDiv.append(speakers);}}
var desc=self.eventData.description;if(desc&&desc!==''){infoContentDiv.append(Html.span({style:{display:'block',marginTop:pixels(5)}},desc.length>200?desc.substr(0,200)+'...':desc));}
return Html.div({className:'timetablePopupInfoWrapper'},infoContentDiv);},_getTime:function(){return Html.div({className:'timetablePopupTimeDiv'},this.eventData.startDate.time.substring(0,5)+' - '+
this.eventData.endDate.time.substring(0,5));},_getMenuBar:function(){var self=this;if(self.eventData.entryType!='Contribution'&&self.eventData.entryType!='Session'){return null;}
var bar=Html.div({});var url="#";if(self.eventData.entryType=='Contribution'){url=Indico.Urls.ContributionDisplay+'?contribId='+self.eventData.contributionId+'&confId='+self.eventData.conferenceId;}else if(self.eventData.entryType=='Session'){url=Indico.Urls.SessionDisplay+'?sessionId='+self.eventData.sessionId+'&confId='+self.eventData.conferenceId+'#'+self.timetable.currentDay;}
var viewLink=Html.a({'href':url},"View details");bar.append(viewLink);if(self.eventData.material&&self.eventData.material.length>0){var materialLink=Html.a('dropDownMenu fakeLink',"Material");materialLink.observeClick(function(e){var menu=self.createMaterialMenu(self.eventData.material,materialLink);var pos=materialLink.getAbsolutePosition();menu.open(pos.x+materialLink.dom.offsetWidth+2,pos.y+materialLink.dom.offsetHeight+2);});bar.append("|");bar.append(materialLink);}
var exportLink=Html.a('dropDownMenu fakeLink',"Export");exportLink.observeClick(function(){var menuItems={};var urlParams;if(self.eventData.entryType=='Contribution'){urlParams='?contribId='+self.eventData.contributionId+'&confId='+self.eventData.conferenceId;menuItems.PDF=Indico.Urls.ContribToPDF+urlParams;menuItems.Calendar=Indico.Urls.ContribToiCal+urlParams;menuItems.XML=Indico.Urls.ContribToXML+urlParams;}else if(self.eventData.entryType=='Session'){urlParams='?showSessions='+self.eventData.sessionId+'&confId='+self.eventData.conferenceId;menuItems["PDF timetable"]=Indico.Urls.ConfTimeTablePDF+urlParams;urlParams='?sessionId='+self.eventData.sessionId+'&confId='+self.eventData.conferenceId;menuItems.Calendar=Indico.Urls.SessionToiCal+urlParams;}
var exportMenu=new PopupMenu(menuItems,[exportLink],null,true,true);var pos=exportLink.getAbsolutePosition();exportMenu.open(pos.x+exportLink.dom.offsetWidth+2,pos.y+exportLink.dom.offsetHeight+2);});bar.append("|");bar.append(exportLink);return Html.div('menuBar',bar);},_getContributionInfo:function(){var self=this;var contributionsDiv=this._getContributionList(6,true);if(!contributionsDiv){return null;}
var detailsLink=Html.div({style:{marginTop:pixels(5),marginLeft:pixels(5)}},Html.span({className:"fakeLink",style:{fontStyle:'italic',fontWeight:'normal'}},"View contribution list"));contributionsDiv.append(detailsLink);detailsLink.observeClick(function(e){self.close();var contribs=[];each(self.eventData.entries,function(value,key){if(value.entryType=='Contribution'){contribs.push(value);}});var popup=new ContributionsPopup(self.eventData,contribs,function(){self.popupAllowClose=true;return true;});popup.open();});return contributionsDiv;},_getContributionList:function(maxNumContribs,links){var self=this;var contributionsDiv=Html.div({className:'timetablePopupContributions'},"Contributions");var contributions=Html.tbody({});var contribs=[];each(this.eventData.entries,function(value,key){if(value.entryType=='Contribution'){contribs.push(value);}});if(contribs.length===0){return null;}
contribs.sort(function(a,b){if(a.startDate.time>b.startDate.time){return 1;}
return-1;});var i=0;each(contribs,function(value){if(++i<=maxNumContribs){var element=links?Html.a({href:Indico.Urls.ContributionDisplay+'?sessionId='+value.sessionId+'&contribId='+value.contributionId+'&confId='+value.conferenceId,style:{fontWeight:'normal'}},value.title):Html.span({},value.title);contributions.append(Html.tr({},Html.td('timetablePopupContributionTime',self.eventData.r||self.eventData.isPoster?'':value.startDate.time.substr(0,5)),Html.td('timetablePopupContributionTitle',element)));}});if(i>maxNumContribs){contributions.append(Html.tr({},Html.td({}),Html.td({},Html.span({style:{fontSize:'12px',fontWeight:'normal',fontStyle:'italic',color:'#444444'}},''+(i-maxNumContribs)+' more contribution(s)...'))));}
contributionsDiv.append(Html.table({style:{marginTop:pixels(5)}},contributions));return contributionsDiv;}},function(timetable,eventData,blockDiv,closeHandler){this.timetable=timetable;this.eventData=eventData;this.triggerElement=blockDiv;this.popupWidth=300;this.BalloonPopup(this.createContent(),blockDiv,closeHandler);});type("TimetableBlockPopupManagement",["TimetableBlockPopup"],{_getTimeLocationInfo:function(){var self=this;var timeDiv=Html.div('timeLocationDiv',this._getTime());var locationDiv=Html.div('timeLocationDiv',this._getRoomLocationInfo());var saveButton=Html.input('button',{},'Save');var cancelButton=Html.input('button',{},'Cancel');var buttonsDiv=Html.div({style:{textAlign:'center',display:'none',padding:'5px'}},saveButton,cancelButton);saveButton.observeClick(function(){self.saveRoomLocationFunction()
if(self.saveTimeFunction()){self.close();}});cancelButton.observeClick(function(){buttonsDiv.dom.style.display='none';timeDiv.dom.className='timeLocationDiv';locationDiv.dom.className='timeLocationDiv';self.stopEditingTimeFunction();self.stopEditingRoomLocationFunction();});timeDiv.observeClick(function(){self.editTimeFunction();buttonsDiv.dom.style.display='block';timeDiv.dom.className='';});locationDiv.observeClick(function(){self.editRoomLocationFunction();buttonsDiv.dom.style.display='block';locationDiv.dom.className='';});return Html.div({},timeDiv,locationDiv,buttonsDiv);},_getTime:function(){var self=this;var timeDiv=Html.div({},Html.div('roomPopupTitle','Duration: '),this.eventData.startDate.time.substring(0,5)+' - '+
this.eventData.endDate.time.substring(0,5),Html.img({src:imageSrc("edit_16.png")}));this.startEndTimeField=IndicoUI.Widgets.Generic.dateStartEndTimeField(this.eventData.startDate.time.substring(0,5),this.eventData.endDate.time.substring(0,5));this.startEndTimeField.accessor.set('date',this.eventData.startDate.date);var parameterManager=new IndicoUtil.parameterManager();parameterManager.add(this.startEndTimeField.startTimeField,'time',false);parameterManager.add(this.startEndTimeField.endTimeField,'time',false,function(value){var sTime=translate(parseTime(self.startEndTimeField.startTimeField.get()),zeropad).join('');var eTime=translate(parseTime(value),zeropad).join('');if(eTime==sTime&&self.eventData.entryType=="Break"){}else if(eTime<=sTime){return"End time should be after start time!";}});this.saveTimeFunction=function(){if(!parameterManager.check()){return false;}
var startDate=clone(self.eventData.startDate);var endDate=clone(self.eventData.startDate);startDate.time=self.startEndTimeField.accessor.get('startTime');endDate.time=self.startEndTimeField.accessor.get('endTime');self.managementActions.editEntryStartEndDate(Util.formatDateTime(startDate,IndicoDateTimeFormats.Server),Util.formatDateTime(endDate,IndicoDateTimeFormats.Server),self.eventData,rescheduleCheckbox.get());return true;};this.editTimeFunction=function(){timeEditDiv.dom.style.display='block';timeDiv.dom.style.display='none';};this.stopEditingTimeFunction=function(){timeEditDiv.dom.style.display='none';timeDiv.dom.style.display='block';this.startEndTimeField.accessor.set('startTime',this.eventData.startDate.time.substring(0,5));this.startEndTimeField.accessor.set('endTime',this.eventData.endDate.time.substring(0,5));rescheduleCheckbox.dom.checked=false;};var rescheduleCheckbox=Html.checkbox({style:{marginRight:'5px',verticalAlign:'middle'}});var timeEditDiv=Html.div({style:{display:'none'}},Html.div('roomVerticalWidgetTitle','Duration'),Html.div({},self.startEndTimeField.element),Html.div({style:{marginTop:'5px'}},rescheduleCheckbox,$T('Shift later entries')));return Html.div({},timeDiv,timeEditDiv);},_getMenuBar:function(){var self=this;var menu=Html.div({className:'menuBar managementMenuBar'});var deleteLink=Html.a('fakeLink',"Delete");deleteLink.observeClick(function(){self.managementActions.deleteEntry(self.eventData);self.close();});menu.insert(deleteLink);menu.insert(" | ");var editLink;if(self.eventData.entryType=='Session'){editLink=Html.a({className:'dropDownMenu',style:{fontWeght:'bold'}},$T('Edit'));var menuItems={};menuItems[$T('Block timetable')]=function(){self.managementActions.switchToIntervalTimetable(self.eventData.id);self.close();};menuItems[$T('Block properties')]=function(){self.managementActions.editSessionSlot(self.eventData);self.close();};if(!self.managementActions.isSessionTimetable){menuItems[$T('Session properties')]=self.managementActions.editEntry(self.eventData);}
editLink.observeClick(function(){var menu=new PopupMenu(menuItems,[editLink],'timetableManagementPopupList',true,true);var pos=editLink.getAbsolutePosition();menu.open(pos.x+editLink.dom.offsetWidth+2,pos.y+editLink.dom.offsetHeight+2);});var addInterval=Html.a('fakeLink',$T("Add block"));addInterval.observeClick(function(){self.managementActions.addSessionSlot(self.eventData);self.close();});menu.insert(addInterval);menu.insert(" | ");}else if(self.eventData.entryType=='Contribution'){editLink=Html.a({className:'fakeLink',style:{fontWeight:'bold'},href:self.managementActions.editEntry(self.eventData)},$T("Edit"));}else{editLink=Html.a({className:'fakeLink',style:{fontWeight:'bold'},href:'#'},$T("Edit"));editLink.observeClick(function(){self.managementActions.editEntry(self.eventData);return false;});}
menu.insert(editLink);if(self.eventData.entryType!='Session'){menu.insert(" | ");moveEntryLink=Html.a('fakeLink',Html.span({},$T("Move")));moveEntryLink.observeClick(function(){self.close();self.managementActions.moveEntry(self.eventData);});menu.insert(moveEntryLink);}
if(self.eventData.entryType=='Session'){var colorPicker=new ColorPicker([],true,this.eventData.color,this.eventData.textColor);var colorPickerLink=colorPicker.getLink(function(){self.addNonCloseTriggeringElement(colorPicker.getCanvas());return true;});colorPicker.observe(function(colors){self.managementActions.changeSessionColors(self.eventData,colors.bgColor,colors.textColor);});menu.append(Html.a({},colorPickerLink));}
return menu;},_getContributionInfo:function(){var self=this;if(this.eventData.entryType!=='Session'){return null;}
var contributionsDiv=this._getContributionList(4,false);if(!contributionsDiv){contributionsDiv=Html.div({className:'timetablePopupContributions'},Html.em({style:{fontWeight:'normal'}},$T('This session is empty...')));}
var ttLink=Html.a({className:'fakeLink'},"View and edit this block timetable");ttLink.observeClick(function(){self.managementActions.switchToIntervalTimetable(self.eventData.id);self.close();});contributionsDiv.append(Html.div({style:{marginTop:'10px',fontWeight:'bold'}},ttLink));return contributionsDiv;},_getRoomLocationInfo:function(){var self=this;this._setInfo();this._setParentInfo();roomLocationDiv=Html.div({},Html.div('roomPopupTitle','Room: '),self.eventData.room,Html.br(),Html.div('roomPopupTitle','Location: '),self.eventData.location,Html.img({src:imageSrc("edit_16.png")}));this.editRoomLocationFunction=function(e){roomLocationDiv.dom.style.display='none';roomEditorDiv.dom.style.display='block';};this.saveRoomLocationFunction=function(){self.managementActions.editRoomLocation(self.roomEditor.info.accessor('room').get(),self.roomEditor.info.accessor('location').get(),self.eventData);return true;};this.stopEditingRoomLocationFunction=function(){roomLocationDiv.dom.style.display='block';roomEditorDiv.dom.style.display='none';self.roomEditor.locationChooser.set(self.eventData.location);self.roomEditor.roomChooser.set(self.eventData.room);self.roomEditor.inheritCheckbox.set(self.eventData.inheritRoom&&self.eventData.inheritLoc)};this.roomEditor=new RoomBookingVerticalReservationWidget(Indico.Data.Locations,this.info,this.parentInfo,nullRoomInfo(this.info),[],Indico.Data.DefaultLocation,this.bookedRooms,this.timetableData,this.startEndTimeField.accessor,this.eventData.id);var roomEditorDiv=Html.div({id:'roomEditor'},this.roomEditor.draw());roomEditorDiv.dom.style.display='none';return Html.div({},roomLocationDiv,roomEditorDiv);},clickTriggersClosing:function(target){if(target.dom.className.indexOf('bottomLine')!=-1||target.dom.parentNode.parentNode.className=='optionBoxAdd')
return false;else
return this.PopupDialog.prototype.clickTriggersClosing.call(this,target);},_setParentInfo:function(){var parent;if(this.managementActions.session)
parent=this.managementActions.session;else if(this.eventData.sessionId)
parent=this.managementActions.eventInfo.sessions[this.eventData.sessionId];else
parent=this.managementActions.eventInfo;this.parentInfo=new WatchObject();this.parentInfo.set('room',parent.room);this.parentInfo.set('location',parent.location);},_setInfo:function(){this.info=new WatchObject();if(!this.eventData.inheritRoom)
this.info.set('room',this.eventData.room);if(!this.eventData.inheritLoc)
this.info.set('location',this.eventData.location);},postDraw:function(){this.roomEditor.postDraw();}},function(timetable,block,eventData,blockDiv,closeHandler,managementActions){this.block=block;this.managementActions=managementActions;this.bookedRooms=managementActions.eventInfo.bookedRooms;this.timetableData=timetable.parentTimetable?timetable.parentTimetable.getData():timetable.getData();this.TimetableBlockPopup(timetable,eventData,blockDiv,closeHandler);});type("ContributionsPopup",["ExclusivePopup"],{draw:function(){var self=this;var table=Html.tbody({});each(this.contributions,function(contrib){var time=Html.div({style:{paddingTop:pixels(7),marginRight:pixels(3),fontSize:'12px',fontWeight:'bold'}},self.eventData.isPoster?'':contrib.startDate.time.substr(0,5));var link=Html.a({href:Indico.Urls.ContributionDisplay+'?sessionId='+contrib.sessionId+'&contribId='+contrib.contributionId+'&confId='+contrib.conferenceId},contrib.title);var title=Html.div({style:{color:'#444444',width:pixels(self.width),padding:pixels(5),fontSize:'15px'}},link);var infoDiv=Html.div({style:{width:pixels(self.width),border:'1px solid rgb(234, 234, 234)',marginBottom:pixels(10),marginLeft:pixels(5),padding:pixels(5),backgroundColor:'rgb(248, 248, 248)',color:'#444444',fontSize:'12px'}});var showFullDescLink=Html.a({style:{cursor:'pointer',fontWeight:'bold',fontSize:'12px',fontStyle:'italic'}},' Show full description');var hideFullDescLink=Html.a({style:{cursor:'pointer',fontWeight:'bold',fontSize:'12px',fontStyle:'italic'}},' Hide full description');var shortDesc=Html.span({style:{display:'block'}},contrib.description.substr(0,250)+'... ',showFullDescLink);var longDesc=Html.span({style:{display:'none'}},contrib.description,hideFullDescLink);if(contrib.description&&contrib.description!==''){if(contrib.description.length<=250){longDesc.setStyle('display','block');hideFullDescLink.setStyle('display','none');infoDiv.append(longDesc);}else{infoDiv.append(longDesc);infoDiv.append(shortDesc);}}
if(contrib.presenters.length>0){var speakers=Html.span({style:{marginTop:pixels(5),display:'block'}},Html.strong({},'Presenter(s): '));var i=0;each(contrib.presenters,function(p){speakers.append(i++>0?', ':''+p.name);if(p.affiliation&&p.affiliation!==''){speakers.append(Html.em({style:{fontSize:'12px'}},' ('+p.affiliation+')'));}});infoDiv.append(speakers);}
if(contrib.room&&contrib.room!==''){var room=Html.span({style:{marginTop:pixels(3),display:'block'}},Html.strong({},'Room: '),contrib.room);infoDiv.append(room);}
if(contrib.location&&contrib.location!==''){var location=Html.span({style:{marginTop:pixels(3),display:'block'}},Html.strong({},'Location: '),contrib.location);infoDiv.append(location);}
showFullDescLink.observeClick(function(e){shortDesc.setStyle('display','none');longDesc.setStyle('display','block');});hideFullDescLink.observeClick(function(e){shortDesc.setStyle('display','block');longDesc.setStyle('display','none');});if(infoDiv.dom.innerHTML===""){infoDiv.dom.style.display='none';}
table.append(Html.tr({},Html.td({style:{verticalAlign:'top'}},time),Html.td({},title,infoDiv)));});this.innerHTML=Html.table({style:{marginBottom:pixels(10)}},table).dom.innerHTML;return this.ExclusivePopup.prototype.draw.call(this,Html.table({style:{marginBottom:pixels(10)}},table));},postDraw:function(){this.ExclusivePopup.prototype.postDraw.call(this);}},function(eventData,contributions,closeHandler){this.contributions=$L(contributions);this.contributions.sort(IndicoSortCriteria.StartTime);this.eventData=eventData;this.width=500;this.ExclusivePopup('Contribution details',closeHandler,true,true);});type("TimetablePopup",["ExclusivePopup"],{draw:function(){var self=this;var div=Html.div({style:{padding:pixels(30)}});var timetable=new TimeTable({"20090617":{"s420":this.eventData}},710,div,'contribution',false);div.set(timetable.draw());timetable.postDraw();return this.ExclusivePopup.prototype.draw.call(this,Html.div({style:{marginBottom:pixels(10)}},div));}},function(eventData,contributions,closeHandler){this.contributions=contributions;this.eventData=eventData;this.width=500;this.ExclusivePopup('Session timetable',closeHandler);});type("TimetableDrawer",["IWidget"],{_minuteDifference:function(time1,time2){var t1=parseInt(time1.substring(0,2),10)*60+parseInt(time1.substring(3,6),10);var t2=parseInt(time2.substring(0,2),10)*60+parseInt(time2.substring(3,6),10);return t2-t1;},_drawGrid:function(scale){var scaleDiv=Html.div({style:{position:'relative',top:pixels(TimetableDefaults.topMargin)}});last=scale[scale.length-1][0];for(var n=0;n<scale.length;++n){hour=scale[n][0];px=scale[n][1];if(scale[n].length>2){scaleDiv.append(Html.div({style:{position:'absolute',top:pixels(px),width:pixels(this.width),height:hour==last?'20px':scale[n+1][1]-px,borderTop:'1px dotted red',fontSize:'11px'}}));continue;}
scaleDiv.append(Html.div({style:{position:'absolute',top:pixels(px),width:pixels(this.width),height:hour==last?'20px':scale[n+1][1]-px,borderTop:'1px solid #E8E8E8',fontSize:'11px'}},zeropad(hour)+':00'));}
return Html.div({},this.layoutChooser.get().getHeader(this.width),scaleDiv);},_drawWholeDayBlocks:function(data,blocks){var self=this;var wholeDayBlockDiv=Html.div({style:{position:'relative',marginTop:pixels(TimetableDefaults.topMargin),top:pixels(10),marginLeft:pixels(TimetableDefaults.leftMargin),marginRight:pixels(TimetableDefaults.rightMargin)}});self.wholeDayBlocks=[];var blockAdded=false;each(blocks,function(blockData){var eventData=data[blockData.id];var block;if(self.managementMode){block=new TimetableBlockWholeDayManagement(self.timetable,eventData,blockData,self.managementActions);}else{block=new TimetableBlockWholeDayDisplay(self.timetable,eventData,blockData);}
wholeDayBlockDiv.append(block.draw(0,100));blockAdded=true;});return blockAdded?wholeDayBlockDiv:Html.div({});},_drawBlocks:function(data,blocks,groups){var self=this;var colN=0;var blockDiv=Html.div({style:{position:'relative',top:pixels(TimetableDefaults.topMargin)}});self.blocks=[];each(blocks,function(blockData){var nCol=self.layoutChooser.get().getNumColumnsForGroup(groups[blockData.group]);var colWidth=Math.floor((self.width-TimetableDefaults.leftMargin)/nCol);var leftPos=TimetableDefaults.leftMargin+colWidth*blockData.assigned;var width;if(parseInt(blockData.assigned,10)==(nCol-1)){width=self.width-leftPos-TimetableDefaults.rightMargin;}else{width=colWidth;}
var eventData=data[blockData.id];var block;var empty=true;for(b in eventData.entries){empty=false;break;}
compactMode=false;if(self.managementMode){block=new TimetableBlockNormalManagement(self.timetable,eventData,blockData,compactMode,self.printableVersion,self.detail.get(),self.managementActions);}else{block=new TimetableBlockNormalDisplay(self.timetable,eventData,blockData,compactMode,self.printableVersion,self.detail.get());}
blockDiv.append(block.draw(leftPos,width));self.blocks.push(block);});return blockDiv;},setLayout:function(layout){this.layoutChooser.set(layout);},redraw:function(day){if(this.preventRedraw){return;}
day=any(day,this.day);if(day=='all'){this.redrawAllDays();return;}
var dayFiltered=this.applyFilters(this.data[day]);if(this.detail.get()=='contribution'){dayFiltered=this.flatten(dayFiltered);}
var dayData=this.layoutChooser.get().drawDay(dayFiltered,'session',this.startTime,this.endTime);var height=dayData[0]+TimetableDefaults.topMargin+TimetableDefaults.bottomMargin;this.wrappingElement.setStyle('height',pixels(height+(this.printableVersion?0:100)));var grid=this._drawGrid(dayData[1]);var blocks=this._drawBlocks(dayFiltered,dayData[2],dayData[3]);var wholeDayBlocks=this._drawWholeDayBlocks(dayFiltered,dayData[4]);this.canvas.set([wholeDayBlocks,Html.div({style:{position:'relative'}},grid,blocks)]);this.postDraw();return height+wholeDayBlocks.dom.offsetHeight;},setPrintableVersion:function(printableVersion){this.printableVersion=printableVersion;this.redraw();},postDraw:function(){each(this.blocks,function(block){block.postDraw();});},flatten:function(data){var result={};each(data,function(entry,key){if(entry.entryType=='Session'&&!entry.isPoster){each(entry.entries,function(subentry,subkey){result[subkey]=clone(subentry);result[subkey].color=subentry.entryType=='Break'?subentry.color:entry.color;result[subkey].textColor=entry.textColor;});}else{result[key]=entry;}});return result;},flatten2:function(data){return data;},drawDay:function(day){this.day=day;this.preventRedraw=true;this.updateFilters(day);this.preventRedraw=false;this.setLoading(true,this.redraw,day);return this.canvas;},drawAllDays:function(){this.day='all';this.preventRedraw=true;this.updateFilters('all');this.preventRedraw=false;this.setLoading(true,this.redrawAllDays);return this.canvas;},redrawAllDays:function(){var self=this;var days=[];each(this.data.all,function(value,key){if(key!='all'){value.date=key;days.push(value);}});days.sort(function(a,b){if(a.date>b.date){return 1;}
return-1;});var div=Html.div({});var height=0;var headerHeight=0;var header=Html.div({className:'timetableHeader',style:{visibility:'hidden'}},'Test');self.wrappingElement.append(header);headerHeight=header.dom.offsetHeight+20;self.wrappingElement.remove(header);var firstDay=true;each(days,function(value){var day=value.date;delete value.date;var h=self.redraw(day);var elements=translate(self.canvas.dom.childNodes,function(value){return $E(value);});var dayCanvas=Html.div({style:{position:'relative',height:pixels(h)}},elements);var headerStyle={width:pixels(self.width-10)};if(self.printableVersion){headerStyle.textAlign='center';headerStyle.borderBottom='0';}else if(firstDay){headerStyle.marginTop='0';}
var nDate=Util.parseJSDateTime(day,IndicoDateTimeFormats.Ordinal);var dayStr=Indico.Data.WeekDays[nDate.getDay()].substring(0,3)+' '+nDate.getDate()+'/'+(nDate.getMonth()+1);header=Html.div({className:'timetableHeader',style:headerStyle},dayStr);div.append(header);div.append(dayCanvas);height+=h+headerHeight;firstDay=false;});var margin=30+(self.printableVersion?0:100);self.wrappingElement.setStyle('height',pixels(height+margin));this.canvas.set(div);return this.canvas;},setWidth:function(width){this.width=width;},applyFilters:function(data){var result={};var self=this;each(data,function(event,key){var show=true;self.filterState.each(function(value,filterName){if(value){var filter=TimetableDefaults.filters[filterName].filter;if(!filter.apply(event)){show=false;}}});if(show){result[key]=event;}});return result;},updateFilters:function(){var self=this;self.filterState.each(function(value,filterName){if(value){TimetableDefaults.filters[filterName].filter.setData(self.data,self.day);}});},setLoading:function(loading,funcToCall,arg){var self=this;funcToCall=any(funcToCall,function(){});this.loading+=loading?1:-1;if(this.loading>0){this.loadingIndicator.dom.style.visibility='visible';setTimeout(function(){funcToCall.call(self,arg);self.setLoading(false);},100);}else{this.loadingIndicator.dom.style.visibility='hidden';this.loading=0;}},setData:function(data,startTime,endTime){this.startTime=startTime;this.endTime=endTime;this.data=data;this.redraw();}},function(timetable,width,wrappingElement,detailLevel,extraButtons,loadingIndicator,managementMode,managementActions,defaultLayout){var self=this;this.wrappingElement=wrappingElement;this.canvas=Html.div({});this.filterList=new WatchList();this.data=timetable.data;this.timetable=timetable;this.blocks=[];this.width=width;this.preventRedraw=false;this.printableVersion=false;this.layoutChooser=new Chooser(map(TimetableDefaults.layouts,function(value,key){return value.manager;}));this.detail=new WatchValue();this.layout=new WatchValue();this.loading=0;this.loadingIndicator=loadingIndicator;this.managementMode=managementMode;this.managementActions=managementActions;this.layout.set(any(defaultLayout,'compact'));this.layoutChooser.set(any(defaultLayout,'compact'));this.detail.set(any(detailLevel,'session'));var filterState=map(TimetableDefaults.filters,function(value,key){return true;});this.filterState=$O(filterState);this.detail.observe(function(value){if(!self.preventRedraw){self.setLoading(true,self.redraw);}});this.layout.observe(function(value){self.layoutChooser.set(value);if(!self.preventRedraw){self.setLoading(true,self.redraw);}});});type("IntervalTimetableDrawer",["TimetableDrawer"],{posterRedraw:function(){var dayData=this.layoutChooser.get().drawDay(this.data[this.day]);var blocks=this._posterBlocks(dayData);this.canvas.set(Html.div({style:{position:'relative'}},blocks));var height=this.canvas.dom.clientHeight+50+TimetableDefaults.topMargin+TimetableDefaults.bottomMargin;this.wrappingElement.setStyle('height',pixels(height+(this.printableVersion?0:100)));this.postDraw();return height;},redraw:function(){if(this.isPoster){return this.posterRedraw();}else{return this.TimetableDrawer.prototype.redraw.call(this);}},_posterBlocks:function(data){var self=this;var blockDiv=Html.div({style:{position:'relative',top:pixels(TimetableDefaults.topMargin)}});self.blocks=[];var topPx=0;each(data,function(blockData,id){var editLink=Html.a('fakeLink',"Edit");editLink.observeClick(function(){window.location=self.managementActions.editEntry(blockData);});var deleteLink=Html.a('fakeLink',"Delete");deleteLink.observeClick(function(){self.managementActions.deleteEntry(blockData);});var entryTools=Html.div({style:{cssFloat:"right"}},editLink," | ",deleteLink);var entryInfo=Html.div({},blockData.contributionId+" - "+blockData.title);var block=Html.div({className:'posterEntry'},entryTools,entryInfo,Html.div({}));blockDiv.append(block);self.blocks.push(block);});return blockDiv;},postDraw:function(){},setData:function(data,day,isPoster){this.isPoster=isPoster;this.day=day;if(this.isPoster){this.setLayout('poster');}else{this.setLayout('compact');}
this.TimetableDrawer.prototype.setData.call(this,data);}},function(data,canvas,width,wrappingElement,extraButtons,loadingIndicator,managementMode,managementActions){this.TimetableDrawer(data,canvas,width,wrappingElement,'session',extraButtons,loadingIndicator,managementMode,managementActions,data.isPoster?'poster':null);this.wrappingElement=data.parentTimetable.timetableDrawer.wrappingElement;});type("TimetableManagementActions",[],{methods:{'SessionSlot':{add:'schedule.session.addSlot',edit:'schedule.session.editSlot',dayEndDate:'schedule.slot.getDayEndDate',modifyStartEndDate:'schedule.event.modifyStartEndDate','delete':'schedule.session.deleteSlot',moveUpDown:'schedule.event.moveEntryUpDown',editRoomLocation:'schedule.session.editRoomLocation'},'SessionContribution':{add:'schedule.slot.addContribution',modifyStartEndDate:'schedule.slot.modifyStartEndDate','delete':'schedule.slot.deleteContribution',moveUpDown:'schedule.slot.moveEntryUpDown',editRoomLocation:'schedule.slot.editRoomLocation'},'SessionBreak':{add:'schedule.slot.addBreak',edit:'schedule.slot.editBreak',modifyStartEndDate:'schedule.slot.modifyStartEndDate','delete':'schedule.slot.deleteBreak',moveUpDown:'schedule.slot.moveEntryUpDown',editRoomLocation:'schedule.slot.editRoomLocation'},'SessionEntry':{moveEntry:'schedule.slot.moveEntry'},'Session':{add:'schedule.event.addSession',dayEndDate:'schedule.session.getDayEndDate','delete':'schedule.event.deleteSession',changeColors:'schedule.session.changeColors',modifyStartEndDate:'schedule.session.modifyStartEndDate',moveUpDown:'schedule.session.moveEntryUpDown',editRoomLocation:'schedule.session.editRoomLocation'},'Contribution':{add:'schedule.event.addContribution',modifyStartEndDate:'schedule.event.modifyStartEndDate','delete':'schedule.event.deleteContribution',moveUpDown:'schedule.event.moveEntryUpDown',editRoomLocation:'schedule.event.editRoomLocation'},'Break':{add:'schedule.event.addBreak',edit:'schedule.event.editBreak',modifyStartEndDate:'schedule.event.modifyStartEndDate','delete':'schedule.event.deleteBreak',moveUpDown:'schedule.event.moveEntryUpDown',editRoomLocation:'schedule.event.editRoomLocation'},'Event':{'dayEndDate':'schedule.event.getDayEndDate',moveEntry:'schedule.event.moveEntry'}},deleteEntry:function(eventData){var self=this;if(!confirm("Are you sure you want to delete this timetable entry?"))
{return;}
var info=new WatchObject();var type=eventData.entryType;if(exists(eventData.sessionId)){info.set('session',eventData.sessionId);info.set('slot',eventData.sessionSlotId);if(type!='Session'){type='Session'+eventData.entryType;}else if(this.eventInfo.sessions[eventData.sessionId].numSlots>1){type='SessionSlot';}}
info.set('scheduleEntry',eventData.scheduleEntryId);info.set('conference',eventData.conferenceId);info.set('sessionTimetable',this.isSessionTimetable);var method=this.methods[type]['delete'];var killProgress=IndicoUI.Dialogs.Util.progress($T("Deleting entry..."));indicoRequest(method,info,function(result,error){if(error){killProgress();IndicoUtil.errorReport(error);}else{var data=self.timetable.getData();var day=IndicoUtil.formatDate2(IndicoUtil.parseJsonDate(eventData.startDate));killProgress();if(self.session){delete data[eventData.id];}else{delete data[day][eventData.id];}
if(self.session){self.timetable.setData(self.session);}else{self.timetable.setData(data);}
if(type=='Session'){delete this.eventInfo.sessions[eventData.sessionId];}
else if(type=='SessionSlot'){this.eventInfo.sessions[eventData.sessionId].numSlots--;}}});},editEntry:function(eventData){var url;if(eventData.entryType=='Contribution'){var contribId=eventData.id.substring(eventData.id.indexOf('c')+1);url=Indico.Urls.ContributionModification+'?confId='+eventData.conferenceId+'&contribId='+contribId;if(exists(eventData.sessionId)){url=url+'&sessionId='+eventData.sessionId;}}else if(eventData.entryType=='Session'){url=Indico.Urls.SessionModification+'?confId='+eventData.conferenceId+'&sessionId='+eventData.sessionId;}else if(eventData.entryType=='Break'){this.editBreak(eventData);}
return url;},editEntryStartEndDate:function(startDate,endDate,eventData,reschedule){var self=this;var info=new WatchObject();info.set('scheduleEntry',eventData.scheduleEntryId);info.set('conference',eventData.conferenceId);info.set('startDate',startDate);info.set('endDate',endDate);info.set('reschedule',reschedule);info.set('sessionTimetable',this.isSessionTimetable);var type=eventData.entryType;if(exists(eventData.sessionId)){info.set('session',eventData.sessionId);info.set('slot',eventData.sessionSlotId);if(type!='Session'){type='Session'+eventData.entryType;}else if(!self.isSessionTimetable){type='SessionSlot';}}
var killProgress=IndicoUI.Dialogs.Util.progress();indicoRequest(this.methods[type].modifyStartEndDate,info,function(result,error){killProgress();if(error){IndicoUtil.errorReport(error);}
else{if(reschedule){self.timetable._updateDay(result);}else{self.timetable._updateEntry(result,result.id);}}});},editRoomLocation:function(room,location,eventData){var self=this;var info=new WatchObject();info.set('scheduleEntry',eventData.scheduleEntryId);info.set('conference',eventData.conferenceId);info.set('roomInfo',$O({"location":location,"room":room}));info.set('sessionTimetable',this.isSessionTimetable);var type=eventData.entryType;if(exists(eventData.sessionId)){info.set('session',eventData.sessionId);info.set('slot',eventData.sessionSlotId);if(type!='Session'){type='Session'+eventData.entryType;}else if(!self.isSessionTimetable){type='SessionSlot';}}
var killProgress=IndicoUI.Dialogs.Util.progress();indicoRequest(this.methods[type].editRoomLocation,info,function(result,error){killProgress();if(error)
IndicoUtil.errorReport(error);else{var aux=result.entry.entries;self.timetable._updateEntry(result,result.id);if(aux)
self.timetable.data[result.day][result.id].entries=aux;}});},changeSessionColors:function(eventData,bgColor,textColor){if(eventData.entryType!='Session'){return;}
var info=new WatchObject();info.set('session',eventData.sessionId);info.set('conference',eventData.conferenceId);info.set('bgColor',bgColor);info.set('textColor',textColor);var method=this.methods.Session.changeColors;indicoRequest(method,info,function(result,error){if(error){IndicoUtil.errorReport(error);}else{this.timetable._updateSessionData(eventData.sessionId,['color','textColor'],[bgColor,textColor]);this.timetable.timetableDrawer.redraw();eventData.color=bgColor;eventData.textColor=textColor;}});},switchToIntervalTimetable:function(intervalId){this.timetable.switchToInterval(intervalId);},_dateStr2Date:function(dateStr){var year=parseInt(dateStr.substr(0,4),10);var month=parseInt(dateStr.substr(4,2),10);var day=parseInt(dateStr.substr(6,2),10);return new Date(year,month-1,day);},_allowCreateHere:function(elementType){switch(elementType){case'Session':return(this.session===null);case'Break':return(this.session?this.session.isPoster===false:true);case'Contribution':return true;}},_openAddMenu:function(triggerElement,target){if(exists(this.addMenu)&&this.addMenu.isOpen()){return;}
this.session=target.entryType=="Session"?target:null;var self=this;var menuItems={};this.addMenu=new PopupMenu(menuItems,[triggerElement],null,true,true);if(this._allowCreateHere('Session')){if(keys(this.eventInfo.sessions).length===0){menuItems[$T('Session')]=function(){self.addSession();};}else{var sessions={};each(this.eventInfo.sessions,function(session,key){sessions[session.id]={};sessions[session.id].func=function(){self.addSessionSlot(session);};sessions[session.id].color=self._retrieveSessionColor(session);sessions[session.id].title=session.title;});var menuu={'':{'Create a new session':function(){self.addSession();}},'Add another block to:':sessions};menuItems[$T('Session')]=new SessionSectionPopupMenu(menuu,[triggerElement,this.addMenu],'timetableSectionPopupList popupListChained',true,true);}}
if(this._allowCreateHere('Contribution')){menuItems[$T('Contribution')]=function(){self.addContribution();};}
if(this._allowCreateHere('Break')){menuItems[$T('Break')]=function(){self.addBreak();};}
var pos=triggerElement.getAbsolutePosition();this.addMenu.open(pos.x+triggerElement.dom.offsetWidth+10,pos.y+triggerElement.dom.offsetHeight+2);},_retrieveSessionColor:function(session){return this.timetable.getById("s"+session.id).color;},_addParams:function(type){return{startDate:Util.formatDateTime(this.eventInfo.startDate,IndicoDateTimeFormats.Server),selectedDay:Util.formatDateTime(this._dateStr2Date(this.timetable.currentDay),IndicoDateTimeFormats.Server.slice(0,8)),roomInfo:{location:this.eventInfo.location,room:this.eventInfo.room,address:this.eventInfo.address},args:{conference:this.eventInfo.id,sessionTimetable:any(this.isSessionTimetable,false)},type:type,parentType:'Event'};},_addToSessionParams:function(session,type){var params=this._addParams(type);params.startDate=Util.formatDateTime(session.startDate,IndicoDateTimeFormats.Server);params.roomInfo={location:session.location,room:session.room,address:session.address};params.sessionConveners=session.sessionConveners;params.args.session=exists(session.sessionId)?session.sessionId:session.id;if(type!='SessionSlot'){params.args.slot=session.sessionSlotId;params.type='Session'+params.type;}
params.parentType=(type=='SessionSlot'?'Session':'SessionSlot');return params;},addContribution:function(){var self=this;var params;var days=this.timetable.getDays();if(this.session!==null){params=this._addToSessionParams(this.session,'Contribution');}else{params=this._addParams('Contribution');}
var dialog=new AddContributionDialog(this.methods[params.type].add,this.methods[params.parentType].dayEndDate,params.args,params.roomInfo,$O(params.roomInfo),params.startDate,params.selectedDay,this.eventInfo.isConference,this.eventInfo.favoriteRooms,days,this.timetable,function(result){self._addEntries(result);},this.eventInfo.isCFAEnabled,this.eventInfo.bookedRooms);dialog.execute();},addBreak:function(){var self=this;var params;var days=this.timetable.getDays();if(this.session!==null){params=this._addToSessionParams(this.session,'Break');}else{params=this._addParams('Break');}
var dialog=new AddBreakDialog(this,$O(params),$O(params.roomInfo),false,days,this.eventInfo.favoriteRooms,this.eventInfo.bookedRooms);dialog.execute();},editBreak:function(eventData){var args=$O();var params;var days=this.timetable.getDays();if(this.session!==null){params=this._addToSessionParams(this.session,'Break');}else{params=this._addParams('Break');}
args.set('conference',eventData.conferenceId);args.set('scheduleEntry',eventData.scheduleEntryId);args.set('parentType',params.parentType);each(eventData,function(value,key){args.set(key,value);});args.set('type',params.type);args.set('startDate',Util.formatDateTime(eventData.startDate,IndicoDateTimeFormats.Server));args.set('roomInfo',$O({"location":eventData.inheritLoc?'':eventData.location,"room":eventData.inheritRoom?null:eventData.room,"address":eventData.inheritLoc?'':eventData.address}));var editDialog=new AddBreakDialog(this,args,$O(params.roomInfo),true,days,this.eventInfo.favoriteRooms,this.eventInfo.bookedRooms);editDialog.open();},addSession:function(){var self=this;var params=this._addParams('Session');var days=this.timetable.getDays();IndicoUI.Dialogs.addSession(this.methods[params.type].add,this.methods[params.parentType].dayEndDate,params.args,params.roomInfo,$O(params.roomInfo),params.selectedDay,this.eventInfo.favoriteRooms,days,function(result){self.timetable._updateEntry(result,result.id);},this.eventInfo.bookedRooms,this.timetable);},addSessionSlot:function(session){var self=this;var params=this._addToSessionParams(session,'SessionSlot');params.parentType='Session';var days=this.timetable.getDays();IndicoUI.Dialogs.addSessionSlot(this.methods[params.type].add,this.isSessionTimetable?this.methods.Session.dayEndDate:this.methods.Event.dayEndDate,params,params.roomInfo,$O(params.roomInfo),params.startDate,params.selectedDay,this.eventInfo.favoriteRooms,days,function(result){self.timetable._updateEntry(result,result.id);},false,this.eventInfo.bookedRooms,this.timetable);},editSessionSlot:function(eventData){var self=this;var params=this._addToSessionParams(eventData,'SessionSlot');params.parentType='Session';var days=this.timetable.getDays();each(eventData,function(value,key){if(key!="entries"){params[key]=value;}});each(params.args,function(value,key){params[key]=value;});var parentRoomInfo=this.eventInfo.sessions[eventData.sessionId];IndicoUI.Dialogs.addSessionSlot(this.methods[params.type].edit,this.methods.Event.dayEndDate,params,params.roomInfo,$O(parentRoomInfo),params.startDate,params.selectedDay,this.eventInfo.favoriteRooms,days,function(result){var aux=result.entry.entries;self.timetable._updateEntry(result,result.id);self.timetable.data[result.day][result.id].entries=aux;self.timetable._updateSessionData(result.session.id,['title'],[result.session.title])},true,this.eventInfo.bookedRooms,this.timetable);},moveEntry:function(eventData){var moveEntryDiag=new MoveEntryDialog(this,this.timetable,eventData.entryType,eventData.sessionId,eventData.sessionSlotId,timetable.currentDay,eventData.scheduleEntryId,eventData.conferenceId,eventData.startDate.date);moveEntryDiag.open();},moveEntryUpDown:function(eventData,direction){var self=this;var info=this._getLocatorParams(eventData);info.set('scheduleEntry',eventData.scheduleEntryId);info.set('conference',eventData.conferenceId);info.set('sessionTimetable',this.isSessionTimetable);var type=eventData.entryType;if(exists(eventData.sessionId)){info.set('session',eventData.sessionId);info.set('slot',eventData.sessionSlotId);if(type!='Session'){type='Session'+eventData.entryType;}else if(!self.isSessionTimetable){type='SessionSlot';}}
info.set('direction',direction);var killProgress=IndicoUI.Dialogs.Util.progress();indicoRequest(this.methods[type].moveUpDown,info,function(result,error){killProgress();if(error){IndicoUtil.errorReport(error);}else{var key=keys(result)[0];var entry={entry:result[key],id:key};self.timetable._updateDay(entry);}});},_addEntries:function(entries){var self=this;each(entries,function(entry){if(self.timetable.currentDay!=entry.day&&exists(self.timetable.parentTimetable)){self.timetable.parentTimetable._updateEntry(entry,entry.id);}else{self.timetable._updateEntry(entry,entry.id);}});}},function(timetable,eventInfo,isSessionTimetable){this.timetable=timetable;this.eventInfo=eventInfo;this.isSessionTimetable=isSessionTimetable;});type("TopLevelTimeTableManagementActions",["TimetableManagementActions"],{_getLocatorParams:function(eventData){var info=new WatchObject();info.set('scheduleEntryId',eventData.scheduleEntryId);info.set('conference',eventData.conferenceId);if(this.isSessionTimetable){info.set('sessionTimetable',this.isSessionTimetable);info.set('sessionId',eventData.sessionId);}
return info;}},function(timetable,eventInfo,contextInfo,isSessionTimetable){this.TimetableManagementActions(timetable,eventInfo,isSessionTimetable);this.session=null;});type("IntervalTimeTableManagementActions",["TimetableManagementActions"],{_getLocatorParams:function(eventData){var info=new WatchObject();info.set('scheduleEntryId',eventData.scheduleEntryId);info.set('conference',eventData.conferenceId);info.set('sessionId',eventData.sessionId);info.set('sessionSlotId',eventData.sessionSlotId);return info;}},function(timetable,eventInfo,intervalInfo,isSessionTimetable){this.TimetableManagementActions(timetable,eventInfo,isSessionTimetable);this.session=intervalInfo;});
