{"version":3,"sources":["main.js"],"names":["window","init","onpopstate","event","transportFromQuery","initializeCustomScrollbars","initEvents","getInitialViewBoxes","getLevelByFloorNumber","floor","i","floors","length","innerHTML","level","parseInt","getAttribute","campiLevels","svgEl","querySelector","viewBoxes","push","room","getParameterByName","parentLevel","document","closest","reg","exec","className","showLevel","openContent","isNaN","name","url","location","href","replace","regex","RegExp","results","decodeURIComponent","initScrollEvents","forEach","pos","addEventListener","isClickReady","campiRooms","ev","stopPropagation","isExpanded","roomId","roomService","getRoomDesc","then","response","showRoomLabel","data","error","console","classie","remove","roomLabelEl","add","style","pointerEvents","scheduleBtn","scheduleContainerEl","getElementById","scheduleEl","children","$","fullCalendar","defaultView","customButtons","myCustomButton","icon","click","header","right","allDaySlot","minTime","maxTime","aspectRatio","events","start","end","timezone","callback","startDate","format","getRoomSchedule","spaceref","result","roomEvents","allDay","title","Title","EventDate","EventStartsAt","EventEndsAt","photosBtn","photosEl","getElementsByClassName","detailsEl","has","attr","allLevelsCtrl","showAllLevels","setTimeout","resetSVGStyles","disableRoomEvents","levelUpCtrl","navigate","levelDownCtrl","contentCloseCtrl","closeContentArea","enlargeBtn","enlargeContentDetails","shrinkBtn","shrinkContentDetails","preventDefault","roomContentContainer","Ps","initialize","scrollContainer","e","initTouch","touches","clientY","newTranslateOffset","te","changedTouches","delta","translateOffset","translateDelta","scrollFloorList","deltaY","roomLabel","iconEl","setAttribute","innerText","isNavigating","initialTranslate","y","transform","fromQuery","selectedLevel","isOpenContentArea","campiLevelsEl","zoomController","disableZoom","removeAttribute","history","pushState","setNavigationState","levelEl","floorEl","onEndTransition","reenableRoomEvents","showBackBtn","showZoomCtrl","initZoomCtrl","levelZoomCtrl","svgMap","enableZoom","resizeZoom","hideZoomCtrl","uri","toString","clean_uri","substring","indexOf","hideBackBtn","body","replaceState","levelSVG","svgViewport","viewBoxValue","addBreadcrumb","breadcrumbsContainer","lastElementChild","aTag","createElement","appendChild","removeLastBreadcrumb","removeChild","direction","nextLevel","prevSelectedLevel","currentLevel","campiLevelsTotal","spacerefval","hideSpace","showSpace","openContentArea","activeSpaceArea","newArea","floorsMenuEl","display","isDetailsEnlarged","campi","campiNav","sliding","getRoomInfo","buildingNumber","buildingCode","EdificioId","text","Name","roomInfo","fillContentInfo","contentItem","contentEl","roomContentTabsEl","visibility","IsPedagogical","characterizationEl","contentContainerEl","detailsContainer","type","Type","search","isOffice","IsOffice","isPedagogical","Porta","nameEl","typeEl","specifications","Specifications","sort","a","b","Order","spec","subtitle","Caption","container","labelEl","valueEl","Value","officeOccupantsContainer","officeContactsContainer","occupants","Occupants","contentCenteredDiv","occupant","containerName","valueName","insertAdjacentHTML","contacts","Contacts","contact","Designation","pedagogicalInfoContainer","goods","Goods","good","Quantity","photos","Photos","photosContainer","photosgallery","photo","photoLink","PhotoData","imgEl","toArray","obj","passName","tempArray","prop","value","isNumeric","each","key","showContactModal","occupantName","modal","occupantInfo","occupantInfoEl","empty","find","Cargos","Categoria","Unidade","Fotografia","test","PersonalContact","fieldName","fieldValue","append","HorarioAtendimento","prefix","styles","getComputedStyle","documentElement","pre","Array","prototype","slice","call","join","match","OLink","dom","lowercase","css","js","toUpperCase","substr","support","transitions","Modernizr","csstransitions","transEndEventNames","WebkitTransition","MozTransition","OTransition","msTransition","transition","transEndEventName","prefixed","el","propTest","onEndCallbackFn","target","this","propertyName","removeEventListener","querySelectorAll","levelsContainer","reverse","ready","span","on","onclick"],"mappings":"CAAA,SAAWA,GAEP,YA8GA,SAASC,KACLD,EAAOE,WAAa,SAAUC,GAC1BC,KAEJC,IAEAC,IAEAC,IAGAH,IAQJ,QAASI,GAAsBC,GAC3B,IAAK,GAAIC,GAAI,EAAGA,EAAIC,GAAOC,OAAQF,IAC/B,GAAIC,GAAOD,GAAGG,WAAaJ,EAAO,CAC9B,GAAIK,GAAQC,SAASJ,GAAOD,GAAGM,aAAa,cAC5C,OAAOF,IAKnB,QAASP,KACL,IAAK,GAAIG,GAAI,EAAGA,EAAIO,EAAYL,OAAQF,IAAK,CACzC,GAAIQ,GAAQD,EAAYP,GAAGS,cAAc,MACzCC,IAAUC,KAAKH,EAAMF,aAAa,aAI1C,QAASZ,KACL,GAAIkB,GAAOC,EAAmB,OAC9B,IAAID,EAAM,CACN,GAAIE,GAAcC,SAASN,cAAc,aAAeG,EAAO,MAAMI,QAAQ,UACzEC,EAAM,MACNb,EAAQa,EAAIC,KAAKJ,EAAYK,UAIjC,OAHIf,GAAMF,OAAS,GACfkB,EAAUf,SAASD,EAAM,KAAK,OAClCiB,GAAYT,GAAM,GAGtB,GAAIb,GAAQM,SAASQ,EAAmB,SACxC,OAAKS,OAAMvB,OAMXqB,GAAUtB,EAAsB,QAL5BsB,GAAUrB,GAAO,GAQzB,QAASc,GAAmBU,EAAMC,GACzBA,IAAKA,EAAMlC,EAAOmC,SAASC,MAChCH,EAAOA,EAAKI,QAAQ,UAAW,OAC/B,IAAIC,GAAQ,GAAIC,QAAO,OAASN,EAAO,qBACnCO,EAAUF,EAAMV,KAAKM,EACzB,OAAKM,GACAA,EAAQ,GACNC,mBAAmBD,EAAQ,GAAGH,QAAQ,MAAO,MAD5B,GADH,KAazB,QAAS/B,KACLoC,IAEAzB,EAAY0B,QAAQ,SAAU7B,EAAO8B,GACjC9B,EAAM+B,iBAAiB,QAAS,WAEvBC,IACLhB,EAAUc,EAAM,OAKxBG,EAAWJ,QAAQ,SAAUrB,EAAMsB,GAE/BtB,EAAKuB,iBAAiB,QAAS,SAAUG,GAErC,GADAA,EAAGC,kBACCC,EAAY,CACZ,IAAKJ,GAAc,MACnBA,KAAe,CACf,IAAIK,GAAS7B,EAAKN,aAAa,UAC/Be,GAAYoB,MAIpB7B,EAAKuB,iBAAiB,YAAa,WAC/B,GAAIK,EAAY,CAEZ,GAAIC,GAAS7B,EAAKN,aAAa,UAC/BoC,aAAYC,YAAYF,GACnBG,KAAK,SAAUC,GACZC,EAAcD,EAASE,QAF/BL,SAIW,SAAUM,GACbC,QAAQD,MAAMA,QAI9BpC,EAAKuB,iBAAiB,WAAY,WAC1BK,IACAU,QAAQC,OAAOC,GAAa,cAC5BF,QAAQG,IAAID,GAAa,eACzBF,QAAQG,IAAID,GAAa,WAGjCxC,EAAK0C,MAAMC,cAAgB,SAG/BC,GAAYrB,iBAAiB,QAAS,WAClC,GAAIsB,GAAsB1C,SAAS2C,eAAe,sBAC9CC,EAAa5C,SAAS2C,eAAe,WAEzC,OAAmC,KAA/BC,EAAWC,SAAS1D,WACpB2D,GAAE,aAAaC,cACXC,YAAa,aACbC,eACIC,gBACIC,KAAM,IACNC,MAAO,WACHjB,QAAQG,IAAII,EAAqB,kBAI7CW,QACIC,MAAO,kCAEXC,YAAY,EACZC,QAAS,OACTC,QAAS,QACTC,YAAa,EACbC,OAAQ,SAAUC,EAAOC,EAAKC,EAAUC,GACpC,GAAIC,GAAYJ,EAAMK,OAAO,aAC7BtC,aAAYuC,gBAAgBC,EAAUH,EAAW,GAC5CnC,KAAK,SAAUuC,GACZjC,QAAQC,OAAOM,EAAqB,cACpC,IAAI2B,KACAD,GAAOpC,MAAQoC,EAAOpC,KAAK7C,OAAS,GACpCiF,EAAOpC,KAAKd,QAAQ,SAAUxC,GAC1B2F,EAAWzE,MACP0E,QAAQ,EACRC,MAAO7F,EAAM8F,MACbZ,MAAOlF,EAAM+F,UAAY,IAAM/F,EAAMgG,cACrCb,IAAKnF,EAAM+F,UAAY,IAAM/F,EAAMiG,gBAI/CZ,EAASM,KAdjB1C,SAgBW,SAAUM,GACbC,QAAQD,MAAMA,SAOlCa,EAAE,aAAaC,aAAa,qBAC5BZ,SAAQC,OAAOM,EAAqB,kBAGxCkC,GAAUxD,iBAAiB,QAAS,WAChC,GAAIyD,GAAW7E,SAAS8E,uBAAuB,wBAAwB,GACnEC,EAAY/E,SAAS8E,uBAAuB,6BAA6B,EAEzE3C,SAAQ6C,IAAIH,EAAU,WACtB1C,QAAQC,OAAOyC,EAAU,UACzB1C,QAAQG,IAAIyC,EAAW,UACvBjC,EAAE,2BAA2BmC,KAAK,aAAc,iBAEhD9C,QAAQG,IAAIuC,EAAU,UACtB1C,QAAQC,OAAO2C,EAAW,UAC1BjC,EAAE,2BAA2BmC,KAAK,aAAc,yBAKxDC,EAAc9D,iBAAiB,QAAS,WAEpC+D,IACAC,WAAW,WACPC,IACAC,IACAjE,IAAe,GAChB,OAIPkE,GAAYnE,iBAAiB,QAAS,WAClCoE,EAAS,UAEbC,GAAcrE,iBAAiB,QAAS,WACpCoE,EAAS,QAIbE,GAAiBtE,iBAAiB,QAAS,WACvCuE,MAGJC,GAAWxE,iBAAiB,QAAS,WACjCyE,MAGJC,GAAU1E,iBAAiB,QAAS,WAChC2E,MAGJ7G,GAAOgC,QAAQ,SAAUlC,GACrB,GAAIK,GAAQC,SAASN,EAAMO,aAAa,cACxCP,GAAMoC,iBAAiB,QAAS,SAAUG,GACtCA,EAAGyE,iBAEH3F,EAAUhB,OAYtB,QAAST,KACL,GAAIqH,GAAuBjG,SAASN,cAAc,uBAClDwG,IAAGC,WAAWF,GAGlB,QAAShF,KACL,GAAImF,GAAkBpG,SAAS2C,eAAe,iBAE9CyD,GAAgBhF,iBAAiB,aAAc,SAAUiF,GACrDC,EAAYD,EAAEE,QAAQ,GAAGC,UAG7BJ,EAAgBhF,iBAAiB,YAAa,SAAUiF,GACpDA,EAAEL,gBACF,IAGIS,GAHAC,EAAKL,EAAEM,eAAe,GAAGH,QACzBI,EAAQN,EAAYI,EAAK,CAIzBD,GADAG,EACqBC,GAAoC,GAAjBC,GAEnBD,GAAoC,GAAjBC,GAEvCrF,GACDsF,EAAgBN,KAUxBL,EAAgBhF,iBAAiB,QAAS,SAAUiF,GAChDA,EAAEL,gBACF,IAAIY,GAAQP,EAAEW,OAAS,CACvB,KAAKvF,EAAY,CACb,GAAIgF,EACOA,GAAPG,EAA4BC,GAAkBC,GACxBD,GAAkBC,GAE5CC,EAAgBN,MAW5B,QAAS1E,GAAckF,GACnB,GAAIC,GAAS7E,GAAY3C,cAAc,MACnCwH,IACAA,EAAOC,aAAa,aAAc,cACtC9E,GAAY3C,cAAc,gBAAgB0H,UAAYH,EACtD9E,QAAQC,OAAOC,GAAa,eAC5BF,QAAQC,OAAOC,GAAa,QAC5BF,QAAQG,IAAID,GAAa,cAG7B,QAAS0E,GAAgBN,GACrB,OAAIY,IAEAC,GAAmBb,EAAqB,IACxCa,IAAoB9H,EAAYL,OAAS,GAAKmI,GAAmBb,EAAqB,KACtFI,GAAkBJ,OAEtBjH,GAAY0B,QAAQ,SAAU7B,EAAO8B,GACjC,GAAIoG,GAAID,GAAmBnG,EAAMmG,GAAmBT,EACpDxH,GAAMkD,MAAMiF,UAAY,oBAAsBD,EAAI,WAO1D,QAASlH,GAAUhB,EAAOoI,GACtB,IAAKA,IAAcpI,IAAUqI,IAAkBC,IAAqBN,GAAe,OAAO,CACtFM,KAAmBhC,IAEnB+B,IACAvF,QAAQC,OAAOlD,GAAOwI,EAAgB,GAAI,6BAC1CvF,QAAQC,OAAO5C,EAAYkI,EAAgB,GAAI,kBAC/CvF,QAAQC,OAAOwF,EAAe,oBAAsBF,GACpDG,eAAeC,eAGnBtI,EAAY0B,QAAQ,SAAU7B,GAC1BA,EAAM0I,gBAAgB,WAI1BL,EAAgBrI,EACXoI,GACDO,QAAQC,WAAYjJ,MAAOK,GAAS,QAAS,UAAYA,GAG7D6I,IAEA/F,QAAQG,IAAIsF,EAAe,oBAAsBF,GACjDvF,QAAQG,IAAIsF,EAAe,gBAG3BP,GAAe,CACf,IAAIc,GAAU3I,EAAYkI,EAAgB,GACtCU,EAAUlJ,GAAOwI,EAAgB,EAErCvF,SAAQG,IAAI6F,EAAS,kBACrBhG,QAAQG,IAAI8F,EAAS,6BAEhBX,GAMDhG,GAAa,EACb4F,GAAe,GANfgB,EAAgBF,EAAS,WACrB1G,GAAa,EACb4F,GAAe,GAChB,aAMPiB,IAGAC,IAEAC,IAMJ,QAASF,KACLhH,EAAWJ,QAAQ,SAAUrB,EAAMsB,GAC/BtB,EAAK0C,MAAMC,cAAgB,YAOnC,QAAS8C,KACLhE,EAAWJ,QAAQ,SAAUrB,EAAMsB,GAC/BtB,EAAK0C,MAAMC,cAAgB,SAOnC,QAASgG,KACLC,IACAtG,QAAQC,OAAOsG,GAAe,UAGlC,QAASD,KACL,GAAIpJ,GAAQG,EAAYkI,EAAgB,GACpCiB,EAAStJ,EAAMK,cAAc,MACjCmI,gBAAee,WAAWD,GAE1BvD,WAAW,WACPyC,eAAegB,cAChB,KAMP,QAASC,KACLjB,eAAeC,cACf3F,QAAQG,IAAIoG,GAAe,UAM/B,QAASvD,KAELkC,GAAe,EACflF,QAAQC,OAAO5C,EAAYkI,EAAgB,GAAI,kBAC/CvF,QAAQC,OAAOlD,GAAOwI,EAAgB,GAAI,6BAC1CvF,QAAQC,OAAOwF,EAAe,oBAAsBF,GACpDvF,QAAQC,OAAOwF,EAAe,gBAC9BzF,QAAQC,OAAOmD,GAAa,uBAC5BpD,QAAQC,OAAOqD,GAAe,sBAC9B,IAAI0C,GAAU3I,EAAYkI,EAAgB,GAEtCqB,EAAMxK,EAAOmC,SAASsI,WACtBC,EAAYF,EAAIG,UAAU,EAAGH,EAAII,QAAQ,KAG7CC,KACKjH,QAAQ6C,IAAIhF,SAASqJ,KAAM,0BAO5BxC,GAAkB,EAClBQ,GAAe,EACf5F,GAAa,GARb4G,EAAgBF,EAAS,WACrBtB,GAAkB,EAClBQ,GAAe,EACf5F,GAAa,GACd,aAQHkG,IACAhC,IAEJmD,IACApB,EAAgB,KAChBM,QAAQsB,gBAAiBtJ,SAASuE,MAAO0E,GAM7C,QAAS5D,KAEL,IAAK,GAAIpG,GAAI,EAAGA,EAAIO,EAAYL,OAAQF,IAAK,CACzC,GAAIsK,GAAW/J,EAAYP,GAAGS,cAAc,OACxC8J,EAAcD,EAAS7J,cAAc,yBACzC,IAAmB,MAAf8J,EAAqB,CACrB,GAAIC,GAAe9J,GAAUV,EAC7BsK,GAASpC,aAAa,UAAWsC,GACjCD,EAAYrC,aAAa,YAAa,IACtCqC,EAAYrC,aAAa,QAAS,MAS9C,QAASoB,KACLpG,QAAQC,OAAO8C,EAAe,UAMlC,QAASkE,KACLjH,QAAQG,IAAI4C,EAAe,UAM/B,QAASwE,GAAclJ,GACnB2B,QAAQC,OAAOuH,GAAqBC,iBAAkB,wBACtD,IAAIC,GAAO7J,SAAS8J,cAAc,IAClCD,GAAK1C,aAAa,OAAQ,KAC1B0C,EAAK1C,aAAa,QAAS,yBAC3B0C,EAAKzK,UAAYoB,EACjBmJ,GAAqBI,YAAYF,GAGrC,QAASG,KACLL,GAAqBM,YAAYN,GAAqBC,kBACtDzH,QAAQG,IAAIqH,GAAqBC,iBAAkB,yBAMvD,QAASpE,GAAS0E,GACd,GAAI7C,GAAgBM,GAChB,OAAO,CAEX,IAIIwC,GAJAC,EAAoB1C,EAGpB2C,EAAe7K,EAAY4K,EAAoB,EAEnD,IAAI3I,EAkCA,MAjCkB,OAAdyI,GAAsBE,EAAoB,EAC1CD,EAAYzC,EAAgB,EACP,SAAdwC,GAAwBE,EAAoBE,GAC/C7I,IACA0I,EAAYzC,EAAgB,GAIpCQ,IAEA/F,QAAQG,IAAI+H,EAAc,iBAAmBH,GAK7C7J,EAAU8J,QAELhI,QAAQ6C,IAAIhF,SAASqJ,KAAM,yBAc5BhC,GAAe,EAbfgB,EAAgBgC,EAAc,WAC1BlI,QAAQC,OAAOiI,EAAc,iBAAmBH,GAEhD9E,WAAW,WACPjD,QAAQC,OAAOiI,EAAc,mBAC9B,IAEHlI,QAAQC,OAAOwF,EAAe,oBAAsBwC,GACpDjI,QAAQG,IAAIsF,EAAe,oBAAsBF,GAEjDL,GAAe,IAQ3B,IAAIZ,EACsBA,GAAR,SAAdyD,EAA2CrD,GAAmC,IAAjBC,GACvCD,GAAmC,IAAjBC,GAC5CC,EAAgBN,GAMpB,QAASyB,KACgB,GAAjBR,EACAvF,QAAQG,IAAImD,GAAe,uBAE3BtD,QAAQC,OAAOqD,GAAe,uBAG9BiC,GAAiB4C,EACjBnI,QAAQG,IAAIiD,GAAa,uBAEzBpD,QAAQC,OAAOmD,GAAa,uBAOpC,QAASjF,GAAYiK,EAAa9C,GAgB9B,GAdIE,IACAqC,IACAQ,IACArG,EAAWoG,EACXE,MAEAtG,EAAWoG,EACXG,KAGCjD,GACDO,QAAQC,WAAYpI,KAAMsE,GAAY,OAAQ,SAAWA,GAGzDuD,EAAe,CACf,GAAIiD,GAAkBnL,EAAYkI,EAAgB,GAAGhI,cAAc,6BAC/DkL,EAAUpL,EAAYkI,EAAgB,GAAGhI,cAAc,iCAAmCyE,EAAW,KAEzGhC,SAAQG,IAAIsI,EAAS,wBAErBD,GACAxI,QAAQC,OAAOuI,EAAiB,wBAOxC,QAASD,KACLG,GAAatI,MAAMuI,QAAU,OAC7BnD,IAAoB,EAEpB8C,GAAU,GAEVtI,QAAQC,OAAOsD,GAAkB,2BAE7BqF,GACA5I,QAAQC,OAAO0D,GAAW,qCAE1B3D,QAAQC,OAAOwD,GAAY,qCAI/BzD,QAAQG,IAAI0I,EAAO,uBAEnB7I,QAAQG,IAAImD,GAAe,uBAC3BtD,QAAQG,IAAIiD,GAAa,uBAEzBpD,QAAQG,IAAI2I,EAAU,YAuB1B,QAASR,GAAUS,GACfvJ,YAAYwJ,YAAYhH,GACnBtC,KAAK,SAAUuC,GACZ,GAAIgH,GAAiBjH,EAAS+E,UAAU,EAAG,GACvCmC,EAAejH,EAAOpC,KAAKsJ,UAC/BxI,GAAE,iDAAiDmC,KAAK,OAAQoG,EAAe,SAC/EvI,EAAE,iDAAiDyI,KAAK,YAAcH,EAEtE,IAAI5K,GAAO4D,EAAOpC,KAAKwJ,IACvB9B,GAAclJ,GACdiL,EAAWrH,EAAOpC,KAClB0J,GAEA,IAAIC,GAAc3L,SAAS2C,eAAe,eAE1CR,SAAQG,IAAIqJ,EAAa,0BACzBxJ,QAAQC,OAAOwJ,GAAW,gBAC1B,IAAIC,GAAoB7L,SAAS8E,uBAAuB,oBACxD+G,GAAkB,GAAGtJ,MAAMuJ,WAAa,UACpCZ,GACA7C,EAAgBsD,EAAa,WACzBxJ,QAAQG,IAAIsJ,GAAW,mBAI1BxH,EAAOpC,KAAK+J,cAGbtJ,GAAYF,MAAMuI,QAAU,QAF5BrI,GAAYF,MAAMuI,QAAU,OAKhCzJ,IAAe,IA9BvBM,SA0CW,SAAUM,GACbC,QAAQD,MAAMA,GAEdyH,EAAcvF,EAEd,IAAI0H,GAAoB7L,SAAS8E,uBAAuB,oBACxD+G,GAAkB,GAAGtJ,MAAMuJ,WAAa,QACxC,IAAIE,GAAqBhM,SAAS2C,eAAe,mBACjDqJ,GAAmB5M,UAAY,EAC/B,IAAI6M,GAAqBjM,SAAS8J,cAAc,KAChDmC,GAAmB7M,UAAY,oDAC/B4M,EAAmBjC,YAAYkC,GAE/B9J,QAAQG,IAAIsJ,GAAW,iBACvBzJ,QAAQG,IAAIwD,GAAW,qCACvB3D,QAAQG,IAAIsD,GAAY,oCAGxB,IAAI+F,GAAc3L,SAAS2C,eAAe,eAE1CR,SAAQG,IAAIqJ,EAAa,0BAErBT,GACA7C,EAAgBsD,EAAa,WACzBxJ,QAAQG,IAAIsJ,GAAW,mBAG/BvK,IAAe,IAI3B,QAASqK,KACL,GAAIM,GAAqBhM,SAAS2C,eAAe,mBACjDqJ,GAAmB5M,UAAY,EAC/B,IAAI8M,GAAmBlM,SAAS8J,cAAc,MAC9CoC,GAAiB/E,aAAa,QAAS,4BACvC,IAAI8E,GAAqBjM,SAAS8J,cAAc,MAChDmC,GAAmB9E,aAAa,QAAS,wBACzC,IAAIgF,GAAOV,EAASW,KAChB5L,EAAOiL,EAASD,IAEhBhL,GAAK6L,OAAOF,QACZA,EAAO,GAGX,IAAIG,GAAWb,EAASc,SACpBC,EAAgBf,EAASM,aAC7BnH,IAAUrC,MAAMuI,QAAU,OAE1BhI,EAAE,2BAA2B,GAAGsE,UAAYqE,EAASgB,KAErD,IAAIC,GAAS1M,SAAS2C,eAAe,qBACjCgK,EAAS3M,SAAS2C,eAAe,oBACrC+J,GAAOtF,UAAY5G,EACnBmM,EAAOvF,UAAY+E,CAEnB,IAAIS,KAsCJ,IArCInB,EAASoB,iBACTD,EAAiBnB,EAASoB,eAAeC,KAAK,SAAUC,EAAGC,GAAK,MAAOD,GAAEE,MAAQD,EAAEC,SACvFL,EAAe1L,QAAQ,SAAUgM,GAC7B,OAAQA,EAAKd,MACT,IAAK,GAKD,KACJ,KAAK,GACD,GAAIe,GAAWnN,SAAS8J,cAAc,KACtCqD,GAAS/F,UAAY8F,EAAKE,QAC1BD,EAAShG,aAAa,QAAS,0BAC/B8E,EAAmBlC,YAAYoD,EAC/B,MACJ,KAAK,GACD,GAAIE,GAAYrN,SAAS8J,cAAc,MACvCuD,GAAUlG,aAAa,QAAS,wBAChC,IAAImG,GAAUtN,SAAS8J,cAAc,QACrCwD,GAAQnG,aAAa,QAAS,uBAC9BmG,EAAQlG,UAAY8F,EAAKE,QAAU,GAEnC,IAAIG,GAAUvN,SAAS8J,cAAc,OACrCyD,GAAQpG,aAAa,QAAS,uBAC9BoG,EAAQnG,UAAY8F,EAAKM,MACzBH,EAAUtD,YAAYuD,GACtBD,EAAUtD,YAAYwD,GAEtBtB,EAAmBlC,YAAYsD,MAK3CnB,EAAiBnC,YAAYkC,GAC7BD,EAAmBjC,YAAYmC,GAE3BI,EAAU,CACV,GAAImB,GAA2BzN,SAAS8J,cAAc,MACtD2D,GAAyBtG,aAAa,QAAS,wBAC/C,IAAIuG,GAA0B1N,SAAS8J,cAAc,MACrD4D,GAAwBvG,aAAa,QAAS,wBAE9C,IAAIwG,KACJ,IAAIlC,EAASmC,UAAW,CACpB,GAAIT,GAAWnN,SAAS8J,cAAc,KACtCqD,GAAS/F,UAAY,YACrB+F,EAAShG,aAAa,QAAS,0BAC/BsG,EAAyB1D,YAAYoD,GACrCQ,EAAYlC,EAASmC,SAErB,IAAIC,GAAqB7N,SAAS8J,cAAc,MAChD+D,GAAmB1G,aAAa,QAAS,2BAEzCwG,EAAUzM,QAAQ,SAAU4M,GACxB,GAAIT,GAAYrN,SAAS8J,cAAc,MACvCuD,GAAUlG,aAAa,QAAS,uCAEhC,IAAI4G,GAAgB/N,SAAS8J,cAAc,MAC3CiE,GAAc5G,aAAa,QAAS,2CAEpC,IAAI6G,GAAYhO,SAAS8J,cAAc,OACvCkE,GAAU7G,aAAa,QAAS,uBAChC6G,EAAU7G,aAAa,QAAS,oBAChC6G,EAAU5G,UAAY0G,EAAStC,IAE/B,IAAIrI,GAAO,2HAMX4K,GAAcE,mBAAmB,YAAa9K,GAC9C4K,EAAchE,YAAYiE,GAE1BX,EAAUtD,YAAYgE,GAEtBF,EAAmB9D,YAAYsD,KAEnCI,EAAyB1D,YAAY8D,GAGzC,GAAIK,KACJ,IAAIzC,EAAS0C,SAAU,CACnB,GAAIhB,GAAWnN,SAAS8J,cAAc,KACtCqD,GAAS/F,UAAY,YACrB+F,EAAShG,aAAa,QAAS,0BAC/BuG,EAAwB3D,YAAYoD,GACpCe,EAAWzC,EAAS0C,SACpBD,EAAShN,QAAQ,SAAUkN,GACvB,GAAIf,GAAYrN,SAAS8J,cAAc,MACvCuD,GAAUlG,aAAa,QAAS,wBAEhC,IAAImG,GAAUtN,SAAS8J,cAAc,QACrCwD,GAAQnG,aAAa,QAAS,uBAC9BmG,EAAQlG,UAAYgH,EAAQC,YAAc,GAE1C,IAAId,GAAUvN,SAAS8J,cAAc,OACrCyD,GAAQpG,aAAa,QAAS,uBAC9BoG,EAAQnG,UAAYgH,EAAQZ,MAC5BH,EAAUtD,YAAYuD,GACtBD,EAAUtD,YAAYwD,GAEtBG,EAAwB3D,YAAYsD,KAI5CnB,EAAiBnC,YAAY0D,GAC7BvB,EAAiBnC,YAAY2D,GAC7B1B,EAAmBjC,YAAYmC,GAGnC,GAAIM,EAAe,CACf,GAAI8B,GAA2BtO,SAAS8J,cAAc,MACtDwE,GAAyBnH,aAAa,QAAS,wBAE/C,IAAIoH,KACJ,IAAI9C,EAAS+C,MAAO,CAChB,GAAIrB,GAAWnN,SAAS8J,cAAc,KACtCqD,GAAS/F,UAAY,eACrB+F,EAAShG,aAAa,QAAS,0BAC/BmH,EAAyBvE,YAAYoD,GACrCoB,EAAQ9C,EAAS+C,MACjBD,EAAMrN,QAAQ,SAAUuN,GACpB,GAAIpB,GAAYrN,SAAS8J,cAAc,MACvCuD,GAAUlG,aAAa,QAAS,wBAEhC,IAAImG,GAAUtN,SAAS8J,cAAc,QACrCwD,GAAQnG,aAAa,QAAS,uBAC9BmG,EAAQlG,UAAYqH,EAAKjD,KAAO,GAEhC,IAAI+B,GAAUvN,SAAS8J,cAAc,OACrCyD,GAAQpG,aAAa,QAAS,uBAC9BoG,EAAQnG,UAAYqH,EAAKC,SACzBrB,EAAUtD,YAAYuD,GACtBD,EAAUtD,YAAYwD,GAEtBe,EAAyBvE,YAAYsD,KAI7CnB,EAAiBnC,YAAYuE,GAC7BtC,EAAmBjC,YAAYmC,GAGnC,GAAIyC,KACJ,IAAIlD,EAASmD,OAAQ,CACjBhK,GAAUrC,MAAMuI,QAAU,OAC1B,IAAI+D,GAAkB7O,SAAS8J,cAAc,MAC7C+E,GAAgB1H,aAAa,QAAS,8BACtC,IAAIgG,GAAWnN,SAAS8J,cAAc,KACtCqD,GAAS/F,UAAY,QACrB+F,EAAShG,aAAa,QAAS,0BAC/B0H,EAAgB9E,YAAYoD,EAC5B,IAAI2B,GAAgB9O,SAAS8J,cAAc,MAC3CgF,GAAc3H,aAAa,QAAS,kBACpCwH,EAASlD,EAASmD,OAAO9B,KAAK,SAAUC,EAAGC,GAAK,MAAOD,GAAEE,MAAQD,EAAEC,QACnE0B,EAAOzN,QAAQ,SAAU6N,GACrB,GAAIC,GAAYhP,SAAS8J,cAAc,IACvCkF,GAAU7H,aAAa,OAAQ,yBAA2B4H,EAAME,WAChED,EAAU7H,aAAa,QAAS,yBAChC6H,EAAU7H,aAAa,gBAAiB,WACxC6H,EAAU7H,aAAa,aAAc4H,EAAM3B,QAE3C,IAAI8B,GAAQlP,SAAS8J,cAAc,MACnCoF,GAAM/H,aAAa,MAAO,yBAA2B4H,EAAME,WAE3DD,EAAUjF,YAAYmF,GACtBJ,EAAc/E,YAAYiF,KAE9BH,EAAgB9E,YAAY+E,GAC5B9C,EAAmBjC,YAAY8E,IAQvC,QAASlJ,KACLqE,IAEAhC,QAAQC,WAAYjJ,MAAO0I,GAAiB,QAAS,UAAYA,GAEjEmD,GAAatI,MAAMuI,QAAU,QAC7B3I,QAAQC,OAAOwJ,GAAW,iBAE1BpB,IAEArI,QAAQG,IAAIoD,GAAkB,2BAE1BqF,IACA5I,QAAQG,IAAIwD,GAAW,qCACvB3D,QAAQC,OAAOwJ,GAAW,aAE1BzJ,QAAQG,IAAIsD,GAAY,qCAE5BmF,IAAoB,EAGpB5I,QAAQC,OAAO4I,EAAO,uBAElBvJ,GACAyG,GAEJ,IAAI2D,GAAoB7L,SAAS8E,uBAAuB,oBACxD+G,GAAkB,GAAGtJ,MAAMuJ,WAAa,UACxCnE,IAAoB,EACpBxF,QAAQC,OAAO6I,EAAU,YAG7B,QAASpF,KACLkF,IAAoB,EACpB5I,QAAQG,IAAIsJ,GAAW,YACvBzJ,QAAQG,IAAI2I,EAAU,qBACtB9I,QAAQG,IAAIsD,GAAY,qCACxBzD,QAAQC,OAAO0D,GAAW,qCAG9B,QAASC,KACLgF,IAAoB,EACpB5I,QAAQC,OAAOwJ,GAAW,YAC1BzJ,QAAQC,OAAO6I,EAAU,qBACzB9I,QAAQC,OAAOwD,GAAY,qCAC3BzD,QAAQG,IAAIwD,GAAW,qCAM3B,QAAS0E,KAEL,GAAImB,GAAc3L,SAAS2C,eAAe,eAE1CR,SAAQC,OAAOuJ,EAAa,yBAG5B,IAAIhB,GAAkBnL,EAAYkI,EAAgB,GAAGhI,cAAc,4BAC/DiL,IACAxI,QAAQC,OAAOuI,EAAiB,wBAIxC,QAASwE,GAAQC,GACb,GACIC,GADAjL,KAEAkL,IACJ,KAAK,GAAIC,KAAQH,GAAK,CAClB,GAAII,GAAQJ,EAAIG,EACK,iBAAVC,IAEHH,EADAvM,EAAE2M,UAAUF,GACDA,EAEAA,EAEfD,EAAYH,EAAQK,EAAOH,GAC3BvM,EAAE4M,KAAKJ,EAAW,SAAUK,EAAKH,GAC7BpL,EAAOxE,KAAK4P,MAIhBpL,EAAOxE,KAAK2P,GAGpB,MAAOnL,GA+BX,QAASwL,GAAiBC,EAAcC,GAEpC,GAEIC,GAFAC,EAAiBhQ,SAAS2C,eAAe,gBACzB3C,UAAS2C,eAAe,eAG5CG,GAAE,iBAAiBmN,QAEnBxE,EAASmC,UAAU1M,QAAQ,SAAU4M,GAC7BA,EAAStC,MAAQqE,IACjBE,EAAejC,KAIvBhL,EAAEkN,GAAgBE,KAAK,kBAAkB,GAAG9I,UAAY2I,EAAavE,KACrE1I,EAAEkN,GAAgBE,KAAK,oBAAoB,GAAG9I,UAAY2I,EAAaI,OACvErN,EAAEkN,GAAgBE,KAAK,yBAAyB,GAAG9I,UAAY2I,EAAaK,UAAY,MAAQL,EAAaM,QAE7GvN,EAAEkN,GAAgBE,KAAK,OAAO,GAAG/I,aAAa,MAAO,4BACjD4I,EAAaO,YACbxN,EAAEkN,GAAgBE,KAAK,OAAO,GAAG/I,aAAa,MAAO,yBAA2B4I,EAAaO,WAGjG,IAEIrR,GAFAsR,EAAOpB,EAAQY,EAAaS,gBAGhC,KAAKvR,EAAI,EAAGA,EAAIsR,EAAKpR,OAAQF,IAAK,CAC9B,GAAIwR,GAAYF,EAAKtR,GACjByR,EAAaX,EAAaS,gBAAgBC,EAE9C,IAAIC,EAAY,CACZ,GAAIrD,GAAYrN,SAAS8J,cAAc,MACvCuD,GAAUlG,aAAa,QAAS,qBAEhC,IAAImG,GAAUtN,SAAS8J,cAAc,QACrCwD,GAAQnG,aAAa,QAAS,uBAC9BmG,EAAQlG,UAAYqJ,EAAU7P,QAAQ,KAAM,KAAO,GAEnD,IAAI2M,GAAUvN,SAAS8J,cAAc,OACrCyD,GAAQpG,aAAa,QAAS,uBAEb,UAAbsJ,EACAlD,EAAQnO,UAAYsR,EAEpBnD,EAAQnG,UAAYsJ,EAGxBrD,EAAUtD,YAAYuD,GACtBD,EAAUtD,YAAYwD,GAEtBzK,EAAE,iBAAiB6N,OAAOtD,IAIlC,GAAI0C,EAAaa,mBAAoB,CACjC,GAAIvD,GAAYrN,SAAS8J,cAAc,MACvCuD,GAAUlG,aAAa,QAAS,qBAEhC,IAAImG,GAAUtN,SAAS8J,cAAc,QACrCwD,GAAQnG,aAAa,QAAS,uBAC9BmG,EAAQlG,UAAY,sBAEpB,IAAImG,GAAUvN,SAAS8J,cAAc,OACrCyD,GAAQpG,aAAa,QAAS,uBAC9BoG,EAAQnO,UAAY2Q,EAAaa,mBAEjCvD,EAAUtD,YAAYuD,GACtBD,EAAUtD,YAAYwD,GAEtBzK,EAAE,iBAAiB6N,OAAOtD,GAG9ByC,EAAMvN,MAAMuI,QAAU,QAtsC1B,GAoDIpD,GA2BAL,EAEA5F,EAYA0C,EASAsH,EA4EAnF,EAlLAuK,EAAS,WACT,GAAIC,GAASvS,EAAOwS,iBAAiB/Q,SAASgR,gBAAiB,IAC3DC,GAAOC,MAAMC,UAAUC,MAAMC,KAAKP,GAAQQ,KAAK,IAAIC,MAAM,sBAA0C,KAAjBT,EAAOU,QAAiB,GAAI,MAAO,GACrHC,EAAM,kBAAoBF,MAAM,GAAIzQ,QAAO,IAAMmQ,EAAM,IAAK,MAAM,EAEtE,QACIQ,IAAKA,EACLC,UAAWT,EACXU,IAAK,IAAMV,EAAM,IACjBW,GAAIX,EAAI,GAAGY,cAAgBZ,EAAIa,OAAO,OAK1CC,GACAC,YAAaC,UAAUC,gBAEvBC,GACIC,iBAAoB,sBACpBC,cAAiB,gBACjBC,YAAe,iBACfC,aAAgB,kBAChBC,WAAc,iBAElBC,EAAoBN,EAAmBF,UAAUS,SAAS,eAC1DrK,EAAkB,SAAUsK,EAAI5O,EAAU6O,GACtC,GAAIC,GAAkB,SAAUtR,GAC5B,GAAIwQ,EAAQC,YAAa,CACrB,GAAIzQ,EAAGuR,QAAUC,MAAQH,GAAYrR,EAAGyR,eAAiBJ,GAAYrR,EAAGyR,eAAiBnC,EAAOc,IAAMiB,EAAU,MAChHG,MAAKE,oBAAoBR,EAAmBI,GAE5C9O,GAAgC,kBAAbA,IACnBA,EAASsN,KAAK0B,MAGlBhB,GAAQC,YACRW,EAAGvR,iBAAiBqR,EAAmBI,GAEvCA,KAIR7H,EAAQhL,SAASN,cAAc,UAE/BkI,EAAgBoD,EAAMtL,cAAc,WAEpCF,KAAiB4R,MAAMC,KAAKzJ,EAAcsL,iBAAiB,WAE3D5R,KAAgB8P,MAAMC,KAAKzJ,EAAcsL,iBAAiB,qBAE1D5I,EAAmB9K,EAAYL,OAI/B8L,EAAWjL,SAASN,cAAc,aAElCwF,EAAgB+F,EAASvL,cAAc,iCAEvC6F,GAAc0F,EAASvL,cAAc,yBACrC+F,GAAgBwF,EAASvL,cAAc,2BACvCyT,GAAkBnT,SAASN,cAAc,qBACzCgJ,GAAgByK,GAAgBzT,cAAc,kBAI9CkM,OAFUwF,MAAMC,KAAKzJ,EAAcsL,iBAAiB,SAExClT,SAASN,cAAc,aAEnCgG,GAAmBkG,GAAUlM,cAAc,sBAE3C+C,GAAczC,SAAS2C,eAAe,gBAEtCiC,GAAY5E,SAAS2C,eAAe,cAEpCiD,GAAa5F,SAAS2C,eAAe,eAErCmD,GAAY9F,SAAS2C,eAAe,cAEpCgF,IAAoB,EAMpBtG,IAAe,EAEf0J,IAAoB,EAEpBF,GAAe7K,SAAS2C,eAAe,eAEvCN,GAAcrC,SAAS2C,eAAe,cAEtCzD,MAAYkS,MAAMC,KAAKxG,GAAaqI,iBAAiB,uBAAuBE,UAM5EzJ,IADc3J,SAASN,cAAc,cACdM,SAAS2C,eAAe,0BAG/ChD,MA2EAkH,GAAkB,EAClBS,GAAmB,IACnBR,GAAiB,EAi7BrBhE,GAAE9C,UAAUqT,MAAM,WAGd,GAAIvD,GAAQ9P,SAAS2C,eAAe,sBAGhC2Q,EAAOtT,SAAS8E,uBAAuB,SAAS,EAGpDhC,GAAE,qBAAqByQ,GAAG,QAAS,sBAAuB,SAAU7U,GAChEkR,EAAiBlR,EAAMoU,OAAO1L,UAAW0I,KAI7CwD,EAAKE,QAAU,WACX1D,EAAMvN,MAAMuI,QAAU,QAI1BvM,EAAOiV,QAAU,SAAU9U,GACnBA,EAAMoU,QAAUhD,IAChBA,EAAMvN,MAAMuI,QAAU,WAkFlCtM,KAEDD","file":"main.min.js","sourcesContent":["(function (window) {\r\n\r\n 'use strict';\r\n\r\n // helper functions\r\n // from https://davidwalsh.name/vendor-prefix\r\n var prefix = (function () {\r\n var styles = window.getComputedStyle(document.documentElement, ''),\r\n pre = (Array.prototype.slice.call(styles).join('').match(/-(moz|webkit|ms)-/) || (styles.OLink === '' && ['', 'o']))[1],\r\n dom = ('WebKit|Moz|MS|O').match(new RegExp('(' + pre + ')', 'i'))[1];\r\n\r\n return {\r\n dom: dom,\r\n lowercase: pre,\r\n css: '-' + pre + '-',\r\n js: pre[0].toUpperCase() + pre.substr(1)\r\n };\r\n })();\r\n\r\n // vars & stuff\r\n var support = {\r\n transitions: Modernizr.csstransitions\r\n },\r\n transEndEventNames = {\r\n 'WebkitTransition': 'webkitTransitionEnd',\r\n 'MozTransition': 'transitionend',\r\n 'OTransition': 'oTransitionEnd',\r\n 'msTransition': 'MSTransitionEnd',\r\n 'transition': 'transitionend'\r\n },\r\n transEndEventName = transEndEventNames[Modernizr.prefixed('transition')],\r\n onEndTransition = function (el, callback, propTest) {\r\n var onEndCallbackFn = function (ev) {\r\n if (support.transitions) {\r\n if (ev.target != this || propTest && ev.propertyName !== propTest && ev.propertyName !== prefix.css + propTest) return;\r\n this.removeEventListener(transEndEventName, onEndCallbackFn);\r\n }\r\n if (callback && typeof callback === 'function') {\r\n callback.call(this);\r\n }\r\n };\r\n if (support.transitions) {\r\n el.addEventListener(transEndEventName, onEndCallbackFn);\r\n } else {\r\n onEndCallbackFn();\r\n }\r\n },\r\n // the campi element\r\n campi = document.querySelector('.campi'),\r\n // campi´s levels wrapper\r\n campiLevelsEl = campi.querySelector('.levels'),\r\n // campi´s levels\r\n campiLevels = [].slice.call(campiLevelsEl.querySelectorAll('.level')),\r\n // campi´s rooms\r\n campiRooms = [].slice.call(campiLevelsEl.querySelectorAll('.selectable-room')),\r\n // total levels\r\n campiLevelsTotal = campiLevels.length,\r\n // selected level position\r\n selectedLevel,\r\n // navigation element wrapper\r\n campiNav = document.querySelector('.campinav'),\r\n // show all campi´s levels ctrl\r\n allLevelsCtrl = campiNav.querySelector('.campinav__button--all-levels'),\r\n // levels navigation up/down ctrls\r\n levelUpCtrl = campiNav.querySelector('.campinav__button--up'),\r\n levelDownCtrl = campiNav.querySelector('.campinav__button--down'),\r\n levelsContainer = document.querySelector('.floors-container'),\r\n levelZoomCtrl = levelsContainer.querySelector('.zoom-controls'),\r\n // pins\r\n pins = [].slice.call(campiLevelsEl.querySelectorAll('.pin')),\r\n // content element\r\n contentEl = document.querySelector('.content'),\r\n // content close ctrl\r\n contentCloseCtrl = contentEl.querySelector('#close-details_btn'),\r\n // button the open the schedule view\r\n scheduleBtn = document.getElementById('schedule-btn'),\r\n // button to open the photos view\r\n photosBtn = document.getElementById('photos-btn'),\r\n // button enlarge details\r\n enlargeBtn = document.getElementById('enlarge-btn'),\r\n // button shrink details\r\n shrinkBtn = document.getElementById('shrink-btn'),\r\n // check if a content item is opened\r\n isOpenContentArea = false,\r\n // check if currently animating/navigating\r\n isNavigating,\r\n // check if all levels are shown or if one level is shown (expanded)\r\n isExpanded,\r\n // check if floor is ready to be clicked\r\n isClickReady = true,\r\n // check if content details are enlarged\r\n isDetailsEnlarged = false,\r\n // floors list element\r\n floorsMenuEl = document.getElementById('floors-menu'),\r\n //room label\r\n roomLabelEl = document.getElementById('room-label'),\r\n //floors list buttons\r\n floors = [].slice.call(floorsMenuEl.querySelectorAll('.floors-menu--item')).reverse(),\r\n //current selected room\r\n spaceref,\r\n // scampier screens:\r\n // main container\r\n containerEl = document.querySelector('.container'),\r\n breadcrumbsContainer = document.getElementById('breadcrumbs-container'),\r\n\r\n // viewBox's default values\r\n viewBoxes = [],\r\n\r\n roomInfo,\r\n\r\n urlDesc = \"api/maps/spacedesc/\";\r\n\r\n function init() {\r\n window.onpopstate = function (event) {\r\n transportFromQuery();\r\n };\r\n initializeCustomScrollbars();\r\n // init/bind events\r\n initEvents();\r\n\r\n getInitialViewBoxes();\r\n\r\n //detect if there's a place to go in the querystring\r\n transportFromQuery();\r\n\r\n }\r\n\r\n function getRoomInfo() {\r\n return roomInfo;\r\n }\r\n\r\n function getLevelByFloorNumber(floor) {\r\n for (var i = 0; i < floors.length; i++) {\r\n if (floors[i].innerHTML == floor) {\r\n var level = parseInt(floors[i].getAttribute('data-level'));\r\n return level;\r\n }\r\n }\r\n }\r\n\r\n function getInitialViewBoxes() {\r\n for (var i = 0; i < campiLevels.length; i++) {\r\n var svgEl = campiLevels[i].querySelector('svg');\r\n viewBoxes.push(svgEl.getAttribute(\"viewBox\"));\r\n }\r\n }\r\n\r\n function transportFromQuery() {\r\n var room = getParameterByName(\"room\");\r\n if (room) {\r\n var parentLevel = document.querySelector('[data-id=\"' + room + '\"]').closest(\".level\");\r\n var reg = /\\d/g;\r\n var level = reg.exec(parentLevel.className);\r\n if (level.length > 0)\r\n showLevel(parseInt(level[0]), true);\r\n openContent(room, true);\r\n return;\r\n }\r\n var floor = parseInt(getParameterByName(\"floor\"));\r\n if (!isNaN(floor)) {\r\n showLevel(floor, true);\r\n return;\r\n }\r\n\r\n //if (isExpanded) \r\n showLevel(getLevelByFloorNumber(0));\r\n }\r\n\r\n function getParameterByName(name, url) {\r\n if (!url) url = window.location.href;\r\n name = name.replace(/[\\[\\]]/g, \"\\\\$&\");\r\n var regex = new RegExp(\"[?&]\" + name + \"(=([^&#]*)|&|#|$)\"),\r\n results = regex.exec(url);\r\n if (!results) return null;\r\n if (!results[2]) return '';\r\n return decodeURIComponent(results[2].replace(/\\+/g, \" \"));\r\n }\r\n\r\n /**\r\n * Initialize/Bind events fn.\r\n */\r\n var translateOffset = 0;\r\n var initialTranslate = 125;\r\n var translateDelta = 55;\r\n var initTouch;\r\n\r\n function initEvents() {\r\n initScrollEvents();\r\n // click on a campi´s level\r\n campiLevels.forEach(function (level, pos) {\r\n level.addEventListener('click', function () {\r\n // shows this level\r\n if (!isClickReady) return;\r\n showLevel(pos + 1);\r\n });\r\n });\r\n\r\n // click and hover on a campi´s room\r\n campiRooms.forEach(function (room, pos) {\r\n\r\n room.addEventListener('click', function (ev) {\r\n ev.stopPropagation();\r\n if (isExpanded) {\r\n if (!isClickReady) return;\r\n isClickReady = false;\r\n var roomId = room.getAttribute('data-id');\r\n openContent(roomId);\r\n }\r\n });\r\n\r\n room.addEventListener('mouseover', function () {\r\n if (isExpanded) {\r\n //var roomName = room.getAttribute('data-name');\r\n var roomId = room.getAttribute('data-id');\r\n roomService.getRoomDesc(roomId)\r\n .then(function (response) {\r\n showRoomLabel(response.data);\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n }); \r\n }\r\n });\r\n room.addEventListener('mouseout', function () {\r\n if (isExpanded) {\r\n classie.remove(roomLabelEl, 'fadeInLeft');\r\n classie.add(roomLabelEl, 'fadeOutLeft');\r\n classie.add(roomLabelEl, 'hide');\r\n }\r\n });\r\n room.style.pointerEvents = 'none';\r\n });\r\n\r\n scheduleBtn.addEventListener('click', function () {\r\n var scheduleContainerEl = document.getElementById('schedule-container');\r\n var scheduleEl = document.getElementById('schedule');\r\n //fetch the schedule starting with the current day\r\n if (scheduleEl.children.length === 0) {\r\n $('#schedule').fullCalendar({\r\n defaultView: 'agendaWeek',\r\n customButtons: {\r\n myCustomButton: {\r\n icon: 'x',\r\n click: function () {\r\n classie.add(scheduleContainerEl, 'not-visible');\r\n }\r\n }\r\n },\r\n header: {\r\n right: 'prev,next today myCustomButton'\r\n },\r\n allDaySlot: false,\r\n minTime: '7:00',\r\n maxTime: '23:59',\r\n aspectRatio: 2,\r\n events: function (start, end, timezone, callback) {\r\n var startDate = start.format(\"YYYY-MM-DD\");\r\n roomService.getRoomSchedule(spaceref, startDate, 7)\r\n .then(function (result) {\r\n classie.remove(scheduleContainerEl, 'not-visible');\r\n var roomEvents = [];\r\n if (result.data && result.data.length > 0) {\r\n result.data.forEach(function (event) {\r\n roomEvents.push({\r\n allDay: false,\r\n title: event.Title,\r\n start: event.EventDate + 'T' + event.EventStartsAt,\r\n end: event.EventDate + 'T' + event.EventEndsAt\r\n });\r\n });\r\n }\r\n callback(roomEvents);\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n }\r\n });\r\n return;\r\n }\r\n //refetch the events since the calendar is already initialized\r\n $('#schedule').fullCalendar('refetchEvents');\r\n classie.remove(scheduleContainerEl, 'not-visible');\r\n });\r\n\r\n photosBtn.addEventListener('click', function () {\r\n var photosEl = document.getElementsByClassName('content__item-photos')[0];\r\n var detailsEl = document.getElementsByClassName('content__item-details-div')[0];\r\n\r\n if (classie.has(photosEl, \"hidden\")) {\r\n classie.remove(photosEl, \"hidden\");\r\n classie.add(detailsEl, \"hidden\");\r\n $(\"#photos-btn > svg > use\").attr(\"xlink:href\", \"#icon-cross\");\r\n } else {\r\n classie.add(photosEl, \"hidden\");\r\n classie.remove(detailsEl, \"hidden\");\r\n $(\"#photos-btn > svg > use\").attr(\"xlink:href\", \"#icon-camera-retro\");\r\n }\r\n });\r\n\r\n // click on the show campi´s levels ctrl\r\n allLevelsCtrl.addEventListener('click', function () {\r\n // shows all levels\r\n showAllLevels();\r\n setTimeout(function () {\r\n resetSVGStyles();\r\n disableRoomEvents();\r\n isClickReady = true;\r\n }, 250);\r\n });\r\n\r\n // navigating through the levels\r\n levelUpCtrl.addEventListener('click', function () {\r\n navigate('Down');\r\n });\r\n levelDownCtrl.addEventListener('click', function () {\r\n navigate('Up');\r\n });\r\n\r\n // closing the content area\r\n contentCloseCtrl.addEventListener('click', function () {\r\n closeContentArea();\r\n });\r\n\r\n enlargeBtn.addEventListener('click', function () {\r\n enlargeContentDetails();\r\n });\r\n\r\n shrinkBtn.addEventListener('click', function () {\r\n shrinkContentDetails();\r\n });\r\n\r\n floors.forEach(function (floor) {\r\n var level = parseInt(floor.getAttribute('data-level'));\r\n floor.addEventListener('click', function (ev) {\r\n ev.preventDefault();\r\n // open level\r\n showLevel(level);\r\n });\r\n });\r\n }\r\n\r\n function showTabContent(target) {\r\n var contentToShow = document.getElementById(target);\r\n var contentToHide = document.querySelector('.room-tabs-container--content__active');\r\n classie.remove(contentToHide, 'room-tabs-container--content__active');\r\n classie.add(contentToShow, 'room-tabs-container--content__active');\r\n }\r\n\r\n function initializeCustomScrollbars() {\r\n var roomContentContainer = document.querySelector('.room-tabs-container');\r\n Ps.initialize(roomContentContainer);\r\n }\r\n\r\n function initScrollEvents() {\r\n var scrollContainer = document.getElementById('floor-scroller');\r\n\r\n scrollContainer.addEventListener('touchstart', function (e) {\r\n initTouch = e.touches[0].clientY;\r\n });\r\n\r\n scrollContainer.addEventListener('touchmove', function (e) {\r\n e.preventDefault();\r\n var te = e.changedTouches[0].clientY;\r\n var delta = initTouch - te > 0;\r\n\r\n var newTranslateOffset;\r\n if (delta)\r\n newTranslateOffset = translateOffset - (translateDelta * 0.1);\r\n else\r\n newTranslateOffset = translateOffset + (translateDelta * 0.1);\r\n\r\n if (!isExpanded) //we're in the floors list\r\n scrollFloorList(newTranslateOffset);\r\n //else { //we're zoomed into a floor\r\n // if (newTranslateOffset > 0 && selectedLevel < campiLevelsTotal)\r\n // showLevel(selectedLevel + 1);\r\n\r\n // if (newTranslateOffset < 0 && selectedLevel > 1)\r\n // showLevel(selectedLevel - 1);\r\n //}\r\n });\r\n\r\n scrollContainer.addEventListener('wheel', function (e) {\r\n e.preventDefault();\r\n var delta = e.deltaY < 0;\r\n if (!isExpanded) { //we're in the floors list\r\n var newTranslateOffset;\r\n if (delta) newTranslateOffset = translateOffset + translateDelta;\r\n else newTranslateOffset = translateOffset - translateDelta;\r\n\r\n scrollFloorList(newTranslateOffset);\r\n } //else { //we're zoomed into a floor\r\n // if (delta && selectedLevel < campiLevelsTotal)\r\n // showLevel(selectedLevel + 1);\r\n\r\n // if (!delta && selectedLevel > 1)\r\n // showLevel(selectedLevel - 1);\r\n //}\r\n });\r\n }\r\n\r\n function showRoomLabel(roomLabel) {\r\n var iconEl = roomLabelEl.querySelector('use');\r\n if (iconEl)\r\n iconEl.setAttribute(\"xlink:href\", \"#icon-room\");\r\n roomLabelEl.querySelector('.space__text').innerText = roomLabel;\r\n classie.remove(roomLabelEl, 'fadeOutLeft');\r\n classie.remove(roomLabelEl, 'hide');\r\n classie.add(roomLabelEl, 'fadeInLeft');\r\n }\r\n\r\n function scrollFloorList(newTranslateOffset) {\r\n if (isNavigating) return false;\r\n //check if the user doesn't scroll outside the boundaries\r\n if (initialTranslate + newTranslateOffset > 15 &&\r\n initialTranslate - (campiLevels.length - 1) * initialTranslate + newTranslateOffset < 65) {\r\n translateOffset = newTranslateOffset;\r\n }\r\n campiLevels.forEach(function (level, pos) {\r\n var y = initialTranslate - pos * initialTranslate + translateOffset;\r\n level.style.transform = 'translate3d(50%, ' + y + '%, 0)';\r\n });\r\n }\r\n\r\n /**\r\n * Opens a level. The current level moves to the center while the other ones move away.\r\n */\r\n function showLevel(level, fromQuery) {\r\n if (!fromQuery && (level === selectedLevel && !isOpenContentArea || isNavigating)) return false;\r\n if (isOpenContentArea) closeContentArea();\r\n //remove the previous selected level\r\n if (selectedLevel) {\r\n classie.remove(floors[selectedLevel - 1], 'floors-menu--item__active');\r\n classie.remove(campiLevels[selectedLevel - 1], 'level--current');\r\n classie.remove(campiLevelsEl, 'levels--selected-' + selectedLevel);\r\n zoomController.disableZoom();\r\n }\r\n\r\n campiLevels.forEach(function (level) {\r\n level.removeAttribute(\"style\");\r\n });\r\n\r\n // update selected level val\r\n selectedLevel = level;\r\n if (!fromQuery)\r\n history.pushState({ floor: level }, \"floor\", \"?floor=\" + level);\r\n\r\n // control navigation controls state\r\n setNavigationState();\r\n\r\n classie.add(campiLevelsEl, 'levels--selected-' + selectedLevel);\r\n classie.add(campiLevelsEl, 'levels--open');\r\n\r\n // the level element\r\n isNavigating = true;\r\n var levelEl = campiLevels[selectedLevel - 1];\r\n var floorEl = floors[selectedLevel - 1];\r\n\r\n classie.add(levelEl, 'level--current');\r\n classie.add(floorEl, 'floors-menu--item__active');\r\n\r\n if (!fromQuery)\r\n onEndTransition(levelEl, function () {\r\n isExpanded = true;\r\n isNavigating = false;\r\n }, 'transform');\r\n else {\r\n isExpanded = true;\r\n isNavigating = false;\r\n }\r\n\r\n reenableRoomEvents();\r\n\r\n // show campi nav ctrls\r\n showBackBtn();\r\n\r\n showZoomCtrl();\r\n }\r\n\r\n /**\r\n * Re-enable Room Events\r\n */\r\n function reenableRoomEvents() {\r\n campiRooms.forEach(function (room, pos) {\r\n room.style.pointerEvents = 'visible';\r\n });\r\n }\r\n\r\n /**\r\n * Disable Room Events\r\n */\r\n function disableRoomEvents() {\r\n campiRooms.forEach(function (room, pos) {\r\n room.style.pointerEvents = 'none';\r\n });\r\n }\r\n\r\n /**\r\n * Show Level Zoom Ctrl\r\n */\r\n function showZoomCtrl() {\r\n initZoomCtrl();\r\n classie.remove(levelZoomCtrl, 'hidden');\r\n }\r\n\r\n function initZoomCtrl() {\r\n var level = campiLevels[selectedLevel - 1];\r\n var svgMap = level.querySelector('svg');\r\n zoomController.enableZoom(svgMap);\r\n //Solves initial floor svg fit bug\r\n setTimeout(function () {\r\n zoomController.resizeZoom();\r\n }, 350);\r\n }\r\n\r\n /**\r\n * Hide Level Zoom Ctrl\r\n */\r\n function hideZoomCtrl() {\r\n zoomController.disableZoom();\r\n classie.add(levelZoomCtrl, 'hidden');\r\n }\r\n\r\n /**\r\n * Shows all campi´s levels\r\n */\r\n function showAllLevels() {\r\n\r\n isNavigating = true;\r\n classie.remove(campiLevels[selectedLevel - 1], 'level--current');\r\n classie.remove(floors[selectedLevel - 1], 'floors-menu--item__active');\r\n classie.remove(campiLevelsEl, 'levels--selected-' + selectedLevel);\r\n classie.remove(campiLevelsEl, 'levels--open');\r\n classie.remove(levelUpCtrl, 'boxbutton--disabled');\r\n classie.remove(levelDownCtrl, 'boxbutton--disabled');\r\n var levelEl = campiLevels[selectedLevel - 1];\r\n\r\n var uri = window.location.toString();\r\n var clean_uri = uri.substring(0, uri.indexOf(\"?\"));\r\n\r\n // hide campi nav ctrls\r\n hideBackBtn();\r\n if (!classie.has(document.body, 'no-scroll-transitions')) {\r\n onEndTransition(levelEl, function () {\r\n translateOffset = 0;\r\n isNavigating = false;\r\n isExpanded = false;\r\n }, 'transform');\r\n } else {\r\n translateOffset = 0;\r\n isNavigating = false;\r\n isExpanded = false;\r\n }\r\n\r\n // close content area if it is open\r\n if (isOpenContentArea) {\r\n closeContentArea();\r\n }\r\n hideZoomCtrl();\r\n selectedLevel = null;\r\n history.replaceState({}, document.title, clean_uri);\r\n }\r\n\r\n /**\r\n * Reset the styles of all SVG's after svg-pan-zoom\r\n */\r\n function resetSVGStyles() {\r\n\r\n for (var i = 0; i < campiLevels.length; i++) {\r\n var levelSVG = campiLevels[i].querySelector('svg');\r\n var svgViewport = levelSVG.querySelector('.svg-pan-zoom_viewport');\r\n if (svgViewport != null) {\r\n var viewBoxValue = viewBoxes[i];\r\n levelSVG.setAttribute(\"viewBox\", viewBoxValue);\r\n svgViewport.setAttribute(\"transform\", \"\");\r\n svgViewport.setAttribute(\"style\", \"\");\r\n }\r\n }\r\n\r\n }\r\n\r\n /**\r\n * Show the navigation ctrls\r\n */\r\n function showBackBtn() {\r\n classie.remove(allLevelsCtrl, 'hidden');\r\n }\r\n\r\n /**\r\n * Hide the navigation ctrls\r\n */\r\n function hideBackBtn() {\r\n classie.add(allLevelsCtrl, 'hidden');\r\n }\r\n\r\n /**\r\n * Adds a new item to the breadcrumb\r\n */\r\n function addBreadcrumb(name) {\r\n classie.remove(breadcrumbsContainer.lastElementChild, 'uminho-links__current');\r\n var aTag = document.createElement('a');\r\n aTag.setAttribute('href', \"#\");\r\n aTag.setAttribute('class', \"uminho-links__current\");\r\n aTag.innerHTML = name;\r\n breadcrumbsContainer.appendChild(aTag);\r\n }\r\n\r\n function removeLastBreadcrumb() {\r\n breadcrumbsContainer.removeChild(breadcrumbsContainer.lastElementChild);\r\n classie.add(breadcrumbsContainer.lastElementChild, 'uminho-links__current');\r\n }\r\n\r\n /**\r\n * Navigate through the campi´s levels\r\n */\r\n function navigate(direction) {\r\n if (isNavigating || isOpenContentArea) {\r\n return false;\r\n }\r\n var prevSelectedLevel = selectedLevel;\r\n\r\n // current level\r\n var currentLevel = campiLevels[prevSelectedLevel - 1];\r\n var nextLevel;\r\n if (isExpanded) {\r\n if (direction === 'Up' && prevSelectedLevel > 1) {\r\n nextLevel = selectedLevel - 1;\r\n } else if (direction === 'Down' && prevSelectedLevel < campiLevelsTotal) {\r\n if (isExpanded)\r\n nextLevel = selectedLevel + 1;\r\n }\r\n\r\n // control navigation controls state (enabled/disabled)\r\n setNavigationState();\r\n // transition direction class\r\n classie.add(currentLevel, 'level--moveOut' + direction);\r\n // next level element\r\n // var nextLevel = campiLevels[selectedLevel - 1]\r\n // \t// ..becomes the current one\r\n // classie.add(nextLevel, 'level--current');\r\n showLevel(nextLevel);\r\n // when the transition ends..\r\n if (!classie.has(document.body, 'no-scroll-transitions')) {\r\n onEndTransition(currentLevel, function () {\r\n classie.remove(currentLevel, 'level--moveOut' + direction);\r\n // solves rendering bug for the SVG opacity-fill property\r\n setTimeout(function () {\r\n classie.remove(currentLevel, 'level--current');\r\n }, 60);\r\n\r\n classie.remove(campiLevelsEl, 'levels--selected-' + prevSelectedLevel);\r\n classie.add(campiLevelsEl, 'levels--selected-' + selectedLevel);\r\n\r\n isNavigating = false;\r\n });\r\n } else {\r\n isNavigating = false;\r\n }\r\n return;\r\n }\r\n\r\n var newTranslateOffset;\r\n if (direction === 'Down') newTranslateOffset = translateOffset + translateDelta * 1.5;\r\n else newTranslateOffset = translateOffset - translateDelta * 1.5;\r\n scrollFloorList(newTranslateOffset);\r\n }\r\n\r\n /**\r\n * Control navigation ctrls state. Add disable class to the respective ctrl when the current level is either the first or the last.\r\n */\r\n function setNavigationState() {\r\n if (selectedLevel == 1) {\r\n classie.add(levelDownCtrl, 'boxbutton--disabled');\r\n } else {\r\n classie.remove(levelDownCtrl, 'boxbutton--disabled');\r\n }\r\n\r\n if (selectedLevel == campiLevelsTotal) {\r\n classie.add(levelUpCtrl, 'boxbutton--disabled');\r\n } else {\r\n classie.remove(levelUpCtrl, 'boxbutton--disabled');\r\n }\r\n }\r\n\r\n /**\r\n * Opens/Reveals a content item.\r\n */\r\n function openContent(spacerefval, fromQuery) {\r\n // if one already shown:\r\n if (isOpenContentArea) {\r\n removeLastBreadcrumb();\r\n hideSpace();\r\n spaceref = spacerefval;\r\n showSpace();\r\n } else {\r\n spaceref = spacerefval;\r\n openContentArea();\r\n }\r\n\r\n if (!fromQuery)\r\n history.pushState({ room: spaceref }, \"room\", \"?room=\" + spaceref);\r\n\r\n // remove class selected (if any) from current space\r\n if (selectedLevel) {\r\n var activeSpaceArea = campiLevels[selectedLevel - 1].querySelector('svg .map__space--selected');\r\n var newArea = campiLevels[selectedLevel - 1].querySelector('svg .selectable-room[data-id=\"' + spaceref + '\"]');\r\n // svg area gets selected\r\n classie.add(newArea, 'map__space--selected');\r\n }\r\n if (activeSpaceArea) {\r\n classie.remove(activeSpaceArea, 'map__space--selected');\r\n }\r\n }\r\n\r\n /**\r\n * Opens the content area.\r\n */\r\n function openContentArea() {\r\n floorsMenuEl.style.display = 'none';\r\n isOpenContentArea = true;\r\n // shows space\r\n showSpace(true);\r\n // show close ctrl\r\n classie.remove(contentCloseCtrl, 'content__button--hidden');\r\n\r\n if (isDetailsEnlarged) {\r\n classie.remove(shrinkBtn, 'content-expansion__button--hidden');\r\n } else {\r\n classie.remove(enlargeBtn, 'content-expansion__button--hidden');\r\n }\r\n\r\n // resize campi area\r\n classie.add(campi, 'campi--content-open');\r\n // disable campi nav ctrls\r\n classie.add(levelDownCtrl, 'boxbutton--disabled');\r\n classie.add(levelUpCtrl, 'boxbutton--disabled');\r\n // make campinav hideable\r\n classie.add(campiNav, 'hideable');\r\n }\r\n\r\n /**\r\n * Check if Schedule exists\r\n */\r\n\r\n //function ScheduleExists(isPedagogical, callbackFunction) {\r\n // var start = new Date();\r\n // var startDate = moment(start).format('YYYY-MM-DD');\r\n // roomService.getRoomSchedule(spaceref, startDate, 7)\r\n // .then(function (result) {\r\n // var exists = (result.data.length > 0);\r\n // callbackFunction(exists, isPedagogical);\r\n // })\r\n // .catch(function (error) {\r\n // console.error(error);\r\n // });\r\n //}\r\n\r\n /**\r\n * Shows a space.\r\n */\r\n function showSpace(sliding) {\r\n roomService.getRoomInfo(spaceref)\r\n .then(function (result) {\r\n var buildingNumber = spaceref.substring(3, 5);\r\n var buildingCode = result.data.EdificioId;\r\n $('#breadcrumbs-container .uminho-links__current').attr(\"href\", buildingCode + \".html\");\r\n $('#breadcrumbs-container .uminho-links__current').text(\"Edifício \" + buildingNumber);\r\n\r\n var name = result.data.Name;\r\n addBreadcrumb(name);\r\n roomInfo = result.data;\r\n fillContentInfo();\r\n // the content item\r\n var contentItem = document.getElementById('room-content');\r\n // show content\r\n classie.add(contentItem, 'content__item--current');\r\n classie.remove(contentEl, 'text-centered');\r\n var roomContentTabsEl = document.getElementsByClassName(\"room-content-tabs\");\r\n roomContentTabsEl[0].style.visibility = 'visible';\r\n if (sliding) {\r\n onEndTransition(contentItem, function () {\r\n classie.add(contentEl, 'content--open');\r\n });\r\n }\r\n\r\n if (!result.data.IsPedagogical) {\r\n scheduleBtn.style.display = 'none';\r\n } else {\r\n scheduleBtn.style.display = 'block';\r\n }\r\n\r\n isClickReady = true;\r\n\r\n //ScheduleExists(result.data.IsPedagogical, function (exists, isPedagogical) {\r\n // if (!exists && !isPedagogical) {\r\n // scheduleBtn.style.visibility = 'hidden';\r\n // } else {\r\n // scheduleBtn.style.visibility = 'visible';\r\n // }\r\n\r\n // isClickReady = true;\r\n //});\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n\r\n addBreadcrumb(spaceref);\r\n\r\n var roomContentTabsEl = document.getElementsByClassName(\"room-content-tabs\");\r\n roomContentTabsEl[0].style.visibility = 'hidden';\r\n var characterizationEl = document.getElementById('characterization');\r\n characterizationEl.innerHTML = '';\r\n var contentContainerEl = document.createElement('h1');\r\n contentContainerEl.innerHTML = 'Não existe informação disponível sobre este local';\r\n characterizationEl.appendChild(contentContainerEl);\r\n\r\n classie.add(contentEl, 'text-centered');\r\n classie.add(shrinkBtn, 'content-expansion__button--hidden');\r\n classie.add(enlargeBtn, 'content-expansion__button--hidden');\r\n\r\n // the content item\r\n var contentItem = document.getElementById('room-content');\r\n // show content\r\n classie.add(contentItem, 'content__item--current');\r\n\r\n if (sliding) {\r\n onEndTransition(contentItem, function () {\r\n classie.add(contentEl, 'content--open');\r\n });\r\n }\r\n isClickReady = true;\r\n });\r\n }\r\n\r\n function fillContentInfo() {\r\n var characterizationEl = document.getElementById('characterization');\r\n characterizationEl.innerHTML = '';\r\n var detailsContainer = document.createElement('div');\r\n detailsContainer.setAttribute('class', 'content__item-details-div');\r\n var contentContainerEl = document.createElement('div');\r\n contentContainerEl.setAttribute('class', 'content__item-details');\r\n var type = roomInfo.Type;\r\n var name = roomInfo.Name;\r\n\r\n if (name.search(type) > -1) {\r\n type = \"\";\r\n }\r\n\r\n var isOffice = roomInfo.IsOffice;\r\n var isPedagogical = roomInfo.IsPedagogical;\r\n photosBtn.style.display = 'none';\r\n\r\n $(\".room-content-door span\")[0].innerText = roomInfo.Porta;\r\n\r\n var nameEl = document.getElementById('room-content-name');\r\n var typeEl = document.getElementById('room-content-type');\r\n nameEl.innerText = name;\r\n typeEl.innerText = type;\r\n\r\n var specifications = [];\r\n if (roomInfo.Specifications)\r\n specifications = roomInfo.Specifications.sort(function (a, b) { return a.Order - b.Order; });\r\n specifications.forEach(function (spec) {\r\n switch (spec.Type) {\r\n case 0: //title\r\n // var title = document.createElement('h3');\r\n // title.innerText = spec.Caption;\r\n // title.setAttribute('class', 'content__item-title');\r\n // contentContainerEl.appendChild(title);\r\n break;\r\n case 1: //subheader\r\n var subtitle = document.createElement('h4');\r\n subtitle.innerText = spec.Caption;\r\n subtitle.setAttribute('class', 'content__item-subtitle');\r\n contentContainerEl.appendChild(subtitle);\r\n break;\r\n case 2: //caption_left\r\n var container = document.createElement('div');\r\n container.setAttribute('class', 'clearfix content-line');\r\n var labelEl = document.createElement('label');\r\n labelEl.setAttribute('class', 'content-line--label');\r\n labelEl.innerText = spec.Caption + \":\";\r\n\r\n var valueEl = document.createElement('span');\r\n valueEl.setAttribute('class', 'content-line--value');\r\n valueEl.innerText = spec.Value;\r\n container.appendChild(labelEl);\r\n container.appendChild(valueEl);\r\n\r\n contentContainerEl.appendChild(container);\r\n break;\r\n\r\n }\r\n });\r\n detailsContainer.appendChild(contentContainerEl);\r\n characterizationEl.appendChild(detailsContainer);\r\n\r\n if (isOffice) {\r\n var officeOccupantsContainer = document.createElement('div');\r\n officeOccupantsContainer.setAttribute('class', 'content__item-details');\r\n var officeContactsContainer = document.createElement('div');\r\n officeContactsContainer.setAttribute('class', 'content__item-details');\r\n\r\n var occupants = [];\r\n if (roomInfo.Occupants) {\r\n var subtitle = document.createElement('h4');\r\n subtitle.innerText = 'Ocupantes';\r\n subtitle.setAttribute('class', 'content__item-subtitle');\r\n officeOccupantsContainer.appendChild(subtitle);\r\n occupants = roomInfo.Occupants;\r\n\r\n var contentCenteredDiv = document.createElement('div');\r\n contentCenteredDiv.setAttribute('class', 'content-centered-column');\r\n\r\n occupants.forEach(function (occupant) {\r\n var container = document.createElement('div');\r\n container.setAttribute('class', 'clearfix content-line spaced-content');\r\n\r\n var containerName = document.createElement('div');\r\n containerName.setAttribute('class', 'clearfix content-line contact-modal--btn');\r\n\r\n var valueName = document.createElement('span');\r\n valueName.setAttribute('class', 'content-line--value');\r\n valueName.setAttribute('style', 'cursor: pointer;');\r\n valueName.innerText = occupant.Name;\r\n\r\n var icon = \"\\\r\n \\\r\n \";\r\n\r\n containerName.insertAdjacentHTML('beforeend', icon);\r\n containerName.appendChild(valueName);\r\n\r\n container.appendChild(containerName);\r\n\r\n contentCenteredDiv.appendChild(container);\r\n });\r\n officeOccupantsContainer.appendChild(contentCenteredDiv);\r\n }\r\n\r\n var contacts = [];\r\n if (roomInfo.Contacts) {\r\n var subtitle = document.createElement('h4');\r\n subtitle.innerText = 'Contactos';\r\n subtitle.setAttribute('class', 'content__item-subtitle');\r\n officeContactsContainer.appendChild(subtitle);\r\n contacts = roomInfo.Contacts;\r\n contacts.forEach(function (contact) {\r\n var container = document.createElement('div');\r\n container.setAttribute('class', 'clearfix content-line');\r\n\r\n var labelEl = document.createElement('label');\r\n labelEl.setAttribute('class', 'content-line--label');\r\n labelEl.innerText = contact.Designation + \":\";\r\n\r\n var valueEl = document.createElement('span');\r\n valueEl.setAttribute('class', 'content-line--value');\r\n valueEl.innerText = contact.Value;\r\n container.appendChild(labelEl);\r\n container.appendChild(valueEl);\r\n\r\n officeContactsContainer.appendChild(container);\r\n });\r\n }\r\n\r\n detailsContainer.appendChild(officeOccupantsContainer);\r\n detailsContainer.appendChild(officeContactsContainer);\r\n characterizationEl.appendChild(detailsContainer);\r\n }\r\n\r\n if (isPedagogical) {\r\n var pedagogicalInfoContainer = document.createElement('div');\r\n pedagogicalInfoContainer.setAttribute('class', 'content__item-details');\r\n\r\n var goods = [];\r\n if (roomInfo.Goods) {\r\n var subtitle = document.createElement('h4');\r\n subtitle.innerText = 'Equipamentos';\r\n subtitle.setAttribute('class', 'content__item-subtitle');\r\n pedagogicalInfoContainer.appendChild(subtitle);\r\n goods = roomInfo.Goods;\r\n goods.forEach(function (good) {\r\n var container = document.createElement('div');\r\n container.setAttribute('class', 'clearfix content-line');\r\n\r\n var labelEl = document.createElement('label');\r\n labelEl.setAttribute('class', 'content-line--label');\r\n labelEl.innerText = good.Name + \":\";\r\n\r\n var valueEl = document.createElement('span');\r\n valueEl.setAttribute('class', 'content-line--value');\r\n valueEl.innerText = good.Quantity;\r\n container.appendChild(labelEl);\r\n container.appendChild(valueEl);\r\n\r\n pedagogicalInfoContainer.appendChild(container);\r\n });\r\n }\r\n\r\n detailsContainer.appendChild(pedagogicalInfoContainer);\r\n characterizationEl.appendChild(detailsContainer);\r\n }\r\n\r\n var photos = [];\r\n if (roomInfo.Photos) {\r\n photosBtn.style.display = 'block';\r\n var photosContainer = document.createElement('div');\r\n photosContainer.setAttribute('class', 'content__item-photos hidden');\r\n var subtitle = document.createElement('h4');\r\n subtitle.innerText = 'Fotos';\r\n subtitle.setAttribute('class', 'content__item-subtitle');\r\n photosContainer.appendChild(subtitle);\r\n var photosgallery = document.createElement('div');\r\n photosgallery.setAttribute('class', 'photos-gallery');\r\n photos = roomInfo.Photos.sort(function (a, b) { return a.Order - b.Order; });\r\n photos.forEach(function (photo) {\r\n var photoLink = document.createElement('a');\r\n photoLink.setAttribute('href', 'data:image/png;base64,' + photo.PhotoData);\r\n photoLink.setAttribute('class', 'photos-container--img');\r\n photoLink.setAttribute('data-lightbox', 'img-set');\r\n photoLink.setAttribute('data-title', photo.Caption);\r\n\r\n var imgEl = document.createElement('img');\r\n imgEl.setAttribute('src', 'data:image/png;base64,' + photo.PhotoData);\r\n\r\n photoLink.appendChild(imgEl);\r\n photosgallery.appendChild(photoLink);\r\n });\r\n photosContainer.appendChild(photosgallery);\r\n characterizationEl.appendChild(photosContainer);\r\n\r\n }\r\n }\r\n\r\n /**\r\n * Closes the content area.\r\n */\r\n function closeContentArea() {\r\n removeLastBreadcrumb();\r\n\r\n history.pushState({ floor: selectedLevel }, \"floor\", \"?floor=\" + selectedLevel);\r\n\r\n floorsMenuEl.style.display = 'block';\r\n classie.remove(contentEl, 'content--open');\r\n // close current space\r\n hideSpace();\r\n // hide close ctrl\r\n classie.add(contentCloseCtrl, 'content__button--hidden');\r\n\r\n if (isDetailsEnlarged) {\r\n classie.add(shrinkBtn, 'content-expansion__button--hidden');\r\n classie.remove(contentEl, 'enlarged');\r\n } else {\r\n classie.add(enlargeBtn, 'content-expansion__button--hidden');\r\n }\r\n isDetailsEnlarged = false;\r\n\r\n // resize campi area\r\n classie.remove(campi, 'campi--content-open');\r\n // enable campi nav ctrls\r\n if (isExpanded) {\r\n setNavigationState();\r\n }\r\n var roomContentTabsEl = document.getElementsByClassName(\"room-content-tabs\");\r\n roomContentTabsEl[0].style.visibility = 'visible';\r\n isOpenContentArea = false;\r\n classie.remove(campiNav, 'hideable');\r\n }\r\n\r\n function enlargeContentDetails() {\r\n isDetailsEnlarged = true;\r\n classie.add(contentEl, 'enlarged');\r\n classie.add(campiNav, 'content--enlarged');\r\n classie.add(enlargeBtn, 'content-expansion__button--hidden');\r\n classie.remove(shrinkBtn, 'content-expansion__button--hidden');\r\n }\r\n\r\n function shrinkContentDetails() {\r\n isDetailsEnlarged = false;\r\n classie.remove(contentEl, 'enlarged');\r\n classie.remove(campiNav, 'content--enlarged');\r\n classie.remove(enlargeBtn, 'content-expansion__button--hidden');\r\n classie.add(shrinkBtn, 'content-expansion__button--hidden');\r\n }\r\n\r\n /**\r\n * Hides a space.\r\n */\r\n function hideSpace() {\r\n // the content item\r\n var contentItem = document.getElementById('room-content');\r\n // hide content\r\n classie.remove(contentItem, 'content__item--current');\r\n\r\n // remove class selected (if any) from current space\r\n var activeSpaceArea = campiLevels[selectedLevel - 1].querySelector('svg .map__space--selected');\r\n if (activeSpaceArea) {\r\n classie.remove(activeSpaceArea, 'map__space--selected');\r\n }\r\n }\r\n\r\n function toArray(obj) {\r\n var result = [];\r\n var passName;\r\n var tempArray = [];\r\n for (var prop in obj) {\r\n var value = obj[prop];\r\n if (typeof value === 'object') {\r\n if ($.isNumeric(prop)) {\r\n passName = prop;\r\n } else {\r\n passName = prop;\r\n }\r\n tempArray = toArray(value, passName);\r\n $.each(tempArray, function (key, value) {\r\n result.push(value);\r\n });\r\n\r\n } else {\r\n result.push(prop);\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n $(document).ready(function () {\r\n\r\n // Get the modal\r\n var modal = document.getElementById('contact-info_modal');\r\n\r\n // Get the element that closes the modal\r\n var span = document.getElementsByClassName(\"close\")[0];\r\n\r\n // When the user clicks the button, open the modal \r\n $(\"#characterization\").on(\"click\", \".contact-modal--btn\", function (event) {\r\n showContactModal(event.target.innerText, modal);\r\n });\r\n\r\n // When the user clicks on (x), close the modal\r\n span.onclick = function () {\r\n modal.style.display = \"none\";\r\n }\r\n\r\n // When the user clicks anywhere outside of the modal, close it\r\n window.onclick = function (event) {\r\n if (event.target == modal) {\r\n modal.style.display = \"none\";\r\n }\r\n }\r\n\r\n });\r\n\r\n // Opens the contact modal.\r\n function showContactModal(occupantName, modal) {\r\n\r\n var occupantInfoEl = document.getElementById('occupant-info');\r\n var contactInfoEl = document.getElementById('contact-info');\r\n var occupantInfo;\r\n\r\n $(\"#contact-info\").empty();\r\n\r\n roomInfo.Occupants.forEach(function (occupant) {\r\n if (occupant.Name == occupantName) {\r\n occupantInfo = occupant;\r\n }\r\n });\r\n\r\n $(occupantInfoEl).find(\".occupant-name\")[0].innerText = occupantInfo.Name;\r\n $(occupantInfoEl).find(\".occupant-skills\")[0].innerText = occupantInfo.Cargos;\r\n $(occupantInfoEl).find(\".occupant-more-skills\")[0].innerText = occupantInfo.Categoria + \" | \" + occupantInfo.Unidade;\r\n\r\n $(occupantInfoEl).find(\"img\")[0].setAttribute(\"src\", \"../../img/defaultPic.jpg\");\r\n if (occupantInfo.Fotografia) {\r\n $(occupantInfoEl).find(\"img\")[0].setAttribute(\"src\", \"data:image/gif;base64,\" + occupantInfo.Fotografia);\r\n }\r\n\r\n var test = toArray(occupantInfo.PersonalContact);\r\n\r\n var i;\r\n for (i = 0; i < test.length; i++) {\r\n var fieldName = test[i];\r\n var fieldValue = occupantInfo.PersonalContact[fieldName];\r\n\r\n if (fieldValue) {\r\n var container = document.createElement('div');\r\n container.setAttribute('class', 'contact-info--item');\r\n\r\n var labelEl = document.createElement('label');\r\n labelEl.setAttribute('class', 'content-line--label');\r\n labelEl.innerText = fieldName.replace(/_/g, \" \") + \":\";\r\n\r\n var valueEl = document.createElement('span');\r\n valueEl.setAttribute('class', 'content-line--value');\r\n\r\n if (fieldName == \"Morada\") {\r\n valueEl.innerHTML = fieldValue;\r\n } else {\r\n valueEl.innerText = fieldValue;\r\n }\r\n\r\n container.appendChild(labelEl);\r\n container.appendChild(valueEl);\r\n\r\n $(\"#contact-info\").append(container);\r\n }\r\n }\r\n\r\n if (occupantInfo.HorarioAtendimento) {\r\n var container = document.createElement('div');\r\n container.setAttribute('class', 'contact-info--item');\r\n\r\n var labelEl = document.createElement('label');\r\n labelEl.setAttribute('class', 'content-line--label');\r\n labelEl.innerText = \"Horário Atendimento:\";\r\n\r\n var valueEl = document.createElement('span');\r\n valueEl.setAttribute('class', 'content-line--value');\r\n valueEl.innerHTML = occupantInfo.HorarioAtendimento;\r\n\r\n container.appendChild(labelEl);\r\n container.appendChild(valueEl);\r\n\r\n $(\"#contact-info\").append(container);\r\n }\r\n\r\n modal.style.display = \"block\";\r\n }\r\n\r\n init();\r\n\r\n})(window);\r\n"],"sourceRoot":"/source/"}