AUI({lang:"nb-NO"}).add("ntnu-viewer-calevent-module",function(A){var unHTML=function(value){var div=document.createElement("div");div.innerHTML=value;return div.textContent};function toText(input){var e=document.createElement("div");e.innerHTML=input;return e.innerText}A.namespace("NTNU");A.NTNU.EventViewer=function(config){A.NTNU.EventViewer.superclass.constructor.apply(this,arguments)};var EV=A.NTNU.EventViewer,widget=A.Widget;EV.NAME="EventViewer";EV.ATTRS={serviceUrl:{value:""},eventId:{value:""},
icalUrl:{value:""},modalNode:{value:null},modal:{value:null},event:{value:null,setter:function(value){return value}}};EV.DATEFORMAT="%d %b %Y";var currentPage=window.location.href;EV.TEMPLATES={event:'\x3cdiv class\x3d"singleEvent mr-auto"\x3e'+'\x3ch1 class\x3d"eventTitle"\x3e{title}\x3c/h1\x3e'+'\x3cdiv class\x3d"eventMain"\x3e'+'\x3cdiv class\x3d"metaData"\x3e'+'\x3cdiv class\x3d"timeLocationWrap"\x3e'+'\x3cdiv class\x3d"eventTime"\x3e{fromTime}'+"{toTime}\x3c/div\x3e"+'\x3cspan class\x3d"sr-only"\x3e'+
"Hvor:"+'\x3c/span\x3e\x3cspan class\x3d"location"\x3e{location}\x3c/span\x3e'+"\x3c/div\x3e"+'\x3cspan class\x3d"icalLabel hidden-print"\x3e\x3ca class\x3d"ntnu-ibtn" href\x3d"{icalurl}{entryUri}"\x3e'+"Legg til i din kalender"+"\x3c/a\x3e\x3c/span\x3e"+"\x3c/div\x3e"+'\x3cdiv class\x3d"eventBody"\x3e{message}\x3c/div\x3e'+'\x3cdiv class\x3d"channels"\x3e{feedNames}\x3c/div\x3e'+'\x3cdiv class\x3d"tags"\x3e{tags}\x3c/div\x3e'+"\x3c/div\x3e"+"\x3c/div\x3e",location:"{locationName}",locationLink:'\x3ca href\x3d"{locationTarget}"\x3e{locationName}\x3c/a\x3e',
tag:'\x3ca class\x3d"navigationTag" href\x3d"javascript:void(0)" data-tag\x3d"{tag}"\x3e\x3cspan class\x3d"tag"\x3e{tag}\x3c/span\x3e\x3c/a\x3e',channel:'\x3cspan class\x3d"channel"\x3e{channel}\x3c/span\x3e',channelLabel:'\x3cspan class\x3d"channelLabel"\x3e'+"Ogs\u00e5 publisert p\u00e5 Innsida, i kanalene:"+"\x3c/span\x3e\x3cbr/\x3e"};A.extend(EV,widget,{renderUI:function(){A.log("Rendering eventviewer");A.log("ServiceUrl: "+this.get("serviceUrl"))},bindUI:function(){this.after("eventChange",this.buildEventGui,
this);this.get("contentBox").delegate("click",this.navigateToTagView,".navigationTag",this)},syncUI:function(){var instance=this;var url=this.get("serviceUrl");var cfg={method:"POST",data:{eventId:this.get("eventId")},dataType:"json",headers:{charset:"utf-8"},timeout:15E3,on:{start:function(){},success:function(){var responseData=this.get("responseData");A.one(".eventViewerError").hide();if(responseData)if(responseData.error&&responseData.error=="404")A.one(".eventViewerError").text("Fant ikke kalenderhendelse for denne IDen").show();
else instance.set("event",responseData);else A.one(".eventViewerError").show()},failure:function(event){A.one(".eventViewerError").text("Tjeneren responderte ikke innenfor angitt tid. Pr\u00f8v igjen og hvis problemet vedvarer kontakt orakeltjenesten.").show();A.log("failure")},end:function(){A.log("end io request")}}};A.io.request(url,cfg)},successhandler:function(event,id,response){this.set("event",response.response)},navigateToTagView:function(event){var tag=event.currentTarget;var tagString=tag.getAttribute("data-tag").trim();
window.location.href=window.location.protocol+"//"+window.location.host+"/kalender#tag\x3d"+encodeURI(tagString)},buildEventGui:function(event){var eventData=event.newVal,location="",eventDomString;eventData.viewMoreText="Se flere";eventData.viewLessText="Se f\u00e6rre";if(eventData.locationName)if(eventData.locationTarget&&eventData.locationTarget.substring(0,4).toLowerCase()==="http")location=A.substitute(EV.TEMPLATES.locationLink,eventData);else location=A.substitute(EV.TEMPLATES.location,eventData);
eventData.location=location;eventData.icalurl=this.get("icalUrl");var params=[];params.push("text\x3d"+unHTML(eventData.title));params.push("dates\x3d"+moment.utc(eventData.fromTime).format("YYYYMMDD[T]HHmmss[Z]")+(eventData.toTime!=undefined?"/"+moment.utc(eventData.toTime).format("YYYYMMDD[T]HHmmss[Z]"):""));params.push("location\x3d"+toText(eventData.location));eventData.googleparams=params.join("\x26");eventDomString=A.substitute(EV.TEMPLATES.event,eventData,function(key,value){if(key=="title"){A.one("title").text(unHTML(value)+
" - NTNU");var breadcrumbNode=A.one("h1.ntnucrumb \x3e a");if(breadcrumbNode)breadcrumbNode.text(value)}if(key=="fromTime"&&value.length>0)return'\x3cspan class\x3d"sr-only"\x3e'+"N\u00e5r"+"\x3c/span\x3e"+"\x3cspan\x3e"+moment(value).format("ll")+" "+"kl."+" "+moment(value).format("LT")+"\x3c/span\x3e";else if(key=="toTime")if(value&&value.length>0){var fromDate=moment(eventData.fromTime).format("ll");var toDate=moment(value).format("ll");if(fromDate===toDate)return"\x3cspan\x3e \u2014 "+moment(value).format("LT")+
"\x3c/span\x3e";else return"\x3cspan\x3e \u2014 "+moment(value).format("ll")+" "+"kl."+" "+moment(value).format("LT")+"\x3c/span\x3e"}else return"";else if(key==="tags"){var tags="";A.Array.each(value,function(tag){tags+=A.substitute(EV.TEMPLATES.tag,{tag:tag})});return tags}else if(key==="feedNames"){var channels="";var channelCount=value.length;A.Array.each(value,function(channel,index){var channelHtml=A.substitute(EV.TEMPLATES.channel,{channel:channel});if(index<channelCount-1)channelHtml+=", ";
if(index>=3)channelHtml='\x3cspan class\x3d"channel hidden"\x3e'+channelHtml+"\x3c/span\x3e";channels+=channelHtml});if(channelCount>3)channels+='\x3cbutton class\x3d"view-more-btn"\x3e'+eventData.viewMoreText+"\x3c/button\x3e";return EV.TEMPLATES.channelLabel+"\x3cdiv class\x3d'feeds'\x3e"+channels+"\x3c/div\x3e"}return value});this.get("contentBox").append(A.Node.create(eventDomString));var viewMoreBtn=A.one(".view-more-btn");if(viewMoreBtn)viewMoreBtn.on("click",function(){var hiddenChannels=A.all(".channel.hidden");
if(hiddenChannels.size()>0){hiddenChannels.removeClass("hidden");viewMoreBtn.set("text",eventData.viewLessText)}else{hiddenChannels=A.all(".channel").slice(3);hiddenChannels.addClass("hidden");viewMoreBtn.set("text",eventData.viewMoreText)}});var jsonLdData=createJsonLd(eventData);var jsonLdScript=document.createElement("script");jsonLdScript.type="application/ld+json";jsonLdScript.text=JSON.stringify(jsonLdData);document.head.appendChild(jsonLdScript)},destructor:function(){}});function createJsonLd(eventData){return{"@context":"https://schema.org",
"@type":"Event",name:eventData.title,startDate:eventData.fromTime,endDate:eventData.toTime,url:window.location.href,location:{"@type":"Place",name:eventData.locationName},organizer:{"@type":"Organization",name:"NTNU"}}}},"1.0.0",{requires:["aui-node","aui-modal","widget","aui-io","substitute","aui-io-deprecated","json-parse","handlebars"]});
AUI().add("ntnu-calevent-filter-widget",function(A){function CalEventFilter(config){CalEventFilter.superclass.constructor.apply(this,arguments)}var CEF=CalEventFilter,widget=A.Widget,historyHash=new A.HistoryHash,history=historyHash;CEF.NAME="CalEventFilter";CEF.ATTRS={form:{value:""},portletNamespace:{value:""},categories:{value:{},setter:function(value){A.log(value);return value}},stateObject:{value:{},setter:function(history){var stateObject={};stateObject.state=[];var categories=this.get("categories");
if(history.date)stateObject.date=moment(history.date).format("YYYY-MM-DD");if(history.tag||history.tag!=null){console.log("setting stateObj tag \x3d "+history.tag);stateObject.tag=decodeURI(history.tag)}delete history.tag;delete history.date;for(state in history){var label=undefined;A.Array.each(categories,function(category){if(category.id==state)label=category.name});if(label!=undefined)stateObject.state.push({value:state,checked:!!(history[state]==1),label:label})}return stateObject}},currentDate:{value:moment().format("YYYY-MM-DD")},
calendar:{value:null,setter:function(value){return value}},resultWidgetLoaded:{value:false}};CEF.TEMPLATES={typeLabel:'\x3clabel for\x3d"caleventTypefilters" class\x3d"filterLabel"\x3e'+"Velg type arrangement"+"\x3c/label\x3e",calendar:'\x3cdiv class\x3d"calendar"\x3e\x3c/div\x3e',datePickerContainer:'\x3cdiv id\x3d"zebraCalendar"\x3e'+'\x3cbutton class\x3d"calendarButton" type\x3d"button" aria-expanded\x3d"false" aria-controls\x3d"calendarInstance"\x3e\x3cdiv class\x3d"calendarIcon"\x3e\x3c/div\x3e'+
"Velg fra dato"+"\x3c/button\x3e"+'\x3cform id\x3d"calendarInstance" class\x3d"calendar-content collapsed"\x3e\x3c/form\x3e'+"\x3c/div\x3e",resetFilters:'\x3cp class\x3d"mt-2 d-block w-100 small"\x3e'+'\x3ca class\x3d"reset-filters-link" style\x3d"text-decoration:underline;" href\x3d"#"\x3e'+"Nullstill filter"+"\x3c/a\x3e"+"\x3c/p\x3e",form:'\x3cform id\x3d"caleventTypefilters" class\x3d"typeFilters" role\x3d"group" aria-label\x3d"Filter by event type"\x3e{filters}\x3c/form\x3e',filter:'\x3cdiv class\x3d"filter"\x3e'+
'\x3cbutton type\x3d"button" class\x3d"filter-button" data-value\x3d"{id}" aria-pressed\x3d"false"\x3e'+"{name}"+"\x3c/button\x3e"+"\x3c/div\x3e"};CEF.LANG={};A.extend(CEF,widget,{renderUI:function(){this.get("contentBox").append(A.Node.create(CEF.TEMPLATES.typeLabel));var categories=this.get("categories");var portletNamespace=this.get("portletNamespace");var filtersHTML="";A.Array.each(categories,function(category){filtersHTML+=A.substitute(CEF.TEMPLATES.filter,{id:category.id,name:category.name,
portletNamespace:portletNamespace})});var formHTML=A.substitute(CEF.TEMPLATES.form,{portletNamespace:portletNamespace,filters:filtersHTML});var formNode=A.Node.create(formHTML);this.get("contentBox").append(formNode);this.set("form",formNode);this.get("contentBox").append(A.Node.create(CEF.TEMPLATES.calendar));this.get("contentBox").append(A.Node.create(CEF.TEMPLATES.datePickerContainer));this.get("contentBox").append(A.Node.create(CEF.TEMPLATES.resetFilters));A.all(".circleLoader").removeClass("circleLoader")},
bindUI:function(){this.get("contentBox").delegate("click",function(event){event.preventDefault();var button=event.currentTarget;var isPressed=button.getAttribute("aria-pressed")==="true";var newState=!isPressed;button.setAttribute("aria-pressed",newState.toString());button.toggleClass("selected",newState);var states=this.get("stateObject");states.state=[];this.get("form").all(".filter-button").each(function(filterButton){var isButtonPressed=filterButton.getAttribute("aria-pressed")==="true";var state=
{value:filterButton.getData("value"),checked:isButtonPressed,label:filterButton.get("text").trim()};states.state.push(state);states.tag=null});this.set("stateObject",this.convertFromStateToHistory(states));this.doQuery("buttonChange")},".filter-button",this);this.get("contentBox").delegate("click",function(event){event.preventDefault();var button=event.currentTarget;var calendarContent=A.one("#calendarInstance");var isExpanded=button.getAttribute("aria-expanded")==="true";if(isExpanded){button.setAttribute("aria-expanded",
"false");calendarContent.addClass("collapsed")}else{button.setAttribute("aria-expanded","true");calendarContent.removeClass("collapsed")}},".calendarButton",this);this.get("contentBox").delegate("click",function(event){event.preventDefault();this.get("form").all(".filter-button").each(function(button){button.setAttribute("aria-pressed","false");button.removeClass("selected")});A.all("#calendarInstance .dp_selected").removeClass("dp_selected");var categories=this.get("categories");var freshState={state:[],
tag:null,date:moment().format("YYYY-MM-DD")};A.Array.each(categories,function(category){freshState.state.push({value:category.id,checked:false,label:category.name})});this.set("currentDate",freshState.date);this.set("stateObject",this.convertFromStateToHistory(freshState));this.doQuery("resetFilters");setTimeout(function(){window.location.hash=""},0)},".reset-filters-link",this);A.on("ntnu-calevent-result-loaded",function(){this.createDatePicker();this.after("calendarChange",function(event){if(event.newVal!=
null&&A.one(".dp_selected"))A.one(".dp_selected").simulate("click")});this.doQuery("ntnu-calevent-result-loaded-query")},this);A.on("ntnu-calevent-result-loaded",function(){this.set("resultWidgetLoaded",true);A.log("caleventResultLoaded")},this)},syncUI:function(){this.setSelectedFiltersInGUI(this.get("stateObject"));if(this.get("resultWidgetLoaded")==true){this.createDatePicker();this.after("calendarChange",function(event){if(event.newVal!=null&&A.one(".dp_selected"))A.one(".dp_selected").simulate("click")});
this.doQuery("sync")}},getState:function(){return this.get("stateObject")},setState:function(state){this.setSelectedFiltersInGUI(state);state.date=moment(this.get("currentDate")).format("YYYY-MM-DD");this.set("stateObject",this.convertFromStateToHistory(state));this.doQuery("setState")},doQuery:function(caller){A.log(caller);historyHash.add(this.convertFromStateToHistory(this.get("stateObject")));var stateX=this.get("stateObject");var query={query:{filter:this.get("stateObject").state?this.get("stateObject").state:
{},date:this.get("stateObject").date?this.get("stateObject").date:moment().format("YYYY-MM-DD"),tag:this.get("stateObject").tag}};this.fire("CalEventFilterStateChange",query)},convertFromStateToHistory:function(stateObject){var historyObject={};A.Array.each(stateObject.state,function(state){historyObject[state.value]=state.checked===true?1:0});if(stateObject.date)historyObject.date=moment(stateObject.date).format("YYYY-MM-DD");if(stateObject.tag)historyObject.tag=encodeURI(stateObject.tag);if(stateObject.tag&&
stateObject.tag.length==0||stateObject.tag==null)historyObject.tag=null;return historyObject},setSelectedFiltersInGUI:function(stateObject){this.get("form").all(".filter-button").each(function(button){button.setAttribute("aria-pressed","false");button.removeClass("selected");A.Array.each(stateObject.state,function(state){if(button.getData("value")==state.value&&state.checked==true){button.setAttribute("aria-pressed","true");button.addClass("selected")}})})},createDatePicker:function(){var scriptUrls=
["/calevent-portlet/js/lib/Zebra_Datepicker-master/public/javascript/zebra_datepicker.src.js"];var widgetInstance=this;var isNorwegian=A.one("html").getAttribute("lang")==="no";var initializing=true;var zebraPickerConfig={always_visible:A.one("#calendarInstance"),show_clear_date:"FALSE",readonly_element:false,onSelect:function(date,date2,jsDateObject){var currentHistory=historyHash.get();currentHistory.date=jsDateObject;widgetInstance.set("currentDate",jsDateObject);widgetInstance.set("stateObject",
currentHistory);if(!initializing)widgetInstance.doQuery("zebra")}};if(history.date&&history.date.length>0)zebraPickerConfig.start_date=moment(history.date).format("YYYY-MM-DD");if(isNorwegian){zebraPickerConfig.days=["S\u00f8ndag","Mandag","Tirsdag","Onsdag","Torsdag","Fredag","L\u00f8rdag"];zebraPickerConfig.months=["Januar","Februar","Mars","April","Mai","Juni","Juli","August","September","Oktober","November","Desember"]}$("#zebraCalendar").Zebra_DatePicker(zebraPickerConfig);var calendarInstance=
$("#zebraCalendar").data("Zebra_DatePicker");widgetInstance.set("calendar",calendarInstance);initializing=false}});A.namespace("NTNU").CalEventFilter=CalEventFilter},"1.0.0",{requires:["widget","substitute","aui-node","aui-calendar","history","history-hash","node-event-simulate","io"]});
AUI().add("ntnu-calevent-result-widget",function(A){function CaleventResultWidget(config){CaleventResultWidget.superclass.constructor.apply(this,arguments)}CaleventResultWidget.NAME="CaleventResultWidget";CaleventResultWidget.ATTRS={resourceUrl:{value:""},jsonData:{value:[]},filter:{value:""},filterObject:{value:{}},page:{value:0},NS:{value:""},categories:{value:{}}};var CRW=CaleventResultWidget;CRW.ICONLINK='\x3ca href\x3d"{url}" class\x3d""\x3e\x3cimg src\x3d"{icon}"/\x3e\x3c/a\x3e';CRW.LINK='\x3ca href\x3d"{url}"\x3e{text}\x3c/a\x3e';
CRW.IMGBASEURL=window.location.origin+"/img/";CRW.MULTIMEDIAURL=window.location.origin;CRW.TIMETABLEURL=window.location.origin;CRW.CALEVENTBASEURL="caleventportlet.caleventbaseurl";CRW.TEMPLATES={wrapper:'\x3cdiv class\x3d"filedWrap"\x3e\x3c/div\x3e',input:'\x3cinput placeholder\x3d"Add tag" name\x3d"tagInput" id\x3d"{NS}ntnuTagWidget" type\x3d"text"/\x3e',hiddenInput:'\x3cinput type\x3d"hidden" name\x3d"tagInputList" value\x3d"{tagsCSV}"/\x3e',event:'\x3cli class\x3d"event"\x3e'+'\x3cdiv class\x3d"dateBox p-2 {eventTypeCss}"\x3e'+
'\x3cdiv class\x3d"dateLabel"\x3e{fromDateDay}\x3c/div\x3e'+'\x3cdiv class\x3d"monthLabel"\x3e{fromDateMonth}\x3c/div\x3e'+"\x3c/div\x3e"+'\x3cdiv class\x3d"headerMessageWrapper"\x3e'+'\x3cdiv class\x3d"eventHeader"\x3e'+'\x3ca href\x3d"{entryUri}"\x3e\x3ch2 class\x3d"eventLabel"\x3e{title}\x3c/h2\x3e\x3c/a\x3e'+'\x3cdiv class\x3d"eventMeta"\x3e'+'\x3cspan class\x3d"time"\x3e{fromTime} {toTime}\x3c/span\x3e'+'\x3cspan class\x3d"location"\x3e\x3ca href\x3d"{locationTarget}"\x3e{locationName}\x3c/a\x3e\x3c/span\x3e'+
"\x3c/div\x3e"+"\x3c/div\x3e"+"\x3c/div\x3e"+"\x3c/li\x3e",category:'\x3cspan class\x3d""\x3e\x3ca class\x3d"viewCategory" data-cat-id\x3d"{id}" href\x3d"javascript:void(0)"\x3e{cat}\x3c/a\x3e\x3cspan class\x3d"colorScheeme"\x3e\x3c/span\x3e\x3c/span\x3e',eventList:'\x3cul class\x3d"eventList"\x3e\x3c/ul\x3e',loadMore:'\x3cdiv class\x3d"footer"\x3e'+'\x3cbutton type\x3d"button" class\x3d"btn btn-b loadmore shadow" title\x3d"mer"\x3e'+"Vis flere"+"\x3c/button\x3e"+"\x3c/div\x3e",readMore:'\x3ca class\x3d"readMore" href\x3d"javascript:void(0);"\x3e'+
"Les mer"+"\x3c/a\x3e",readLess:'\x3ca class\x3d"readLess" href\x3d"javascript:void(0);"\x3e'+"Les mindre"+"\x3c/a\x3e",emptyView:"\x3cli\x3e"+"Det finnes ingen kalenderhendelser for den angitte datoen eller valgte type"+"\x3c/li\x3e"};A.extend(CaleventResultWidget,A.Widget,{renderUI:function(){var cBox=this.get("contentBox");cBox.append(A.Node.create(CRW.TEMPLATES.eventList));cBox.append(A.Node.create(CRW.TEMPLATES.loadMore))},bindUI:function(){this.after("jsonDataChange",this.populateCaleventList,
this);this.get("filter").on("CalEventFilterStateChange",function(event){this.set("filterObject",event.query);this.set("page",0);this.loadData(event.query,this.get("page"),event.query.tag)},this);this.get("contentBox").delegate("click",function(event){var clickNode=event.currentTarget;var categoryID=clickNode.getAttribute("data-cat-id");this.get("filter").setState({state:[{checked:true,label:this.getCategoryName(categoryID).name,value:categoryID}]})},".viewCategory",this);this.get("contentBox").delegate("click",
this.getMoreEvents,".loadmore",this);this.get("contentBox").delegate("click",function(event){var clickNode=event.currentTarget,parent=clickNode.ancestor(".eventWrapper"),message=parent.one(".message"),summary=parent.one(".summary");message.toggle();summary.toggle();if(message.hasClass("hide"))message.all("img").removeAttribute("style");else message.all("img").each(function(image){image.setAttribute("style",image.getAttribute("data-styles"))});if(summary.hasClass("hide"))summary.all("img").removeAttribute("style");
else summary.all("img").each(function(image){image.setAttribute("style",image.getAttribute("data-styles"))})},"a.readMore, a.readLess")},syncUI:function(){A.fire("ntnu-calevent-result-loaded")},getCategoryName:function(id){var categoryArray=this.get("categories");for(var i=0;i<categoryArray.length;i++){var category=categoryArray[i];if(category.id==id)return category}return{}},convertFromHistoryToState:function(history){var stateObject={};stateObject.state=[];if(history.date)stateObject.date=moment(history.date).format("YYYY-MM-DD");
for(state in history)stateObject.state.push({value:history[state]});if(stateObject.date&&stateObject.date.length>0||stateObject.state.length>0)return stateObject;return{}},createQueryString:function(queryObject,page,tag){var queryString="\x26page\x3d"+page;if(tag&&tag.length>0)queryString+="\x26tag\x3d"+tag;A.Array.each(queryObject.filter,function(state,index){if(state.checked)queryString+="\x26filterValue\x3d"+state.value});if(queryObject.date)queryString+="\x26date\x3d"+A.DataType.Date.format(queryObject.date,
{format:"%Y-%m-%d"});return queryString},getNsId:function(id){return"#"+this.get("NS")+id},getMoreEvents:function(){this.set("page",this.get("page")+1);this.loadData(this.get("filterObject"),this.get("page"))},loadData:function(queryObject,page,tag){var queryString=this.createQueryString(queryObject,page);if(tag&&tag.length>0)queryString+="\x26tag\x3d"+tag;var instance=this;this.get("contentBox").one(".eventList").addClass("bigLoader");var url=this.get("resourceUrl");var cfg={method:"POST",dataType:"json",
headers:{charset:"utf-8"},data:{channel:"urn:uuid:2ed06db3-09df-3e29-9f22-78876c8ccac2",stamp:(new Date).getTime()},timeout:15E3,on:{start:function(){},success:function(){var responseData=this.get("responseData");instance.set("jsonData",responseData);instance.get("contentBox").one(".eventList").removeClass("bigLoader")},failure:function(event){A.log("failure");A.log("Could not retrieve data: "+event.error.message);instance.get("contentBox").one(".eventList").removeClass("bigLoader");A.one(".eventViewerError").text("Tjeneren responderte ikke innenfor angitt tid. Pr\u00f8v igjen og hvis problemet vedvarer kontakt orakeltjenesten.").show()},
end:function(){A.log("end io request")}}};A.log("Querystring \x3d "+queryString);A.io.request(url+queryString,cfg)},getStyleObject:function(node){var styleString=node.getAttribute("style");var stylesArr=styleString.split(";");var object={};A.Array.each(stylesArr,function(style){if(style.length>0){var keyVal=style.split(":");object[A.Lang.trim(keyVal[0])]=A.Lang.trim(keyVal[1])}});return object},populateCaleventList:function(event){var cBox=this.get("contentBox");cBox.one(".eventList").empty();cBox.one(".eventList").addClass("circleLoader");
var instance=this;if(A.Lang.isArray(event.newVal)&&event.newVal.length>0)A.Array.each(event.newVal,function(calItem,index){var eventTypeCss="";calItem.fromDateDay=A.DataType.Date.format(new Date(calItem.fromTime),{format:"%d"});calItem.fromDateMonth=A.DataType.Date.format(new Date(calItem.fromTime),{format:"%b"});var completeEvent=A.substitute(CRW.TEMPLATES.event,calItem,function(key,value){if(value===null||value==="null")value="";if(key=="fromTime"&&value)return" "+A.DataType.Date.format(new Date(value),
{format:"%d. %b %R"});if(key=="toTime"&&value){var fromDate=A.DataType.Date.format(new Date(calItem.fromTime),{format:"%d. %b"});var toDate=A.DataType.Date.format(new Date(value),{format:"%d. %b"});if(fromDate===toDate)return" \x26mdash; "+A.DataType.Date.format(new Date(value),{format:"%R"});else return" \x26mdash; "+A.DataType.Date.format(new Date(value),{format:"%d. %b %R"})}if(key==="entryUri")return"/kalender/detaljer/"+"-/event/"+value.substr(9,value.length);if(key=="calEventTypes"){eventTypeCss=
catClass;return catString}if(key=="message"&&value&&value.length){var tempDiv=document.createElement("div");tempDiv.innerHTML=value;var firstImg=tempDiv.querySelector("img");if(firstImg)firstImg.remove();var summary=tempDiv.textContent||tempDiv.innerText;var end=Math.min(250,summary.length);var truncatedSummary=summary.substring(0,end)+(end==250?" \u2026 ":"");return'\x3cdiv class\x3d"summary"\x3e'+truncatedSummary+"\x3c/div\x3e"}if(key=="eventImage"&&calItem.message){var tempDiv=document.createElement("div");
tempDiv.innerHTML=calItem.message;var firstImg=tempDiv.querySelector("img");if(firstImg){firstImg.removeAttribute("style");return'\x3cdiv class\x3d"eventImage"\x3e'+firstImg.outerHTML+"\x3c/div\x3e"}return""}if(key=="eventTypeCss")return eventTypeCss;return value},this);cBox.one(".eventList").append(completeEvent)},this);else cBox.one(".eventList").append(A.Node.create(CRW.TEMPLATES.emptyView))}});A.namespace("NTNU").CaleventResultWidget=CaleventResultWidget},"1.0.0",{requires:["aui-node","widget",
"substitute","aui-io-request-deprecated","datatype-date","io","json-parse","history"]});
AUI({lang:"nb-NO"}).add("ntnu-mini-calevent-edit",function(A){function MiniCalEventEdit(config){MiniCalEventEdit.superclass.constructor.apply(this,arguments)}MiniCalEventEdit.NAME="MiniCalEventEdit";MiniCalEventEdit.ATTRS={form:{value:""},wrapper:{value:""},tagInputList:{value:""},NS:{value:""},tags:{value:[],setter:function(value){function filter(value){value=value.replace('""','"');value=value.replace("'","_");if(value.indexOf('""')!=-1||value.indexOf("'")!=-1)filter(value);return value}return filter(value)}},
allChannelsUrl:{value:""},categories:{value:{},setter:function(value){A.log("We got categories");A.log(value);return value}},allChannels:{value:[],setter:function(value){var normalizedArr={channels:[]};A.Array.each(value,function(channel){if(channel.internal===true){var miniChannel={uri:channel.uri,name:channel.name,description:channel.description};normalizedArr.channels.push(miniChannel)}});A.log("Return array::");A.log(normalizedArr);return normalizedArr}}};var MCE=MiniCalEventEdit;MCE.TEMPLATES=
{selectedChannel:'\x3cdiv class\x3d"selectedChannel btn btn-outline-success btn-sm mr-2 mb-2" data-channel-uri\x3d"{uri}"\x3e\x3cinput type\x3d"hidden" name\x3d"channel" value\x3d"{uri}|{name}" /\x3e\x3cspan class\x3d"name"\x3e{name}\x3c/span\x3e\x3cspan\x3e\x3ca href\x3d"javascript:void(0);" class\x3d"removeChannelItem fas fa-times ml-2 text-white" title\x3d"remove"\x3e\x3c/a\x3e\x3c/span\x3e\x3c/div\x3e'};A.extend(MCE,A.Base,{initializer:function(cfg){this.addEventHandlers();this.fire("jQueryLoaded");
this.loadChannelData();A.log(this.get("categories"));var messageTags=new A.NTNU.MessageTags({chosenTags:this.get("tagInputList"),NS:this.get("NS"),tags:this.get("tags")});messageTags.render(this.getNsId("messageTags"))},destructor:function(){},registerAutoComplete:function(contentBox,inputNode,dataSource){var myDataSource=new A.DataSource.Local({source:dataSource.channels,matchKey:"name",schema:{resultFields:[{key:"name"},{key:"uri"},{key:"description"}],resultListLocator:"channels"},schemaType:"json"});
var resultAutoComplete=new A.AutoComplete({contentBox:contentBox,source:myDataSource,inputNode:inputNode,resultFilters:["subWordMatch"],resultFormatter:function(query,result){return A.Array.map(result,function(item){return item.raw.name})},resultTextLocator:function(result){return result.name}});resultAutoComplete.on("queryChange",function(event){});resultAutoComplete.on("resultsChange",function(event){});resultAutoComplete.after("select",function(event){A.log(event);this.get("wrapper").one(".chosenChannels").append(A.Node.create(A.substitute(MCE.TEMPLATES.selectedChannel,
event.result.raw)));this.get("wrapper").one(".autoCompleteInput").set("value","")},this);resultAutoComplete.render();var onItemSelect=function(event){A.log(event)};resultAutoComplete.on("itemSelect",onItemSelect)},loadChannelData:function(){var context=this;var url=this.get("allChannelsUrl"),myDataSource=new A.DataSource.IO({source:url}),myCallback={success:function(e){var parsedJsonResponse=A.JSON.parse(e.response.results[0].response);context.set("allChannels",parsedJsonResponse)},failure:function(e){A.log("Could not retrieve data: "+
e.error.message)}};myDataSource.sendRequest({callback:myCallback,cfg:{method:"post"}})},addEventHandlers:function(){var selectID=this.getNsId("eventType");var formId=this.getNsId("miniEventCalenderEditForm");var selectName=this.get("NS")+"eventType";this.on("jQueryLoaded",function(){var select=jQuery(formId+" "+selectID);select.attr("data-placeholder","Velg type aktivitet");select.attr("multiple","multiple");select.attr("name",selectName);select.find('option[value\x3d"-1"]').remove();select.addClass("chzn-select")},
this);this.after("allChannelsChange",function(event){A.log("allChannelsChange");this.registerAutoComplete(this.get("wrapper").one(".autocomplete"),this.get("wrapper").one(".autoCompleteInput"),event.newVal)},this);this.get("wrapper").delegate("click",function(event){var clickNode=event.currentTarget;clickNode.ancestor(".selectedChannel").remove()},".removeChannelItem",this)},getNsId:function(id){return"#"+this.get("NS")+id}});A.namespace("NTNU").MiniCalEventEdit=MiniCalEventEdit;var MessageTags=function(config){MessageTags.superclass.constructor.apply(this,
arguments)};var MT=MessageTags;MT.NAME="MessageTags";MT.ATTRS={tags:{value:[],setter:function(value){try{return A.JSON.parse(value)}catch(err){value=value.replace(/\+/g,"").replace(/\\+/g,"").replace(/['"]+/g,"").replace(/[\[\]']+/g,"");value=value.split(",");value=JSON.stringify(value);return A.JSON.parse(value)}}},chosenTags:{value:[],setter:"_chosenTagsSetter"},newTag:{value:"",setter:"_newTagSetter",validator:"_newTagValidator"},NS:{value:""}};MT.TEMPLATES={wrapper:'\x3cdiv class\x3d"filedWrap"\x3e\x3c/div\x3e',
input:'\x3clabel class\x3d"d-block" for\x3d"{NS}ntnuTagWidget"\x3eTagg: Hent aktiviteter med f\u00f8lgende tagg:\x3c/label\x3e\x3cinput placeholder\x3d"Add tag" name\x3d"tagInput" id\x3d"{NS}ntnuTagWidget" type\x3d"text"/\x3e',hiddenInput:'\x3cinput type\x3d"hidden" data-placeholder\x3d"Legg til tag" name\x3d"tagInputList" value\x3d"{tagsCSV}"/\x3e',tagList:'\x3cdiv class\x3d"tagInputListView"\x3e{tags}\x3c/div\x3e',tag:'\x3cspan class\x3d"tag btn btn-outline-success btn-sm rounded-circle mr-2"\x3e\x3cspan class\x3d"tagLabel"\x3e{tag}\x3c/span\x3e\x3ca class\x3d"deleteTag fas fa-times pl-2 text-muted" href\x3d"javascript:void(0);"\x3e\x3c/a\x3e\x3c/span\x3e'};
A.extend(MT,A.Widget,{renderUI:function(){var wrapper=A.Node.create(MT.TEMPLATES.wrapper);wrapper.append(A.Node.create(A.substitute(MT.TEMPLATES.input,{NS:this.get("NS")})));if(this.get("chosenTags").length>0)wrapper.append(A.Node.create(A.substitute(MT.TEMPLATES.tagList,{tags:this.populateTagList(this.get("chosenTags"))})));else wrapper.append(A.Node.create(A.substitute(MT.TEMPLATES.tagList,{tags:""})));wrapper.append(A.Node.create(A.substitute(MT.TEMPLATES.hiddenInput,{tagsCSV:this.get("chosenTags")})));
this.get("contentBox").append(wrapper);var scriptUrls=["https://code.jquery.com/ui/1.12.1/jquery-ui.min.js"];var availableTags=this.get("tags");var widgetTagId=this.getNsId("ntnuTagWidget");var selected=false;A.Get.script(scriptUrls,{onSuccess:function(){jQuery(widgetTagId).autocomplete({source:availableTags,select:function(event,ui){jQuery(widgetTagId).val("");A.log("select auto tag");selected=true},change:function(event){},close:function(event,ui){if(selected){jQuery(widgetTagId).val("");selected=
false}}})}})},bindUI:function(){this.after("chosenTagsChange",function(event){this.get("contentBox").one('input[name\x3d"tagInputList"]').val(this.get("chosenTags").join(","))});this.get("contentBox").delegate("click",this.deleteTag,".deleteTag",this);this.get("contentBox").one('input[name\x3d"tagInput"]').on("key",this.addTag,"enter",this);this.after("newTagChange",this.tagUpdate,this)},syncUI:function(){},getNsId:function(id){return"#"+this.get("NS")+id},tagUpdate:function(event){this.get("contentBox").one(".tagInputListView").append(A.Node.create(A.substitute(MT.TEMPLATES.tag,
{tag:event.newVal})));var chosenTagArrray=this.get("chosenTags");chosenTagArrray.push(event.newVal);this.set("chosenTags",chosenTagArrray)},_chosenTagsSetter:function(value){if(A.Lang.isString(value))return value.split(",");else if(A.Lang.trim(value).length>0)return value},_newTagSetter:function(value){return value},_newTagValidator:function(value){if(value&&value.length>0&&value.indexOf("'")===-1&&value.indexOf('"')===-1)return value;else A.log("new tag has been rejected")},populateTagList:function(tags){var listHTML=
"";A.Array.each(tags,function(tag){if(tag.length>0)listHTML+=A.substitute(MT.TEMPLATES.tag,{tag:tag})});return listHTML},addTag:function(event){var inputNode=event.currentTarget;if(inputNode.val().length>0&&inputNode.val().indexOf("'")===-1){var newTag=inputNode.val();newTag=newTag.replace('"','"');this.set("newTag",inputNode.val());inputNode.set("value","")}},deleteTag:function(event){var deleteNode=event.currentTarget;var tagNode=deleteNode.ancestor(".tag");var chosenTagsArr=this.get("chosenTags");
var deleteValue=A.Lang.trim(tagNode.one(".tagLabel").text());var filteredArray=A.Array.filter(chosenTagsArr,function(existingTag){if(deleteValue.toLowerCase()==A.Lang.trim(existingTag).toLowerCase())return false;else return true});this.set("chosenTags",filteredArray);tagNode.remove()}});A.namespace("NTNU").MessageTags=MT},"1.0.0",{requires:["aui-node","base","widget","substitute","event-key","autocomplete","datasource","autocomplete-filters"]});
AUI().add("ntnu-mini-calevent-module",function(A){A.namespace("NTNU");A.NTNU.MiniCalEvent=function(config){A.NTNU.MiniCalEvent.superclass.constructor.apply(this,arguments)};var MCE=A.NTNU.MiniCalEvent,widget=A.Widget;MCE.NAME="MiniCalEvent";MCE.ATTRS={resourceUrl:{value:"",setter:function(value){},validator:function(value){return value}},calEventJson:{value:{},setter:"_calEventJsonSetter",validator:"__calEventJsonValidator"},IdToEventLooockUp:{value:null},dialogNode:{value:""},dialog:{value:""},saveFormresourceUrl:{value:""},
editModeLinkFooter:{value:""},fetchCategoriesUrl:{value:""},categoriesJson:{value:{}},showInOverLay:{value:true,setter:function(value){return value==="true"}},showMore:{value:false,setter:function(value){return value==="true"}},toolTipInstanceArr:{value:[]},NS:{value:""},viewPath:{value:"/web/guest/detaljer/",setter:function(value){if(value.lastIndexOf("/")==value.length-1)return value;else return value+"/"}}};MCE.TEMPLATES={eventWrap:'\x3cli class\x3d"calEvent" data-id\x3d"{id}"\x3e'+'\x3cspan class\x3d"fromDate dateBox d-inline float-left text-white text-center text-uppercase mr-1 p-2"\x3e{fromTime}\x3c/span\x3e'+
'\x3cdiv class\x3d"eventInfo"\x3e'+'\x3cspan class\x3d"title"\x3e\x3ca href\x3d"{entryUri}"\x3e{title}\x3c/a\x3e\x3c/span\x3e'+'\x3cdiv class\x3d"calEventDetails"\x3e'+'\x3cspan class\x3d"fromTime"\x3e\x3c/span\x3e'+'\x3cspan class\x3d"time"\x3e\x3c/span\x3e\x3cspan class\x3d"timeValue mr-1"\x3e{time}\x3c/span\x3e'+'\x3cspan class\x3d"location"\x3e{locationName}\x3c/span\x3e'+"\x3c/div\x3e"+"\x3c/div\x3e"+"\x3c/li\x3e",toolTipWrap:'\x3cdiv class\x3d"toolTipContentWrapper"\x3e{message}\x3c/div\x3e'};
MCE.LANG={};A.extend(MCE,widget,{renderUI:function(){this.get("contentBox").append('\x3cdiv class\x3d"eventContent"\x3e\x3c/div\x3e');this.get("contentBox").append(this.get("editModeLinkFooter"))},bindUI:function(){this.on("ntnu:minicaleventsetting:store",this.settingsChangeHandler,this);this.after("calEventJsonChange",this.buildEvents,this);if(A.one(this.getNsId("editModeLink")))A.one(this.getNsId("editModeLink")).on("click",function(event){var bodyContentNode='\x3cdiv class\x3d"editForm" id\x3d"'+
this.getNsId("editForm")+'"\x3e\x3c/div\x3e';var instance=Liferay.Util.Window.getWindow({dialog:{bodyContent:A.Node.create(bodyContentNode),centered:true,constrain2view:true,destroyOnClose:true,draggable:true,resizable:false,stack:true,title:"Settings",cssClass:"miniCalEventSettings"}}).render(this.get("dialogNode"));this.set("dialog",instance);instance.get("bodyContent").plug(A.Plugin.IO,{uri:event.currentTarget.getAttribute("data-editmodeUrl"),method:"POST"});instance.get("contentBox").delegate("click",
function(event){instance.hide()},".cancel",this);instance.get("contentBox").delegate("click",function(event){var headingNode=this.get("contentBox").ancestor(".miniCalender").one(".miniCalHeading");var form=instance.get("contentBox").one("form");var context=this;var cfg={method:"POST",headers:{"Cache-Control":"no-cache","Pragma":"no-cache"},cache:false,data:{"action":"save"},form:{id:form.guid()},on:{start:function(){A.log("sending request")},success:function(){var newTitle=form.one(".displayName").val();
if(headingNode&&newTitle.length>0)headingNode.text(newTitle);context.loadData();context.set("viewPath",A.one(".viewerPath").get("value"));var formDataConfig={showMore:form.one(".showMore").get("checked"),displayCount:form.one(".displayCount").get("value")};context.fire("ntnu:minicaleventsetting:store",formDataConfig);context.fire("ntnu:minicalevent:close")},end:function(){}}};A.io.request(this.get("saveFormresourceUrl"),cfg)},".submit",this)},this);this.after("showInOverLayChange",function(event){A.log("showInOverLay is changed to:: "+
event.newVal)});this.after("showMoreChange",function(event){A.log("showMore is changed to : "+event.newVal)});this.get("contentBox").delegate("click",this.redirectToViewer,".calEvent",this);this.get("contentBox").delegate("click",this.closeAllToolTips,".calEvent",this);this.on("ntnu:minicalevent:close",function(){this.get("dialog").hide()},this)},syncUI:function(){this.loadData()},destructor:function(){},getNsId:function(id){return"#"+this.get("NS")+id},settingsChangeHandler:function(settings){this.set("showInOverLay",
settings.showInOverLay+"");this.set("showMore",settings.showMore+"");this.loadData()},_calEventJsonSetter:function(value){var normalizedObject=[];A.Array.each(value,function(item){item.time=A.DataType.Date.format(new Date(item.fromTime),{format:"%R"});normalizedObject.push(item)});return normalizedObject},__calEventJsonValidator:function(value){var hasUri=true;A.Array.each(value,function(item){if(!item.entryUri||!A.Lang.isString(item.entryUri)||!item.entryUri.length>10)hasUri=false});if(!A.Lang.isArray(value)&&
hasUri===false){this.showMessage("Det er for \u00f8yeblikket problemer med kalenderdataen.");return false}return true},buildEvents:function(event){var self=this;this.get("contentBox").ancestor(".miniCalender").removeClass("circleLoader");this.get("contentBox").one(".eventContent").empty();this.set("toolTipInstanceArr",[]);var events=event.newVal;var keyArray=[];var valueArray=[];var UL=A.Node.create('\x3cul class\x3d"list-unstyled"\x3e\x3c/ul\x3e');A.Array.each(events,function(event){keyArray.push(event.id);
valueArray.push(event);UL.append(A.substitute(MCE.TEMPLATES.eventWrap,event,function(key,value){if(value===null)return"";if(key=="fromTime"||key=="toTime"){var day=A.DataType.Date.format(new Date(value),{format:"%d"});var month=A.DataType.Date.format(new Date(value),{format:"%b"});return'\x3cspan class\x3d"day"\x3e'+day+'\x3c/span\x3e\x3cspan class\x3d"month"\x3e'+month+"\x3c/span\x3e"}if(key==="entryUri")return self.get("viewPath")+"-/event/"+value.substr(9,value.length);return value}))},this);this.get("contentBox").one(".eventContent").append(UL);
this.set("IdToEventLooockUp",A.Array.hash(keyArray,valueArray))},closeAllToolTips:function(){A.Array.each(this.get("toolTipInstanceArr"),function(toolTipInstance){toolTipInstance.hide()},this)},getContentById:function(node){var eventId=node.getAttribute("data-id");var hash=this.get("IdToEventLooockUp");var fromTime=hash[eventId].fromTime;var toTime=hash[eventId].toTime;if(fromTime&&fromTime>0)fromTime=" "+A.DataType.Date.format(new Date(fromTime),{format:"%d/%m %R"});if(toTime&&toTime>0)toTime=" \x26mdash; "+
A.DataType.Date.format(new Date(toTime),{format:"%d/%m %R"});var location=hash[eventId].locationName;var bubbleContent='\x3cdiv class\x3d"calendarBubbleDate"\x3e'+fromTime+toTime+"\x3c/div\x3e";if(location)bubbleContent+='\x3cdiv class\x3d"calendarBubbleLocation"\x3e'+location+"\x3c/div\x3e";bubbleContent+=hash[eventId].message;return bubbleContent},showMessage:function(message){var contentArea=this.get("contentBox").one(".eventContent");if((!message||message.length==0)&&contentArea.one(".miniCalmsg"))contentArea.one(".miniCalmsg").remove();
else contentArea.append(A.Node.create('\x3cspan class\x3d"miniCalmsg"\x3e\x3c/span\x3e').text(message))},loadData:function(){this.showMessage("");var context=this;var url=this.get("resourceUrl");var cfg={method:"POST",dataType:"json",headers:{charset:"utf-8"},timeout:15E3,on:{start:function(){},success:function(){var responseData=this.get("responseData");if(responseData&&responseData.length>0)context.set("calEventJson",responseData);else context.showMessage("Det er for \u00f8yeblikket ingen aktuelle aktiviteter.");
if(context.get("showMore")){var showMoreLink=A.Node.create('\x3ca class\x3d"moreEvents d-block" href\x3d"'+"/kalender"+'"\x3e'+"Flere arrangement"+"\x3c/a\x3e");context.get("contentBox").one(".eventContent").append(showMoreLink)}},failure:function(event){A.log("failure")},end:function(){A.log("end io request")}}};A.io.request(url,cfg)}})},"1.0.0",{requires:["aui-io-plugin-deprecated","json-parse","json-stringify","aui-node","aui-io","widget","substitute","datatype-date","aui-tooltip","liferay-util-window"]});
