PageSourceSearch

https://refusonline.com/ca/mapa-reserves-online

html refusonline.com collected 2026-10-02 12:10:33 UTC 280,052 bytes, 7,089 lines download raw bytes

1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2<html xmlns="http://www.w3.org/1999/xhtml" lang="ca">
3<head>
4  <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
4<script type="text/javascript">(window.NREUM||(NREUM={})).init={privacy:{cookies_enabled:true},ajax:{deny_list:["bam.eu01.nr-data.net"]},distributed_tracing:{enabled:true}};(window.NREUM||(NREUM={})).loader_config={agentID:"249429762",accountID:"3241344",trustKey:"3241344",xpid:"VwQDUFVXDBACUFhWBQkCUF0=",licenseKey:"NRJS-16b87faba696953ba4d",applicationID:"249428569",browserID:"249429762"};;/*! For license information please see nr-loader-spa-1.323.0.min.js.LICENSE.txt */
5(()=>{var e={8122(e,t,r){"use strict";r.d(t,{a:()=>i});var n=r(944);function i(e,t){try{if(!e||"object"!=typeof e)return(0,n.R)(3);if(!t||"object"!=typeof t)return(0,n.R)(4);const r=Object.create(Object.getPrototypeOf(t),Object.getOwnPropertyDescriptors(t)),s=0===Object.keys(r).length?e:r;for(let a in s)if(void 0!==e[a])try{if(null===e[a]){r[a]=null;continue}Array.isArray(e[a])&&Array.isArray(t[a])?r[a]=Array.from(new Set([...e[a],...t[a]])):e[a]instanceof Map||e[a]instanceof Set||e[a]instanceof Date||e[a]instanceof RegExp?r[a]=e[a]:"object"==typeof e[a]&&null!==t[a]&&"object"==typeof t[a]?r[a]=i(e[a],t[a]):r[a]=e[a]}catch(e){r[a]||(0,n.R)(1,e)}return r}catch(e){(0,n.R)(2,e)}}},2555(e,t,r){"use strict";r.d(t,{f:()=>a});var n=r(384),i=r(8122);const s={beacon:n.NT.beacon,errorBeacon:n.NT.errorBeacon,licenseKey:void 0,applicationID:void 0,sa:void 0,queueTime:void 0,applicationTime:void 0,ttGuid:void 0,user:void 0,account:void 0,product:void 0,extra:void 0,jsAttributes:{},userAttributes:void 0,atts:void 0,transactionName:void 0,tNamePlain:void 0};function a(e){try{return!!e.licenseKey&&!!e.errorBeacon&&!!e.applicationID}catch(e){return!1}}r.d(t,["D",0,e=>(0,i.a)(e,s)])},7699(e,t,r){"use strict";var n=r(860);const i={[n.K7.logging]:!0,[n.K7.genericEvents]:!0,[n.K7.jserrors]:!0,[n.K7.ajax]:!0};r.d(t,["It",0,1e6,"KC",0,i,"qh",0,"SESSION_ERROR"])},9324(e,t,r){"use strict";r.d(t,["A",0,"@newrelic/rrweb","x",0,"1.323.0"])},981(e,t,r){"use strict";r.d(t,["R",0,{AJAX:"AjaxRequest",PA:"PageAction",UA:"UserAction",BP:"BrowserPerformance",WS:"WebSocket",SPV:"SecurityPolicyViolation",JSE:"JavaScriptError",LOG:"Log",PVE:"PageView",PVT:"PageViewTiming",SR:"SessionReplay",ST:"SessionTrace",BI:"BrowserInteraction"}])},9752(e,t,r){"use strict";const n="newrelic-iframe-",i=n+"timing-update",s=n+"api",a=n+"api-response",o=n+"vitals-update",c=n+"ajax";r.d(t,["$8",0,o,"Gi",0,a,"KU",0,c,"Pl",0,n,"cS",0,s,"cr",0,i])},6154(e,t,r){"use strict";var n=r(1863);const i="undefined"!=typeof window&&!!window.document,s="undefined"!=typeof WorkerGlobalScope&&("undefined"!=typeof self&&self instanceof WorkerGlobalScope&&self.navigator instanceof WorkerNavigator||"undefined"!=typeof globalThis&&globalThis instanceof WorkerGlobalScope&&globalThis.navigator instanceof WorkerNavigator),a=i?window:"undefined"!=typeof WorkerGlobalScope&&("undefined"!=typeof self&&self instanceof WorkerGlobalScope&&self||"undefined"!=typeof globalThis&&globalThis instanceof WorkerGlobalScope&&globalThis),o=Boolean("hidden"===a?.document?.visibilityState),c=""+a?.location,d=/iPad|iPhone|iPod/.test(a.navigator?.userAgent),u=d&&"undefined"==typeof SharedWorker,l=(()=>{const e=a.navigator?.userAgent?.match(/Firefox[/\s](\d+\.\d+)/);return Array.isArray(e)&&e.length>=2?+e[1]:0})(),f=Date.now()-(0,n.t)();r.d(t,["OF",0,d,"RI",0,i,"WN",0,f,"bv",0,s,"gm",0,a,"lR",0,l,"m",0,c,"mw",0,o,"sb",0,u,"zk",0,()=>{const e=a?.performance?.getEntriesByType?.("navigation")?.[0];if(e&&e.responseStart>0&&e.responseStart<a.performance.now())return e}])},7295(e,t,r){"use strict";r.d(t,{Xv:()=>a,gX:()=>i,iW:()=>s});var n=[];function i(e){if(!e||s(e))return!1;if(0===n.length)return!0;if("*"===n[0].hostname)return!1;for(var t=0;t<n.length;t++){var r=n[t];if(r.hostname.test(e.hostname)&&r.pathname.test(e.pathname))return!1}return!0}function s(e){return void 0===e.hostname}function a(e){if(n=[],e&&e.length)for(var t=0;t<e.length;t++){let r=e[t];if(!r)continue;if("*"===r)return void(n=[{hostname:"*"}]);0===r.indexOf("http://")?r=r.substring(7):0===r.indexOf("https://")&&(r=r.substring(8));const i=r.indexOf("/");let s,a;i>0?(s=r.substring(0,i),a=r.substring(i)):(s=r,a="*");let[c]=s.split(":");n.push({hostname:o(c),pathname:o(a,!0)})}}function o(e,t=!1){const r=e.replace(/[.+?^${}()|[\]\\]/g,e=>"\\"+e).replace(/\*/g,".*?");return new RegExp((t?"^":"")+r+"$")}},3241(e,t,r){"use strict";r.d(t,{W:()=>i});var n=r(6154);function i(e={}){try{n.gm.dispatchEvent(new CustomEvent("newrelic",{detail:e}))}catch(e){}}},1687(e,t,r){"use strict";r.d(t,{Ak:()=>o,Ze:()=>d,x3:()=>c});var n=r(3241),i=r(3606),s=r(860),a=r(2646);function o(e,t){if(!e)return;const r={staged:!1,priority:s.P3[t]||0};
5e.runtime.drainRegistry.get(t)||e.runtime.drainRegistry.set(t,r)}function c(e,t){if(!e)return;const r=e.runtime.drainRegistry;r&&(r.get(t)&&r.delete(t),l(e,t,!1),r.size&&u(e))}function d(e,t="feature",r=!1){if(e){if(!e.runtime.drainRegistry.get(t)||r)return l(e,t);e.runtime.drainRegistry.get(t).staged=!0,u(e)}}function u(e){if(!e)return;const t=Array.from(e.runtime.drainRegistry);t.every(([e,t])=>t.staged)&&(t.sort((e,t)=>e[1].priority-t[1].priority),t.forEach(([t])=>{e.runtime.drainRegistry.delete(t),l(e,t)}))}function l(e,t,r=!0){if(!e)return;const s=e.ee,o=i.i.handlers;if(s&&!s.aborted&&s.backlog&&o){if((0,n.W)({type:"lifecycle",name:"drain",feature:t}),r){const e=s.backlog[t],r=o[t];if(r){for(let t=0;e&&t<e.length;++t)f(e[t],r);Object.entries(r).forEach(([e,t])=>{Object.values(t||{}).forEach(t=>{t[0]?.on&&t[0].context()instanceof a.y&&!t[0].listeners(e).includes(t[1])&&t[0].on(e,t[1])})})}}s.isolatedBacklog||delete o[t],s.backlog[t]=null,s.emit("drain-"+t,[])}}function f(e,t){var r=e[1];Object.values(t[r]||{}).forEach(t=>{var r=e[0];if(t[0]===r){var n=t[1],i=e[3],s=e[2];n.apply(i,s)}})}},7836(e,t,r){"use strict";var n=r(384),i=r(8990),s=r(2646),a=r(5607);const o="nr@context:".concat(a.W),c=function e(t,r){var n={},a={},u={},l=!1;try{l=16===r.length&&d.initializedAgents?.[r]?.runtime.isolatedBacklog}catch(e){}var f={on:p,addEventListener:p,removeEventListener:function(e,t){var r=n[e];if(!r)return;for(var i=0;i<r.length;i++)r[i]===t&&r.splice(i,1)},emit:function(e,r,n,i,s){!1!==s&&(s=!0);if(c.aborted&&!i)return;t&&s&&t.emit(e,r,n);var o=h(n);g(e).forEach(e=>{e.apply(o,r)});var d=v()[a[e]];d&&d.push([f,e,r,o]);return o},get:m,listeners:g,context:h,buffer:function(e,t){const r=v();if(t=t||"feature",f.aborted)return;Object.entries(e||{}).forEach(([e,n])=>{a[n]=t,t in r||(r[t]=[])})},abort:function(){f._aborted=!0,Object.keys(f.backlog).forEach(e=>{delete f.backlog[e]})},isBuffering:function(e){return!!v()[a[e]]},debugId:r,backlog:l?{}:t&&"object"==typeof t.backlog?t.backlog:{},isolatedBacklog:l};return Object.defineProperty(f,"aborted",{get:()=>{let e=f._aborted||!1;return e||(t&&(e=t.aborted),e)}}),f;function h(e){return e&&e instanceof s.y?e:e?(0,i.I)(e,o,()=>new s.y(o)):new s.y(o)}function p(e,t){n[e]=g(e).concat(t)}function g(e){return n[e]||[]}function m(t){return u[t]=u[t]||e(f,t)}function v(){return f.backlog}}(void 0,"globalEE"),d=(0,n.Zm)();d.ee||(d.ee=c),r.d(t,["P",0,o,"ee",0,c])},2646(e,t,r){"use strict";r.d(t,{y:()=>n});class n{constructor(e){this.contextId=e}}},9908(e,t,r){"use strict";r.d(t,{d:()=>n,p:()=>i});var n=r(7836).ee.get("handle");function i(e,t,r,i,s){s?(s.buffer([e],i),s.emit(e,t,r)):(n.buffer([e],i),n.emit(e,t,r))}},3606(e,t,r){"use strict";r.d(t,{i:()=>s});var n=r(9908);s.on=a;var i=s.handlers={};function s(e,t,r,s){a(s||n.d,i,e,t,r)}function a(e,t,r,i,s){s||(s="feature"),e||(e=n.d);var a=t[s]=t[s]||{};(a[r]=a[r]||[]).push([e,i])}},3878(e,t,r){"use strict";function n(e,t){return{capture:e,passive:!1,signal:t}}function i(e,t,r=!1,i){window.addEventListener(e,t,n(r,i))}function s(e,t,r=!1,i){document.addEventListener(e,t,n(r,i))}r.d(t,{DD:()=>s,jT:()=>n,sp:()=>i})},5607(e,t,r){"use strict";const n=(0,r(9566).bz)();r.d(t,["W",0,n])},9566(e,t,r){"use strict";r.d(t,{LA:()=>a,ZF:()=>o,bz:()=>s,el:()=>c});var n=r(6154);function i(e,t){return e?15&e[t]:16*Math.random()|0}function s(){const e=n.gm?.crypto||n.gm?.msCrypto;let t,r=0;return e&&e.getRandomValues&&(t=e.getRandomValues(new Uint8Array(30))),"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".split("").map(e=>"x"===e?i(t,r++).toString(16):"y"===e?(3&i()|8).toString(16):e).join("")}function a(e){const t=n.gm?.crypto||n.gm?.msCrypto;let r,s=0;t&&t.getRandomValues&&(r=t.getRandomValues(new Uint8Array(e)));const a=[];for(var o=0;o<e;o++)a.push(i(r,s++).toString(16));return a.join("")}function o(){return a(16)}function c(){return a(32)}},2614(e,t,r){"use strict";r.d(t,["BB",0,18e5,"Wt",0,"NRBA_SESSION::","g",0,{OFF:0,FULL:1,ERROR:2},"iL",0,{SAME_TAB:"same-tab",CROSS_TAB:"cross-tab"},"tS",0,{STARTED:"session-started",PAUSE:"session-pause",RESET:"session-reset",RESUME:"session-resume",UPDATE:"session-update"},"wk",0,144e5])},733(e,t,r){"use strict";function n(e,t){return function(e){let t=2166136261;for(let r=0;r<e.length;r++)t^=e.charCodeAt(r),t=Math.imul(t,16777619);return(t>>>0).toString(16).padStart(8,"0")}("".concat(String(e),":").concat(String(t)))}r.d(t,{Y:()=>n})},1863(e,t,r){"use strict";function n(){return Math.floor(performance.now())}r.d(t,{t:()=>n})},9119(e,t,r){"use strict";r.d(t,{L:()=>s});var n=/([^?#]*)[^#]*(#[^?]*|$).*/,i=/([^?#]*)().*/;function s(e,t){return e?e.replace(t?n:i,"$1$2"):e}},7485(e,t,r){"use strict";r.d(t,{D:()=>i});var n=r(6154);function i(e){if(0===(e||"").indexOf("data:"))return{protocol:"data"};try{const t=new URL(e,location.href),r={port:t.port,hostname:t.hostname,pathname:t.pathname,search:t.search,protocol:t.protocol.slice(0,t.protocol.indexOf(":")),sameOrigin:t.protocol===n.gm?.location?.protocol&&t.host===n.gm?.location?.host};return r.port&&""!==r.port||("http:"===t.protocol&&(r.port="80"),"https:"===t.protocol&&(r.port="443")),r.pathname&&""!==r.pathname?r.pathname.startsWith("/")||(r.pathname="/".concat(r.pathname)):r.pathname="/",r}catch(e){return{}}}},7866(e,t,r){"use strict";r.d(t,["Nc",0,/^\s*at Function code \(Function code:\d+:\d+\)\s*/i,"cn",0,/^\s*(?:([^@]*)(?:\(.*?\))?@)?((?:file|http|https|chrome|safari-extension).*?):(\d+)(?::(\d+))?\s*$/i,"fL",0,/^\s*at .+ \(eval at \S+ \((?:(?:file|http|https):[^)]+)?\)(?:, [^:]*:\d+:\d+)?\)$/i,"h3",0,/function (.+?)\s*\(/,"hB",0,/^\s*at (?:((?:\[object object\])?(?:[^(]*\([^)]*\))*[^()]*(?: \[as \S+\])?) )?\(?((?:file|http|https|chrome-extension):.*?)?:(\d+)(?::(\d+))?\)?\s*$/i])},944(e,t,r){"use strict";r.d(t,{R:()=>i});var n=r(3241);function i(e,t){"function"==typeof console.debug&&(console.debug("New Relic Warning: https://github.com/newrelic/newrelic-browser-agent/blob/main/docs/warning-codes.md#".concat(e),t),(0,n.W)({drained:null,type:"data",name:"warn",feature:"warn",data:{code:e,secondary:t}}))}},8990(e,t,r){"use strict";r.d(t,{I:()=>i});var n=Object.prototype.hasOwnProperty;function i(e,t,r){if(n.call(e,t))return e[t];var i=r();if(Object.defineProperty&&Object.keys)try{return Object.defineProperty(e,t,{value:i,writable:!0,enumerable:!1}),i}catch(e){}return e[t]=i,i}},6389(e,t,r){"use strict";function n(e,t=500,r={}){const n=r?.leading||!1;let i;return(...r)=>{n&&void 0===i&&(e.apply(this,r),i=setTimeout(()=>{i=clearTimeout(i)},t)),n||(clearTimeout(i),i=setTimeout(()=>{e.apply(this,r)},t))}}function i(e){let t=!1;return(...r)=>{t||(t=!0,e.apply(this,r))}}r.d(t,{J:()=>i,s:()=>n})},1910(e,t,r){"use strict";r.d(t,{i:()=>s});var n=r(944);const i=new Map;function s(...e){return e.every(e=>{if(i.has(e))return i.get(e);const t="function"==typeof e?e.toString():"",r=t.includes("[native code]"),s=t.includes("nrWrapper");return r||s||(0,n.R)(64,e?.name||t),i.set(e,r),r})}},3304(e,t,r){"use strict";r.d(t,{A:()=>i});var n=r(7836);function i(e){try{return JSON.stringify(e,(()=>{const e=new WeakSet;return(t,r)=>{if("object"==typeof r&&null!==r){if(e.has(r))return;e.add(r)}return r}})())??""}catch(e){try{n.ee.emit("internal-error",[e])}catch(e){}return""}}},9232(e,t,r){"use strict";r.d(t,["f",0,{MFE:"MFE",BA:"BA"}])},7560(e,t,r){"use strict";r.d(t,{N:()=>a,j:()=>c});var n=r(9119),i=r(944);const s=(0,r(6389).J)(e=>(0,i.R)(80,e));function a(e){if(!Array.isArray(e?.assets)||!e.assets.length)return;
5const t=e.assets.map(o).filter(Boolean);return t.length?{assets:t,scripts:t.filter(e=>e.isScript)}:void 0}function o(e){if(!e||"object"!=typeof e)return;const{matcher:t,type:r}=e;let i="string"==typeof t&&t.endsWith(".js");return void 0!==r&&(!function(e){return"script"===e||"asset"===e}(r)?s(r):i=function(e){return"script"===e}(r)),a=t,"[object RegExp]"===Object.prototype.toString.call(a)?{pattern:t,test:e=>(t.lastIndex=0,t.test((0,n.L)(e))),isScript:i}:"string"==typeof t&&t.length>0?{pattern:t,test:e=>(0,n.L)(e).includes(t),isScript:i}:void s(t);var a}function c(e,t,{scriptsOnly:r=!1}={}){if(!e||!t)return!1;return(r?e.scripts:e.assets).some(e=>e.test(t))}},5718(e,t,r){"use strict";r.d(t,{xo:()=>T,AZ:()=>v,cI:()=>g,Qr:()=>A,QL:()=>y});var n=r(6154),i=r(1863),s=r(9119),a=r(7866);class o{dom=new c;performance=new c;constructor(e){this.url=e,this.claimedBy=new Set}get script(){const e=Math.max(this.dom.start,this.performance.end);return{start:e,end:Math.max(this.dom.end,this.performance.end,e)}}}class c{start=0;end=0;value=void 0}function d(e=()=>{},t){return{get:()=>void 0!==t?t:e(),set:e=>{t=e}}}let u;try{u=v(y())[0]}catch(e){u=v(e)[0]}const l=new Map;let f=[];const h=new WeakMap;function p(e){let t=h.get(e);return t||(t={weighedAssetUrls:new Set,recordManifestScriptWindow:(t,r)=>{t&&(e.scriptStart=e.scriptStart>0?Math.min(e.scriptStart,t):t),r&&(e.scriptEnd=e.scriptEnd>0?Math.max(e.scriptEnd,r):r)}},h.set(e,t)),t}function g(e){return l.get(e)}function m(e){const t=g(e);
5if(t)return t;const r=new o(e);if(l.set(e,r),l.size>1e3){const e=l.keys().next().value;l.delete(e)}return r}if(n.gm.MutationObserver&&n.gm.document){new MutationObserver(e=>{e.forEach(e=>{e.addedNodes.forEach(e=>{if("SCRIPT"===e.nodeName&&e.src){const t=m((0,s.L)(e.src));t.dom.start=(0,i.t)(),t.dom.value=e;const r=()=>{t.dom.end=(0,i.t)()};["load","error"].forEach(t=>e.addEventListener(t,r,{once:!0}))}})})}).observe(n.gm.document,{childList:!0,subtree:!0})}if(n.gm.PerformanceObserver?.supportedEntryTypes.includes("resource")){new PerformanceObserver(e=>{e.getEntries().forEach(e=>{if((e=>"script"===e.initiatorType||["link","fetch"].includes(e.initiatorType)&&(0,s.L)(e.name).endsWith(".js"))(e)){const t=m((0,s.L)(e.name));t.performance.start=Math.floor(e.startTime),t.performance.end=Math.floor(e.responseEnd),t.performance.value=e}if(!f.length)return;const t=[];f.forEach(({test:r,addedAt:n},s)=>{(r(e)||(0,i.t)()-n>1e4)&&t.push(s)}),f=f.filter((e,r)=>!t.includes(r))})}).observe({type:"resource",buffered:!0})}function v(e){if(!e||"string"!=typeof e)return[];const t=new Set,r=e.split("\n");for(const e of r){const r=e.match(a.cn)||e.match(a.hB)||e.match(a.fL);if(r&&r[2])t.add((0,s.L)(r[2]));else{const r=e.match(/\(([^)]+\.js):\d+:\d+\)/)||e.match(/^\s+at\s+([^\s(]+\.js):\d+:\d+/);r&&r[1]&&t.add((0,s.L)(r[1]))}}return[...t]}function y(){let e;try{const t=Error.stackTraceLimit;Error.stackTraceLimit=50,e=(new Error).stack,Error.stackTraceLimit=t}catch(t){e=(new Error).stack}return e}function b(e,t){return(0,s.L)(e.name)===t}function E(e,t){e.fetchStart=Math.floor(t.startTime),e.fetchEnd=Math.floor(t.responseEnd),e.asset=t.name,e.type=t.initiatorType,w(e,t)}function w(e,t){const r=(0,s.L)(t.name),{weighedAssetUrls:n}=p(e);n.has(r)||(n.add(r),e.totalWeight=(e.totalWeight||0)+(t.transferSize||0),"blocking"===t.renderBlockingStatus?e.renderBlocking=!0:"non-blocking"===t.renderBlockingStatus&&!0!==e.renderBlocking&&(e.renderBlocking=!1))}function R(e,t,r,n,i){if(w(e,t),"scripts"!==i&&"all"!==i)return;if("all"===i||r.isScript){const r=Math.floor(t.startTime),n=Math.floor(t.responseEnd);e.fetchStart=e.fetchStart>0?Math.min(e.fetchStart,r):r,e.fetchEnd=e.fetchEnd>0?Math.max(e.fetchEnd,n):n}if(r.isScript){const r=g((0,s.L)(t.name));if(r){const t=()=>{const{start:t,end:n}=r.script;p(e).recordManifestScriptWindow(t,n)};t(),!r.dom.end&&r.dom.value&&["load","error"].forEach(e=>r.dom.value.addEventListener(e,t,{once:!0}))}n.resolved||(e.asset=t.name,e.type=t.initiatorType,n.resolved=!0)}}function T(e,t){const r=t?.manifest;if(!r||!r.assets.length)return;const s={resolved:!1},a=new Set(r.assets);(n.gm.performance?.getEntriesByType("resource")||[]).forEach(r=>{const n=[...a].find(e=>e.test(r.name));n&&(R(e,r,n,s,t.timingMethod),a.delete(n))}),a.size&&function(e,t,r,s){n.gm.PerformanceObserver?.supportedEntryTypes?.includes("resource")&&f.push({addedAt:(0,i.t)(),test:n=>{const i=[...t].find(e=>e.test(n.name));return i&&(R(e,n,i,r,s),t.delete(i)),0===t.size}})}(e,a,s,t.timingMethod)}function A(e){const t=e?.id,r={registeredAt:(0,i.t)(),reportedAt:void 0,fetchStart:0,fetchEnd:0,scriptStart:0,scriptEnd:0,asset:void 0,type:"unknown",totalWeight:0,renderBlocking:void 0},a=y();if(!a)return r;const o=n.gm.performance?.getEntriesByType("navigation")?.[0]?.name||"";try{const e=v(a),c=(e.length>1?e.filter(e=>u!==e):e)[0];if(!c)return r;if(o.includes(c))return r.asset=(0,s.L)(o),r.type="inline",r;r.correlation=g(c);const l=r.correlation?.performance.value||n.gm.performance?.getEntriesByType("resource")?.find(e=>b(e,c));if(l)E(r,l);else{(function(e){if(!e||!n.gm.document)return!1;try{const t=n.gm.document.querySelectorAll('link[rel="preload"][as="script"]');for(const r of t)if((0,s.L)(r.href)===e)return!0}catch(e){}return!1})(c)&&(r.asset=c,r.type="preload"),function(e,t){n.gm.PerformanceObserver?.supportedEntryTypes?.includes("resource")&&f.push({addedAt:(0,i.t)(),test:r=>!!b(r,t)&&(E(e,r),!0)})}(r,c)}const h=r.correlation,m=!!t&&!!h?.claimedBy.has(t);h&&t&&h.claimedBy.add(t);const y=()=>{const e=h?.script.start;if(!m||!e)return!1;return r.registeredAt-e>1e4};let w=0,R=0;p(r).recordManifestScriptWindow=(e,t)=>{e&&(w=w>0?Math.min(w,e):e),t&&(R=R>0?Math.max(R,t):t)},Object.defineProperty(r,"scriptStart",d(()=>{const e=y()?r.registeredAt:h?.script.start??r.fetchEnd;return w>0?Math.min(e,w):e})),Object.defineProperty(r,"scriptEnd",d(()=>{const e=y()?r.registeredAt:h?.script.end??r.registeredAt;return R>0?Math.max(e,R):e}))}catch(e){}return r}},5732(e,t,r){"use strict";r.d(t,{$5:()=>m,B5:()=>g,K6:()=>u,M$:()=>
5o,Ms:()=>d,NG:()=>c,Ux:()=>h,YA:()=>p,yx:()=>l});var n=r(5718),i=r(7560),s=r(9119),a=r(9232);function o(e){return e?.type===a.f.MFE}function c(e,t){if(!y(e,t))return;const r=t.runtime.registeredEntities;return r?.find(t=>t.metadata.target.iframeInterfaceId===e)}function d(e,t){if(!y(e,t))return[];const r=t.runtime.registeredEntities;return r?.filter(t=>String(t.metadata.target.id)===String(e)).map(e=>e.metadata.target)||[]}function u(e,t){if(!y(e,t))return[];const r=t.runtime.registeredEntities,n=(0,s.L)(e),a=r?.filter(t=>{const r=t.metadata.target?.manifest;return r?(0,i.j)(r,e,{scriptsOnly:!1}):!!t.metadata.timings?.asset&&(0,s.L)(t.metadata.timings.asset)===n});return f(a).map(e=>e.metadata.target)}function l(e,t){if(!y(e,t))return[];const r=t.runtime.registeredEntities,n=r?.filter(t=>{const r=t.metadata.target?.manifest;return r?(0,i.j)(r,e,{scriptsOnly:!0}):!!t.metadata.timings?.asset?.endsWith(e)});return f(n).map(e=>e.metadata.target)}function f(e){if(!e?.length)return e||[];const t=new Map,r=[];for(const n of e){const e=n.metadata?.timings?.asset;if(!e){r.push(n);continue}const i="".concat(e,"::").concat(n.metadata?.target?.id),s=t.get(i);if(s){if(s.metadata.target?.blocked&&!n.metadata.target?.blocked){const e=r.indexOf(s);-1!==e&&(r[e]=n),t.set(i,n)}}else t.set(i,n),r.push(n)}return r}function h(e,t){return v(t)?o(e)?e.attributes:t.agentRef.runtime.v2Target.attributes:{}}function p(e,t){return g(e,t)?{"child.id":e.id,"child.type":e.type,...h(void 0,t)}:{}}function g(e,t){return o(e)&&!!v(t)&&t.agentRef.init.api.register.duplicate_data_to_container}function m(e){if(!e?.runtime)return[];if(!y(!0,e)||!e.runtime.registeredEntities?.length)return[e.runtime.v2Target];const t=[];try{var r=(0,n.AZ)((0,n.QL)());let i=r.length-1;for(;r[i];)t.push(...l(r[i--],e))}catch(e){}const i=function(e){const t=new Set,r=[];for(const n of e){const e=n?.instance;t.has(e)||(t.add(e),r.push(n))}return r}(t);return i.length||i.push(e.runtime.v2Target),i}function v(e){return 2===e?.harvestEndpointVersion}function y(e,t){return!!e&&!!t?.init.api.register.enabled}},5289(e,t,r){"use strict";r.d(t,{GG:()=>a,Qr:()=>c,sB:()=>o});var n=r(3878),i=r(6389);function s(){return"undefined"==typeof document||"complete"===document.readyState}function a(e,t){if(s())return e();const r=(0,i.J)(e),a=setInterval(()=>{s()&&(clearInterval(a),r())},500);(0,n.sp)("load",r,t)}function o(e){if(s())return e();(0,n.DD)("DOMContentLoaded",e)}function c(e){if(s())return e();(0,n.sp)("popstate",e)}},384(e,t,r){"use strict";r.d(t,{Zm:()=>c,bQ:()=>u,dV:()=>d,pV:()=>l});var n=r(6154),i=r(1863),s=r(944),a=r(1910);const o={beacon:"bam.nr-data.net",errorBeacon:"bam.nr-data.net"};function c(){return n.gm.NREUM||(n.gm.NREUM={}),void 0===n.gm.newrelic&&(n.gm.newrelic=n.gm.NREUM),n.gm.NREUM}function d(){let e=c();return e.o||(e.o={ST:n.gm.setTimeout,SI:n.gm.setImmediate||n.gm.setInterval,CT:n.gm.clearTimeout,XHR:n.gm.XMLHttpRequest,REQ:n.gm.Request,EV:n.gm.Event,PR:n.gm.Promise,MO:n.gm.MutationObserver,FETCH:n.gm.fetch,WS:n.gm.WebSocket},(0,a.i)(...Object.values(e.o))),e}function u(e,t){let r=c();r.initializedAgents??={},t.initializedAt={ms:(0,i.t)(),date:new Date},r.initializedAgents[e]=t,2===Object.keys(r.initializedAgents).length&&(0,s.R)(69)}function l(){return function(){let e=c();const t=e.info||{};e.info={beacon:o.beacon,errorBeacon:o.errorBeacon,...t}}(),function(){let e=c();const t=e.init||{};e.init={...t}}(),d(),function(){let e=c();const t=e.loader_config||{};e.loader_config={...t}}(),c()}r.d(t,["NT",0,o])},2843(e,t,r){"use strict";r.d(t,{G:()=>s,u:()=>i});var n=r(3878);function i(e,t=!1,r,i){(0,n.DD)("visibilitychange",function(){if(t)return void("hidden"===document.visibilityState&&e());e(document.visibilityState)},r,i)}function s(e,t,r){(0,n.sp)("pagehide",e,t,r)}},8139(e,t,r){"use strict";r.d(t,{u:()=>f});var n=r(7836),i=r(3434),s=r(8990),a=r(6154);const o={},c=a.gm.XMLHttpRequest,d="addEventListener",u="removeEventListener",l="nr@wrapped:".concat(n.P);function f(e,t){var r=function(e){return(e||n.ee).get("events")}(e);if(o[r.debugId]++)return r;o[r.debugId]=1;var f=(0,i.YM)(r,!0,t);function p(e){f.inPlace(e,[d,u],"-",g)}function g(e,t){return e[1]}return"getPrototypeOf"in Object&&(a.RI&&h(document,p),c&&h(c.prototype,p),h(a.gm,p)),r.on(d+"-start",function(e,t){var r=e[1];if(null!==r&&("function"==typeof r||"object"==typeof r)&&"newrelic"!==e[0]){var n=(0,s.I)(r,l,function(){var e={object:function(){if("function"!=typeof r.handleEvent)return;return r.handleEvent.apply(r,arguments)},function:r}[typeof r];return e?f(e,"fn-",null,e.name||"anonymous"):r});this.wrapped=e[1]=n}}),r.on(u+"-start",function(e){e[1]=this.wrapped||e[1]}),r}function h(e,t,...r){let n=e;for(;"object"==typeof n&&!Object.prototype.hasOwnProperty.call(n,d);)n=Object.getPrototypeOf(n);n&&t(n,...r)}},3434(e,t,r){"use strict";r.d(t,{YM:()=>d});var n=r(7836),i=r(5607),s=r(5732);const a="nr@original:".concat(i.W);var o=Object.prototype.hasOwnProperty,c=!1;function d(e,t,r){return e||(e=n.ee),i.inPlace=function(e,t,r,n,s,a){r||(r="");const o="-"===r.charAt(0);for(let c=0;c<t.length;c++){const d=t[c],u=e[d];l(u)||(e[d]=i(u,o?d+r:r,n,d,s,a))}},i.flag=a,i;function i(t,n,i,c,f,h){return l(t)?t:(n||(n=""),nrWrapper[a]=t,function(e,t,r){if(Object.defineProperty&&Object.keys)try{return Object.keys(e).forEach(function(r){Object.defineProperty(t,r,{get:function(){return e[r]},set:function(t){return e[r]=t,t}})}),t}catch(e){u([e],r)}for(var n in e)o.call(e,n)&&(t[n]=e[n])}
5(t,nrWrapper,e),nrWrapper);function nrWrapper(){var a,o,l,p;let g,m;try{o=this,a=[...arguments],m=h?(0,s.$5)(r):[r?.runtime?.v2Target],l="function"==typeof i?i(a,o):i||{}}catch(t){u([t,"",[a,o,c],l],e)}d(n+"start",[a,o,c,m],l,f);const v=performance.now();let y;try{return p=t.apply(o,a),y=performance.now(),p}catch(e){throw y=performance.now(),d(n+"err",[a,o,e,m],l,f),g=e,g}finally{const e=y-v,t={start:v,end:y,duration:e,isLongTask:e>=50,methodName:c,thrownError:g};t.isLongTask&&d("long-task",[t,o,m],l,f),d(n+"end",[a,o,p,m],l,f)}}}function d(r,n,i,s){if(!c||t){var a=c;c=!0;try{e.emit(r,n,i,t,s)}catch(t){u([t,r,n,i],e)}c=a}}}function u(e,t){t||(t=n.ee);try{t.emit("internal-error",e)}catch(e){}}function l(e){return!(e&&"function"==typeof e&&e.apply&&!e[a])}r.d(t,["Jt",0,a])},9300(e,t,r){"use strict";const n=r(860).K7.ajax;r.d(t,["TZ",0,n,"f5",0,"ajaxRequest.id","mo",0,{NONE:"none",FAILURES:"failures",ALL:"all"}])},3333(e,t,r){"use strict";var n=r(981);const i=r(860).K7.genericEvents,s=[n.R.PA,n.R.UA,n.R.BP];r.d(t,["$v",0,{RESOURCES:"experimental.resources",REGISTER:"register"},"TZ",0,i,"Zp",0,["auxclick","click","copy","keydown","paste","scrollend"],"kd",0,s,"qN",0,["focus","blur"]])},6774(e,t,r){"use strict";const n=r(860).K7.jserrors;r.d(t,["T",0,n])},993(e,t,r){"use strict";const n=r(860).K7.logging;r.d(t,["A$",0,{OFF:0,ERROR:1,WARN:2,INFO:3,DEBUG:4,TRACE:5},"TZ",0,n,"p_",0,{ERROR:"ERROR",WARN:"WARN",INFO:"INFO",DEBUG:"DEBUG",TRACE:"TRACE"}])},3785(e,t,r){"use strict";r.d(t,{R:()=>c,b:()=>d});var n=r(9908),i=r(1863),s=r(860),a=r(3969),o=r(993);function c(e,t,r={},c=o.p_.INFO,d=!0,u,l=(0,i.t)()){(0,n.p)(a.xV,["API/logging/".concat(c.toLowerCase(),"/called")],void 0,s.K7.metrics,e),(0,n.p)("log",[l,t,r,c,d,u],void 0,s.K7.logging,e)}function d(e){return"string"==typeof e&&Object.values(o.p_).some(t=>t===e.toUpperCase().trim())}},3969(e,t,r){"use strict";const n=r(860).K7.metrics;r.d(t,["TZ",0,n,"XG",0,"storeEventMetrics","xV",0,"storeSupportabilityMetrics"])},6630(e,t,r){"use strict";const n=r(860).K7.pageViewEvent;r.d(t,["T",0,n])},782(e,t,r){"use strict";const n=r(860).K7.pageViewTiming;r.d(t,["T",0,n])},6344(e,t,r){"use strict";var n=r(2614);const i=r(860).K7.sessionReplay,s={[n.g.ERROR]:15e3,[n.g.FULL]:3e5,[n.g.OFF]:0}
5;r.d(t,["Qb",0,{API:"api",RESUME:"resume",SWITCH_TO_FULL:"switchToFull",INITIALIZE:"initialize",PRELOAD:"preload"},"TZ",0,i,"Vh",0,"errorDuringReplay","_s",0,{DomContentLoaded:0,Load:1,FullSnapshot:2,IncrementalSnapshot:3,Meta:4,Custom:5},"bc",0,{RESET:{message:"Session was reset",sm:"Reset"},IMPORT:{message:"Recorder failed to import",sm:"Import"},TOO_MANY:{message:"429: Too Many Requests",sm:"Too-Many"},TOO_BIG:{message:"Payload was too large",sm:"Too-Big"},CROSS_TAB:{message:"Session Entity was set to OFF on another tab",sm:"Cross-Tab"},ENTITLEMENTS:{message:"Session Replay is not allowed and will not be started",sm:"Entitlement"}},"yP",0,s])},5270(e,t,r){"use strict";r.d(t,{Aw:()=>a,SR:()=>s,rF:()=>o});var n=r(384),i=r(7767);function s(e){return!!(0,n.dV)().o.MO&&(0,i.V)(e)&&!0===e?.session_trace.enabled}function a(e){return!0===e?.session_replay.preload&&s(e)}function o(e,t){try{if("string"==typeof t?.type&&"password"===t.type.toLowerCase())return"*".repeat(e?.length||0);if(void 0!==t?.dataset?.nrUnmask||t?.classList?.contains("nr-unmask"))return e}catch(e){}return"string"==typeof e?e.replace(/[\S]/g,"*"):"*".repeat(e?.length||0)}},3738(e,t,r){"use strict";const n=r(860).K7.sessionTrace,i="-start",s="-end",a="fn"+i,o="fn"+s;r.d(t,["He",0,"bstResource","Kp",0,s,"Lc",0,o,"Rz",0,"pushState","TZ",0,n,"bD",0,"resource","bc",0,{CROSS_TAB:{message:"Session Entity was set to OFF on another tab"},ENTITLEMENTS:{message:"Session Trace is not allowed and will not be started"},RESET:{message:"Session was reset"},SESSION_CHANGED:{message:"Session identifier changed unexpectedly"}},"d3",0,i,"uP",0,a])},3962(e,t,r){"use strict";const n=r(860).K7.softNav;r.d(t,["O2",0,{INITIAL_PAGE_LOAD:"",ROUTE_CHANGE:1,UNSPECIFIED:2},"OV",0,"popstate","Qu",0,{INTERACTION:1,AJAX:2,CUSTOM_END:3,CUSTOM_TRACER:4},"TZ",0,n,"ih",0,{IP:"in progress",PF:"pending finish",FIN:"finished",CAN:"cancelled"},"pP",0,"initialPageLoad","tC",0,["click","keydown","submit"]])},4234(e,t,r){"use strict";r.d(t,{W:()=>i});var n=r(1687);class i{constructor(e,t){this.agentRef=e,this.ee=e?.ee,this.featureName=t,this.blocked=!1}deregisterDrain(){(0,n.x3)(this.agentRef,this.featureName)}}},7767(e,t,r){"use strict";var n=r(6154);r.d(t,["V",0,e=>n.RI&&!0===e?.privacy.cookies_enabled])},8362(e,t,r){"use strict";r.d(t,{d:()=>s});var n=r(9566),i=r(1741);class s extends i.W{agentIdentifier=(0,n.LA)(16)}},1741(e,t,r){"use strict";r.d(t,{W:()=>s});var n=r(944),i=r(4261);class s{#e(e,...t){if(this[e]!==s.prototype[e])return this[e](...t);(0,n.R)(35,e)}addPageAction(e,t){return this.#e(i.hG,e,t)}register(e){return this.#e(i.eY,e)}recordCustomEvent(e,t){return this.#e(i.fF,e,t)}setPageViewName(e,t){return this.#e(i.Fw,e,t)}setCustomAttribute(e,t,r){return this.#e(i.cD,e,t,r)}noticeError(e,t){return this.#e(i.o5,e,t)}setUserId(e,t=!1){return this.#e(i.Dl,e,t)}setApplicationVersion(e){return this.#e(i.nb,e)}setErrorHandler(e){return this.#e(i.bt,e)}addRelease(e,t){return this.#e(i.k6,e,t)}log(e,t){return this.#e("log",e,t)}start(){return this.#e("start")}finished(e){return this.#e(i.BL,e)}recordReplay(){return this.#e(i.CH)}pauseReplay(){return this.#e(i.Tb)}addToTrace(e){return this.#e(i.U2,e)}setCurrentRouteName(e){return this.#e(i.PA,e)}interaction(e){return this.#e(i.dT,e)}wrapLogger(e,t,r){return this.#e(i.Wb,e,t,r)}measure(e,t){return this.#e(i.V1,e,t)}consent(e){return this.#e(i.Pv,e)}}},4261(e,t,r){"use strict";r.d(t,["BL",0,"finished","CH",0,"recordReplay","Dl",0,"setUserId","Fw",0,"setPageViewName","PA",0,"setCurrentRouteName","Pv",0,"consent","Tb",0,"pauseReplay","U2",0,"addToTrace","V1",0,"measure","Wb",0,"wrapLogger","bt",0,"setErrorHandler","cD",0,"setCustomAttribute","dT",0,"interaction","eY",0,"register","fF",0,"recordCustomEvent","hG",0,"addPageAction","hw",0,"api-ixn-","k6",0,"addRelease","nb",0,"setApplicationVersion","o5",0,"noticeError"])},1738(e,t,r){"use strict";r.d(t,{U:()=>l,Y:()=>u});var n=r(3241),i=r(9908),s=r(1863),a=r(944),o=r(3969),c=r(8362),d=r(860);function u(e,t,r,s){const u=s||r;!u||u[e]&&u[e]!==c.d.prototype[e]||(u[e]=function(){(0,i.p)(o.xV,["API/"+e+"/called"],void 0,d.K7.metrics,r.ee),(0,n.W)({drained:!!r.runtime?.activatedFeatures,type:"data",name:"api",feature:"api-"+e,data:{}});try{return t.apply(this,arguments)}catch(e){(0,a.R)(23,e)}})}function l(e,t,r,n,a){const o=e.info;null===r?delete o.jsAttributes[t]:o.jsAttributes[t]=r,(a||null===r)&&(0,i.p)("api-"+n,[(0,s.t)(),t,r],void 0,"session",e.ee)}},8374(e,t,r){r.nc=(()=>{try{return document?.currentScript?.nonce}catch(e){}return""})()},860(e,t,r){"use strict";const n="events",i="jserrors",s="browser/blobs",a="browser/logs",o={ajax:"ajax",genericEvents:"generic_events",jserrors:i,logging:"logging",metrics:"metrics",pageAction:"page_action",pageViewEvent:"page_view_event",pageViewTiming:"page_view_timing",sessionReplay:"session_replay",sessionTrace:"session_trace",softNav:"soft_navigations"},c={[o.pageViewEvent]:1,[o.pageViewTiming]:2,[o.metrics]:3,[o.jserrors]:4,[o.softNav]:5,[o.ajax]:6,[o.sessionTrace]:7,[o.sessionReplay]:8,[o.logging]:9,[o.genericEvents]:10},d={[o.pageViewEvent]:"rum",[o.pageViewTiming]:n,[o.ajax]:n,[o.softNav]:n,[o.metrics]:i,[o.jserrors]:i,[o.sessionTrace]:s,[o.sessionReplay]:s,[o.logging]:a,[o.genericEvents]:"ins"};r.d(t,["$J",0,d,"K7",0,o,"P3",0,c,"XX",0,i,"Yy",0,a,"df",0,s,"hg",0,"connect"])}};const t={};function r(n){const i=t[n];if(void 0!==i)return i.exports;const s=t[n]={exports:{}};return e[n](s,s.exports,r),s.exports}r.m=e,r.d=(e,t)=>{if(Array.isArray(t))for(var n=0;n<t.length;){var i=t[n++],s=t[n++];r.o(e,i)?0===s&&n++:0===s?Object.defineProperty(e,i,{enumerable:!0,value:t[n++]}):Object.defineProperty(e,i,{enumerable:!0,get:s})}else for(var i in t)r.o(t,i)&&!r.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce((t,n)=>(r.f[n](e,t),t),[])),r.u=e=>({212:"nr-spa-compressor",238:"nr-spa-iframe-message-handler",249:"nr-spa-recorder",478:"nr-spa"}[e]+"-1.323.0.min.js"),r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{const e={},t="NRBA-1.323.0.PROD:";r.l=(n,i,s,a)=>
5{if(e[n])return void e[n].push(i);let o,c;if(void 0!==s){const e=document.getElementsByTagName("script");for(var d=0;d<e.length;d++){const r=e[d];if(r.getAttribute("src")==n||r.getAttribute("data-webpack")==t+s){o=r;break}}}if(!o){c=!0;var u={478:"sha512-ORjtmy+nQMgxbu0os8+oTRa5sPzbinyuWSvpZrrstVLIaHofRRlfODdH+oUmkIgeQpM+vPf3vG/4RzvCsFVh1A==",249:"sha512-o7+K6xC0z3TqynjVxpd+jgiSgqy8rrPeRcUSqt5J0Rqg5Su5CycLMYfpwiM3WBCHiNDrG5aZoXJQ6HRc335XYQ==",212:"sha512-kRvBt1IYQDBnClTEWNaE8sDFqbXXM3Vdyf972Uf4MFbJxl7u3KmdO+jdB1H4achPEoT9YtNXHswaESey6sCH0A==",238:"sha512-U5EGmyYbFVR2UMNAuZJ7fTgVVtPa5b8RPMySDwXo7z3frRdkUJ2x1VAQTLQCeBab8VlGVGRV8FiSHIn/pwN72A=="};o=document.createElement("script"),o.charset="utf-8",r.nc&&o.setAttribute("nonce",r.nc),o.setAttribute("data-webpack",t+s),o.src=n,0!==o.src.indexOf(window.location.origin+"/")&&(o.crossOrigin="anonymous"),u[a]&&(o.integrity=u[a])}e[n]=[i];const l=(t,r)=>{o.onerror=o.onload=null,clearTimeout(f);const i=e[n];if(delete e[n],o.parentNode?.removeChild(o),i?.forEach(e=>e(r)),t)return t(r)},f=setTimeout(l.bind(null,void 0,{type:"timeout",target:o}),12e4);o.onerror=l.bind(null,o.onerror),o.onload=l.bind(null,o.onload),c&&document.head.appendChild(o)}})(),r.r=e=>{Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.p="https://js-agent.newrelic.com/",(()=>{const e={38:0,788:0};r.f.j=(t,n)=>{let i=r.o(e,t)?e[t]:void 0;if(0!==i)if(i)n.push(i[2]);else{const s=new Promise((r,n)=>i=e[t]=[r,n]);n.push(i[2]=s);const a=r.p+r.u(t),o=new Error,c=n=>{if(r.o(e,t)&&(i=e[t],0!==i&&(e[t]=void 0),i)){const e=n&&("load"===n.type?"missing":n.type),r=n&&n.target&&n.target.src;o.message="Loading chunk "+t+" failed: ("+e+": "+r+")",o.name="ChunkLoadError",o.type=e,o.request=r,i[1](o)}};r.l(a,c,"chunk-"+t,t)}};const t=(t,n)=>{let[i,s,a]=n;var o,c,d=0;if(i.some(t=>0!==e[t])){for(o in s)r.o(s,o)&&(r.m[o]=s[o]);if(a)a(r)}for(t&&t(n);d<i.length;d++)c=i[d],r.o(e,c)&&e[c]&&e[c][0](),e[c]=0},n=self["webpackChunk:NRBA-1.323.0.PROD"]=self["webpackChunk:NRBA-1.323.0.PROD"]||[];n.forEach(t.bind(null,0)),n.push=t.bind(null,n.push.bind(n))})(),(()=>{"use strict";r(8374);var e=r(8362),t=r(860);const n=Object.values(t.K7);var i=r(384),s=r(1741);var a=r(2555),o=r(3333),c=r(9300);const d=e=>{if(!e||"string"!=typeof e)return!1;try{document.createDocumentFragment().querySelector(e)}catch{return!1}return!0};var u=r(2614),l=r(944),f=r(8122);const h="[data-nr-mask]",p=e=>(0,f.a)(e,(()=>{const e={feature_flags:[],experimental:{register:!1,resources:!1,iframe_bridge:!1,iframe_domains:[]},mask_selector:"*",block_selector:"[data-nr-block]",mask_input_options:{color:!1,date:!1,"datetime-local":!1,email:!1,month:!1,number:!1,range:!1,search:!1,tel:!1,text:!1,time:!1,url:!1,week:!1,textarea:!1,select:!1,password:!0}};return{ajax:{deny_list:void 0,block_internal:!0,enabled:!0,autoStart:!0,capture_payloads:c.mo.NONE},api:{register:{get enabled(){return e.feature_flags.includes(o.$v.REGISTER)||e.experimental.register},set enabled(t){e.experimental.register=t},duplicate_data_to_container:!1,get allow_iframe_bridge(){return e.feature_flags.includes(o.$v.IFRAME_BRIDGE)||e.experimental.iframe_bridge},set allow_iframe_bridge(t){e.experimental.iframe_bridge=t},get iframe_domains(){return e.experimental.iframe_domains},set iframe_domains(t){Array.isArray(t)?e.experimental.iframe_domains=t:(0,l.R)(1,t)}}},browser_consent_mode:{enabled:!1},distributed_tracing:{enabled:void 0,exclude_newrelic_header:void 0,cors_use_newrelic_header:void 0,cors_use_tracecontext_headers:void 0,allowed_origins:void 0},get feature_flags(){return e.feature_flags},set feature_flags(t){e.feature_flags=t},generic_events:{enabled:!0,autoStart:!0},harvest:{interval:30},jserrors:{enabled:!0,autoStart:!0},logging:{enabled:!0,autoStart:!0},metrics:{enabled:!0,autoStart:!0},obfuscate:void 0,page_action:{enabled:!0},page_view_event:{enabled:!0,autoStart:!0},page_view_timing:{enabled:!0,autoStart:!0},performance:{capture_marks:!1,capture_measures:!1,capture_detail:!0,resources:{get enabled(){return e.feature_flags.includes(o.$v.RESOURCES)||e.experimental.resources},set enabled(t){e.experimental.resources=t},asset_types:[],first_party_domains:[],ignore_newrelic:!0}},privacy:{cookies_enabled:!0},proxy:{assets:void 0,beacon:void 0},session:{expiresMs:u.wk,inactiveMs:u.BB},session_replay:{autoStart:!0,enabled:!1,preload:!1,sampling_rate:10,error_sampling_rate:100,collect_fonts:!1,inl
5ine_images:!1,fix_stylesheets:!0,mask_all_inputs:!0,get mask_text_selector(){return e.mask_selector},set mask_text_selector(t){d(t)?e.mask_selector="".concat(t,",").concat(h):""===t||null===t?e.mask_selector=h:(0,l.R)(5,t)},get block_class(){return"nr-block"},get ignore_class(){return"nr-ignore"},get mask_text_class(){return"nr-mask"},get block_selector(){return e.block_selector},set block_selector(t){d(t)?e.block_selector+=",".concat(t):""!==t&&(0,l.R)(6,t)},get mask_input_options(){return e.mask_input_options},set mask_input_options(t){t&&"object"==typeof t?e.mask_input_options={...t,password:!0}:(0,l.R)(7,t)}},session_trace:{enabled:!0,autoStart:!0},soft_navigations:{enabled:!0,autoStart:!0},ssl:void 0,user_actions:{enabled:!0,elementAttributes:["id","className","tagName","type"]},web_sockets:{enabled:!1}}})());var g=r(6154),m=r(9324);let v=0;const y={buildEnv:"PROD",distMethod:"CDN",version:m.x,originTime:g.WN},b={consented:!1},E={activatedFeatures:void 0,appMetadata:{},configured:!1,get consented(){return this.session?.state?.consent||b.consented},set consented(e){b.consented=e},customTransaction:void 0,denyList:[],disabled:!1,drainRegistry:new Map,connector:void 0,harvester:void 0,v2Target:void 0,isolatedBacklog:!1,isRecording:!1,loaderType:void 0,maxBytes:3e4,obfuscator:void 0,onerror:void 0,ptid:void 0,releaseIds:{},session:void 0,timeKeeper:void 0,registeredEntities:[],jsAttributesMetadata:{bytes:0},get harvestCount(){return++v},listeningForIframeMessages:!1};var w=r(9232);var R=r(7836),T=r(3241);const A={accountID:void 0,trustKey:void 0,agentID:void 0,licenseKey:void 0,applicationID:void 0,xpid:void 0};var S=r(9908),x=r(9752);function O(e,t={},n,o){let{init:c,info:d,loader_config:u,runtime:l={},exposed:h=!0}=t;if(!d){const e=(0,i.pV)();c=e.init,d=e.info,u=e.loader_config}var m;e.init=p(c||{}),e.loader_config=(m=u||{},(0,f.a)(m,A)),d.jsAttributes??={},g.bv&&(d.jsAttributes.isWorker=!0),e.info=(0,a.D)(d);const v=e.init;e.runtime??=(e=>{const t=(0,f.a)(e,E),r=Object.keys(y).reduce((e,t)=>(e[t]={value:y[t],writable:!1,configurable:!0,enumerable:!0},e),{});return Object.defineProperties(t,r)})(l),e.runtime.v2Target??={type:w.f.BA,instance:e.agentIdentifier,get id(){return e.runtime.appMetadata?.agents?.[0]?.entityGuid},get attributes(){return{"entity.guid":this.id,appId:e.info.applicationID}}},v.proxy.assets&&(e=>{const t=e.startsWith("http");e+="/",r.p=t?e:"https://"+e})(v.proxy.assets),e.runtime.configured||(Object.defineProperty(e,"beacons",{get:()=>[e.info.beacon,e.info.errorBeacon,e.init.proxy.assets,e.init.proxy.beacon].filter(Boolean)}),Object.defineProperty(e.runtime,"denyList",{get:()=>[...e.init.ajax.deny_list||[],...e.init.ajax.block_internal?e.beacons:[]]}),e.runtime.ptid=e.agentIdentifier,function(e){const t=(0,i.pV)();Object.getOwnPropertyNames(s.W.prototype).forEach(r=>{const n=s.W.prototype[r];if("function"!=typeof n||"constructor"===n)return;let i=t[r];e[r]&&!1!==e.exposed&&"micro-agent"!==e.runtime?.loaderType&&(t[r]=(...t)=>{const n=e[r](...t);return i?i(...t):n})})}(e),e.runtime.loaderType=n,e.ee=R.ee.get(e.agentIdentifier),e.exposed=h,(0,T.W)({drained:!!e.runtime.activatedFeatures,type:"lifecycle",name:"initialize",feature:void 0,data:e.config}),e.init.api.register.allow_iframe_bridge&&g.gm.addEventListener("message",t=>{"string"==typeof t.data?.type&&t.data.type.startsWith(x.Pl)&&(0,S.p)("iframe-message",[t],void 0,"IFRAME",e.ee)}),e.runtime.configured=!0)}var _=r(1863),k=r(4261),N=r(1738);var L=r(1687),M=r(4234),P=r(5289),I=r(5270),j=r(7767),C=r(6389),D=r(7699);const B=new WeakSet,H=new WeakMap;class W extends M.W{constructor(e,t){super(e,t),this.abortHandler=void 0,this.featAggregate=void 0,this.loadedSuccessfully=void 0,this.onAggregateImported=new Promise(e=>{this.loadedSuccessfully=e}),this.deferred=Promise.resolve(),!1===e.init[this.featureName].autoStart?this.deferred=new Promise((t,r)=>{this.ee.on("manual-start-all",(0,C.J)(()=>{(0,L.Ak)(e,this.featureName),t()}))}):(0,L.Ak)(e,t)}importAggregator(e,t,n={}){if(this.featAggregate)return;const i=async()=>{if(await this.deferred,this.#t(e),!(0,a.f)(e.info))return(0,l.R)(43),e.ee.abort(),void this.loadedSuccessfully(!1);try{await async function(e,t,n){if(H.has(e))return H.get(e);const i=(async()=>
5{if((0,j.V)(e.init))try{const{setupAgentSession:t}=await r.e(478).then(r.bind(r,8766));t(e)}catch(e){(0,l.R)(20,e),t.emit("internal-error",[e]),(0,S.p)(D.qh,[e],void 0,n,t)}if(e.init.api.register.allow_iframe_bridge)try{const{setupIframeMFEMessageListener:t}=await r.e(238).then(r.bind(r,6417));t(e)}catch(e){(0,l.R)(23,e)}const[{Connector:i},{Harvester:s}]=await Promise.all([r.e(478).then(r.bind(r,6589)),r.e(478).then(r.bind(r,5237))]);e.runtime.connector=new i(e),e.runtime.harvester=new s(e);const a=Object.values(e.features).filter(t=>e.runtime.drainRegistry.has(t.featureName));Promise.all(a.map(e=>e.onAggregateImported)).then(()=>e.runtime.harvester.startTimer())})();H.set(e,i),await i}(e,this.ee,this.featureName)}catch(e){return(0,l.R)(79,e),this.ee.abort(),void this.loadedSuccessfully(!1)}try{if(!this.#r(this.featureName,e.runtime.session,e.init))return this.abortHandler?.(),(0,L.Ze)(this.agentRef,this.featureName),void this.loadedSuccessfully(!1);const{Aggregate:r}=await t();this.featAggregate=new r(e,n),e.runtime.harvester.initializedAggregates.push(this.featAggregate),this.loadedSuccessfully(!0)}catch(e){(0,l.R)(34,e),this.abortHandler?.(),(0,L.Ze)(this.agentRef,this.featureName,!0),this.loadedSuccessfully(!1)}};g.RI?(0,P.GG)(()=>i(),!0):i()}#r(e,r,n){if(this.blocked)return!1;switch(e){case t.K7.sessionReplay:return(0,I.SR)(n)&&!!r;case t.K7.sessionTrace:return!!r;default:return!0}}#t(e){if(!B.has(e)&&(B.add(e),!(0,a.f)(e.info))){const t=(0,i.pV)();let r={...t.info?.jsAttributes};try{r={...r,...e.info?.jsAttributes}}catch(e){}O(e,{...t,info:{...t.info,jsAttributes:r},runtime:e.runtime},e.runtime.loaderType)}}}var U=r(6630);class K extends W{static featureName=U.T;constructor(e){var t;super(e,U.T),this.setupInspectionEvents(),t=e,(0,N.Y)(k.Fw,function(e,r){"string"==typeof e&&("/"!==e.charAt(0)&&(e="/"+e),t.runtime.customTransaction=(r||"http://custom.transaction")+e,(0,S.p)("api-"+k.Fw,[(0,_.t)()],void 0,void 0,t.ee))},t),this.importAggregator(e,()=>e.init.feature_flags.includes("rum_v2")?r.e(478).then(r.bind(r,908)):r.e(478).then(r.bind(r,7927)))}setupInspectionEvents(){const e=(e,t)=>{e&&(0,T.W)({timeStamp:e.timeStamp,loaded:"complete"===e.target.readyState,type:"window",name:t,data:e.target.location+""})};(0,P.sB)(t=>{e(t,"DOMContentLoaded")}),(0,P.GG)(t=>{e(t,"load")}),(0,P.Qr)(t=>{e(t,"navigate")}),this.ee.on(u.tS.UPDATE,(e,t)=>{(0,T.W)({type:"lifecycle",name:"session",data:t})})}}class F extends e.d{constructor(e){var t;(super(),g.gm)?(this.features={},(0,i.bQ)(this.agentIdentifier,this),this.desiredFeatures=new Set(e.features||[]),this.desiredFeatures.add(K),O(this,e,e.loaderType||"agent"),t=this,(0,N.Y)(k.cD,function(e,r,n=!1){if("string"==typeof e){if(["string","number","boolean"].includes(typeof r)||null===r)return(0,N.U)(t,e,r,k.cD,n);(0,l.R)(40,typeof r)}else(0,l.R)(39,typeof e)},t),function(e){(0,N.Y)(k.Dl,function(t,r=!1){if("string"!=typeof t&&null!==t)return void(0,l.R)(41,typeof t);const n=e.info.jsAttributes["enduser.id"];r&&null!=n&&n!==t?(0,S.p)("api-setUserIdAndResetSession",[t],void 0,"session",e.ee):(0,N.U)(e,"enduser.id",t,k.Dl,!0)},e)}(this),function(e){(0,N.Y)(k.nb,function(t){if("string"==typeof t||null===t)return(0,N.U)(e,"application.version",t,k.nb,!1);(0,l.R)(42,typeof t)},e)}(this),function(e){(0,N.Y)("start",function(){e.ee.emit("manual-start-all")},e)}(this),function(e){(0,N.Y)(k.Pv,function(t=!0){if("boolean"==typeof t){if((0,S.p)("api-"+k.Pv,[t],void 0,"session",e.ee),e.runtime.consented=t,t){const t=e.features.page_view_event;t.onAggregateImported.then(e=>{const r=t.featAggregate;e&&!r.sentRum&&r.sendRum?.()})}}else(0,l.R)(65,typeof t)},e)}(this),this.run()):(0,l.R)(21)}get config(){return{info:this.info,init:this.init,loader_config:this.loader_config,runtime:this.runtime}}get api(){return this}run(){try{const e=function(e){const t={};return n.forEach(r=>{t[r]=!!e[r]?.enabled}),t}(this.init),r=[...this.desiredFeatures],i=this.init.feature_flags.includes("rum_v2");r.sort((e,r)=>t.P3[e.featureName]-t.P3[r.featureName]),r.forEach(r=>{if(!e[r.featureName]&&(i||r.featureName!==t.K7.pageViewEvent))return;const n=function(e){switch(e){case t.K7.ajax:return[t.K7.jserrors];case t.K7.sessionTrace:return[t.K7.ajax,t.K7.pageViewEvent];case t.K7.sessionReplay:return[t.K7.sessionTrace];case t.K7.pageViewTiming:return[t.K7.pageViewEvent];default:return[]}}(r.featureName).filter(e=>!(e in this.features));n.length>0&&(0,l.R)(36,{targetFeature:r.featureName,missingDependencies:n}),this.features[r.featureName]=new r(this)})}catch(e){(0,l.R)(22,e);for(const e in this.features)this.features[e].abortHandler?.();const t=(0,i.Zm)();delete t.initializedAgents[this.agentIdentifier]?.features,delete this.sharedAggregator;return t.ee.get(this.agentIdentifier).abort(),!1}}}var V=r(2843),z=r(782);class G extends W{static featureName=z.T;constructor(e){super(e,z.T),g.RI&&((0,V.u)(()=>(0,S.p)("docHidden",[(0,_.t)()],void 0,z.T,this.ee),!0),(0,V.G)(()=>(0,S.p)("winPagehide",[(0,_.t)()],void 0,z.T,this.ee)),this.importAggregator(e,()=>r.e(478).then(r.bind(r,9917))))}}var q=r(3969);class Y extends W{static featureName=q.TZ;constructor(e){super(e,q.TZ),this.importAggregator(e,()=>r.e(478).then(r.bind(r,6555)))}}var Z=r(6774),J=r(3878),X=r(3304);class Q{constructor(e,t,r,n,i){this.name="UncaughtError",this.message="string"==typeof e?e:(0,X.A)(e),this.sourceURL=t,this.line=r,this.column=n,this.__newrelic=i}}function ee(e){return ne(e)?e:new Q(void 0!==e?.message?e.message:e,e?.filename||e?.sourceURL,e?.lineno||e?.line,e?.colno||e?.col,e?.__newrelic,e?.cause)}function te(e){const t="Unhandled Promise Rejection: ";if(!e?.reason)return;if(ne(e.reason)){try{e.reason.message.startsWith(t)||(e.reason.message=t+e.reason.message)}catch(e){}return ee(e.reason)}const r=ee(e.reason);return(r.message||"").startsWith(t)||(r.message=t+r.message),r}function re(e){if(e.error instanceof SyntaxError&&!/:\d+$/.test(e.error.stack?.trim())){const t=new Q(e.message,e.filename,e.lineno,e.colno,e.error.__newrelic,e.cause);return t.name=SyntaxError.name,t}return ne(e.error)?e.error:ee(e)}function ne(e){return e instanceof Error&&!!e.stack}function ie(e,r,n,i,s=(0,_.t)()){"string"==typeof e&&(e=new Error(e)),(0,S.p)("err",[e,s,!1,r,n.runtime.isRecording,void 0,i],void 0,t.K7.jserrors,n.ee),(0,S.p)("uaErr",[],void 0,t.K7.genericEvents,n.ee)}var se=r(993),ae=r(3785);function oe(e,{customAttributes:t={},level:r=se.p_.INFO}={},n,i,s=(0,_.t)()){(0,ae.R)(n.ee,e,t,r,!1,i,s)}function ce(e,r,n,i,s=(0,_.t)()){(0,S.p)("api-"+k.hG,[s,e,r,i],void 0,t.K7.genericEvents,n.ee)}function de(e,r,n,i,s=(0,_.t)()){const{start:a,end:o,customAttributes:c}=r||{},d={customAttributes:c||{}};if("object"!=typeof d.customAttributes||"string"!=typeof e||0===e.length)return void(0,l.R)(57);const u=(e,t)=>
5null==e?t:"number"==typeof e?e:e instanceof PerformanceMark?e.startTime:Number.NaN;if(d.start=u(a,0),d.end=u(o,s),Number.isNaN(d.start)||Number.isNaN(d.end))(0,l.R)(57);else{if(d.duration=d.end-d.start,!(d.duration<0))return(0,S.p)("api-"+k.V1,[d,e,i],void 0,t.K7.genericEvents,n.ee),d;(0,l.R)(58)}}function ue(e,r={},n,i,s=(0,_.t)()){(0,S.p)("api-"+k.fF,[s,e,r,i],void 0,t.K7.genericEvents,n.ee)}var le=r(5718);const fe=(e,t)=>e?.nrMfeId===t.id&&(!e?.nrMfeObserved||e?.nrMfeObserved===t.instance),he=e=>{try{return g.gm.CSS.escape(e)}catch(t){return e}},pe=(e,t={})=>{const r=t.id,n=t.instance;if(!e||!r||!n)return!1;try{let r=1===e.nodeType?e:e.parentElement;for(;r?.tagName;){if(fe(r.dataset,t))return r.dataset.nrMfeObserved=n,!0;r=r.parentNode}}catch(e){}return!1},ge=(e,t)=>{const r=g.gm.document?.querySelectorAll('[data-nr-mfe-id="'.concat(he(e.id),'"]')),n=(Array.from(r)||[]).find(t=>fe(t.dataset,e));let i=!!n;i&&(n.dataset.nrMfeObserved??=e.instance);const s=new g.gm.MutationObserver(r=>{r.forEach(r=>{r.addedNodes.forEach(r=>{const n=1===r.nodeType?r:null;!i&&fe(n?.dataset,e)&&(s.disconnect(),s.observe(n,{childList:!0,subtree:!0}),i=!0,n.dataset.nrMfeObserved=e.instance),(e=>{try{return e?.textContent?.trim()||["img","video","canvas","svg"].includes(e?.nodeName?.toLowerCase())}catch(e){return!1}})(r)&&(i||pe(r,e))&&t(r,s)})})});return s.observe(n||g.gm.document,{childList:!0,subtree:!0}),s},me=(e,t,r)=>{try{const n=new g.gm.PerformanceObserver(e=>{e.getEntries().forEach(r)});return n.observe(t),e.push(n),n}catch(e){return null}};function ve(e,t){let r,n,i=!1;const s=e=>null==e?e:e-(t?.scriptStart||t?.registeredAt||0),a={fcp:{get value(){const e=s(r);return e>1e4?void 0:e},set value(e){i||(r=e)}},lcp:{get value(){if(void 0!==a.fcp.value)return s(n)},set value(e){i||(n=e)}},cls:{value:void 0},inp:{value:void 0},disconnect:()=>{}};if(!(e&&g.RI&&g.gm.MutationObserver&&g.gm.PerformanceObserver))return a;const o=[];setTimeout(()=>{r||a.disconnect()},1e4);const c=()=>{if(!i){if(null==r){const e=(0,_.t)();if(s(e)>1e4)return void a.disconnect();r=e}n??=(0,_.t)(),a.cls.value??=0}},d=ge(e,(e,t)=>{c(),t.disconnect()});o.push(d);let u=0,l=null;const f=new Set;try{l=new g.gm.ResizeObserver(e=>{i||e.forEach(e=>{try{const t=e.contentRect.width*e.contentRect.height;t>u&&(u=t,a.lcp.value=(0,_.t)()),l.unobserve(e.target)}catch(e){}})})}catch(e){}const h=ge(e,e=>{if(c(),l)try{const t=1===e.nodeType?e:e.parentElement;t&&!f.has(t)&&(f.add(t),"IMG"===t.tagName?t.complete?l.observe(t):t.addEventListener("load",()=>{l.observe(t)},{once:!0}):"VIDEO"===t.tagName?t.readyState>=2?l.observe(t):t.addEventListener("loadeddata",()=>{l.observe(t)},{once:!0}):l.observe(t))}catch(e){}});l&&o.push(l),o.push(h),me(o,{type:"layout-shift",buffered:!0},t=>{i||t.hadRecentInput||(t.sources||[]).some(r=>!!pe(r.node,e)&&(c(),a.cls.value+=t.value,!0))}),me(o,{type:"event",buffered:!0,durationThreshold:40},t=>{!i&&t.interactionId&&pe(t.target,e)&&(void 0===a.inp.value||t.duration>a.inp.value)&&(c(),a.inp.value=t.duration)});const p=["pointerdown","keydown"],m=()=>{p.forEach(e=>{g.gm.removeEventListener(e,v,{passive:!0})})};a.disconnect=()=>{i=!0,o.forEach(e=>{try{e?.disconnect()}catch(e){}}),m(),["visibilitychange","pagehide"].forEach(e=>{g.gm.removeEventListener(e,a.disconnect,{once:!0,passive:!0})})};const v=t=>{pe(t?.target,e)&&((()=>{try{h?.disconnect(),l?.disconnect()}catch(e){}})(),m())};p.forEach(e=>{g.gm.addEventListener(e,v,{passive:!0})}),["visibilitychange","pagehide"].forEach(e=>{g.gm.addEventListener(e,a.disconnect,{once:!0,passive:!0})});const y=g.gm.document?.querySelectorAll('[data-nr-mfe-id="'.concat(he(e.id),'"]'));return Array.from(y||[]).some(t=>fe(t.dataset,e))&&c(),a}var ye=r(9566),be=r(7560),Ee=r(9119);const we=["entry","scripts","all"],Re=["name","id","type"],Te=new Map([[ce,"addPageAction"],[oe,"log"],[de,"measure"],[ie,"noticeError"],[ue,"recordCustomEvent"]]),Ae={experimental:(0,C.J)(()=>(0,l.R)(54,"newrelic.register")),disabled:(0,C.J)(()=>(0,l.R)(55)),invalidTarget:(0,C.J)(e=>(0,l.R)(48,e)),deregistered:(0,C.J)(()=>(0,l.R)(68)),invalidTimingMethod:(0,C.J)(e=>(0,l.R)(80,e)),duplicateName:(0,C.J)(e=>(0,l.R)(81,e)),duplicateId:(0,C.J)(e=>(0,l.R)(82,e))};function Se(e){(0,N.Y)(k.eY,function(t){return xe(e,t)},e)}function xe(e,r){Ae.experimental(),r||={},r.instance=(0,ye.LA)(8),r.type=w.f.MFE,r.licenseKey||=e.info.licenseKey,r.blocked=!1,("object"!=typeof r.tags||null===r.tags||Array.isArray(r.tags))&&(r.tags={}),r.parent??={get id(){return e.runtime.appMetadata.agents?.[0].entityGuid},type:w.f.BA},r.manifest=(0,be.N)(r.manifest),void 0===r.timingMethod||we.includes(r.timingMethod)||(Ae.invali
5dTimingMethod(r.timingMethod),r.timingMethod=void 0);const n=(0,le.Qr)(r);r.manifest&&(0,le.xo)(n,r);const i=ve(r,n),s=(0,Ee.L)(""+location),a={};Object.prototype.hasOwnProperty.call(r,"attributes")||Object.defineProperty(r,"attributes",{get:()=>({...a,"source.id":r.id,"source.name":r.name,"source.type":r.type,"parent.type":r.parent?.type||w.f.BA,"parent.id":r.parent?.id})}),Object.entries(r.tags).forEach(([e,t])=>{Re.includes(e)||(a["source.".concat(e)]=t)});let o=()=>{};const c=e.runtime.registeredEntities,d=e=>{r.blocked=!0,o=e};function u(e){return"string"==typeof e&&!!e.trim()&&e.trim().length<501}e.init.api.register.enabled||d(Ae.disabled),u(r.id)&&u(r.name)||d(()=>Ae.invalidTarget(r)),c.forEach(e=>{try{const{name:t,id:n}=e.metadata.target;t===r.name&&n!==r.id&&Ae.duplicateName(r),n===r.id&&t!==r.name&&Ae.duplicateId(r)}catch(e){}});const f={addPageAction:(t,n={})=>m(ce,[t,{...a,...n},e],r),deregister:()=>{p(),d(Ae.deregistered)},log:(t,n={})=>m(oe,[t,{...n,customAttributes:{...a,...n.customAttributes||{}}},e],r),measure:(t,n={})=>m(de,[t,{...n,customAttributes:{...a,...n.customAttributes||{}}},e],r),noticeError:(t,n={})=>m(ie,[t,{...a,...n},e],r),recordCustomEvent:(t,n={})=>m(ue,[t,{...a,...n},e],r),setApplicationVersion:e=>g("application.version",e),setCustomAttribute:(e,t)=>g(e,t),setUserId:e=>g("enduser.id",e),metadata:{get customAttributes(){return a},target:r,timings:n,vitals:i,events:{latestTimestamp:void 0}}},h=()=>(r.blocked&&o(),r.blocked);function p(){if(n.reportedAt)return;n.reportedAt=(0,_.t)(),i.disconnect(),n.fcp=i.fcp,n.lcp=i.lcp,n.cls=i.cls,n.inp=i.inp;const e=n.fetchEnd-n.fetchStart,t=n.scriptEnd-n.scriptStart,r={assetUrl:n.asset,assetType:n.type,registerUrl:s,deregisterUrl:(0,Ee.L)(""+location),pageUrl:void 0,currentUrl:void 0,timeAlive:n.reportedAt-n.registeredAt,timeToBeRequested:n.fetchStart,timeToExecute:t,timeToFetch:e,timeToLoad:e+t,t
5imeToRegister:n.registeredAt,totalWeight:n.totalWeight,...void 0!==n.renderBlocking&&{renderBlocking:n.renderBlocking},...i.fcp.value>=0&&{"vitals.fcp.value":i.fcp.value},...i.lcp.value>=0&&{"vitals.lcp.value":i.lcp.value},...i.cls.value>=0&&{"vitals.cls.value":i.cls.value},...i.inp.value>=0&&{"vitals.inp.value":i.inp.value}};f.recordCustomEvent("MicroFrontEndTiming",r)}h()||(c.push(f),(0,V.G)(p));const g=(e,t)=>{h()||(a[e]=t)},m=(r,n,i)=>{if(h()&&r!==xe)return;const s=f.metadata.events.latestTimestamp??(0,_.t)();f.metadata.events.latestTimestamp=void 0;const a=Te.get(r)||"unknown";(0,S.p)(q.xV,["API/register/".concat(a,"/called")],void 0,t.K7.metrics,e.ee);try{return r(...n,i,s)}catch(e){(0,l.R)(50,e)}};return f}class Oe extends W{static featureName=Z.T;constructor(e){var t;super(e,Z.T),t=e,(0,N.Y)(k.o5,(e,r)=>ie(e,r,t),t),function(e){(0,N.Y)(k.bt,function(t){e.runtime.onerror=t},e)}(e),function(e){let t=0;(0,N.Y)(k.k6,function(e,r){++t>10||(this.runtime.releaseIds[e.slice(-200)]=(""+r).slice(-200))},e)}(e),Se(e);try{this.removeOnAbort=new AbortController}catch(e){}this.ee.on("internal-error",(t,r)=>{this.abortHandler&&(0,S.p)("ierr",[ee(t),(0,_.t)(),!0,{},e.runtime.isRecording,r],void 0,this.featureName,this.ee)}),g.gm.addEventListener("unhandledrejection",t=>{this.abortHandler&&(0,S.p)("err",[te(t),(0,_.t)(),!1,{unhandledPromiseRejection:1},e.runtime.isRecording],void 0,this.featureName,this.ee)},(0,J.jT)(!1,this.removeOnAbort?.signal)),g.gm.addEventListener("error",t=>{this.abortHandler&&(0,S.p)("err",[re(t),(0,_.t)(),!1,{},e.runtime.isRecording],void 0,this.featureName,this.ee)},(0,J.jT)(!1,this.removeOnAbort?.signal)),this.abortHandler=this.#n,this.importAggregator(e,()=>r.e(478).then(r.bind(r,9377)))}#n(){this.removeOnAbort?.abort(),this.abortHandler=void 0}}var _e=r(8990);let ke=1;function Ne(e){const t=typeof e;return!e||"object"!==t&&"function"!==t?-1:e===g.gm?0:(0,_e.I)(e,"nr@id",function(){return ke++})}function Le(e){if("string"==typeof e)return e.length;if("object"==typeof e){if("undefined"!=typeof ArrayBuffer&&e instanceof ArrayBuffer&&e.byteLength)return e.byteLength;if("undefined"!=typeof Blob&&e instanceof Blob&&e.size)return e.size;if(!("undefined"!=typeof FormData&&e instanceof FormData))try{return(0,X.A)(e).length}catch(e){return}}}var Me=r(8139),Pe=r(3434),Ie=r(5732);const je={},Ce=["open","send","setRequestHeader"];function De(e,t){var r=e||R.ee;const n=function(e){return(e||R.ee).get("xhr")}(r);if(void 0===g.gm.XMLHttpRequest)return n;if(je[n.debugId]++)return n;je[n.debugId]=1,(0,Me.u)(r,t);var i=(0,Pe.YM)(n,void 0,t),s=g.gm.XMLHttpRequest,a=g.gm.MutationObserver,o=g.gm.Promise,c=g.gm.setInterval,d="readystatechange",u=["onload","onerror","onabort","onloadstart","onloadend","onprogress","ontimeout"],f=[],h=g.gm.XMLHttpRequest=function(e){const r=new s(e),a=n.context(r);a.targets=(0,Ie.$5)(t);try{n.emit("new-xhr",[r],a),r.addEventListener(d,(o=a,function(){var e=this;e.readyState>3&&!o.resolved&&(o.resolved=!0,n.emit("xhr-resolved",[],e)),i.inPlace(e,u,"fn-",E)}),(0,J.jT)(!1))}catch(e){(0,l.R)(15,e);try{n.emit("internal-error",[e])}catch(e){}}var o;return r};function p(e,t){i.inPlace(t,["onreadystatechange"],"fn-",E)}if(function(e,t){for(var r in e)t[r]=e[r]}(s,h),h.prototype=s.prototype,i.inPlace(h.prototype,Ce,"-xhr-",E),n.on("send-xhr-start",function(e,t){p(e,t),function(e){f.push(e),a&&(m?m.then(b):c?c(b):(v=-v,y.data=v))}(t)}),n.on("open-xhr-start",p),a){var m=o&&o.resolve();if(!c&&!o){var v=1,y=document.createTextNode(v);new a(b).observe(y,{characterData:!0})}}else r.on("fn-end",function(e){e[0]&&e[0].type===d||b()});function b(){for(var e=0;e<f.length;e++)p(0,f[e]);f.length&&(f=[])}function E(e,t){return t}return n}var Be="fetch-",He=Be+"body-",We=["arrayBuffer","blob","json","text","formData"],Ue=g.gm.Request,Ke=g.gm.Response,Fe="prototype";const Ve={};function ze(e,t){const r=function(e){return(e||R.ee).get("fetch")}(e);if(!(Ue&&Ke&&g.gm.fetch))return r;if(Ve[r.debugId]++)return r;function n(e,n,i){var s=e[n];"function"==typeof s&&(e[n]=function(){var e=[...arguments];const n={},a=(0,Ie.$5)(t);var o;r.emit(i+"before-start",[e],n),n[R.P]&&n[R.P].dt&&(o=n[R.P].dt);var c=s.apply(this,e);return r.emit(i+"start",[e,o],c),c.then(function(e){return r.emit(i+"end",[null,e,a],c),e},function(e){throw r.emit(i+"end",[e,void 0,a],c),e})})}
5return Ve[r.debugId]=1,We.forEach(e=>{n(Ue[Fe],e,He),n(Ke[Fe],e,He)}),n(g.gm,"fetch",Be),r.on(Be+"end",function(e,n,i){var s=this;if(s.targets=i||[t.runtime.v2Target],n){var a=n.headers.get("content-length");null!==a&&(s.rxSize=a),r.emit(Be+"done",[null,n],s)}else r.emit(Be+"done",[e],s)}),r}var Ge=r(7485);class qe{constructor(e){this.agentRef=e}generateTracePayload(e){const t=this.agentRef.loader_config;if(!this.shouldGenerateTrace(e)||!t)return null;var r=(t.accountID||"").toString()||null,n=(t.agentID||"").toString()||null,i=(t.trustKey||"").toString()||null;if(!r||!n)return null;var s,a=(0,ye.ZF)(),o=(0,ye.el)(),c=Date.now();this.agentRef.runtime?.timeKeeper?.ready&&(s=Math.floor(this.agentRef.runtime.timeKeeper.correctAbsoluteTimestamp(c)));var d={spanId:a,traceId:o,timestamp:c,timestampCorrected:s};return(e.sameOrigin||this.isAllowedOrigin(e)&&this.useTraceContextHeadersForCors())&&(d.traceContextParentHeader=this.generateTraceContextParentHeader(a,o),d.traceContextStateHeader=this.generateTraceContextStateHeader(a,s??c,r,n,i)),(e.sameOrigin&&!this.excludeNewrelicHeader()||!e.sameOrigin&&this.isAllowedOrigin(e)&&this.useNewrelicHeaderForCors())&&(d.newrelicHeader=this.generateTraceHeader(a,o,s??c,r,n,i)),d}generateTraceContextParentHeader(e,t){return"00-"+t+"-"+e+"-01"}generateTraceContextStateHeader(e,t,r,n,i){return i+"@nr=0-1-"+r+"-"+n+"-"+e+"----"+t}generateTraceHeader(e,t,r,n,i,s){if(!("function"==typeof g.gm?.btoa))return null;var a={v:[0,1],d:{ty:"Browser",ac:n,ap:i,id:e,tr:t,ti:r}};return s&&n!==s&&(a.d.tk=s),btoa((0,X.A)(a))}shouldGenerateTrace(e){return this.agentRef.init?.distributed_tracing?.enabled&&this.isAllowedOrigin(e)}isAllowedOrigin(e){var t=!1;const r=this.agentRef.init?.distributed_tracing;if(e.sameOrigin)t=!0;else if(r?.allowed_origins instanceof Array)for(var n=0;n<r.allowed_origins.length;n++){var i=(0,Ge.D)(r.allowed_origins[n]);if(e.hostname===i.hostname&&e.protocol===i.protocol&&e.port===i.port){t=!0;break}}return t}excludeNewrelicHeader(){var e=this.agentRef.init?.distributed_tracing;return!!e&&!!e.exclude_newrelic_header}useNewrelicHeaderForCors(){var e=this.agentRef.init?.distributed_tracing;return!!e&&!1!==e.cors_use_newrelic_header}useTraceContextHeadersForCors(){var e=this.agentRef.init?.distributed_tracing;return!!e&&!!e.cors_use_tracecontext_headers}}var Ye=r(7295);function Ze(e){return"string"==typeof e?e:e instanceof(0,i.dV)().o.REQ?e.url:g.gm?.URL&&e instanceof URL?e.href:void 0}function $e(e,t){var r=(0,Ge.D)(t),n=e.params||e;n.hostname=r.hostname,n.port=r.port,n.protocol=r.protocol,n.host=r.hostname+":"+r.port,n.pathname=r.pathname,e.parsedOrigin=r,e.sameOrigin=r.sameOrigin}var Je=["load","error","abort","timeout"],Xe=Je.length,Qe=(0,i.dV)().o.REQ,et=(0,i.dV)().o.XHR;const tt="X-NewRelic-App-Data",rt="internal-error";class nt extends W{static featureName=c.TZ;constructor(e){super(e,c.TZ),this.dt=new qe(e),this.handler=(e,t,r,n)=>(0,S.p)(e,t,r,n,this.ee);try{const e={xmlhttprequest:"xhr",fetch:"fetch",beacon:"beacon"};g.gm?.performance?.getEntriesByType("resource").forEach(r=>{if(r.initiatorType in e&&0!==r.responseStatus){const n={status:r.responseStatus},i={rxSize:r.transferSize,duration:Math.floor(r.duration),cbTime:0};$e(n,r.name),this.handler("xhr",[n,i,r.startTime,r.responseEnd,e[r.initiatorType]],void 0,t.K7.ajax)}})}catch(e){}ze(this.ee,e),De(this.ee,e),function(e,r,n,i){const s=[c.mo.ALL,c.mo.FAILURES].includes(e.init.ajax?.capture_payloads);function a(e){var t=this;t.totalCbs=0,t.called=0,t.cbTime=0,t.end=A,t.ended=!1,t.xhrGuids={},t.lastSize=null,t.loadCaptureCalled=!1,t.params=this.params||{},t.metrics=this.metrics||{},t.latestLongtaskEnd=0,e.addEventListener("load",function(r){O(t,e)},(0,J.jT)(!1)),g.lR||e.addEventListener("progress",function(e){t.lastSize=e.loaded},(0,J.jT)(!1))}function o(e){this.params={method:e[0]},$e(this,e[1]),this.metrics={}}function d(t,r){e.loader_config.xpid&&this.sameOrigin&&r.setRequestHeader("X-NewRelic-ID",e.loader_config.xpid);var n=i.generateTracePayload(this.parsedOrigin);if(n){var s=!1;n.newrelicHeader&&(r.setRequestHeader("newrelic",n.newrelicHeader),s=!0),n.traceContextParentHeader&&(r.setRequestHeader("traceparent",n.traceContextParentHeader),n.traceContextStateHeader&&r.setRequestHeader("tracestate",n.traceContextStateHeader),s=!0),s&&(this.dt=n)}}function u(e,t){s&&e.length>=2&&(this.requestHeaders??={},this.requestHeaders[e[0].toLowerCase()]=e[1])}function l(e,t){var n=this.metrics,i=e[0],s=this;if(n&&i){var a=Le(i);a&&(n.txSize=a)}this.startTime=(0,_.t)(),this.requestBody=i,this.listener=function(e){try{"abort"!==e.type||s.loadCaptureCalled||(s.params.aborted=!0),("load"
5!==e.type||s.called===s.totalCbs&&(s.onloadCalled||"function"!=typeof t.onload)&&"function"==typeof s.end)&&s.end(t)}catch(e){try{r.emit(rt,[e])}catch(e){}}};for(var o=0;o<Xe;o++)t.addEventListener(Je[o],this.listener,(0,J.jT)(!1))}function f(e,t,r){this.cbTime+=e,t?this.onloadCalled=!0:this.called+=1,this.called!==this.totalCbs||!this.onloadCalled&&"function"==typeof r.onload||"function"!=typeof this.end||this.end(r)}function h(e,t){var r=""+Ne(e)+!!t;this.xhrGuids&&!this.xhrGuids[r]&&(this.xhrGuids[r]=!0,this.totalCbs+=1)}function p(e,t){var r=""+Ne(e)+!!t;this.xhrGuids&&this.xhrGuids[r]&&(delete this.xhrGuids[r],this.totalCbs-=1)}function m(){this.endTime=(0,_.t)()}function v(e,t){t instanceof et&&"load"===e[0]&&r.emit("xhr-load-added",[e[1],e[2]],t)}function y(e,t){t instanceof et&&"load"===e[0]&&r.emit("xhr-load-removed",[e[1],e[2]],t)}function b(e,t,r){t instanceof et&&("onload"===r&&(this.onload=!0),("load"===(e[0]&&e[0].type)||this.onload)&&(this.xhrCbStart=(0,_.t)()))}function E(e,t){this.xhrCbStart&&r.emit("xhr-cb-time",[(0,_.t)()-this.xhrCbStart,this.onload,t],t)}function w(e){var t,r=e[1]||{};if("string"==typeof e[0]?0===(t=e[0]).length&&g.RI&&(t=""+g.gm.location.href):e[0]&&e[0].url?t=e[0].url:g.gm?.URL&&e[0]&&e[0]instanceof URL?t=e[0].href:"function"==typeof e[0].toString&&(t=e[0].toString()),"string"==typeof t&&0!==t.length){t&&(this.parsedOrigin=(0,Ge.D)(t),this.sameOrigin=this.parsedOrigin.sameOrigin);var n=i.generateTracePayload(this.parsedOrigin);if(n&&(n.newrelicHeader||n.traceContextParentHeader))if(e[0]&&e[0].headers)o(e[0].headers,n)&&(this.dt=n);else{var s={};for(var a in r)s[a]=r[a];s.headers=new Headers(r.headers||{}),o(s.headers,n)&&(this.dt=n),e.length>1?e[1]=s:e.push(s)}}function o(e,t){var r=!1;return t.newrelicHeader&&(e.set("newrelic",t.newrelicHeader),r=!0),t.traceContextParentHeader&&(e.set("traceparent",t.traceContextParentHeader),t.traceContextStateHeader&&e.set("tracestate",t.traceContextStateHeader),r=!0),r}}function R(e,t){this.params={},this.metrics={},this.startTime=(0,_.t)(),this.dt=t;let[r,n={}]=e;$e(this,Ze(r));const i=(""+(r&&r instanceof Qe&&r.method||n.method||"GET")).toUpperCase();this.params.method=i,this.txSize=Le(n.body||r?.body)||0;try{var a=n.headers||r?.headers;if(s&&a)if(this.requestHeaders??={},a instanceof Headers)a.forEach(function(e,t){this.requestHeaders[t.toLowerCase()]=e}.bind(this));else if("object"==typeof a)for(var o in a)this.requestHeaders[o.toLowerCase()]=a[o]}catch(e){}this.requestBody=n.body||r?.body}function T(e,t){if(this.endTime=(0,_.t)(),this.params||(this.params={}),(0,Ye.iW)(this.params))return;this.params.status=t?t.status:0;const n=()=>{const e=+this.rxSize,t=null==this.rxSize||isNaN(e)?void 0:e,r={txSize:this.txSize,rxSize:t,duration:this.endTime-this.startTime},n=[this.params,r,this.startTime,this.endTime,"fetch"];this.targets.forEach(e=>x(n,this,e))};t&&s?t.clone().text().then(e=>{this.responseBody=e,this.rxSize&&"0"!==this.rxSize&&0!==this.rxSize||void 0===e||0===this.params.status||(this.rxSize=Le(e)),t?.headers&&(this.responseHeaders={},t.headers.forEach(function(e,t){this.responseHeaders[t.toLowerCase()]=e}.bind(this)))}).catch(e=>{r.emit(rt,[e])}).finally(()=>{n()}):n()}function A(e){const t=this.params,n=this.metrics;if(this.ended)return;this.ended=!0;for(let t=0;t<Xe;t++)e.removeEventListener(Je[t],this.listener,!1);if(t.aborted)return;if((0,Ye.iW)(t))return;if(n.duration=this.endTime-this.startTime,this.loadCaptureCalled||4!==e.readyState?null==t.status&&(t.status=0):O(this,e),n.cbTime=this.cbTime,s){try{this.responseBody=e.responseText}catch(t){this.responseBody=e.response}if((!n.rxSize||0===n.rxSize)&&void 0!==this.responseBody&&0!==t.status){const e=Le(this.responseBody);void 0!==e&&(n.rxSize=e)}try{this.responseHeaders=function(e){const t={};return e?(e.split("\r\n").forEach(function(e){const r=e.indexOf(": ");if(r>0){const n=e.substring(0,r),i=e.substring(r+2);t[n.toLowerCase()]=i}}),t):t}(e.getAllResponseHeaders())}catch(e){r.emit(rt,[e])}}const i=[t,n,this.startTime,this.endTime,"xhr"];this.targets.forEach(e=>x(i,this,e))}function x(e,r,i){n("xhr",[...e,i],r,t.K7.ajax)}function O(e,n){e.params.status=n.status;var i=function(e,t){var r=e.responseType;return"json"===r&&null!==t?t:"arraybuffer"===r||"blob"===r||"json"===r?Le(e.response):"text"===r||""===r||void 0===r?Le(e.responseText):void 0}(n,e.lastSize);if(void 0!==i&&0!==n.status&&(e.metrics.rxSize=i),e.sameOrigin&&n.getAllResponseHeaders().indexOf(tt)>=0){var s=n.getResponseHeader(tt);s&&((0,S.p)("sm",["Ajax/CrossApplicationTracing/Header/Seen"],void 0,t.K7.metrics,r),e.params.cat=s.split(", ").pop())}e.loadCaptureCalled=!0}r.on("new-xhr",a),r.on("open-xhr-start",o),r.on("open-xhr-end",d),r.on("send-xhr-start",l),r.on("setRequestHeader-xhr-start",u),r.on("xhr-cb-time",f),r.on("xhr-load-added",h),r.on("xhr-load-removed",p),r.on("xhr-resolved",m),r.on("addEventListener-end",v),r.on("removeEventListener-end",y),r.on("fn-end",E),r.on("fetch-before-start",w),r.on("fetch-start",R),r.on("fn-start",b),r.on("fetch-done",T)}(e,this.ee,this.handler,this.dt),this.importAggregator(e,()=>r.e(478).then(r.bind(r,3845)))}}const it={},st=["pushState","replaceState"];function at(e,t){const r=function(e){return(e||R.ee).get("history")}(e);return!g.RI||it[r.debugId]++||(it[r.debugId]=1,(0,Pe.YM)(r,void 0,t).inPlace(window.history,st,"-")),r}var ot=r(3738);function ct(e){(0,N.Y)(k.BL,function(r=Date.now()){const n=r-g.WN;n<0&&(0,l.R)(62,r),(0,S.p)(q.XG,[k.BL,{time:n}],void 0,t.K7.metrics,e.ee),e.addToTrace({name:k.BL,start:r,origin:"nr"}),(0,S.p)("api-"+k.hG,[n,k.BL],void 0,t.K7.genericEvents,e.ee)},e)}const{He:dt,bD:ut,d3:lt,Kp:ft,TZ:ht,Lc:pt,uP:gt,Rz:mt}=ot;class vt extends W{static featureName=ht;constructor(e){var n;super(e,ht),n=e,(0,N.Y)(k.U2,function(e){if(!(e&&"object"==typeof e&&e.name&&e.start))return;const r={n:e.name,s:e.start-g.WN,e:(e.end||e.start)-g.WN,o:e.origin||"",t:"api"};r.s<0||r.e<0||r.e<r.s?(0,l.R)(61,{start:r.s,end:r.e}):(0,S.p)("bstApi",[r],void 0,t.K7.sessionTrace,n.ee)},n),ct(e);
5if(!(0,j.V)(e.init))return void this.deregisterDrain();const i=this.ee;let s;at(i,e),this.eventsEE=(0,Me.u)(i,e),this.eventsEE.on(gt,function(e,t){this.bstStart=(0,_.t)()}),this.eventsEE.on(pt,function(e,r){(0,S.p)("bst",[e[0],r,this.bstStart,(0,_.t)()],void 0,t.K7.sessionTrace,i)}),i.on(mt+lt,function(e){this.time=(0,_.t)(),this.startPath=location.pathname+location.hash}),i.on(mt+ft,function(e){(0,S.p)("bstHist",[location.pathname+location.hash,this.startPath,this.time],void 0,t.K7.sessionTrace,i)});try{s=new PerformanceObserver(e=>{const r=e.getEntries();(0,S.p)(dt,[r],void 0,t.K7.sessionTrace,i)}),s.observe({type:ut,buffered:!0})}catch(e){}this.importAggregator(e,()=>r.e(478).then(r.bind(r,6974)),{resourceObserver:s})}}var yt=r(733),bt=r(6344);class Et extends W{static featureName=bt.TZ;#i;recorder;constructor(e){var n;let i;super(e,bt.TZ),n=e,(0,N.Y)(k.CH,function(){(0,S.p)(k.CH,[],void 0,t.K7.sessionReplay,n.ee)},n),function(e){(0,N.Y)(k.Tb,function(){(0,S.p)(k.Tb,[],void 0,t.K7.sessionReplay,e.ee)},e)}(e);const s="".concat(u.Wt).concat((0,yt.Y)(e.info.licenseKey,e.info.applicationID));try{i=JSON.parse(localStorage.getItem(s))}catch(e){}(0,I.SR)(e.init)&&this.ee.on(k.CH,()=>this.#s()),this.#a(i)&&this.importRecorder().then(e=>{e.startRecording(bt.Qb.PRELOAD,i?.sessionReplayMode)}),this.abortHandler=this.#n,this.importAggregator(this.agentRef,()=>r.e(478).then(r.bind(r,6167)),this),this.ee.on("err",e=>{this.blocked||this.agentRef.runtime.isRecording&&(this.errorNoticed=!0,(0,S.p)(bt.Vh,[e],void 0,this.featureName,this.ee))})}#a(e){return e&&(e.sessionReplayMode===u.g.FULL||e.sessionReplayMode===u.g.ERROR)||(0,I.Aw)(this.agentRef.init)}importRecorder(){return this.recorder?Promise.resolve(this.recorder):(this.#i??=Promise.all([r.e(478),r.e(249)]).then(r.bind(r,4866)).then(({Recorder:e})=>(this.recorder=new e(this),this.recorder)).catch(e=>{throw this.ee.emit("internal-error",[e]),this.blocked=!0,e}),this.#i)}#s(){this.blocked||(this.featAggregate?this.featAggregate.mode!==u.g.FULL&&this.featAggregate.initializeRecording(u.g.FULL,!0,bt.Qb.API):this.importRecorder().then(()=>{this.recorder.startRecording(bt.Qb.API,u.g.FULL)}))}#n(){this.recorder?.stopRecording()}}var wt=r(3962);class Rt extends W{static featureName=wt.TZ;constructor(e){if(super(e,wt.TZ),function(e){const r=e.ee.get("tracer");function n(){}(0,N.Y)(k.dT,function(e){return(new n).get("object"==typeof e?e:{})},e);const i=n.prototype={createTracer:function(n,i){var s={},a=this,o="function"==typeof i;return(0,S.p)(q.xV,["API/createTracer/called"],void 0,t.K7.metrics,e.ee),function(){if(r.emit((o?"":"no-")+"fn-start",[(0,_.t)(),a,o],s),o)try{return i.apply(this,arguments)}catch(e){const t="string"==typeof e?new Error(e):e;throw r.emit("fn-err",[arguments,this,t],s),t}finally{r.emit("fn-end",[(0,_.t)()],s)}}}};["actionText","setName","setAttribute","save","ignore","onEnd","getContext","end","get"].forEach(r=>{N.Y.apply(this,[r,function(){return(0,S.p)(k.hw+r,[performance.now(),...arguments],this,t.K7.softNav,e.ee),this},e,i])}),(0,N.Y)(k.PA,function(){(0,S.p)(k.hw+"routeName",[performance.now(),...arguments],void 0,t.K7.softNav,e.ee)},e)}(e),!g.RI||!(0,i.dV)().o.MO)return;const n=at(this.ee,e);try{this.removeOnAbort=new AbortController}catch(e){}wt.tC.forEach(e=>{(0,J.sp)(e,e=>{c(e)},!0,this.removeOnAbort?.signal)}
5);const s=()=>(0,S.p)("newURL",[(0,_.t)(),""+window.location],void 0,this.featureName,this.ee);n.on("pushState-end",s),n.on("replaceState-end",s),(0,J.sp)(wt.OV,e=>{c(e),(0,S.p)("newURL",[e.timeStamp,""+window.location],void 0,this.featureName,this.ee)},!0,this.removeOnAbort?.signal);let a=!1;const o=new((0,i.dV)().o.MO)((e,t)=>{a||(a=!0,requestAnimationFrame(()=>{(0,S.p)("newDom",[(0,_.t)()],void 0,this.featureName,this.ee),a=!1}))}),c=(0,C.s)(e=>{"loading"!==document.readyState&&((0,S.p)("newUIEvent",[e],void 0,this.featureName,this.ee),o.observe(document.body,{attributes:!0,childList:!0,subtree:!0,characterData:!0}))},100,{leading:!0});this.abortHandler=function(){this.removeOnAbort?.abort(),o.disconnect(),this.abortHandler=void 0},this.importAggregator(e,()=>r.e(478).then(r.bind(r,4393)),{domObserver:o})}}var Tt=r(981);const At={},St=new Set;function xt(e){return"string"==typeof e?{type:"string",size:(new TextEncoder).encode(e).length}:e instanceof ArrayBuffer?{type:"ArrayBuffer",size:e.byteLength}:e instanceof Blob?{type:"Blob",size:e.size}:e instanceof DataView?{type:"DataView",size:e.byteLength}:ArrayBuffer.isView(e)?{type:"TypedArray",size:e.byteLength}:{type:"unknown",size:0}}class Ot{constructor(e,t){this.timestamp=(0,_.t)(),this.currentUrl=(0,Ee.L)(window.location.href),this.socketId=(0,ye.LA)(8),this.requestedUrl=(0,Ee.L)(e),this.requestedProtocols=Array.isArray(t)?t.join(","):t||"",this.openedAt=void 0,this.protocol=void 0,this.extensions=void 0,this.binaryType=void 0,this.messageOrigin=void 0,this.messageCount=0,this.messageBytes=0,this.messageBytesMin=0,this.messageBytesMax=0,this.messageTypes=void 0,this.sendCount=0,this.sendBytes=0,this.sendBytesMin=0,this.sendBytesMax=0,this.sendTypes=void 0,this.closedAt=void 0,this.closeCode=void 0,this.closeReason="unknown",this.closeWasClean=void 0,this.connectedDuration=0,this.hasErrors=void 0}}class _t extends W{static featureName=o.TZ;constructor(e){super(e,o.TZ);const n=e.init.feature_flags.includes("websockets")||e.init.web_sockets?.enabled,s=!e.init.feature_flags.includes("no_spv"),a=[e.init.page_action.enabled,e.init.performance.capture_marks,e.init.performance.capture_measures,e.init.performance.resources.enabled,e.init.user_actions.enabled,n,s];var c;let d;if(c=e,(0,N.Y)(k.hG,(e,t)=>ce(e,t,c),c),function(e){(0,N.Y)(k.fF,(t,r)=>ue(t,r,e),e)}(e),ct(e),Se(e),function(e){(0,N.Y)(k.V1,(t,r)=>de(t,r,e),e)}(e),this.removeOnAbort=new AbortController,this.abortHandler=()=>{this.removeOnAbort.abort(),this.abortHandler=void 0},n){const u=function(e,t){if(!(0,i.dV)().o.WS)return e;const r=e.get("websockets");if(At[r.debugId]++)return r;At[r.debugId]=1,(0,V.G)(()=>{const e=(0,_.t)();St.forEach(t=>{t.nrData.closedAt=e,t.nrData.closeCode=1001,t.nrData.closeReason="Page navigating away",t.nrData.closeWasClean=!1,t.nrData.openedAt&&(t.nrData.connectedDuration=e-t.nrData.openedAt),r.emit("ws",[t.nrData,t.targets],t)})});
5class n extends WebSocket{static name=Tt.R.WS;static toString(){return"function WebSocket() { [native code] }"}toString(){return"[object WebSocket]"}get[Symbol.toStringTag](){return n.name}#o(e){(e.__newrelic??={}).socketId=this.nrData.socketId,this.nrData.hasErrors??=!0}constructor(...e){super(...e),this.nrData=new Ot(e[0],e[1]),this.targets=(0,Ie.$5)(t),this.addEventListener("open",()=>{this.nrData.openedAt=(0,_.t)(),["protocol","extensions","binaryType"].forEach(e=>{this.nrData[e]=this[e]}),St.add(this)}),this.addEventListener("message",e=>{const{type:t,size:r}=xt(e.data);this.nrData.messageOrigin??=(0,Ee.L)(e.origin),this.nrData.messageCount++,this.nrData.messageBytes+=r,this.nrData.messageBytesMin=Math.min(this.nrData.messageBytesMin||1/0,r),this.nrData.messageBytesMax=Math.max(this.nrData.messageBytesMax,r),(this.nrData.messageTypes??"").includes(t)||(this.nrData.messageTypes=this.nrData.messageTypes?"".concat(this.nrData.messageTypes,",").concat(t):t)}),this.addEventListener("close",e=>{this.nrData.closedAt=(0,_.t)(),this.nrData.closeCode=e.code,e.reason&&(this.nrData.closeReason=e.reason),this.nrData.closeWasClean=e.wasClean,this.nrData.connectedDuration=this.nrData.closedAt-this.nrData.openedAt,St.delete(this),r.emit("ws",[this.nrData,this.targets],this)})}addEventListener(e,t,...r){const n=this,i="function"==typeof t?function(...e){try{return t.apply(this,e)}catch(e){throw n.#o(e),e}}:t?.handleEvent?{handleEvent:function(...e){try{return t.handleEvent.apply(t,e)}catch(e){throw n.#o(e),e}}}:t;return super.addEventListener(e,i,...r)}send(e){if(this.readyState===WebSocket.OPEN){const{type:t,size:r}=xt(e);this.nrData.sendCount++,this.nrData.sendBytes+=r,this.nrData.sendBytesMin=Math.min(this.nrData.sendBytesMin||1/0,r),this.nrData.sendBytesMax=Math.max(this.nrData.sendBytesMax,r),(this.nrData.sendTypes??"").includes(t)||(this.nrData.sendTypes=this.nrData.sendTypes?"".concat(this.nrData.sendTypes,",").concat(t):t)}try{return super.send(e)}catch(e){throw this.#o(e),e}}close(...e){try{super.close(...e)}catch(e){throw this.#o(e),e}}}return g.gm.WebSocket=n,r}(this.ee,e);u.on("ws",(e,t)=>{(0,S.p)("ws-complete",[e,t],void 0,this.featureName,this.ee)})}if(s){if("function"==typeof g.gm.ReportingObserver){const l=new g.gm.ReportingObserver(e=>{e.forEach(e=>{(0,S.p)("spv",[kt(e),(0,_.t)()],void 0,t.K7.genericEvents,this.ee)}),l.disconnect()},{types:["csp-violation"],buffered:!0});l.observe()}g.gm.addEventListener("securitypolicyviolation",e=>{(0,S.p)("spv",[kt(e),e.timeStamp],void 0,t.K7.genericEvents,this.ee)},(0,J.jT)(!1,this.removeOnAbort.signal))}if(g.RI){if(ze(this.ee,e),De(this.ee,e),d=at(this.ee,e),e.init.user_actions.enabled){function f(t){const r=(0,Ge.D)(t);return e.beacons.includes(r.hostname+":"+r.port)}function h(){d.emit("navChange")}o.Zp.forEach(e=>(0,J.sp)(e,e=>(0,S.p)("ua",[e],void 0,this.featureName,this.ee),!0)),o.qN.forEac
5h(e=>{const t=(0,C.s)(e=>{(0,S.p)("ua",[e],void 0,this.featureName,this.ee)},500,{leading:!0});(0,J.sp)(e,t)}),g.gm.addEventListener("error",()=>{(0,S.p)("uaErr",[],void 0,t.K7.genericEvents,this.ee)},(0,J.jT)(!1,this.removeOnAbort.signal)),this.ee.on("open-xhr-start",(e,r)=>{f(e[1])||r.addEventListener("readystatechange",()=>{2===r.readyState&&(0,S.p)("uaXhr",[],void 0,t.K7.genericEvents,this.ee)},(0,J.jT)(void 0,this.removeOnAbort.signal))}),this.ee.on("fetch-start",e=>{e.length>=1&&!f(Ze(e[0]))&&(0,S.p)("uaXhr",[],void 0,t.K7.genericEvents,this.ee)}),d.on("pushState-end",h),d.on("replaceState-end",h),window.addEventListener("hashchange",h,(0,J.jT)(!0,this.removeOnAbort.signal)),window.addEventListener("popstate",h,(0,J.jT)(!0,this.removeOnAbort.signal))}if(e.init.performance.resources.enabled&&g.gm.PerformanceObserver?.supportedEntryTypes.includes("resource")){new PerformanceObserver(e=>{e.getEntries().forEach(e=>{(0,S.p)("browserPerformance.resource",[e],void 0,this.featureName,this.ee)})}).observe({type:"resource",buffered:!0})}}a.some(e=>e)?this.importAggregator(e,()=>r.e(478).then(r.bind(r,8019))):this.deregisterDrain()}}function kt(e){const t=e.body??e;return{blockedUrl:t.blockedURL??e.blockedURI,documentUrl:t.documentURL??e.documentURI,effectiveDirective:t.effectiveDirective,originalPolicy:t.originalPolicy,sourceFile:t.sourceFile,statusCode:t.statusCode,lineNumber:t.lineNumber,columnNumber:t.columnNumber,disposition:"reporting"===t.disposition?"report":t.disposition,sample:t.sample,referrer:t.referrer}}var Nt=r(2646);const Lt=new Map;function Mt(e,t,r,n,i=!0,s){if("object"!=typeof t||!t||"string"!=typeof r||!r||"function"!=typeof t[r])return(0,l.R)(29);const a=function(e){return(e||R.ee).get("logger")}(e),o=(0,Pe.YM)(a,void 0,s),c=new Nt.y(R.P);c.level=n.level,c.customAttributes=n.customAttributes,c.autoCaptured=i;const d=t[r]?.[Pe.Jt]||t[r];return Lt.set(d,c),o.inPlace(t,[r],"wrap-logger-",()=>Lt.get(d),void 0,!0),a}var Pt=r(1910);class It extends W{static featureName=se.TZ;constructor(e){var t;super(e,se.TZ),t=e,(0,N.Y)("log",(e,r)=>oe(e,r,t),t),function(e){(0,N.Y)(k.Wb,(t,r,{customAttributes:n={},level:i=se.p_.INFO}={})=>{Mt(e.ee,t,r,{customAttributes:n,level:i},!1,e)},e)}(e),Se(e);const n=this.ee;["log","error","warn","info","debug","trace"].forEach(t=>{(0,Pt.i)(g.gm.console[t]),Mt(n,g.gm.console,t,{level:"log"===t?"info":t},void 0,e)}),this.ee.on("wrap-logger-end",function([t],r,i,s=[e.runtime.v2Target]){const{level:a,customAttributes:o,autoCaptured:c}=this;s.forEach(e=>{(0,ae.R)(n,t,o,a,c,e)})}),this.importAggregator(e,()=>r.e(478).then(r.bind(r,5288)))}}new F({features:[nt,K,G,vt,Et,Y,Oe,_t,It,Rt],loaderType:"spa"})})()})();</script>
5
6  <meta name="viewport" content="width=device-width, initial-scale=1"/>
7  <title>refusonline.com | reserves online a refugis vall d'aran i pirineus , la central de refugis reserves refugis de muntanya</title>
8  <meta name="title" content="Reserves online refugis muntanya pirineus spain"/>
9  <meta name="description" content="Els refugis de La Central de Refugis estan situats al Pirineu, al Parc Nacional d'Aigüestortes i Estany de Sant Maurici. Activitats d'alta muntanya: excursions i ascensions a cims, travesses entre refugis (GR11, Carros de Foc), escalada, esquí de travessa, raquetes de neu .."/>
10  <meta name="keywords" content="refugis, Central de Refugis, situats al Pirineu, Parc Nacional d'Aigüestortes i Estany de Sant Maurici, activitats d'alta muntanya: excursions i ascensions a cims, travesses entre refugis (GR11, Carros de Foc), escalada, esquí de travessia, raquetes de neu, Amitges, Colomers, JMBlanc, Llong, Pla de la Font, Restanca, Saboredo, Ventosa"/>
11  <meta name="robots" content="index, follow"/>
12  <meta name="REVISIT-AFTER" content="2 DAYS"/>
13  <meta name="Url" content="http://www.refusonline.com">
14
15  <link rel="shortcut icon" href="/img/icons/favicon.ico"/>
16
17  <link href="/css/reset.css" rel="stylesheet" type="text/css"/>
18  <link href="/css/style-client.css" rel="stylesheet" type="text/css"/>
19
20  <link href="//netdna.bootstrapcdn.com/bootstrap/3.0.3/css/bootstrap.min.css" rel="stylesheet" id="bootstrap-css">
21  <link type="text/css" media="screen" rel="stylesheet" href="/js/jquery/colorbox/colorbox.css"/>
22  <link type="text/css" media="screen" rel="stylesheet" href="/js/datepicker4/jquery.datepick.css"/>
23
24  <link type="text/css" media="screen" rel="stylesheet" href="/css/mapa/client_mapa.css"/>
25  <link type="text/css" media="screen" rel="stylesheet" href="/js/jquery/alerts/jquery.alerts.css"/>
26
27  <style type="text/css">
28    #dialog_link {
29      padding: .4em 1em .4em 20px;
30      text-decoration: none;
31      position: relative;
32    }
33
34    #dialog_link span.ui-icon {
35      margin: 0 5px 0 0;
36      position: absolute;
37      left: .2em;
38      top: 50%;
39      margin-top: -8px;
40    }
41
42    ul#icons {
43      margin: 0;
44      padding: 0;
45    }
46
47    ul#icons li {
48      margin: 2px;
49      position: relative;
50      padding: 4px 0;
51      cursor: pointer;
52      float: left;
53      list-style: none;
54    }
55
56    ul#icons span.ui-icon {
57      float: left;
58      margin: 0 4px;
59    }
60
61    div.wysiwyg ul.panel li {
62      padding: 0px !important;
63    }
64
65    /**textarea visual editor padding override**/
66
67    /* Banner de cookies — escriptori (legacy) */
68    .cookiesms {
69      width: 100%;
70      height: 115px;
71      margin: 0 auto;
72      padding-left: 1%;
73      padding-top: 15px;
74      padding-bottom: 15px;
75      font-size: 1.2em;
76      clear: both;
77      font-weight: bold;
78      color: #333;
79      bottom: 0;
80      position: fixed;
81      left: 0;
82      background-color: #FFF;
83      opacity: 0.7;
84      filter: alpha(opacity=70);
85      transition: bottom 1s;
86      -webkit-transition: bottom 1s;
87      box-shadow: 3px -3px 1px rgba(50, 50, 50, 0.56);
88      z-index: 999999999;
89      box-sizing: border-box;
90    }
91
92    .cookiesms:hover {
93      bottom: 0;
94    }
95
96    .cookies2 {
97      background-color: #FFF;
98      display: inline;
99      opacity: 0.95;
100      filter: alpha(opacity=95);
101      position: absolute;
102      left: 1%;
103      top: -30px;
104      font-size: 15px;
105      height: 30px;
106      padding-left: 25px;
107      padding-right: 25px;
108      border-top-right-radius: 15px;
109      border-top-left-radius: 15px;
110      box-shadow: 3px -3px 1px rgba(50, 50, 50, 0.56);
111    }
112
113    @media (max-width: 768px) {
114      .cookiesms {
115        height: auto;
116        opacity: 1;
117        filter: none;
118        padding: 0;
119        z-index: 10040;
120        border-top: 1px solid #d6d8d9;
121        box-shadow: 0 -4px 16px rgba(0, 0, 0, 0.12);
122      }
123
124      .cookies2 {
125        display: none;
126      }
127
128      .cookiesms::before {
129        content: 'Política de cookies';
130        display: block;
131        padding: 12px 16px 8px;
132        font-size: 15px;
133        font-weight: bold;
134        border-bottom: 1px solid #e8e8dd;
135      }
136
137      .cookiesms p {
138        margin: 0;
139        padding: 12px 16px 0;
140        font-size: 14px;
141        font-weight: normal;
142        line-height: 1.45;
143        word-wrap: break-word;
144        overflow-wrap: break-word;
145      }
146
147      .cookiesms p + p {
148        padding-top: 8px;
149      }
150
151      .cookiesms button {
152        display: block;
153        width: calc(100% - 32px);
154        margin: 12px 16px calc(12px + env(safe-area-inset-bottom, 0px));
155        padding: 12px 16px;
156        font-size: 15px;
157        font-weight: bold;
158        border: none;
159        border-radius: 6px;
160        background: #5cb85c;
161        color: #fff;
162        cursor: pointer;
163        box-sizing: border-box;
164      }
165
166      body.mapa-modal-open .cookiesms,
167      body.horari-modal-open .cookiesms {
168        display: none;
169      }
170    }
171
172    .covidbannerHeader {
173      background-color: #FFF;
174      display: inline;
175      filter: alpha(opacity=95);
176      position: relative;
177      top: -30px;
178      font-size: 20px;
179      color: red;
180      height: 30px;
181      padding: 15px;
182    }
183
184    .covidbanner {
185      overflow-y: scroll;
186      height: 500px;
187      width: 100%;
188      margin: 0 auto;
189      padding-right: 25%;
190      padding-left: 25%;
191      padding-top: 100px;
192      padding-bottom: 50px;
193      font-size: 1.2em;
194      clear: both;
195      color: #333;
196      top: 150px;
197      position: fixed;
198      left: 0px;
199      background-color: #FFF;
200      filter: alpha(opacity=70); /* For IE8 and earlier */
201      transition: bottom 1s;
202      -webkit-transition: bottom 1s; /* Safari */
203      -webkit-box-shadow: 3px -3px 1px rgba(50, 50, 50, 0.56);
204      -moz-box-shadow: 3px -3px 1px rgba(50, 50, 50, 0.56);
205      box-shadow: 3px -3px 1px rgba(50, 50, 50, 0.56);
206      z-index: 999999999;
207    }
208
209  </style>
210      <!--[if IE 6]>
211  <link rel="stylesheet" href="ie.css" type="text/css"/>
212  <![endif]-->
213  <!--[if IE]>
214  <link type="text/css" media="screen" rel="stylesheet" href="js/colorbox-custom-ie.css" title="Cleanity"/>
215  <![endif]-->
216
217  <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
218  
218<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
218
219  
219<script src="/js/jquery/jquery-migrate-1.4.1.min.js "></script>
219
220  
220<script>window.jQuery || document.write('
220<script src="/js/jquery/jquery-1.4.2.min.js"><\/script>')</script>
220
221  
221<script type="text/javascript" src="/dist/jquery.colorbox-min.js"></script>
221
222  
222<script type="text/javascript" src="/js/jquery/jquery.scrollTo-min.js"></script>
222
223  
223<script type="text/javascript" src="/js/jquery/jquery.serialScroll-min.js"></script>
223
224  
224<script type="text/javascript" src="/js/jquery/validate/jquery.validate.js"></script>
224
225
226  
226<script type="text/javascript" src="/dist/jquery-ui-1.12.1/jquery-ui.min.js"></script>
226
227    
227<script type="text/javascript" src="/js/jquery-ui-i18n/datepicker-ca.js"></script>
227
228  
228<script type="text/javascript" src="/js/jquery/jquery.form.js"></script>
228
229  
229<script type="text/javascript" src="/js/jquery/alerts/jquery.alerts.js"></script>
229
230
231  
231<script type="text/javascript" src="/js/datepicker4/jquery.datepick.js"></script>
231
232  
232<script type="text/javascript" src="/js/datepicker4/jquery.datepick-ca.js"></script>
232
233  
233<script type="text/javascript" src="/js/tabs.pack.js"></script>
233
234  
234<script type="text/javascript" src="/js/helpers/BrowserHelpers.js"></script>
234
235
236  
236<script type="text/javascript">
237    var _gaq = _gaq || [];
238    _gaq.push(['_setAccount', 'UA-29544276-1']);
239    _gaq.push(['_trackPageview']);
240
241    (function () {
242      var ga = document.createElement('script');
243      ga.type = 'text/javascript';
244      ga.async = true;
245      ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
246      var s = document.getElementsByTagName('script')[0];
247      s.parentNode.insertBefore(ga, s);
248    })();
249
250  </script>
250
251</head>
252<body class="client-step-1">
253<div id="header-wrapper" >
254  <div id="header">
255    <div id="top">
256      <h1>
257        <a class="h1-logo" href="/ca/index" title="Refusonline" alt="Refusonline">
258            Refusonline        </a>
259      </h1>
260      <div class="top-right">
261        <p id="idiomes">
262          <strong><a href="https://refusonline.com/ca/mapa-reserves-online"  class="topLink-idioma" hreflang="ca" title="reserves refugis online catala">Català</a></strong> 			&nbsp;| &nbsp;
263          <strong><a href="https://refusonline.com/es/mapa-reservas-online"  class="topLink-idioma" hreflang="es" title="reservas refugios online castellano">Castellano</a></strong>
264          &nbsp;| &nbsp;
265          <strong><a href="https://refusonline.com/en/online-map-reservations"  class="topLink-idioma" hreflang="en" title="shelter online booking english">English</a></strong>
266          &nbsp;| &nbsp;
267          <strong><a href="https://refusonline.com/fr/carte-reserves-en-ligne"   class="topLink-idioma" hreflang="fr" title="">Français</a></strong>
268        </p>
269        <span class="clearFix">&nbsp;</span>
270      </div><!-- end of #top-right -->
271    </div><!-- end of #top -->
272    <span style="height: 30px" class="clearFix">&nbsp;</span>
273  </div><!-- end of #header -->
274</div><!-- end of #header-wrapper -->
275<div id="content-top-wrapper">
276  <div id="content-top-client">
277    <div class="col-md-12" style="    padding-top: 12px;">
278      <a href="/uploads/tarifes/tarifes_refusonline.pdf" class="btn btn-info"
279         role="button" target="_blank">TARIFES</a>
280      <div class="pull-right" id="horari">
281        <button type="button" id="horari-open-btn" class="btn btn-info horari-mobile-btn"
282                aria-controls="horari-panel">CONTACTE</button>
283        <div id="horari-desktop">
284          <div class="client-contacte-info client-contacte-info--header">
285      <p class="client-contacte-horari">Horari d'oficina : Del 01/10 al 31/05 de dilluns a divendres de 9h a 14h<br/>
286Del 01/06 al 30/09 de dilluns a divendres de 9h a 17h</p>
287        <p class="client-contacte-telefon">
288      Telf. :       <a class="client-contacte-link" href="tel:+34973641681">
289        + 34 973 641 681      </a>
290    </p>
291        <p class="client-contacte-email">
292      Email :       <a class="client-contacte-link" href="mailto:[email protected]">
293        [email protected]      </a>
294    </p>
295  </div>
296        </div>
297      </div>
298    </div>
299  </div><!-- end of div#content-top-client -->
300</div><!-- end of #header-wrapper -->
301<div id="container">
302
303  <div id="content">
304    <div id="mid-col-client">
305      <div class="box steps">
306                <ol id="steps">
307          <li id="step1"
308              class="step" >
309            <h2>1. Tria els refugis on vols dormir</h2>
310            <p>Consulta la disponibilitat de places al mapa i la informació dels refugis<br/>Escull una data i el nombre de persones<br/>Fes clic a la icona del refugi i selecciona les pensions</p>
311          </li>
312          <li id="step-separador">&nbsp;&nbsp;</li>
313          <li id="step2"
314              class="step arrow_box" >
315            <h2>2. Omple les teves dades personals</h2>
316            <p>Omple el formulari amb les teves dades personals necesàries</p>
317          </li>
318          <li id="step-separador">&nbsp;&nbsp;</li>
319          <li id="step3"
320              class="step arrow_box" >
321            <h2>3. Realitza el pagament d'una paga i senyal            </h2>
322            <p>Realitza el pagament de la pre-reserva mitjançant una passarel·la de pagament online segura            </p>
323          </li>
324          <li id="step-separador">&nbsp;&nbsp;</li>
325          <li id="step4"
326              class="step arrow_box" >
327            <h2>4. Rebràs una confirmació i benvingut!</h2>
328            <p>Si la pre-reserva feta és correcte i el pagament s\'ha realitzat, rebràs un email de confirmació</p>
329          </li>
330        </ol>
331      </div>
332
333      <div id="step-content" class="box">
334        <div id="step-mapa">
335            
335<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
vendor: 2 bytes, line 335
335
336<script type="text/javascript"
337        src="https://maps.googleapis.com/maps/api/js?key=AIzaSyBHOmYzODwXrhuNlSurr551W_nA6eBHdCw&language=ca&v=weekly"></script>
vendor: 2 bytes, line 337
337
338<script src="https://refusonline.com/js/mapas/smart_info.js" type="text/javascript"></script>
vendor: 2 bytes, line 338
338
339<script src="https://refusonline.com/js/mapas/markerclusterer.js" type="text/javascript"></script>
339
340
341<script type="text/javascript">
342	/*
343        Lluis Ruscalleda script
344        2010
345    */
346
347	let paxDom = null;
348	let paxSelected = null;
349	var locations_url;
350	var online_type = 'mapa_client';
351	var min_date_days = 1;
352
353	var estada_date = new Date();
354	var rutaStartDate = '';
355	if (rutaStartDate) {
356		var minDay = parseInt("".substr(0, 2), 10),
357			minMonth = parseInt("".substr(3, 2), 10);
358		estada_date = new Date((new Date).getFullYear(), minMonth - 1, minDay);
359
360		if (estada_date < new Date()) {
361			estada_date = new Date();
362			estada_date.setHours(estada_date.getHours() + 24)
363		}
364	} else {
365		estada_date.setTime(estada_date.getTime() + (min_date_days * 24 * 60 * 60 * 1000));
366	}
367
368	if (estada_date < new Date()) {
369		estada_date = new Date();
370		estada_date.setHours(estada_date.getHours() + 24)
371	}
372
373	var latitude;
374	var longitude;
375	var locationsArray = new Array;
376	var id;
377	var newMarker;
378	var dragHandler;
379	var center;
380	var infowindow = null;
381	var gicons = [];
382	var refugis = [];
383	var markers = [];
384	var labels = [];
385	var mapRenderRequestId = 0;
386	var mapRenderXhr = null;
387	var mapDatepickerBootstrapping = false;
388	var pendingRefugiId = null;
389	var my_day;
390	var label1 = 'Reserva';
391	var label2 = '+Info';
392	var contentString;
393
394	function isMapaMobile() {
395		return window.matchMedia('(max-width: 768px)').matches;
396	}
397
398	function openMapaRefugiPanel(content) {
399		if (infowindow) {
400			infowindow.close();
401			infowindow = null;
402		}
403		$('#mapa-refugi-panel-content').html(content);
404		$('#mapa-refugi-panel').addClass('is-open').attr('aria-hidden', 'false');
405		$('body').addClass('mapa-modal-open');
406		initMapaFitxaTabs('#mapa-refugi-panel-content');
407		$('#mapa-refugi-panel-content').scrollTop(0);
408	}
409
410	function closeRefugiFitxa() {
411		if (infowindow) {
412			infowindow.close();
413		}
414		$('#mapa-refugi-panel').removeClass('is-open').attr('aria-hidden', 'true');
415		$('#mapa-refugi-panel-content').empty();
416		$('body').removeClass('mapa-modal-open');
417	}
418
419	function initMapaFitxaTabs(containerSelector) {
420		var $root = $(containerSelector).find('.tabs_info').first();
421		if (!$root.length) {
422			return;
423		}
424
425		var $panels = $root.children('div[id^="tab"]');
426		$panels.hide();
427		$root.find('#tab1').show();
428		$root.find('.tab-menu li').removeClass('tabs-selected');
429		$root.find('.tab-menu li').first().addClass('tabs-selected');
430
431		$root.find('.tab-menu a').off('click.mapaTabs').on('click.mapaTabs', function (e) {
432			e.preventDefault();
433			var target = $(this).attr('href');
434			$root.find('.tab-menu li').removeClass('tabs-selected');
435			$(this).parent().addClass('tabs-selected');
436			$panels.hide();
437			$root.find(target).show();
438		});
439	}
440
441	function fixGoogleInfoWindowSize() {
442		var iwOuter = document.querySelector('.gm-style-iw-c');
443		var iwContent = document.querySelector('.gm-style-iw-d');
444		if (!iwContent) {
445			return;
446		}
447		iwContent.style.overflow = 'visible';
448		iwContent.style.height = 'auto';
449		iwContent.style.maxHeight = 'none';
450		if (iwOuter) {
451			iwOuter.style.maxHeight = '80vh';
452			iwOuter.style.overflowY = 'auto';
453		}
454	}
455
456	// vars de la reserva
457	var reservaObject = {};
458	var reserva = [];
459	var map = null;
460	var clickHandler;
461	var center;
462	var markerClusterer = null;
463	var default_zoom = 8;
464	var default_clustersize = 1;
465	var default_style = 0;
466	var max_zoom = 15;
467
468	var styles = [ [ {
469		url: 'https://refusonline.com/js/mapas/img/icon_group_green',
470		height: 37,
471		width: 37,
472		textColor: '#ffffff',
473		textSize: 12,
474		anchor: [ 0, 13 ]
475	} ] ];
476
477
478	$(document).ready(function () {
479		paxDom = document.getElementById('pax');
480
481		var mapDatepickRegional = $.datepick.regional['ca'];
482		if (mapDatepickRegional) {
483			$.datepick.setDefaults(mapDatepickRegional);
484		}
485		// montem la url de recollir els refugis segons la ruta passada
486		locations_url = "/locations/get_locations_estat/refusonline";
487		online_type = 'refusonline';
488		center = new google.maps.LatLng(42.55, 1.15);
489
490		$('#suelo').val('0');
491
492		var currentTime = new Date()
493		var month = ("0" + (currentTime.getMonth() + 1)).slice(-2)
494		var day = ("0" + currentTime.getDate()).slice(-2);
495		var year = currentTime.getFullYear()
496
497		my_day = day + "/" + month + "/" + year;
498
499		//var gicons=[];
500		gicons[0] = "https://refusonline.com/js/mapas/img/icon_tancat.png";
501		gicons[1] = "https://refusonline.com/js/mapas/img/icon_verd.png";
502		gicons[2] = "https://refusonline.com/js/mapas/img/icon_vermell.png";
503		gicons[3] = "https://refusonline.com/js/mapas/img/icon_groc.png";
504		gicons[4] = "https://refusonline.com/js/mapas/img/icon_taronja.png";
505
506		var myOptions = {
507			zoom: 8,
508			center: center,
509			mapTypeControl: true,
510			mapTypeControlOptions: {
511				style: google.maps.MapTypeControlStyle.DROPDOWN_MENU
512			},
513			navigationControl: true,
514			navigationControlOptions: {
515				style: google.maps.NavigationControlStyle.SMALL
516			},
517			scaleControl: true,
518			mapTypeId: google.maps.MapTypeId.TERRAIN,
519			scrollwheel: false,
520			minZoom: 6
521		};
522
523		map = new google.maps.Map(document.getElementById("mapa_central"), myOptions);
524
525		google.maps.event.addDomListener(window, 'resize', function () {
526			var center = map.getCenter();
527			google.maps.event.trigger(map, 'resize');
528			map.setCenter(center);
529		});
530
531		// Map click event
532		google.maps.event.addListener(map, 'click', function (event) {
533			closeRefugiFitxa();
534		});
535
536		$('#mapa-refugi-panel-close').on('click', function () {
537			closeRefugiFitxa();
538		});
539
540		// Create the DIV to hold the control and
541		// call the HomeControl() constructor passing
542		// in this DIV.
543		var homeControlDiv = document.createElement('DIV');
544		var homeControl = new HomeControl(homeControlDiv, map);
545
546		homeControlDiv.index = 1;
547		map.controls[google.maps.ControlPosition.TOP_RIGHT].push(homeControlDiv);
548
549		if (0 === 1) {
550			var maxRutaDate = null;
551			var rutaCloseDate = '';
552			if (rutaCloseDate) {
553				var maxDay = parseInt(rutaCloseDate.substr(0, 2), 10),
554					maxMonth = parseInt(rutaCloseDate.substr(3, 2), 10);
555				maxRutaDate = new Date((new Date).getFullYear(), maxMonth - 1, maxDay);
556				if (maxRutaDate < new Date()) {
557					maxRutaDate = new Date((new Date).getFullYear() + 1, maxMonth - 1, maxDay);
558				}
559			}
560
561			mapDatepickerBootstrapping = true;
562			$("#data_reserva").datepick({
563				changeMonth: false,
564				changeYear: false,
565				commandsAsDateFormat: true,
566				clearText: '',
567				prevText: '< M',
568				todayText: 'M yyyy',
569				nextText: 'M >',
570				firstDay: 1,
571				dateFormat: 'dd/mm/yyyy',
572				defaultDate: estada_date,
573				selectDefaultDate: true,
574				minDate: estada_date,
575				maxDate: maxRutaDate,
576				onSelect: selectDate
577			});
578			mapDatepickerBootstrapping = false;
579
580			my_day = $('#data_reserva').val() || my_day;
581			render(my_day);
582		} else {
583			mapDatepickerBootstrapping = true;
584			$("#data_reserva").datepick({
585				changeMonth: false,
586				changeYear: false,
587				commandsAsDateFormat: true,
588				clearText: '',
589				prevText: '< M',
590				todayText: 'M yyyy',
591				nextText: 'M >',
592				firstDay: 1,
593				dateFormat: 'dd/mm/yyyy',
594				defaultDate: estada_date,
595				selectDefaultDate: true,
596				minDate: estada_date,
597				onSelect: selectDate
598			});
599			mapDatepickerBootstrapping = false;
600
601			my_day = $('#data_reserva').val() || my_day;
602			render(my_day);
603		}
604	});
605
606	// element events
607	$(function () {
608		// sleects de refugis
609		$('#select_refugi').live('change', function () {
610			addClickListenerSelectRefugi($('#select_refugi option:selected').val());
611		});
612		$('#enviar_reserva').click(function () {
613			if (reserva.length == 0) {
614				jAlert('<span class="alerta-red">No tens Estades</span>', 'Avis Mapa Reserva Online');
615			} else {
616				$('div#mapa_reserva').hide();
617				$('div#llegendes').hide();
618				$('div#refugis_list').hide();
619				$('div#datos_reserva').show();
620				$('#resum_estancies').empty();
621				/* montem el resum de les estancies per posar les pagas i senyals */
622				$('span#loading_estancia').html('<img src="https://refusonline.com/img/admin/ajax-loader.gif" />').show();
623
624				//reserva.forEach(function(estancia, index, array){
625
626				for (i = 0; i < reserva.length; i++) {
627
628					var estancia = estancia[i];
629					var index = i;
630					var resum_estancia = '<table class="resum_estancia" id="' + estancia.id + '"><tr>';
631					resum_estancia += '<td width="100px"><input type="text" size="10" id="dia" name="dia" value="' + estancia.dia + '" READONLY class="dia selector" /></td>';
632					resum_estancia += '<td  width="100px">' + estancia.refugi + '</td>';
633					resum_estancia += '<td  width="100px">Nº llits : ' + estancia.cama_estancia + '</td>';
634					resum_estancia += '<td  width="100px">Nº terra : ' + estancia.suelo_estancia + '</td>';
635					resum_estancia += '<td>';
636
637					//estancia.serveis.forEach(function(servei, index_s, array_s){
638					for (j = 0; j < reserva.length; j++) {
639						var servei = estancia.serveis[j];
640						resum_estancia += '<p>' + servei.nom_servei + '-' + servei.value + '</p>';
641					}
642					resum_estancia += '</td>'
643					resum_estancia += '<td width="100px" id="pagasenyal_td' + estancia.id + '">PiS : <input type="text" id="pagasenyal' + estancia.id + '" value="
6430" size="5"/></td>';
644					resum_estancia += '<td width="100px" id="pago_td' + estancia.id + '">Pago : <input type="text" id="pago' + estancia.id + '" value="0" size="5"/></td>';
645					resum_estancia += '</tr></table>';
646
647					$('#resum_estancies').append('<div id="' + index + '">' + resum_estancia + '</div>');
648				}
649				$('span#loading_estancia').empty().hide();
650			}//fin if hi han estancies
651		});
652
653		$('span#delete_reserva').click(function () {
654			jConfirm('Segur q vols esborrar tota la reserva?', 'Avis Mapa Reserva Online', function (r) {
655				if (r) {
656					reserva = [];
657					$('div#estades').html('');
658				}
659			});
660		});
661
662		// sleects de places
663		$('#cama').change(function () {
664			//paxDom.value = $('#cama').val();
665			$.scrollTo('#step-content', 800);
666			render(my_day);
667		});
668
669		$('#reservar_estada').live("click", function () {
670			var ok = false;
671
672			if (!checkHoraMaximaReservaDia($('#dia_estancia').html())) {
673				jAlert('<span class="alerta-red">No es pot reservar online el mateix dia o passades les 19 hores per demà.</span>', 'Avis Mapa Reserva Online');
674				closeRefugiFitxa();
675				return;
676			}
677
678			var num_pensions = 0;
679
680			//verifiquem q el nombre de pensions no superi el nombre de persones escollides i que el nombre de cada pensio article tampoc
681
682			$('form#form-estancia-mapa select.s_serveis option:selected').each(function (index) {
683				if ($(this).val() > 0) {
684
685					var id_select = $(this).parent().attr('id');
686
687					if ($('#servei_class_' + id_select).html() == 1) {
688						if ($(this).val() == $('#cama').val()) {
689							ok = true;
690						} else {
691							ok = false;
692						}
693					} else {
694						ok = true;
695						num_pensions = num_pensions + parseInt($(this).val());
696					}
697				}
698			});
699
700			if ((num_pensions == $('#cama').val()) && (ok)) {
701				ok = true;
702			} else {
703				ok = false;
704			}
705
706			// si esta tot ok mirem si accepta els avisos i reservem
707			if (ok) {
708				if ($('#agree').length) {
709					if ($('#agree').attr('checked')) {
710						reservarEstada();
711					} else {
712						$('#agree').after("<span class='validate-error'>Siusplau accepta els avisos del dia</span>");
713					}
714				} else {
715					reservarEstada();
716				}
717			} else {
718				var placesRequerides = parseInt($('form#form-estancia-mapa span#cama_estancia').html() || $('#cama').val(), 10);
719				var avisPensions = placesRequerides === 1
720					? 'Has de seleccionar 1 pensió, segons el nombre de places sol·licitades.'
721					: 'Has de seleccionar un total de %s pensions, segons el nombre de places sol·licitades.'.replace('%s', placesRequerides);
722				jAlert('<span class="alerta-red">' + avisPensions + '</span>', 'Avis Mapa Reserva Online');
723			}
724		});
725
726		$('input#reset-form').click(function () {
727			$("form#form-dades-reserva").reset();
728		});
729	});
730
731	// marker onclick event: display info window
732	function onclickMarker(marker, element) {
733
734		/*chivato hidden know refugi selected*/
735		//$('#id_refugi').html(element.id);
736		closeRefugiFitxa();
737		//&& (element.dia_str == my_day)
738		// if( (element.estat == 0) ){
739		// 	jAlert('<span class="alerta-red">El refugi està tancat per aquest dia</span>', 'Avis Mapa Reserva Online');
740		// }else{
741
742		//carreguem la info de la fitxa del refugi al mapa
743		$.post('/ca/locations/get_info_refugi/' + online_type + '/' + element.id + '/' + my_day + '/' + $('#cama').val() + '/0/', function (response) {
744
745			var html1 = response.fitxa1_html;
746			var html2 = response.fitxa2_html;
747
748			//var html1 = locationsArray[element.id].html1;
749			//var html2 = locationsArray[element.id].html2;
750
751			contentString = [
752				'<div id="infotext">',
753				'<div class="tabs_info"><ul class="tab-menu">',
754				'<li><a href="#tab1">' + label1 + '</a></li>',
755				'<li><a href="#tab2" id="SV">' + label2 + '</a></li>',
756				'</ul>',
757				'<div id="tab1">',
758				'' + html1 + '',
759				'</div>',
760				'<div id="tab2">',
761				'' + html2 + '<div id="pano"></div>',
762				'</div>',
763				'</div>'
764			].join('');
765
766
767			if (isMapaMobile()) {
768				openMapaRefugiPanel(contentString);
769				return;
770			}
771
772			var mapEl = document.getElementById('mapa_central');
773			var mapWidth = mapEl ? mapEl.offsetWidth : window.innerWidth;
774			var infoMaxWidth = Math.min(680, mapWidth - 4);
775
776			var infoOptions = {
777				content: contentString
778				, classname: "info_window"
779				, disableAutoPan: false
780				, pixelOffset: new google.maps.Size(0, 0)
781				, position: marker.position
782				, maxWidth: infoMaxWidth
783				, zIndex: 100
784			};
785
786			infowindow = new google.maps.InfoWindow(infoOptions);
787
788			google.maps.event.addListener(infowindow, 'domready', function () {
789				initMapaFitxaTabs('.gm-style-iw-d');
790				setTimeout(fixGoogleInfoWindowSize, 0);
791				setTimeout(fixGoogleInfoWindowSize, 150);
792			});
793
794			google.maps.event.addListener(infowindow, 'closeclick', function () {
795				map.setCenter(new google.maps.LatLng(element.latitude, element.longitude));
796			});
797
798			infowindow.open(map, marker);
799			map.panTo(marker.getPosition());
800			$.scrollTo('#step-content', 800);
801
802		}, "json");
803
804		//}
805
806	}
807
808	function normalizeMapDay(dateText) {
809		if (!dateText) {
810			return dateText;
811		}
812
813		var parts = String(dateText).split('/');
814		if (parts.length !== 3) {
815			return dateText;
816		}
817
818		var day = parts[0];
819		var month = parts[1];
820		var year = parts[2];
821
822		if (year.length === 2) {
823			year = '20' + year;
824		}
825
826		return day + '/' + month + '/' + year;
827	}
828
829	function setMapDatepickerDay(normalizedDay) {
830		var $input = $('#data_reserva');
831		if (!$input.length) {
832			return;
833		}
834
835		mapDatepickerBootstrapping = true;
836		try {
837			$input.datepick('setDate', normalizedDay);
838		} catch (e) {
839			$input.val(normalizedDay);
840		}
841		mapDatepickerBootstrapping = false;
842	}
843
844	function selectRefugiAfterRender() {
845		if (!pendingRefugiId) {
846			return;
847		}
848
849		var refugiId = pendingRefugiId;
850		pendingRefugiId = null;
851		var refugiIdStr = String(refugiId);
852
853		if ($('#select_refugi option[value="' + refugiIdStr + '"]').length) {
854			$('#select_refugi').val(refugiIdStr);
855		}
856
857		addClickListenerSelectRefugi(refugiId);
858	}
859
860	function syncMapFromRefugiCalendar(dateText, refugiId) {
861		var normalizedDay = normalizeMapDay(dateText);
862		my_day = normalizedDay;
863		pendingRefugiId = refugiId;
864
865		setMapDatepickerDay(normalizedDay);
866		$.scrollTo('#mapa_reserva', 600);
867		render(normalizedDay);
868	}
869
870	function render(my_day) {
871		var requestId = ++mapRenderRequestId;
872
873		//$('#cama').attr('disabled', 'disabled');
874		//$('#select_refugi').attr('disabled', 'disabled');
875		$('#select_refugi').html('');
876
877		refugis.length = 0;
878		labels.length = 0;
879		//$.colorbox();
880
881		//loadingMapa();
882
883		closeRefugiFitxa();
884		if (markers) {
885			for (i in markers) {
886				markers[i].setMap(null);
887				//	markers[i]['label'].close();
888			}
889			markers.length = 0;
890		}
891
892		if (mapRenderXhr) {
893			mapRenderXhr.abort();
894			mapRenderXhr = null;
895		}
896
897		mapRenderXhr = $.ajax({
898			url: locations_url + "/" + my_day + "/" + $('#cama').val() + "/" + $('#suelo').val() + "/",
899			async: true,
900			complete: function (objeto, exito) {
901				if (requestId !== mapRenderRequestId) {
902					return;
903				}
904				if (exito == "success") {
905
906					if (markerClusterer) {
907						markerClusterer.clearMarkers();
908					}
909
910					max_zoom = max_zoom == -1 ? null : max_zoom;
911					default_clustersize = default_clustersize == -1 ? null : default_clustersize;
912
913					markerClusterer = new MarkerClusterer(map, markers, {
914						maxZoom: max_zoom,
915						gridSize: default_clustersize,
916						iconStyle: styles[default_style],
917						imageExtension: 'png',
918						labels: labels
919					});
920
921				}
922			},
923			contentType: "application/x-www-form-urlencoded",
924			dataType: "json",
925			error: function (objeto, quepaso, otroobj) {
926				if (requestId !== mapRenderRequestId || quepaso === 'abort') {
927					return;
928				}
929				alert("Error: " + quepaso);
930			},
931			global: true,
932			ifModified: false,
933			processData: true,
934			success: function (response) {
935				if (requestId !== mapRenderRequestId) {
936					return;
937				}
938				var select_refugis_output = [];
939				select_refugis_output[0] = '<option value="">Refugis oberts</option>';
940				var consulta_refugi = false;
941
942				const seen = new Set();
943				const locations = response.filter(el => {
944					const duplicate = seen.has(el.id);
945					seen.add(el.id);
946					return !duplicate;
947				});
948
949				$.each(locations, function (index, element) {
950
951					consulta_refugi = false;
952
953					if (element.nombre === "")
954						consulta_refugi = true;
955
956					var image = new google.maps.MarkerImage(gicons[element.estat],
957						new google.maps.Size(32, 32),
958						// The origin for this image is 0,0.
959						new google.maps.Point(0, 0),
960						// The anchor for this image is the base of the flagpole at 0,32.
961						new google.maps.Point(0, 0)
962					);
963
964
965					var point = new google.maps.LatLng(element.latitude, element.longitude);
966
967					// marker option, object literal
968					options = {
969						position: point,
970						map: map,
971						icon: image,
972						title: element.nombre,
973						zIndex: 1
974					};
975
976					//el nou punt i la nova marker
977
978					var marker = new google.maps.Marker(options);
979					marker.setValues({ type: "refugi_marker", id: element.id });
980
981
982					// event de click del marker
983					addClickListenerMarker(marker, element);
984
985					google.maps.event.addListener(marker, 'infowindowclose', function () {
986						map.setCenter(center);
987						map.setZoom(default_zoom);
988					});
989
990					// map.addOverlay(marker);
991
992					var label_text = '<p>' + element.nombre + '</p>';
993
994					var myOptions = {
995						content: label_text
996						, classname: "info_marker_small"
997						, disableAutoPan: true
998						, pixelOffset: new google.maps.Size(-10, 30)
999						, position: marker.position
1000						, closeBoxURL: ""
1001						, isHidden: false
1002						, pane: "mapPane"
1003						, enableEventPropagation: true
1004						, boxStyle: {
1005							fontSize: "6pt"
1006							, whiteSpace: "nowrap"
1007							, textAlign: "center"
1008						}
1009					};
1010
1011
1012					var ibLabel = new InfoBox(myOptions);
1013					/*google.maps.event.addDomListener(ibLabel, 'click', function() {
1014                      alert('isi');
1015                    });		*/
1016					//ibLabel.open(map);
1017					labels.push(ibLabel);
1018					marker['label'] = ibLabel;
1019
1020					markers.push(marker);
1021
1022					// preparem el select de refugis oberts
1023					if (element.estat != 0) {
1024						select_refugis_output[index + 1] = '<option  aria-selected="false" value="' + element.id + '">' + element.nombre + '</option>';
1025					}
1026
1027					//save refugi to array
1028					refugis.push(element);
1029
1030					// si es consulta refugi demanat fem zoom al refugi i centrem el mapa
1031					if (consulta_refugi) {
1032						map.setCenter(point);
1033						map.setZoom(14);
1034					}
1035				});
1036
1037				//append options to select refugi
1038				$("#select_refugi").html(select_refugis_output.join(''));
1039				selectRefugiAfterRender();
1040
1041				//$('#cama').removeAttr('disabled');
1042				//$('#select_refugi').removeAttr('disabled');
1043
1044				//$.colorbox.close();
1045				//loadedMapa();
1046			},
1047			type: "POST"
1048		});
1049	}
1050
1051	function addClickListenerSelectRefugi(id_refugi) {
1052		var refugiId = String(id_refugi);
1053
1054		$.scrollTo('#step-content', 800);
1055
1056		for (i = 0; i < markers.length; i++) {
1057			if (String(markers[i].get("id")) === refugiId) {
1058				var my_marker = markers[i];
1059				for (j = 0; j < refugis.length; j++) {
1060					if (String(refugis[j].id) === refugiId) {
1061						var my_element = refugis[j];
1062
1063						onclickMarker(my_marker, my_element);
1064						return;
1065					}
1066				}
1067			}
1068		}
1069	}
1070
1071	function addClickListenerMarker(marker, element) {
1072		google.maps.event.addListener(marker, 'click', function () {
1073			onclickMarker(marker, element);
1074		});
1075	}
1076
1077	function selectDate(dates) {
1078		if (Array.isArray(dates)) {
1079			for (var i = 0; i < dates.length; i++) {
1080				my_day = $.datepick.formatDate('dd/mm/yyyy', dates[i])
1081			}
1082		} else {
1083			my_day = dates;
1084		}
1085
1086		if (mapDatepickerBootstrapping) {
1087			return;
1088		}
1089
1090		if (my_day) {
1091			render(my_day);
1092		}
1093	}
1094
1095	function deleteestancia(id) {
1096		//esborrem estancia
1097		var i = 0;
1098		var trobat = false;
1099		while ((i < reserva.length) && !trobat) {
1100			if (reserva[i].id == id) {
1101				trobat = true;
1102				reserva.splice(i, 1);
1103			}
1104			i++;
1105		}
1106
1107		//$('div#estades li#estancia_'+id).remove();
1108
1109		//llistem de nou
1110		$('div#estades').html('');
1111		for (i = 0; i < reserva.length; i++) {
1112			addEstancia(i);
1113		}
1114
1115	}
1116
1117	function checkHoraMaximaReservaDia(dia) {
1118		var parts = dia.split('/');
1119		var date = new Date();
1120		var mydate = new Date(parts[2], parts[1] - 1, parts[0]);
1121
1122		if (date >= mydate) {
1123			return false;
1124		} else if (date < mydate) {
1125			var timeDiff = Math.abs(mydate.getTime() - date.getTime());
1126			var diffDays = Math.ceil(timeDiff / (1000 * 3600 * 24));
1127
1128			var currentHour = date.getHours();
1129			if (currentHour >= 19 && diffDays <= 1) {
1130				return false;
1131			} else {
1132				return true;
1133			}
1134		}
1135	}
1136
1137	function reservarEstada() {
1138
1139		// comprovem q no hem seleccionat ja una estancia per aqeust dia
1140		hies = false;
1141		i = 0;
1142
1143		while (i < reserva.length && !hies) {
1144			aux_dia = reserva[i].dia;
1145			if (aux_dia == $('#dia_estancia').html()) {
1146				hies = true;
1147			}
1148			i++;
1149		}
1150
1151		if (!hies) {
1152			add_estancia();
1153		} else {
1154			jAlert('<span class="alerta-red">Per aquest dia ja has reservat</span>', 'Avis Mapa Reserva Online');
1155			closeRefugiFitxa();
1156			render(my_day);
1157		}
1158	}
1159
1160	function add_estancia() {
1161
1162		//montem lestancia
1163		var estanciaObj = new Object;
1164
1165		estanciaObj['serveis'] = new Array;
1166		estanciaObj['dia'] = $('form#form-estancia-mapa span#dia_estancia').html();
1167		estanciaObj['refugi'] = $('form#form-estancia-mapa span#refugi_estancia').html();
1168		estanciaObj['id_refugi'] = $('form#form-estancia-mapa span#id_refugi_estancia').html();
1169		var num_serveis = 0;
1170		//serveis de la estancia
1171		$("form#form-estancia-mapa select.s_serveis option:selected").each(function (index) {
1172			if ($(this).val() > 0) {
1173
1174				var servei = new Object;
1175				servei.id = $(this).parent().attr('id');
1176
1177				servei.nom_servei = $(this).parent().parent().find('span').html();
1178				servei.value = $(this).val();
1179				servei.tipus = 'pensio';
1180				estanciaObj.serveis.push(servei);
1181				num_serveis++;
1182			}
1183		});
1184
1185		estanciaObj['num_serveis'] = num_serveis;
1186
1187		estanciaObj['cama_estancia'] = $('form#form-estancia-mapa span#cama_estancia').html();
1188		estanciaObj['id'] = reserva.length;
1189
1190		reserva.push(estanciaObj);
1191
1192		// posem les estancies a la llista principaL
1193		$('div#estades').html('');
1194		for (i = 0; i < reserva.length; i++) {
1195			//afegim estancia al js mapa_central.js
1196			addEstancia(i);
1197		}
1198		closeRefugiFitxa();
1199		render(my_day);
1200	}
1201
1202
1203	/*add estancia to the html list*/
1204	function addEstancia(i) {
1205
1206		// posem les estancies a la llista principal
1207		$('div#estades').append("<li id='estada" + reserva[i].id + "'  class='estada'><p><button type='button' class='btn btn-link btn-xs cross-estada'>" +
1208			"<span class='glyphicon glyphicon-trash' onclick='deleteestancia(" + reserva[i].id + "); return false;' title='esborrar estada'> </span></button></p><p><b>" + reserva[i].dia + "</b> - <b>" + reserva[i].refugi + "</b></p><p>Llits : " + reserva[i].cama_estancia + "</p></li>");
1209
1210		var num = reserva[i].serveis.length;
1211
1212		for (var z = 0; z < num; z++) {
1213			if (reserva[i].serveis[z].value != 0) {
1214				$('div#estades li#estada' + reserva[i].id + '').append('<p>' + reserva[i].serveis[z].nom_servei + ': ' + reserva[i].serveis[z].value + '</p>');
1215			}
1216		}
1217		$('div#estades li#estada' + reserva[i].id + '').append("<hr>");
1218	}
1219
1220	function do_reserva(reservaObject) {
1221
1222		reservaObject['dadesReserva']['browser'] = JSON.stringify(BrowserHelpers());
1223		$.post('https://refusonline.com/ca/reservar/do_reserva/', reservaObject, function (response) {
1224
1225			if (response.check) {
1226				// to pay
1227				reservaObject.id_reserva = response.id_reserva;
1228				reservaObject.pis = response.paga_senyal;
1229				reservaObject.orden = response.orden;
1230				reservaObject.pr = response.pago_reserva;
1231				reservaObject.estades_payment = response.estades_payment;
1232
1233				$.colorbox();
1234				$.post('https://refusonline.com/ca/tpv/tpvResum/', reservaObject, function (response) {
1235
1236					current_step = 3;
1237					$('div#step-mapa').hide();
1238					$('div#step-form').hide();
1239					$('div#step-resum').hide();
1240
1241					$.colorbox.close();
1242
1243					$('div#step-resum').show();
1244					$('div#step-resum').html(response);
1245
1246
1247				});
1248			} else {
1249				jAlert('<span class="alerta-red">Ha hagut un problema reservant, repassa les dades de la reserva o posa\'t en contacte amb l\'oficina</span>', 'Avis Mapa Reserva Online');
1250			}
1251		}, "json");
1252	}
1253
1254	function fillReservaObject() {
1255
1256		reservaObject.estancias = [];
1257
1258		if (typeof getForfaitsObject == 'function') {
1259			const forfaitEstada = getForfaitsObject();
1260			if (forfaitEstada !== null) {
1261				reservaObject.estancias[0] = forfaitEstada;
1262			}
1263		}
1264
1265      reservaObject.n_estancias = reservaObject.estancias.length + reserva.length;
1266
1267		var int_count = 0;
1268		if (reservaObject.estancias[0] != null) {
1269			int_count = 1;
1270		}
1271
1272		for (var i = 0; i < reserva.length; i++) {
1273			if (reservaObject.estancias[i] != null) {
1274				reservaObject.estancias[i + 1] = reserva[i];
1275			} else {
1276				reservaObject.estancias[i] = reserva[i];
1277			}
1278		}
1279
1280
1281		var $inputs = $('#form-dades-reserva input, #form-dades-reserva textarea, #form-dades-reserva select, #form-dades-reserva checkbox, #form-dades-reserva radio');
1282
1283		var values = {};
1284		$inputs.each(function (i, el) {
1285			values[el.name] = $(el).val();
1286		});
1287
1288
1289		reservaObject.dadesReserva = new Array;
1290		reservaObject.dadesReserva = values;
1291
1292		// agafem els emails secundaris
1293		if ($("input[name^=emails]").length > 0) {
1294
1295			var values = {};
1296
1297			//emails values
1298			$("input[name^=emails]").each(function () {
1299				if ($.trim($(this).val()) != "") {
1300					alert('add : ' + $(this).val());
1301					values[this.id] = $(this).val();
1302				}
1303			});
1304			if (values.length > 0) {
1305				reservaObject.dadesReserva['emails'] = values
1306			}
1307
1308		}
1309	}
1310
1311	function HomeControl(controlDiv, map) {
1312
1313		// Set CSS styles for the DIV containing the control
1314		// Setting padding to 5 px will offset the control
1315		// from the edge of the map
1316		controlDiv.style.padding = '5px';
1317
1318		// Set CSS for the control border
1319		var controlUI = document.createElement('DIV');
1320		controlUI.className = 'mapa-home-control';
1321		controlUI.style.backgroundColor = 'white';
1322		controlUI.style.borderStyle = 'solid';
1323		controlUI.style.borderWidth = '2px';
1324		controlUI.style.cursor = 'pointer';
1325		controlUI.style.textAlign = 'center';
1326		controlUI.title = 'Fes clic per posar el mapa en les condicions inicials';
1327		controlDiv.appendChild(controlUI);
1328
1329		// Set CSS for the control interior
1330		var controlText = document.createElement('DIV');
1331		controlText.style.fontFamily = 'Helvetica, Arial, sans-serif';
1332		controlText.style.fontSize = '12px';
1333		controlText.style.paddingLeft = '4px';
1334		controlText.style.paddingRight = '4px';
1335		controlText.innerHTML = 'Condicions Inicials Mapa';
1336		controlUI.appendChild(controlText);
1337
1338		// Setup the click event listeners: simply set the map to our center
1339		google.maps.event.addDomListener(controlUI, 'click', function () {
1340			map.setCenter(center)
1341			map.setZoom(default_zoom);
1342		});
1343	}
1344</script>
1344
1345<div class="box-container">
1346    <div class="row mapa-top-row">
1347        <div class="col-xs-12 col-md-9 mapa-legend-col">
1348            <div id="wrapper_llegendes">
1349                <div id="llegendes">
1350    <span class="llegenda-item"><img src="https://refusonline.com/js/mapas/img/icon_tancat.png" alt=""/>Tancat</span>
1351    <span class="llegenda-item"><img src="https://refusonline.com/js/mapas/img/icon_verd.png" alt=""/>Obert</span>
1352    <span class="llegenda-item"><img src="https://refusonline.com/js/mapas/img/icon_vermell.png" alt=""/>Complet</span>
1353    <span class="llegenda-item"><img src="https://refusonline.com/js/mapas/img/icon_taronja.png" alt=""/>Obert amb restricció</span>
1354    <span class="llegenda-item"><img src="https://refusonline.com/js/mapas/img/icon_groc.png" alt=""/>Contacta'ns</span>
1355</div>            </div>
1356        </div>
1357        <div class="col-xs-12 col-md-3 mapa-step-col">
1358            <div class="step-title">
1359                <h2>Pas 1. Mapa</h2>
1360            </div>
1361        </div>
1362    </div>
1363    <form id="form-datos" action="#" method="post">
1364        <input type="hidden" id="id_refugi" name="id_refugi" value=""/>
1365        <input type="hidden" id="hidden_day" name="hidden_day" value=""/>
1366        <input type="hidden" id="suelo" name="suelo" value=""/>
1367        <!--<span class="info"></span>-->
1368
1369        <fieldset>
1370            <div id="mapa_reserva" class="wrapper_mapa">
1371                <div
1372                        id="selects" >
1373                    <div class="stay-selects-wrapper">
1374                        <!--<label for="data_reserva"><span class="select-label"><b>Data estada </b></span>-->
1375                        <div class="stay-when-wrapper">
1376                            <input class="datepick-trigger"
1377                                   autocomplete="off"
1378                                   placeholder="Dia pernocta" type="text"
1379                                   size="10" id="data_reserva" name="data_reserva" value=""/><!--</label>-->
1380                        </div>
1381                        <div class="stay-pax-wrapper">
1382                            <select name="num_cama" id="cama">
1383                                                                                                            <option
1384                                                value="1">1 persona</option>
1385                                                                                                                                                <option
1386                                                value="2">2 persones</option>
1387                                                                                                                                                <option
1388                                                value="3">3 persones</option>
1389                                                                                                                                                <option
1390                                                value="4">4 persones</option>
1391                                                                                                                                                <option
1392                                                value="5">5 persones</option>
1393                                                                                                                                                <option
1394                                                value="6">6 persones</option>
1395                                                                                                                                                <option
1396                                                value="7">7 persones</option>
1397                                                                                                                                                <option
1398                                                value="8">8 persones</option>
1399                                                                                                                                                <option
1400                                                value="9">9 persones</option>
1401                                                                                                                                                <option
1402                                                value="10">10 persones</option>
1403                                                                                                                                                <option
1404                                                value="11">11 persones</option>
1405                                                                                                                                                <option
1406                                                value="12">12 persones</option>
1407                                                                                                                                                <option
1408                                                value="13">13 persones</option>
1409                                                                                                                                                <option
1410                                                value="14">14 persones</option>
1411                                                                                                                                                <option
1412                                                value="15">15 persones</option>
1413                                                                                                                                                <option
1414                                                value="16">16 persones</option>
1415                                                                                                                                                <option
1416                                                value="17">17 persones</option>
1417                                                                                                                                                <option
1418                                                value="18">18 persones</option>
1419                                                                                                                                                <option
1420                                                value="19">19 persones</option>
1421                                                                                                                                                <option
1422                                                value="20">20 persones</option>
1423                                                                                                </select>
1424                        </div>
1425                        <div class="stay-refugi-wrapper">
1426                            <select name="refugi" id="select_refugi" aria-describedby="originaccesibility"
1427                                    aria-owns="select_refugi" aria-expanded="false">
1428                                <option aria-selected="false" value="" disabled
1429                                        selected>Refugis</option>
1430                            </select>
1431                        </div>
1432                    </div>
1433                </div>
1434                <!-- end of div selects-->
1435                <div class="row">
1436                    <div class="col-xs-12 col-md-9">
1437                        <div id="mapa_central"></div>
1438                    </div>
1439                    <div class="col-xs-12 col-md-3">
1440                        <!-- Shopping cart list -->
1441                        <div class="panel panel-info">
1442                            <div class="panel-heading">
1443                                <div class="panel-title">
1444                                    <div class="row">
1445                                        <div class="col-md-12">
1446                                            <h5 class="icon-map-directions">La teva reserva                                            </h5>
1447                                        </div>
1448                                    </div>
1449                                </div>
1450                            </div>
1451                            <div class="panel-body">
1452                                <div id="llistat_nits">
1453                                    <div id="estades">
1454                                    </div>
1455                                </div>
1456                                <!--<div class="row">
1457                                    <div class="col-xs-2"><img class="img-responsive" src="http://placehold.it/100x70">
1458                                    </div>
1459                                    <div class="col-xs-4">
1460                                        <h4 class="product-name"><strong>Product name</strong></h4>
1461                                        <h4>
1462                                            <small>Product description</small>
1463                                        </h4>
1464                                    </div>
1465                                    <div class="col-xs-6">
1466                                        <div class="col-xs-6 text-right">
1467                                            <h6><strong>25.00 <span class="text-muted">x</span></strong></h6>
1468                                        </div>
1469                                        <div class="col-xs-4">
1470                                            <input type="text" class="form-control input-sm" value="1">
1471                                        </div>
1472                                        <div class="col-xs-2">
1473                                            <button type="button" class="btn btn-link btn-xs">
1474                                                <span class="glyphicon glyphicon-trash"> </span>
1475                                            </button>
1476                                        </div>
1477                                    </div>
1478                                </div>-->
1479                            </div>
1480                            <div class="panel-footer">
1481                                <div class="row text-center">
1482                                    <div class="col-md-12">
1483                                        <button type="button" class="btn btn-success btn-block" id="continuar_to_dades">
1484                                            Checkout
1485                                        </button>
1486                                    </div>
1487                                </div>
1488                            </div>
1489                        </div>
1490                    </div>
1491                </div>
1492            </div>
1493            <!-- end div#mapa_reserva-->
1494        </fieldset>
1495    </form>
1496
1497    <form id="form-datos" action="#" method="post">
1498        <input type="hidden" id="id_refugi" name="id_refugi" value=""/>
1499        <input type="hidden" id="hidden_day" name="hidden_day" value=""/>
1500        <input type="hidden" id="suelo" name="suelo" value=""/>
1501        <!--<span class="info"></span>-->
1502        <fieldset>
1503            <div id="wrapper_calendaris">
1504                <meta http-equiv='cache-control' content='no-cache'>
1505<meta http-equiv='expires' content='0'>
1506<meta http-equiv='pragma' content='no-cache'>
1507
1508<script type="text/javascript">
1509	var str_json = JSON.stringify([]);
1510	var openedDays_10 = JSON.parse(str_json);
1511	var lazyLoad_10 = 1;
1512	var suppressMonthChange_10 = false;
1513	var daysContent_10 = [];
1514	var cama_10;
1515	var suelo_10;
1516	var cama_total_10 = null;
1517	var suelo_total_10 = null;
1518	var dia_seleccionat_10 = '02';
1519	var mes_seleccionat_10 = '10';
1520	var any_seleccionat_10 = '2026';
1521	var ruta_open_date_10 = '';
1522	var ruta_close_date_10 = '';
1523	var calInitialized_10 = false;
1524	var calFetchSeq_10 = 0;
1525
1526	function parseDate(dateString) {
1527		var parts = String(dateString || '').split('/');
1528		if (parts.length !== 3) {
1529			return new Date(NaN);
1530		}
1531
1532		var day = parseInt(parts[0], 10);
1533		var month = parseInt(parts[1], 10);
1534		var year = parseInt(parts[2], 10);
1535
1536		if (parts[2].length === 2) {
1537			year = 2000 + year;
1538		}
1539
1540		return new Date(year, month - 1, day);
1541	}
1542
1543	function ltrim(str, chars) {
1544		chars = chars || "\\s";
1545		return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
1546	}
1547
1548	function addZeros_10(n) {
1549		n = parseInt(n, 10);
1550		if (isNaN(n)) {
1551			return '00';
1552		}
1553		return (n < 10) ? '0' + n : String(n);
1554	}
1555
1556	function pickDay_10(dateText, inst) {
1557		var normalizedText = dateText;
1558
1559		if (inst && inst.selectedYear) {
1560			var day = inst.selectedDay;
1561			var month = inst.selectedMonth + 1;
1562			var year = inst.selectedYear;
1563			normalizedText =
1564				(day < 10 ? '0' : '') + day + '/' +
1565				(month < 10 ? '0' : '') + month + '/' +
1566				year;
1567		}
1568
1569		var openRaw = '';
1570		var closeRaw = '';
1571		var canSelect = true;
1572
1573		if (openRaw && closeRaw) {
1574			var selectedDate = parseDate(normalizedText);
1575			var openDate = parseDate(openRaw);
1576			var closeDate = parseDate(closeRaw);
1577			if (!isNaN(openDate.getTime()) && !isNaN(closeDate.getTime())) {
1578				canSelect = selectedDate >= openDate && selectedDate <= closeDate;
1579			}
1580		}
1581
1582		if (canSelect) {
1583			if (typeof syncMapFromRefugiCalendar === 'function') {
1584				syncMapFromRefugiCalendar(normalizedText, 10);
1585			} else {
1586				$('#data_reserva').val(normalizedText);
1587				my_day = normalizedText;
1588				addClickListenerSelectRefugi(10);
1589			}
1590		}
1591	}
1592
1593	function dataDay_10(date_10) {
1594		var openRaw = '';
1595		var closeRaw = '';
1596
1597		if (openRaw && closeRaw) {
1598			var openDate = parseDate(openRaw);
1599			var closeDate = parseDate(closeRaw);
1600
1601			if (!isNaN(openDate.getTime()) && !isNaN(closeDate.getTime())) {
1602				if (date_10 < openDate || date_10 > closeDate) {
1603					return [false, '', 'Ruta no activa'];
1604				}
1605			}
1606		}
1607
1608		if (openedDays_10 && openedDays_10.length > 0) {
1609			for (var i = 0; i < openedDays_10.length; i++) {
1610				if (
1611					parseInt(date_10.getMonth() + 1, 10) == parseInt(openedDays_10[i].month, 10)
1612					&& parseInt(date_10.getDate(), 10) == parseInt(openedDays_10[i].day, 10)
1613					&& parseInt(date_10.getFullYear(), 10) == parseInt(openedDays_10[i].year, 10)
1614				) {
1615					var day_class = '';
1616					var day_focus_text = '';
1617					switch (parseInt(openedDays_10[i].estat, 10)) {
1618						case 0: //tancat
1619							break;
1620						case 1: //verd
1621							day_class = 'datepick-open-day';
1622							day_focus_text = 'obert';
1623							break;
1624						case 2: //vermell
1625							day_class = 'datepick-complet-day';
1626							day_focus_text = 'complet';
1627							break;
1628						case 3: //groc q ara no el fem servir i posem verd
1629							day_class = 'datepick-open-day';
1630							day_focus_text = 'obert';
1631							break;
1632						case 4: //tronja
1633							day_class = 'datepick-comented-day';
1634							day_focus_text = 'hi ha un comentari restrictiu';
1635							break;
1636					}
1637
1638					return [true, day_class, day_focus_text];
1639				}
1640			}
1641		}
1642		return [true, '', 'tancat'];
1643	}
1644
1645	function getDatesMes_10(year_10, month_10) {
1646		if (suppressMonthChange_10) {
1647			return;
1648		}
1649		fetchDatesMes_10(year_10, month_10);
1650	}
1651
1652	function initCalendari_10(defaultData_10) {
1653		if (calInitialized_10) {
1654			return;
1655		}
1656
1657		var datepickerLocale_10 = 'ca';
1658		if (datepickerLocale_10 === 'en' && $.datepicker.regional['en-GB']) {
1659			datepickerLocale_10 = 'en-GB';
1660		}
1661
1662		$.datepicker.setDefaults($.datepicker.regional[datepickerLocale_10] || $.datepicker.regional['ca'] || {});
1663		$("#calendari_10").datepicker({
1664			changeMonth: true,
1665			changeYear: true,
1666			onChangeMonthYear: getDatesMes_10,
1667			prevText: '< ',
1668			todayText: 'M yyyy',
1669			nextText: ' >',
1670			commandsAsDateFormat: true,
1671			onSelect: pickDay_10,
1672			beforeShowDay: dataDay_10,
1673			defaultDate: defaultData_10,
1674			minDate: "0d",
1675			yearRange: 'c:c+1'
1676		});
1677		calInitialized_10 = true;
1678	}
1679
1680	function redrawCalendari_10() {
1681		var $cal = $("#calendari_10");
1682		if (!$cal.hasClass('hasDatepicker')) {
1683			return;
1684		}
1685		// Prefer refresh; fall back to forcing a redraw via setDate of current view.
1686		try {
1687			$cal.datepicker('refresh');
1688		} catch (e) {
1689			var inst = $.datepicker._getInst($cal[0]);
1690			if (inst) {
1691				$.datepicker._updateDatepicker(inst);
1692			}
1693		}
1694	}
1695
1696	function fetchDatesMes_10(year_10, month_10, done_10) {
1697		$("#loading_10").empty().html('<img src="/img/admin/ajax-loader.gif" alt="" />');
1698
1699		openedDays_10 = [];
1700		redrawCalendari_10();
1701
1702		month_10 = addZeros_10(month_10);
1703		mes_seleccionat_10 = month_10;
1704		any_seleccionat_10 = String(year_10);
1705
1706		var seq_10 = ++calFetchSeq_10;
1707
1708		$.getJSON(
1709			'/calendari/get_estat_mes/10/' + mes_seleccionat_10 + '/' + any_seleccionat_10,
1710			function (data_10) {
1711				if (seq_10 !== calFetchSeq_10) {
1712					return;
1713				}
1714				processData_10(data_10);
1715			}
1716		).fail(function () {
1717			if (seq_10 !== calFetchSeq_10) {
1718				return;
1719			}
1720			openedDays_10 = [];
1721			redrawCalendari_10();
1722		}).always(function () {
1723			if (seq_10 === calFetchSeq_10) {
1724				$("#loading_10").empty();
1725			}
1726			if (typeof done_10 === 'function') {
1727				done_10();
1728			}
1729		});
1730	}
1731
1732	function processData_10(data_10) {
1733		if (data_10 && data_10.length !== undefined) {
1734			if (0) {
1735				cama_total_10 = 74;
1736				suelo_total_10 = 0;
1737			}
1738			openedDays_10 = data_10;
1739		} else {
1740			openedDays_10 = [];
1741		}
1742
1743		var defaultData_10 = new Date(
1744			parseInt(any_seleccionat_10, 10),
1745			parseInt(mes_seleccionat_10, 10) - 1,
1746			1
1747		);
1748
1749		$("#calendari_10").show();
1750
1751		if (!calInitialized_10) {
1752			suppressMonthChange_10 = true;
1753			initCalendari_10(defaultData_10);
1754			suppressMonthChange_10 = false;
1755		} else {
1756			// Month already changed by the datepicker UI; only re-apply day colours.
1757			redrawCalendari_10();
1758		}
1759	}
1760
1761	$(document).ready(function () {
1762		var defaultData_10 = new Date(
1763			parseInt(any_seleccionat_10, 10),
1764			parseInt(mes_seleccionat_10, 10) - 1,
1765			parseInt(dia_seleccionat_10, 10)
1766		);
1767
1768		if (isNaN(defaultData_10.getTime())) {
1769			defaultData_10 = new Date();
1770		}
1771
1772		if (lazyLoad_10) {
1773			$("#loading_10").empty().html('<img src="/img/admin/ajax-loader.gif" alt="" />');
1774			// Paint an empty calendar immediately so the layout is stable,
1775			// then fill colours when AJAX returns.
1776			suppressMonthChange_10 = true;
1777			initCalendari_10(defaultData_10);
1778			suppressMonthChange_10 = false;
1779
1780			window['clientLazyLoadCal_10'] = function (done) {
1781				fetchDatesMes_10(
1782					any_seleccionat_10,
1783					mes_seleccionat_10,
1784					done
1785				);
1786			};
1787			return;
1788		}
1789
1790		initCalendari_10(defaultData_10);
1791	});
1792</script>
1792
1793
1794<div class="calendar-container-left">
1795
1796    <span id="chivato_10"></span>
1797    <h5>AMITGES</h5>
1798    <div id="loading_10"></div>
1799    <div id="calendari_10"></div>
1800    <div class="inner-nav">
1801        <span class="clearFix">&nbsp;</span>
1802    </div>
1803</div><!-- end of div#calendar-container -->
1804<meta http-equiv='cache-control' content='no-cache'>
1805<meta http-equiv='expires' content='0'>
1806<meta http-equiv='pragma' content='no-cache'>
1807
1808<script type="text/javascript">
1809	var str_json = JSON.stringify([]);
1810	var openedDays_155 = JSON.parse(str_json);
1811	var lazyLoad_155 = 1;
1812	var suppressMonthChange_155 = false;
1813	var daysContent_155 = [];
1814	var cama_155;
1815	var suelo_155;
1816	var cama_total_155 = null;
1817	var suelo_total_155 = null;
1818	var dia_seleccionat_155 = '02';
1819	var mes_seleccionat_155 = '10';
1820	var any_seleccionat_155 = '2026';
1821	var ruta_open_date_155 = '';
1822	var ruta_close_date_155 = '';
1823	var calInitialized_155 = false;
1824	var calFetchSeq_155 = 0;
1825
1826	function parseDate(dateString) {
1827		var parts = String(dateString || '').split('/');
1828		if (parts.length !== 3) {
1829			return new Date(NaN);
1830		}
1831
1832		var day = parseInt(parts[0], 10);
1833		var month = parseInt(parts[1], 10);
1834		var year = parseInt(parts[2], 10);
1835
1836		if (parts[2].length === 2) {
1837			year = 2000 + year;
1838		}
1839
1840		return new Date(year, month - 1, day);
1841	}
1842
1843	function ltrim(str, chars) {
1844		chars = chars || "\\s";
1845		return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
1846	}
1847
1848	function addZeros_155(n) {
1849		n = parseInt(n, 10);
1850		if (isNaN(n)) {
1851			return '00';
1852		}
1853		return (n < 10) ? '0' + n : String(n);
1854	}
1855
1856	function pickDay_155(dateText, inst) {
1857		var normalizedText = dateText;
1858
1859		if (inst && inst.selectedYear) {
1860			var day = inst.selectedDay;
1861			var month = inst.selectedMonth + 1;
1862			var year = inst.selectedYear;
1863			normalizedText =
1864				(day < 10 ? '0' : '') + day + '/' +
1865				(month < 10 ? '0' : '') + month + '/' +
1866				year;
1867		}
1868
1869		var openRaw = '';
1870		var closeRaw = '';
1871		var canSelect = true;
1872
1873		if (openRaw && closeRaw) {
1874			var selectedDate = parseDate(normalizedText);
1875			var openDate = parseDate(openRaw);
1876			var closeDate = parseDate(closeRaw);
1877			if (!isNaN(openDate.getTime()) && !isNaN(closeDate.getTime())) {
1878				canSelect = selectedDate >= openDate && selectedDate <= closeDate;
1879			}
1880		}
1881
1882		if (canSelect) {
1883			if (typeof syncMapFromRefugiCalendar === 'function') {
1884				syncMapFromRefugiCalendar(normalizedText, 155);
1885			} else {
1886				$('#data_reserva').val(normalizedText);
1887				my_day = normalizedText;
1888				addClickListenerSelectRefugi(155);
1889			}
1890		}
1891	}
1892
1893	function dataDay_155(date_155) {
1894		var openRaw = '';
1895		var closeRaw = '';
1896
1897		if (openRaw && closeRaw) {
1898			var openDate = parseDate(openRaw);
1899			var closeDate = parseDate(closeRaw);
1900
1901			if (!isNaN(openDate.getTime()) && !isNaN(closeDate.getTime())) {
1902				if (date_155 < openDate || date_155 > closeDate) {
1903					return [false, '', 'Ruta no activa'];
1904				}
1905			}
1906		}
1907
1908		if (openedDays_155 && openedDays_155.length > 0) {
1909			for (var i = 0; i < openedDays_155.length; i++) {
1910				if (
1911					parseInt(date_155.getMonth() + 1, 10) == parseInt(openedDays_155[i].month, 10)
1912					&& parseInt(date_155.getDate(), 10) == parseInt(openedDays_155[i].day, 10)
1913					&& parseInt(date_155.getFullYear(), 10) == parseInt(openedDays_155[i].year, 10)
1914				) {
1915					var day_class = '';
1916					var day_focus_text = '';
1917					switch (parseInt(openedDays_155[i].estat, 10)) {
1918						case 0: //tancat
1919							break;
1920						case 1: //verd
1921							day_class = 'datepick-open-day';
1922							day_focus_text = 'obert';
1923							break;
1924						case 2: //vermell
1925							day_class = 'datepick-complet-day';
1926							day_focus_text = 'complet';
1927							break;
1928						case 3: //groc q ara no el fem servir i posem verd
1929							day_class = 'datepick-open-day';
1930							day_focus_text = 'obert';
1931							break;
1932						case 4: //tronja
1933							day_class = 'datepick-comented-day';
1934							day_focus_text = 'hi ha un comentari restrictiu';
1935							break;
1936					}
1937
1938					return [true, day_class, day_focus_text];
1939				}
1940			}
1941		}
1942		return [true, '', 'tancat'];
1943	}
1944
1945	function getDatesMes_155(year_155, month_155) {
1946		if (suppressMonthChange_155) {
1947			return;
1948		}
1949		fetchDatesMes_155(year_155, month_155);
1950	}
1951
1952	function initCalendari_155(defaultData_155) {
1953		if (calInitialized_155) {
1954			return;
1955		}
1956
1957		var datepickerLocale_155 = 'ca';
1958		if (datepickerLocale_155 === 'en' && $.datepicker.regional['en-GB']) {
1959			datepickerLocale_155 = 'en-GB';
1960		}
1961
1962		$.datepicker.setDefaults($.datepicker.regional[datepickerLocale_155] || $.datepicker.regional['ca'] || {});
1963		$("#calendari_155").datepicker({
1964			changeMonth: true,
1965			changeYear: true,
1966			onChangeMonthYear: getDatesMes_155,
1967			prevText: '< ',
1968			todayText: 'M yyyy',
1969			nextText: ' >',
1970			commandsAsDateFormat: true,
1971			onSelect: pickDay_155,
1972			beforeShowDay: dataDay_155,
1973			defaultDate: defaultData_155,
1974			minDate: "0d",
1975			yearRange: 'c:c+1'
1976		});
1977		calInitialized_155 = true;
1978	}
1979
1980	function redrawCalendari_155() {
1981		var $cal = $("#calendari_155");
1982		if (!$cal.hasClass('hasDatepicker')) {
1983			return;
1984		}
1985		// Prefer refresh; fall back to forcing a redraw via setDate of current view.
1986		try {
1987			$cal.datepicker('refresh');
1988		} catch (e) {
1989			var inst = $.datepicker._getInst($cal[0]);
1990			if (inst) {
1991				$.datepicker._updateDatepicker(inst);
1992			}
1993		}
1994	}
1995
1996	function fetchDatesMes_155(year_155, month_155, done_155) {
1997		$("#loading_155").empty().html('<img src="/img/admin/ajax-loader.gif" alt="" />');
1998
1999		openedDays_155 = [];
2000		redrawCalendari_155();
2001
2002		month_155 = addZeros_155(month_155);
2003		mes_seleccionat_155 = month_155;
2004		any_seleccionat_155 = String(year_155);
2005
2006		var seq_155 = ++calFetchSeq_155;
2007
2008		$.getJSON(
2009			'/calendari/get_estat_mes/155/' + mes_seleccionat_155 + '/' + any_seleccionat_155,
2010			function (data_155) {
2011				if (seq_155 !== calFetchSeq_155) {
2012					return;
2013				}
2014				processData_155(data_155);
2015			}
2016		).fail(function () {
2017			if (seq_155 !== calFetchSeq_155) {
2018				return;
2019			}
2020			openedDays_155 = [];
2021			redrawCalendari_155();
2022		}).always(function () {
2023			if (seq_155 === calFetchSeq_155) {
2024				$("#loading_155").empty();
2025			}
2026			if (typeof done_155 === 'function') {
2027				done_155();
2028			}
2029		});
2030	}
2031
2032	function processData_155(data_155) {
2033		if (data_155 && data_155.length !== undefined) {
2034			if (0) {
2035				cama_total_155 = 8;
2036				suelo_total_155 = 8;
2037			}
2038			openedDays_155 = data_155;
2039		} else {
2040			openedDays_155 = [];
2041		}
2042
2043		var defaultData_155 = new Date(
2044			parseInt(any_seleccionat_155, 10),
2045			parseInt(mes_seleccionat_155, 10) - 1,
2046			1
2047		);
2048
2049		$("#calendari_155").show();
2050
2051		if (!calInitialized_155) {
2052			suppressMonthChange_155 = true;
2053			initCalendari_155(defaultData_155);
2054			suppressMonthChange_155 = false;
2055		} else {
2056			// Month already changed by the datepicker UI; only re-apply day colours.
2057			redrawCalendari_155();
2058		}
2059	}
2060
2061	$(document).ready(function () {
2062		var defaultData_155 = new Date(
2063			parseInt(any_seleccionat_155, 10),
2064			parseInt(mes_seleccionat_155, 10) - 1,
2065			parseInt(dia_seleccionat_155, 10)
2066		);
2067
2068		if (isNaN(defaultData_155.getTime())) {
2069			defaultData_155 = new Date();
2070		}
2071
2072		if (lazyLoad_155) {
2073			$("#loading_155").empty().html('<img src="/img/admin/ajax-loader.gif" alt="" />');
2074			// Paint an empty calendar immediately so the layout is stable,
2075			// then fill colours when AJAX returns.
2076			suppressMonthChange_155 = true;
2077			initCalendari_155(defaultData_155);
2078			suppressMonthChange_155 = false;
2079
2080			window['clientLazyLoadCal_155'] = function (done) {
2081				fetchDatesMes_155(
2082					any_seleccionat_155,
2083					mes_seleccionat_155,
2084					done
2085				);
2086			};
2087			return;
2088		}
2089
2090		initCalendari_155(defaultData_155);
2091	});
2092</script>
2092
2093
2094<div class="calendar-container-left">
2095
2096    <span id="chivato_155"></span>
2097    <h5>Aran Hostal - CEC</h5>
2098    <div id="loading_155"></div>
2099    <div id="calendari_155"></div>
2100    <div class="inner-nav">
2101        <span class="clearFix">&nbsp;</span>
2102    </div>
2103</div><!-- end of div#calendar-container -->
2104<meta http-equiv='cache-control' content='no-cache'>
2105<meta http-equiv='expires' content='0'>
2106<meta http-equiv='pragma' content='no-cache'>
2107
2108<script type="text/javascript">
2109	var str_json = JSON.stringify([]);
2110	var openedDays_197 = JSON.parse(str_json);
2111	var lazyLoad_197 = 1;
2112	var suppressMonthChange_197 = false;
2113	var daysContent_197 = [];
2114	var cama_197;
2115	var suelo_197;
2116	var cama_total_197 = null;
2117	var suelo_total_197 = null;
2118	var dia_seleccionat_197 = '02';
2119	var mes_seleccionat_197 = '10';
2120	var any_seleccionat_197 = '2026';
2121	var ruta_open_date_197 = '';
2122	var ruta_close_date_197 = '';
2123	var calInitialized_197 = false;
2124	var calFetchSeq_197 = 0;
2125
2126	function parseDate(dateString) {
2127		var parts = String(dateString || '').split('/');
2128		if (parts.length !== 3) {
2129			return new Date(NaN);
2130		}
2131
2132		var day = parseInt(parts[0], 10);
2133		var month = parseInt(parts[1], 10);
2134		var year = parseInt(parts[2], 10);
2135
2136		if (parts[2].length === 2) {
2137			year = 2000 + year;
2138		}
2139
2140		return new Date(year, month - 1, day);
2141	}
2142
2143	function ltrim(str, chars) {
2144		chars = chars || "\\s";
2145		return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
2146	}
2147
2148	function addZeros_197(n) {
2149		n = parseInt(n, 10);
2150		if (isNaN(n)) {
2151			return '00';
2152		}
2153		return (n < 10) ? '0' + n : String(n);
2154	}
2155
2156	function pickDay_197(dateText, inst) {
2157		var normalizedText = dateText;
2158
2159		if (inst && inst.selectedYear) {
2160			var day = inst.selectedDay;
2161			var month = inst.selectedMonth + 1;
2162			var year = inst.selectedYear;
2163			normalizedText =
2164				(day < 10 ? '0' : '') + day + '/' +
2165				(month < 10 ? '0' : '') + month + '/' +
2166				year;
2167		}
2168
2169		var openRaw = '';
2170		var closeRaw = '';
2171		var canSelect = true;
2172
2173		if (openRaw && closeRaw) {
2174			var selectedDate = parseDate(normalizedText);
2175			var openDate = parseDate(openRaw);
2176			var closeDate = parseDate(closeRaw);
2177			if (!isNaN(openDate.getTime()) && !isNaN(closeDate.getTime())) {
2178				canSelect = selectedDate >= openDate && selectedDate <= closeDate;
2179			}
2180		}
2181
2182		if (canSelect) {
2183			if (typeof syncMapFromRefugiCalendar === 'function') {
2184				syncMapFromRefugiCalendar(normalizedText, 197);
2185			} else {
2186				$('#data_reserva').val(normalizedText);
2187				my_day = normalizedText;
2188				addClickListenerSelectRefugi(197);
2189			}
2190		}
2191	}
2192
2193	function dataDay_197(date_197) {
2194		var openRaw = '';
2195		var closeRaw = '';
2196
2197		if (openRaw && closeRaw) {
2198			var openDate = parseDate(openRaw);
2199			var closeDate = parseDate(closeRaw);
2200
2201			if (!isNaN(openDate.getTime()) && !isNaN(closeDate.getTime())) {
2202				if (date_197 < openDate || date_197 > closeDate) {
2203					return [false, '', 'Ruta no activa'];
2204				}
2205			}
2206		}
2207
2208		if (openedDays_197 && openedDays_197.length > 0) {
2209			for (var i = 0; i < openedDays_197.length; i++) {
2210				if (
2211					parseInt(date_197.getMonth() + 1, 10) == parseInt(openedDays_197[i].month, 10)
2212					&& parseInt(date_197.getDate(), 10) == parseInt(openedDays_197[i].day, 10)
2213					&& parseInt(date_197.getFullYear(), 10) == parseInt(openedDays_197[i].year, 10)
2214				) {
2215					var day_class = '';
2216					var day_focus_text = '';
2217					switch (parseInt(openedDays_197[i].estat, 10)) {
2218						case 0: //tancat
2219							break;
2220						case 1: //verd
2221							day_class = 'datepick-open-day';
2222							day_focus_text = 'obert';
2223							break;
2224						case 2: //vermell
2225							day_class = 'datepick-complet-day';
2226							day_focus_text = 'complet';
2227							break;
2228						case 3: //groc q ara no el fem servir i posem verd
2229							day_class = 'datepick-open-day';
2230							day_focus_text = 'obert';
2231							break;
2232						case 4: //tronja
2233							day_class = 'datepick-comented-day';
2234							day_focus_text = 'hi ha un comentari restrictiu';
2235							break;
2236					}
2237
2238					return [true, day_class, day_focus_text];
2239				}
2240			}
2241		}
2242		return [true, '', 'tancat'];
2243	}
2244
2245	function getDatesMes_197(year_197, month_197) {
2246		if (suppressMonthChange_197) {
2247			return;
2248		}
2249		fetchDatesMes_197(year_197, month_197);
2250	}
2251
2252	function initCalendari_197(defaultData_197) {
2253		if (calInitialized_197) {
2254			return;
2255		}
2256
2257		var datepickerLocale_197 = 'ca';
2258		if (datepickerLocale_197 === 'en' && $.datepicker.regional['en-GB']) {
2259			datepickerLocale_197 = 'en-GB';
2260		}
2261
2262		$.datepicker.setDefaults($.datepicker.regional[datepickerLocale_197] || $.datepicker.regional['ca'] || {});
2263		$("#calendari_197").datepicker({
2264			changeMonth: true,
2265			changeYear: true,
2266			onChangeMonthYear: getDatesMes_197,
2267			prevText: '< ',
2268			todayText: 'M yyyy',
2269			nextText: ' >',
2270			commandsAsDateFormat: true,
2271			onSelect: pickDay_197,
2272			beforeShowDay: dataDay_197,
2273			defaultDate: defaultData_197,
2274			minDate: "0d",
2275			yearRange: 'c:c+1'
2276		});
2277		calInitialized_197 = true;
2278	}
2279
2280	function redrawCalendari_197() {
2281		var $cal = $("#calendari_197");
2282		if (!$cal.hasClass('hasDatepicker')) {
2283			return;
2284		}
2285		// Prefer refresh; fall back to forcing a redraw via setDate of current view.
2286		try {
2287			$cal.datepicker('refresh');
2288		} catch (e) {
2289			var inst = $.datepicker._getInst($cal[0]);
2290			if (inst) {
2291				$.datepicker._updateDatepicker(inst);
2292			}
2293		}
2294	}
2295
2296	function fetchDatesMes_197(year_197, month_197, done_197) {
2297		$("#loading_197").empty().html('<img src="/img/admin/ajax-loader.gif" alt="" />');
2298
2299		openedDays_197 = [];
2300		redrawCalendari_197();
2301
2302		month_197 = addZeros_197(month_197);
2303		mes_seleccionat_197 = month_197;
2304		any_seleccionat_197 = String(year_197);
2305
2306		var seq_197 = ++calFetchSeq_197;
2307
2308		$.getJSON(
2309			'/calendari/get_estat_mes/197/' + mes_seleccionat_197 + '/' + any_seleccionat_197,
2310			function (data_197) {
2311				if (seq_197 !== calFetchSeq_197) {
2312					return;
2313				}
2314				processData_197(data_197);
2315			}
2316		).fail(function () {
2317			if (seq_197 !== calFetchSeq_197) {
2318				return;
2319			}
2320			openedDays_197 = [];
2321			redrawCalendari_197();
2322		}).always(function () {
2323			if (seq_197 === calFetchSeq_197) {
2324				$("#loading_197").empty();
2325			}
2326			if (typeof done_197 === 'function') {
2327				done_197();
2328			}
2329		});
2330	}
2331
2332	function processData_197(data_197) {
2333		if (data_197 && data_197.length !== undefined) {
2334			if (0) {
2335				cama_total_197 = 25;
2336				suelo_total_197 = 0;
2337			}
2338			openedDays_197 = data_197;
2339		} else {
2340			openedDays_197 = [];
2341		}
2342
2343		var defaultData_197 = new Date(
2344			parseInt(any_seleccionat_197, 10),
2345			parseInt(mes_seleccionat_197, 10) - 1,
2346			1
2347		);
2348
2349		$("#calendari_197").show();
2350
2351		if (!calInitialized_197) {
2352			suppressMonthChange_197 = true;
2353			initCalendari_197(defaultData_197);
2354			suppressMonthChange_197 = false;
2355		} else {
2356			// Month already changed by the datepicker UI; only re-apply day colours.
2357			redrawCalendari_197();
2358		}
2359	}
2360
2361	$(document).ready(function () {
2362		var defaultData_197 = new Date(
2363			parseInt(any_seleccionat_197, 10),
2364			parseInt(mes_seleccionat_197, 10) - 1,
2365			parseInt(dia_seleccionat_197, 10)
2366		);
2367
2368		if (isNaN(defaultData_197.getTime())) {
2369			defaultData_197 = new Date();
2370		}
2371
2372		if (lazyLoad_197) {
2373			$("#loading_197").empty().html('<img src="/img/admin/ajax-loader.gif" alt="" />');
2374			// Paint an empty calendar immediately so the layout is stable,
2375			// then fill colours when AJAX returns.
2376			suppressMonthChange_197 = true;
2377			initCalendari_197(defaultData_197);
2378			suppressMonthChange_197 = false;
2379
2380			window['clientLazyLoadCal_197'] = function (done) {
2381				fetchDatesMes_197(
2382					any_seleccionat_197,
2383					mes_seleccionat_197,
2384					done
2385				);
2386			};
2387			return;
2388		}
2389
2390		initCalendari_197(defaultData_197);
2391	});
2392</script>
2392
2393
2394<div class="calendar-container-left">
2395
2396    <span id="chivato_197"></span>
2397    <h5>ARTIGA DE LIN</h5>
2398    <div id="loading_197"></div>
2399    <div id="calendari_197"></div>
2400    <div class="inner-nav">
2401        <span class="clearFix">&nbsp;</span>
2402    </div>
2403</div><!-- end of div#calendar-container -->
2404<meta http-equiv='cache-control' content='no-cache'>
2405<meta http-equiv='expires' content='0'>
2406<meta http-equiv='pragma' content='no-cache'>
2407
2408<script type="text/javascript">
2409	var str_json = JSON.stringify([]);
2410	var openedDays_140 = JSON.parse(str_json);
2411	var lazyLoad_140 = 1;
2412	var suppressMonthChange_140 = false;
2413	var daysContent_140 = [];
2414	var cama_140;
2415	var suelo_140;
2416	var cama_total_140 = null;
2417	var suelo_total_140 = null;
2418	var dia_seleccionat_140 = '02';
2419	var mes_seleccionat_140 = '10';
2420	var any_seleccionat_140 = '2026';
2421	var ruta_open_date_140 = '';
2422	var ruta_close_date_140 = '';
2423	var calInitialized_140 = false;
2424	var calFetchSeq_140 = 0;
2425
2426	function parseDate(dateString) {
2427		var parts = String(dateString || '').split('/');
2428		if (parts.length !== 3) {
2429			return new Date(NaN);
2430		}
2431
2432		var day = parseInt(parts[0], 10);
2433		var month = parseInt(parts[1], 10);
2434		var year = parseInt(parts[2], 10);
2435
2436		if (parts[2].length === 2) {
2437			year = 2000 + year;
2438		}
2439
2440		return new Date(year, month - 1, day);
2441	}
2442
2443	function ltrim(str, chars) {
2444		chars = chars || "\\s";
2445		return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
2446	}
2447
2448	function addZeros_140(n) {
2449		n = parseInt(n, 10);
2450		if (isNaN(n)) {
2451			return '00';
2452		}
2453		return (n < 10) ? '0' + n : String(n);
2454	}
2455
2456	function pickDay_140(dateText, inst) {
2457		var normalizedText = dateText;
2458
2459		if (inst && inst.selectedYear) {
2460			var day = inst.selectedDay;
2461			var month = inst.selectedMonth + 1;
2462			var year = inst.selectedYear;
2463			normalizedText =
2464				(day < 10 ? '0' : '') + day + '/' +
2465				(month < 10 ? '0' : '') + month + '/' +
2466				year;
2467		}
2468
2469		var openRaw = '';
2470		var closeRaw = '';
2471		var canSelect = true;
2472
2473		if (openRaw && closeRaw) {
2474			var selectedDate = parseDate(normalizedText);
2475			var openDate = parseDate(openRaw);
2476			var closeDate = parseDate(closeRaw);
2477			if (!isNaN(openDate.getTime()) && !isNaN(closeDate.getTime())) {
2478				canSelect = selectedDate >= openDate && selectedDate <= closeDate;
2479			}
2480		}
2481
2482		if (canSelect) {
2483			if (typeof syncMapFromRefugiCalendar === 'function') {
2484				syncMapFromRefugiCalendar(normalizedText, 140);
2485			} else {
2486				$('#data_reserva').val(normalizedText);
2487				my_day = normalizedText;
2488				addClickListenerSelectRefugi(140);
2489			}
2490		}
2491	}
2492
2493	function dataDay_140(date_140) {
2494		var openRaw = '';
2495		var closeRaw = '';
2496
2497		if (openRaw && closeRaw) {
2498			var openDate = parseDate(openRaw);
2499			var closeDate = parseDate(closeRaw);
2500
2501			if (!isNaN(openDate.getTime()) && !isNaN(closeDate.getTime())) {
2502				if (date_140 < openDate || date_140 > closeDate) {
2503					return [false, '', 'Ruta no activa'];
2504				}
2505			}
2506		}
2507
2508		if (openedDays_140 && openedDays_140.length > 0) {
2509			for (var i = 0; i < openedDays_140.length; i++) {
2510				if (
2511					parseInt(date_140.getMonth() + 1, 10) == parseInt(openedDays_140[i].month, 10)
2512					&& parseInt(date_140.getDate(), 10) == parseInt(openedDays_140[i].day, 10)
2513					&& parseInt(date_140.getFullYear(), 10) == parseInt(openedDays_140[i].year, 10)
2514				) {
2515					var day_class = '';
2516					var day_focus_text = '';
2517					switch (parseInt(openedDays_140[i].estat, 10)) {
2518						case 0: //tancat
2519							break;
2520						case 1: //verd
2521							day_class = 'datepick-open-day';
2522							day_focus_text = 'obert';
2523							break;
2524						case 2: //vermell
2525							day_class = 'datepick-complet-day';
2526							day_focus_text = 'complet';
2527							break;
2528						case 3: //groc q ara no el fem servir i posem verd
2529							day_class = 'datepick-open-day';
2530							day_focus_text = 'obert';
2531							break;
2532						case 4: //tronja
2533							day_class = 'datepick-comented-day';
2534							day_focus_text = 'hi ha un comentari restrictiu';
2535							break;
2536					}
2537
2538					return [true, day_class, day_focus_text];
2539				}
2540			}
2541		}
2542		return [true, '', 'tancat'];
2543	}
2544
2545	function getDatesMes_140(year_140, month_140) {
2546		if (suppressMonthChange_140) {
2547			return;
2548		}
2549		fetchDatesMes_140(year_140, month_140);
2550	}
2551
2552	function initCalendari_140(defaultData_140) {
2553		if (calInitialized_140) {
2554			return;
2555		}
2556
2557		var datepickerLocale_140 = 'ca';
2558		if (datepickerLocale_140 === 'en' && $.datepicker.regional['en-GB']) {
2559			datepickerLocale_140 = 'en-GB';
2560		}
2561
2562		$.datepicker.setDefaults($.datepicker.regional[datepickerLocale_140] || $.datepicker.regional['ca'] || {});
2563		$("#calendari_140").datepicker({
2564			changeMonth: true,
2565			changeYear: true,
2566			onChangeMonthYear: getDatesMes_140,
2567			prevText: '< ',
2568			todayText: 'M yyyy',
2569			nextText: ' >',
2570			commandsAsDateFormat: true,
2571			onSelect: pickDay_140,
2572			beforeShowDay: dataDay_140,
2573			defaultDate: defaultData_140,
2574			minDate: "0d",
2575			yearRange: 'c:c+1'
2576		});
2577		calInitialized_140 = true;
2578	}
2579
2580	function redrawCalendari_140() {
2581		var $cal = $("#calendari_140");
2582		if (!$cal.hasClass('hasDatepicker')) {
2583			return;
2584		}
2585		// Prefer refresh; fall back to forcing a redraw via setDate of current view.
2586		try {
2587			$cal.datepicker('refresh');
2588		} catch (e) {
2589			var inst = $.datepicker._getInst($cal[0]);
2590			if (inst) {
2591				$.datepicker._updateDatepicker(inst);
2592			}
2593		}
2594	}
2595
2596	function fetchDatesMes_140(year_140, month_140, done_140) {
2597		$("#loading_140").empty().html('<img src="/img/admin/ajax-loader.gif" alt="" />');
2598
2599		openedDays_140 = [];
2600		redrawCalendari_140();
2601
2602		month_140 = addZeros_140(month_140);
2603		mes_seleccionat_140 = month_140;
2604		any_seleccionat_140 = String(year_140);
2605
2606		var seq_140 = ++calFetchSeq_140;
2607
2608		$.getJSON(
2609			'/calendari/get_estat_mes/140/' + mes_seleccionat_140 + '/' + any_seleccionat_140,
2610			function (data_140) {
2611				if (seq_140 !== calFetchSeq_140) {
2612					return;
2613				}
2614				processData_140(data_140);
2615			}
2616		).fail(function () {
2617			if (seq_140 !== calFetchSeq_140) {
2618				return;
2619			}
2620			openedDays_140 = [];
2621			redrawCalendari_140();
2622		}).always(function () {
2623			if (seq_140 === calFetchSeq_140) {
2624				$("#loading_140").empty();
2625			}
2626			if (typeof done_140 === 'function') {
2627				done_140();
2628			}
2629		});
2630	}
2631
2632	function processData_140(data_140) {
2633		if (data_140 && data_140.length !== undefined) {
2634			if (0) {
2635				cama_total_140 = 60;
2636				suelo_total_140 = 0;
2637			}
2638			openedDays_140 = data_140;
2639		} else {
2640			openedDays_140 = [];
2641		}
2642
2643		var defaultData_140 = new Date(
2644			parseInt(any_seleccionat_140, 10),
2645			parseInt(mes_seleccionat_140, 10) - 1,
2646			1
2647		);
2648
2649		$("#calendari_140").show();
2650
2651		if (!calInitialized_140) {
2652			suppressMonthChange_140 = true;
2653			initCalendari_140(defaultData_140);
2654			suppressMonthChange_140 = false;
2655		} else {
2656			// Month already changed by the datepicker UI; only re-apply day colours.
2657			redrawCalendari_140();
2658		}
2659	}
2660
2661	$(document).ready(function () {
2662		var defaultData_140 = new Date(
2663			parseInt(any_seleccionat_140, 10),
2664			parseInt(mes_seleccionat_140, 10) - 1,
2665			parseInt(dia_seleccionat_140, 10)
2666		);
2667
2668		if (isNaN(defaultData_140.getTime())) {
2669			defaultData_140 = new Date();
2670		}
2671
2672		if (lazyLoad_140) {
2673			$("#loading_140").empty().html('<img src="/img/admin/ajax-loader.gif" alt="" />');
2674			// Paint an empty calendar immediately so the layout is stable,
2675			// then fill colours when AJAX returns.
2676			suppressMonthChange_140 = true;
2677			initCalendari_140(defaultData_140);
2678			suppressMonthChange_140 = false;
2679
2680			window['clientLazyLoadCal_140'] = function (done) {
2681				fetchDatesMes_140(
2682					any_seleccionat_140,
2683					mes_seleccionat_140,
2684					done
2685				);
2686			};
2687			return;
2688		}
2689
2690		initCalendari_140(defaultData_140);
2691	});
2692</script>
2692
2693
2694<div class="calendar-container-left">
2695
2696    <span id="chivato_140"></span>
2697    <h5>COLOMERS</h5>
2698    <div id="loading_140"></div>
2699    <div id="calendari_140"></div>
2700    <div class="inner-nav">
2701        <span class="clearFix">&nbsp;</span>
2702    </div>
2703</div><!-- end of div#calendar-container -->
2704<meta http-equiv='cache-control' content='no-cache'>
2705<meta http-equiv='expires' content='0'>
2706<meta http-equiv='pragma' content='no-cache'>
2707
2708<script type="text/javascript">
2709	var str_json = JSON.stringify([]);
2710	var openedDays_141 = JSON.parse(str_json);
2711	var lazyLoad_141 = 1;
2712	var suppressMonthChange_141 = false;
2713	var daysContent_141 = [];
2714	var cama_141;
2715	var suelo_141;
2716	var cama_total_141 = null;
2717	var suelo_total_141 = null;
2718	var dia_seleccionat_141 = '02';
2719	var mes_seleccionat_141 = '10';
2720	var any_seleccionat_141 = '2026';
2721	var ruta_open_date_141 = '';
2722	var ruta_close_date_141 = '';
2723	var calInitialized_141 = false;
2724	var calFetchSeq_141 = 0;
2725
2726	function parseDate(dateString) {
2727		var parts = String(dateString || '').split('/');
2728		if (parts.length !== 3) {
2729			return new Date(NaN);
2730		}
2731
2732		var day = parseInt(parts[0], 10);
2733		var month = parseInt(parts[1], 10);
2734		var year = parseInt(parts[2], 10);
2735
2736		if (parts[2].length === 2) {
2737			year = 2000 + year;
2738		}
2739
2740		return new Date(year, month - 1, day);
2741	}
2742
2743	function ltrim(str, chars) {
2744		chars = chars || "\\s";
2745		return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
2746	}
2747
2748	function addZeros_141(n) {
2749		n = parseInt(n, 10);
2750		if (isNaN(n)) {
2751			return '00';
2752		}
2753		return (n < 10) ? '0' + n : String(n);
2754	}
2755
2756	function pickDay_141(dateText, inst) {
2757		var normalizedText = dateText;
2758
2759		if (inst && inst.selectedYear) {
2760			var day = inst.selectedDay;
2761			var month = inst.selectedMonth + 1;
2762			var year = inst.selectedYear;
2763			normalizedText =
2764				(day < 10 ? '0' : '') + day + '/' +
2765				(month < 10 ? '0' : '') + month + '/' +
2766				year;
2767		}
2768
2769		var openRaw = '';
2770		var closeRaw = '';
2771		var canSelect = true;
2772
2773		if (openRaw && closeRaw) {
2774			var selectedDate = parseDate(normalizedText);
2775			var openDate = parseDate(openRaw);
2776			var closeDate = parseDate(closeRaw);
2777			if (!isNaN(openDate.getTime()) && !isNaN(closeDate.getTime())) {
2778				canSelect = selectedDate >= openDate && selectedDate <= closeDate;
2779			}
2780		}
2781
2782		if (canSelect) {
2783			if (typeof syncMapFromRefugiCalendar === 'function') {
2784				syncMapFromRefugiCalendar(normalizedText, 141);
2785			} else {
2786				$('#data_reserva').val(normalizedText);
2787				my_day = normalizedText;
2788				addClickListenerSelectRefugi(141);
2789			}
2790		}
2791	}
2792
2793	function dataDay_141(date_141) {
2794		var openRaw = '';
2795		var closeRaw = '';
2796
2797		if (openRaw && closeRaw) {
2798			var openDate = parseDate(openRaw);
2799			var closeDate = parseDate(closeRaw);
2800
2801			if (!isNaN(openDate.getTime()) && !isNaN(closeDate.getTime())) {
2802				if (date_141 < openDate || date_141 > closeDate) {
2803					return [false, '', 'Ruta no activa'];
2804				}
2805			}
2806		}
2807
2808		if (openedDays_141 && openedDays_141.length > 0) {
2809			for (var i = 0; i < openedDays_141.length; i++) {
2810				if (
2811					parseInt(date_141.getMonth() + 1, 10) == parseInt(openedDays_141[i].month, 10)
2812					&& parseInt(date_141.getDate(), 10) == parseInt(openedDays_141[i].day, 10)
2813					&& parseInt(date_141.getFullYear(), 10) == parseInt(openedDays_141[i].year, 10)
2814				) {
2815					var day_class = '';
2816					var day_focus_text = '';
2817					switch (parseInt(openedDays_141[i].estat, 10)) {
2818						case 0: //tancat
2819							break;
2820						case 1: //verd
2821							day_class = 'datepick-open-day';
2822							day_focus_text = 'obert';
2823							break;
2824						case 2: //vermell
2825							day_class = 'datepick-complet-day';
2826							day_focus_text = 'complet';
2827							break;
2828						case 3: //groc q ara no el fem servir i posem verd
2829							day_class = 'datepick-open-day';
2830							day_focus_text = 'obert';
2831							break;
2832						case 4: //tronja
2833							day_class = 'datepick-comented-day';
2834							day_focus_text = 'hi ha un comentari restrictiu';
2835							break;
2836					}
2837
2838					return [true, day_class, day_focus_text];
2839				}
2840			}
2841		}
2842		return [true, '', 'tancat'];
2843	}
2844
2845	function getDatesMes_141(year_141, month_141) {
2846		if (suppressMonthChange_141) {
2847			return;
2848		}
2849		fetchDatesMes_141(year_141, month_141);
2850	}
2851
2852	function initCalendari_141(defaultData_141) {
2853		if (calInitialized_141) {
2854			return;
2855		}
2856
2857		var datepickerLocale_141 = 'ca';
2858		if (datepickerLocale_141 === 'en' && $.datepicker.regional['en-GB']) {
2859			datepickerLocale_141 = 'en-GB';
2860		}
2861
2862		$.datepicker.setDefaults($.datepicker.regional[datepickerLocale_141] || $.datepicker.regional['ca'] || {});
2863		$("#calendari_141").datepicker({
2864			changeMonth: true,
2865			changeYear: true,
2866			onChangeMonthYear: getDatesMes_141,
2867			prevText: '< ',
2868			todayText: 'M yyyy',
2869			nextText: ' >',
2870			commandsAsDateFormat: true,
2871			onSelect: pickDay_141,
2872			beforeShowDay: dataDay_141,
2873			defaultDate: defaultData_141,
2874			minDate: "0d",
2875			yearRange: 'c:c+1'
2876		});
2877		calInitialized_141 = true;
2878	}
2879
2880	function redrawCalendari_141() {
2881		var $cal = $("#calendari_141");
2882		if (!$cal.hasClass('hasDatepicker')) {
2883			return;
2884		}
2885		// Prefer refresh; fall back to forcing a redraw via setDate of current view.
2886		try {
2887			$cal.datepicker('refresh');
2888		} catch (e) {
2889			var inst = $.datepicker._getInst($cal[0]);
2890			if (inst) {
2891				$.datepicker._updateDatepicker(inst);
2892			}
2893		}
2894	}
2895
2896	function fetchDatesMes_141(year_141, month_141, done_141) {
2897		$("#loading_141").empty().html('<img src="/img/admin/ajax-loader.gif" alt="" />');
2898
2899		openedDays_141 = [];
2900		redrawCalendari_141();
2901
2902		month_141 = addZeros_141(month_141);
2903		mes_seleccionat_141 = month_141;
2904		any_seleccionat_141 = String(year_141);
2905
2906		var seq_141 = ++calFetchSeq_141;
2907
2908		$.getJSON(
2909			'/calendari/get_estat_mes/141/' + mes_seleccionat_141 + '/' + any_seleccionat_141,
2910			function (data_141) {
2911				if (seq_141 !== calFetchSeq_141) {
2912					return;
2913				}
2914				processData_141(data_141);
2915			}
2916		).fail(function () {
2917			if (seq_141 !== calFetchSeq_141) {
2918				return;
2919			}
2920			openedDays_141 = [];
2921			redrawCalendari_141();
2922		}).always(function () {
2923			if (seq_141 === calFetchSeq_141) {
2924				$("#loading_141").empty();
2925			}
2926			if (typeof done_141 === 'function') {
2927				done_141();
2928			}
2929		});
2930	}
2931
2932	function processData_141(data_141) {
2933		if (data_141 && data_141.length !== undefined) {
2934			if (0) {
2935				cama_total_141 = 47;
2936				suelo_total_141 = 0;
2937			}
2938			openedDays_141 = data_141;
2939		} else {
2940			openedDays_141 = [];
2941		}
2942
2943		var defaultData_141 = new Date(
2944			parseInt(any_seleccionat_141, 10),
2945			parseInt(mes_seleccionat_141, 10) - 1,
2946			1
2947		);
2948
2949		$("#calendari_141").show();
2950
2951		if (!calInitialized_141) {
2952			suppressMonthChange_141 = true;
2953			initCalendari_141(defaultData_141);
2954			suppressMonthChange_141 = false;
2955		} else {
2956			// Month already changed by the datepicker UI; only re-apply day colours.
2957			redrawCalendari_141();
2958		}
2959	}
2960
2961	$(document).ready(function () {
2962		var defaultData_141 = new Date(
2963			parseInt(any_seleccionat_141, 10),
2964			parseInt(mes_seleccionat_141, 10) - 1,
2965			parseInt(dia_seleccionat_141, 10)
2966		);
2967
2968		if (isNaN(defaultData_141.getTime())) {
2969			defaultData_141 = new Date();
2970		}
2971
2972		if (lazyLoad_141) {
2973			$("#loading_141").empty().html('<img src="/img/admin/ajax-loader.gif" alt="" />');
2974			// Paint an empty calendar immediately so the layout is stable,
2975			// then fill colours when AJAX returns.
2976			suppressMonthChange_141 = true;
2977			initCalendari_141(defaultData_141);
2978			suppressMonthChange_141 = false;
2979
2980			window['clientLazyLoadCal_141'] = function (done) {
2981				fetchDatesMes_141(
2982					any_seleccionat_141,
2983					mes_seleccionat_141,
2984					done
2985				);
2986			};
2987			return;
2988		}
2989
2990		initCalendari_141(defaultData_141);
2991	});
2992</script>
2992
2993
2994<div class="calendar-container-left">
2995
2996    <span id="chivato_141"></span>
2997    <h5>COLOMINA (FEEC)</h5>
2998    <div id="loading_141"></div>
2999    <div id="calendari_141"></div>
3000    <div class="inner-nav">
3001        <span class="clearFix">&nbsp;</span>
3002    </div>
3003</div><!-- end of div#calendar-container -->
3004<meta http-equiv='cache-control' content='no-cache'>
3005<meta http-equiv='expires' content='0'>
3006<meta http-equiv='pragma' content='no-cache'>
3007
3008<script type="text/javascript">
3009	var str_json = JSON.stringify([]);
3010	var openedDays_129 = JSON.parse(str_json);
3011	var lazyLoad_129 = 1;
3012	var suppressMonthChange_129 = false;
3013	var daysContent_129 = [];
3014	var cama_129;
3015	var suelo_129;
3016	var cama_total_129 = null;
3017	var suelo_total_129 = null;
3018	var dia_seleccionat_129 = '02';
3019	var mes_seleccionat_129 = '10';
3020	var any_seleccionat_129 = '2026';
3021	var ruta_open_date_129 = '';
3022	var ruta_close_date_129 = '';
3023	var calInitialized_129 = false;
3024	var calFetchSeq_129 = 0;
3025
3026	function parseDate(dateString) {
3027		var parts = String(dateString || '').split('/');
3028		if (parts.length !== 3) {
3029			return new Date(NaN);
3030		}
3031
3032		var day = parseInt(parts[0], 10);
3033		var month = parseInt(parts[1], 10);
3034		var year = parseInt(parts[2], 10);
3035
3036		if (parts[2].length === 2) {
3037			year = 2000 + year;
3038		}
3039
3040		return new Date(year, month - 1, day);
3041	}
3042
3043	function ltrim(str, chars) {
3044		chars = chars || "\\s";
3045		return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
3046	}
3047
3048	function addZeros_129(n) {
3049		n = parseInt(n, 10);
3050		if (isNaN(n)) {
3051			return '00';
3052		}
3053		return (n < 10) ? '0' + n : String(n);
3054	}
3055
3056	function pickDay_129(dateText, inst) {
3057		var normalizedText = dateText;
3058
3059		if (inst && inst.selectedYear) {
3060			var day = inst.selectedDay;
3061			var month = inst.selectedMonth + 1;
3062			var year = inst.selectedYear;
3063			normalizedText =
3064				(day < 10 ? '0' : '') + day + '/' +
3065				(month < 10 ? '0' : '') + month + '/' +
3066				year;
3067		}
3068
3069		var openRaw = '';
3070		var closeRaw = '';
3071		var canSelect = true;
3072
3073		if (openRaw && closeRaw) {
3074			var selectedDate = parseDate(normalizedText);
3075			var openDate = parseDate(openRaw);
3076			var closeDate = parseDate(closeRaw);
3077			if (!isNaN(openDate.getTime()) && !isNaN(closeDate.getTime())) {
3078				canSelect = selectedDate >= openDate && selectedDate <= closeDate;
3079			}
3080		}
3081
3082		if (canSelect) {
3083			if (typeof syncMapFromRefugiCalendar === 'function') {
3084				syncMapFromRefugiCalendar(normalizedText, 129);
3085			} else {
3086				$('#data_reserva').val(normalizedText);
3087				my_day = normalizedText;
3088				addClickListenerSelectRefugi(129);
3089			}
3090		}
3091	}
3092
3093	function dataDay_129(date_129) {
3094		var openRaw = '';
3095		var closeRaw = '';
3096
3097		if (openRaw && closeRaw) {
3098			var openDate = parseDate(openRaw);
3099			var closeDate = parseDate(closeRaw);
3100
3101			if (!isNaN(openDate.getTime()) && !isNaN(closeDate.getTime())) {
3102				if (date_129 < openDate || date_129 > closeDate) {
3103					return [false, '', 'Ruta no activa'];
3104				}
3105			}
3106		}
3107
3108		if (openedDays_129 && openedDays_129.length > 0) {
3109			for (var i = 0; i < openedDays_129.length; i++) {
3110				if (
3111					parseInt(date_129.getMonth() + 1, 10) == parseInt(openedDays_129[i].month, 10)
3112					&& parseInt(date_129.getDate(), 10) == parseInt(openedDays_129[i].day, 10)
3113					&& parseInt(date_129.getFullYear(), 10) == parseInt(openedDays_129[i].year, 10)
3114				) {
3115					var day_class = '';
3116					var day_focus_text = '';
3117					switch (parseInt(openedDays_129[i].estat, 10)) {
3118						case 0: //tancat
3119							break;
3120						case 1: //verd
3121							day_class = 'datepick-open-day';
3122							day_focus_text = 'obert';
3123							break;
3124						case 2: //vermell
3125							day_class = 'datepick-complet-day';
3126							day_focus_text = 'complet';
3127							break;
3128						case 3: //groc q ara no el fem servir i posem verd
3129							day_class = 'datepick-open-day';
3130							day_focus_text = 'obert';
3131							break;
3132						case 4: //tronja
3133							day_class = 'datepick-comented-day';
3134							day_focus_text = 'hi ha un comentari restrictiu';
3135							break;
3136					}
3137
3138					return [true, day_class, day_focus_text];
3139				}
3140			}
3141		}
3142		return [true, '', 'tancat'];
3143	}
3144
3145	function getDatesMes_129(year_129, month_129) {
3146		if (suppressMonthChange_129) {
3147			return;
3148		}
3149		fetchDatesMes_129(year_129, month_129);
3150	}
3151
3152	function initCalendari_129(defaultData_129) {
3153		if (calInitialized_129) {
3154			return;
3155		}
3156
3157		var datepickerLocale_129 = 'ca';
3158		if (datepickerLocale_129 === 'en' && $.datepicker.regional['en-GB']) {
3159			datepickerLocale_129 = 'en-GB';
3160		}
3161
3162		$.datepicker.setDefaults($.datepicker.regional[datepickerLocale_129] || $.datepicker.regional['ca'] || {});
3163		$("#calendari_129").datepicker({
3164			changeMonth: true,
3165			changeYear: true,
3166			onChangeMonthYear: getDatesMes_129,
3167			prevText: '< ',
3168			todayText: 'M yyyy',
3169			nextText: ' >',
3170			commandsAsDateFormat: true,
3171			onSelect: pickDay_129,
3172			beforeShowDay: dataDay_129,
3173			defaultDate: defaultData_129,
3174			minDate: "0d",
3175			yearRange: 'c:c+1'
3176		});
3177		calInitialized_129 = true;
3178	}
3179
3180	function redrawCalendari_129() {
3181		var $cal = $("#calendari_129");
3182		if (!$cal.hasClass('hasDatepicker')) {
3183			return;
3184		}
3185		// Prefer refresh; fall back to forcing a redraw via setDate of current view.
3186		try {
3187			$cal.datepicker('refresh');
3188		} catch (e) {
3189			var inst = $.datepicker._getInst($cal[0]);
3190			if (inst) {
3191				$.datepicker._updateDatepicker(inst);
3192			}
3193		}
3194	}
3195
3196	function fetchDatesMes_129(year_129, month_129, done_129) {
3197		$("#loading_129").empty().html('<img src="/img/admin/ajax-loader.gif" alt="" />');
3198
3199		openedDays_129 = [];
3200		redrawCalendari_129();
3201
3202		month_129 = addZeros_129(month_129);
3203		mes_seleccionat_129 = month_129;
3204		any_seleccionat_129 = String(year_129);
3205
3206		var seq_129 = ++calFetchSeq_129;
3207
3208		$.getJSON(
3209			'/calendari/get_estat_mes/129/' + mes_seleccionat_129 + '/' + any_seleccionat_129,
3210			function (data_129) {
3211				if (seq_129 !== calFetchSeq_129) {
3212					return;
3213				}
3214				processData_129(data_129);
3215			}
3216		).fail(function () {
3217			if (seq_129 !== calFetchSeq_129) {
3218				return;
3219			}
3220			openedDays_129 = [];
3221			redrawCalendari_129();
3222		}).always(function () {
3223			if (seq_129 === calFetchSeq_129) {
3224				$("#loading_129").empty();
3225			}
3226			if (typeof done_129 === 'function') {
3227				done_129();
3228			}
3229		});
3230	}
3231
3232	function processData_129(data_129) {
3233		if (data_129 && data_129.length !== undefined) {
3234			if (0) {
3235				cama_total_129 = 30;
3236				suelo_total_129 = 0;
3237			}
3238			openedDays_129 = data_129;
3239		} else {
3240			openedDays_129 = [];
3241		}
3242
3243		var defaultData_129 = new Date(
3244			parseInt(any_seleccionat_129, 10),
3245			parseInt(mes_seleccionat_129, 10) - 1,
3246			1
3247		);
3248
3249		$("#calendari_129").show();
3250
3251		if (!calInitialized_129) {
3252			suppressMonthChange_129 = true;
3253			initCalendari_129(defaultData_129);
3254			suppressMonthChange_129 = false;
3255		} else {
3256			// Month already changed by the datepicker UI; only re-apply day colours.
3257			redrawCalendari_129();
3258		}
3259	}
3260
3261	$(document).ready(function () {
3262		var defaultData_129 = new Date(
3263			parseInt(any_seleccionat_129, 10),
3264			parseInt(mes_seleccionat_129, 10) - 1,
3265			parseInt(dia_seleccionat_129, 10)
3266		);
3267
3268		if (isNaN(defaultData_129.getTime())) {
3269			defaultData_129 = new Date();
3270		}
3271
3272		if (lazyLoad_129) {
3273			$("#loading_129").empty().html('<img src="/img/admin/ajax-loader.gif" alt="" />');
3274			// Paint an empty calendar immediately so the layout is stable,
3275			// then fill colours when AJAX returns.
3276			suppressMonthChange_129 = true;
3277			initCalendari_129(defaultData_129);
3278			suppressMonthChange_129 = false;
3279
3280			window['clientLazyLoadCal_129'] = function (done) {
3281				fetchDatesMes_129(
3282					any_seleccionat_129,
3283					mes_seleccionat_129,
3284					done
3285				);
3286			};
3287			return;
3288		}
3289
3290		initCalendari_129(defaultData_129);
3291	});
3292</script>
3292
3293
3294<div class="calendar-container-left">
3295
3296    <span id="chivato_129"></span>
3297    <h5>COMES DE RUBIO</h5>
3298    <div id="loading_129"></div>
3299    <div id="calendari_129"></div>
3300    <div class="inner-nav">
3301        <span class="clearFix">&nbsp;</span>
3302    </div>
3303</div><!-- end of div#calendar-container -->
3304<meta http-equiv='cache-control' content='no-cache'>
3305<meta http-equiv='expires' content='0'>
3306<meta http-equiv='pragma' content='no-cache'>
3307
3308<script type="text/javascript">
3309	var str_json = JSON.stringify([]);
3310	var openedDays_150 = JSON.parse(str_json);
3311	var lazyLoad_150 = 1;
3312	var suppressMonthChange_150 = false;
3313	var daysContent_150 = [];
3314	var cama_150;
3315	var suelo_150;
3316	var cama_total_150 = null;
3317	var suelo_total_150 = null;
3318	var dia_seleccionat_150 = '02';
3319	var mes_seleccionat_150 = '10';
3320	var any_seleccionat_150 = '2026';
3321	var ruta_open_date_150 = '';
3322	var ruta_close_date_150 = '';
3323	var calInitialized_150 = false;
3324	var calFetchSeq_150 = 0;
3325
3326	function parseDate(dateString) {
3327		var parts = String(dateString || '').split('/');
3328		if (parts.length !== 3) {
3329			return new Date(NaN);
3330		}
3331
3332		var day = parseInt(parts[0], 10);
3333		var month = parseInt(parts[1], 10);
3334		var year = parseInt(parts[2], 10);
3335
3336		if (parts[2].length === 2) {
3337			year = 2000 + year;
3338		}
3339
3340		return new Date(year, month - 1, day);
3341	}
3342
3343	function ltrim(str, chars) {
3344		chars = chars || "\\s";
3345		return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
3346	}
3347
3348	function addZeros_150(n) {
3349		n = parseInt(n, 10);
3350		if (isNaN(n)) {
3351			return '00';
3352		}
3353		return (n < 10) ? '0' + n : String(n);
3354	}
3355
3356	function pickDay_150(dateText, inst) {
3357		var normalizedText = dateText;
3358
3359		if (inst && inst.selectedYear) {
3360			var day = inst.selectedDay;
3361			var month = inst.selectedMonth + 1;
3362			var year = inst.selectedYear;
3363			normalizedText =
3364				(day < 10 ? '0' : '') + day + '/' +
3365				(month < 10 ? '0' : '') + month + '/' +
3366				year;
3367		}
3368
3369		var openRaw = '';
3370		var closeRaw = '';
3371		var canSelect = true;
3372
3373		if (openRaw && closeRaw) {
3374			var selectedDate = parseDate(normalizedText);
3375			var openDate = parseDate(openRaw);
3376			var closeDate = parseDate(closeRaw);
3377			if (!isNaN(openDate.getTime()) && !isNaN(closeDate.getTime())) {
3378				canSelect = selectedDate >= openDate && selectedDate <= closeDate;
3379			}
3380		}
3381
3382		if (canSelect) {
3383			if (typeof syncMapFromRefugiCalendar === 'function') {
3384				syncMapFromRefugiCalendar(normalizedText, 150);
3385			} else {
3386				$('#data_reserva').val(normalizedText);
3387				my_day = normalizedText;
3388				addClickListenerSelectRefugi(150);
3389			}
3390		}
3391	}
3392
3393	function dataDay_150(date_150) {
3394		var openRaw = '';
3395		var closeRaw = '';
3396
3397		if (openRaw && closeRaw) {
3398			var openDate = parseDate(openRaw);
3399			var closeDate = parseDate(closeRaw);
3400
3401			if (!isNaN(openDate.getTime()) && !isNaN(closeDate.getTime())) {
3402				if (date_150 < openDate || date_150 > closeDate) {
3403					return [false, '', 'Ruta no activa'];
3404				}
3405			}
3406		}
3407
3408		if (openedDays_150 && openedDays_150.length > 0) {
3409			for (var i = 0; i < openedDays_150.length; i++) {
3410				if (
3411					parseInt(date_150.getMonth() + 1, 10) == parseInt(openedDays_150[i].month, 10)
3412					&& parseInt(date_150.getDate(), 10) == parseInt(openedDays_150[i].day, 10)
3413					&& parseInt(date_150.getFullYear(), 10) == parseInt(openedDays_150[i].year, 10)
3414				) {
3415					var day_class = '';
3416					var day_focus_text = '';
3417					switch (parseInt(openedDays_150[i].estat, 10)) {
3418						case 0: //tancat
3419							break;
3420						case 1: //verd
3421							day_class = 'datepick-open-day';
3422							day_focus_text = 'obert';
3423							break;
3424						case 2: //vermell
3425							day_class = 'datepick-complet-day';
3426							day_focus_text = 'complet';
3427							break;
3428						case 3: //groc q ara no el fem servir i posem verd
3429							day_class = 'datepick-open-day';
3430							day_focus_text = 'obert';
3431							break;
3432						case 4: //tronja
3433							day_class = 'datepick-comented-day';
3434							day_focus_text = 'hi ha un comentari restrictiu';
3435							break;
3436					}
3437
3438					return [true, day_class, day_focus_text];
3439				}
3440			}
3441		}
3442		return [true, '', 'tancat'];
3443	}
3444
3445	function getDatesMes_150(year_150, month_150) {
3446		if (suppressMonthChange_150) {
3447			return;
3448		}
3449		fetchDatesMes_150(year_150, month_150);
3450	}
3451
3452	function initCalendari_150(defaultData_150) {
3453		if (calInitialized_150) {
3454			return;
3455		}
3456
3457		var datepickerLocale_150 = 'ca';
3458		if (datepickerLocale_150 === 'en' && $.datepicker.regional['en-GB']) {
3459			datepickerLocale_150 = 'en-GB';
3460		}
3461
3462		$.datepicker.setDefaults($.datepicker.regional[datepickerLocale_150] || $.datepicker.regional['ca'] || {});
3463		$("#calendari_150").datepicker({
3464			changeMonth: true,
3465			changeYear: true,
3466			onChangeMonthYear: getDatesMes_150,
3467			prevText: '< ',
3468			todayText: 'M yyyy',
3469			nextText: ' >',
3470			commandsAsDateFormat: true,
3471			onSelect: pickDay_150,
3472			beforeShowDay: dataDay_150,
3473			defaultDate: defaultData_150,
3474			minDate: "0d",
3475			yearRange: 'c:c+1'
3476		});
3477		calInitialized_150 = true;
3478	}
3479
3480	function redrawCalendari_150() {
3481		var $cal = $("#calendari_150");
3482		if (!$cal.hasClass('hasDatepicker')) {
3483			return;
3484		}
3485		// Prefer refresh; fall back to forcing a redraw via setDate of current view.
3486		try {
3487			$cal.datepicker('refresh');
3488		} catch (e) {
3489			var inst = $.datepicker._getInst($cal[0]);
3490			if (inst) {
3491				$.datepicker._updateDatepicker(inst);
3492			}
3493		}
3494	}
3495
3496	function fetchDatesMes_150(year_150, month_150, done_150) {
3497		$("#loading_150").empty().html('<img src="/img/admin/ajax-loader.gif" alt="" />');
3498
3499		openedDays_150 = [];
3500		redrawCalendari_150();
3501
3502		month_150 = addZeros_150(month_150);
3503		mes_seleccionat_150 = month_150;
3504		any_seleccionat_150 = String(year_150);
3505
3506		var seq_150 = ++calFetchSeq_150;
3507
3508		$.getJSON(
3509			'/calendari/get_estat_mes/150/' + mes_seleccionat_150 + '/' + any_seleccionat_150,
3510			function (data_150) {
3511				if (seq_150 !== calFetchSeq_150) {
3512					return;
3513				}
3514				processData_150(data_150);
3515			}
3516		).fail(function () {
3517			if (seq_150 !== calFetchSeq_150) {
3518				return;
3519			}
3520			openedDays_150 = [];
3521			redrawCalendari_150();
3522		}).always(function () {
3523			if (seq_150 === calFetchSeq_150) {
3524				$("#loading_150").empty();
3525			}
3526			if (typeof done_150 === 'function') {
3527				done_150();
3528			}
3529		});
3530	}
3531
3532	function processData_150(data_150) {
3533		if (data_150 && data_150.length !== undefined) {
3534			if (0) {
3535				cama_total_150 = 30;
3536				suelo_total_150 = 0;
3537			}
3538			openedDays_150 = data_150;
3539		} else {
3540			openedDays_150 = [];
3541		}
3542
3543		var defaultData_150 = new Date(
3544			parseInt(any_seleccionat_150, 10),
3545			parseInt(mes_seleccionat_150, 10) - 1,
3546			1
3547		);
3548
3549		$("#calendari_150").show();
3550
3551		if (!calInitialized_150) {
3552			suppressMonthChange_150 = true;
3553			initCalendari_150(defaultData_150);
3554			suppressMonthChange_150 = false;
3555		} else {
3556			// Month already changed by the datepicker UI; only re-apply day colours.
3557			redrawCalendari_150();
3558		}
3559	}
3560
3561	$(document).ready(function () {
3562		var defaultData_150 = new Date(
3563			parseInt(any_seleccionat_150, 10),
3564			parseInt(mes_seleccionat_150, 10) - 1,
3565			parseInt(dia_seleccionat_150, 10)
3566		);
3567
3568		if (isNaN(defaultData_150.getTime())) {
3569			defaultData_150 = new Date();
3570		}
3571
3572		if (lazyLoad_150) {
3573			$("#loading_150").empty().html('<img src="/img/admin/ajax-loader.gif" alt="" />');
3574			// Paint an empty calendar immediately so the layout is stable,
3575			// then fill colours when AJAX returns.
3576			suppressMonthChange_150 = true;
3577			initCalendari_150(defaultData_150);
3578			suppressMonthChange_150 = false;
3579
3580			window['clientLazyLoadCal_150'] = function (done) {
3581				fetchDatesMes_150(
3582					any_seleccionat_150,
3583					mes_seleccionat_150,
3584					done
3585				);
3586			};
3587			return;
3588		}
3589
3590		initCalendari_150(defaultData_150);
3591	});
3592</script>
3592
3593
3594<div class="calendar-container-left">
3595
3596    <span id="chivato_150"></span>
3597    <h5>CONANGLES</h5>
3598    <div id="loading_150"></div>
3599    <div id="calendari_150"></div>
3600    <div class="inner-nav">
3601        <span class="clearFix">&nbsp;</span>
3602    </div>
3603</div><!-- end of div#calendar-container -->
3604<meta http-equiv='cache-control' content='no-cache'>
3605<meta http-equiv='expires' content='0'>
3606<meta http-equiv='pragma' content='no-cache'>
3607
3608<script type="text/javascript">
3609	var str_json = JSON.stringify([]);
3610	var openedDays_151 = JSON.parse(str_json);
3611	var lazyLoad_151 = 1;
3612	var suppressMonthChange_151 = false;
3613	var daysContent_151 = [];
3614	var cama_151;
3615	var suelo_151;
3616	var cama_total_151 = null;
3617	var suelo_total_151 = null;
3618	var dia_seleccionat_151 = '02';
3619	var mes_seleccionat_151 = '10';
3620	var any_seleccionat_151 = '2026';
3621	var ruta_open_date_151 = '';
3622	var ruta_close_date_151 = '';
3623	var calInitialized_151 = false;
3624	var calFetchSeq_151 = 0;
3625
3626	function parseDate(dateString) {
3627		var parts = String(dateString || '').split('/');
3628		if (parts.length !== 3) {
3629			return new Date(NaN);
3630		}
3631
3632		var day = parseInt(parts[0], 10);
3633		var month = parseInt(parts[1], 10);
3634		var year = parseInt(parts[2], 10);
3635
3636		if (parts[2].length === 2) {
3637			year = 2000 + year;
3638		}
3639
3640		return new Date(year, month - 1, day);
3641	}
3642
3643	function ltrim(str, chars) {
3644		chars = chars || "\\s";
3645		return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
3646	}
3647
3648	function addZeros_151(n) {
3649		n = parseInt(n, 10);
3650		if (isNaN(n)) {
3651			return '00';
3652		}
3653		return (n < 10) ? '0' + n : String(n);
3654	}
3655
3656	function pickDay_151(dateText, inst) {
3657		var normalizedText = dateText;
3658
3659		if (inst && inst.selectedYear) {
3660			var day = inst.selectedDay;
3661			var month = inst.selectedMonth + 1;
3662			var year = inst.selectedYear;
3663			normalizedText =
3664				(day < 10 ? '0' : '') + day + '/' +
3665				(month < 10 ? '0' : '') + month + '/' +
3666				year;
3667		}
3668
3669		var openRaw = '';
3670		var closeRaw = '';
3671		var canSelect = true;
3672
3673		if (openRaw && closeRaw) {
3674			var selectedDate = parseDate(normalizedText);
3675			var openDate = parseDate(openRaw);
3676			var closeDate = parseDate(closeRaw);
3677			if (!isNaN(openDate.getTime()) && !isNaN(closeDate.getTime())) {
3678				canSelect = selectedDate >= openDate && selectedDate <= closeDate;
3679			}
3680		}
3681
3682		if (canSelect) {
3683			if (typeof syncMapFromRefugiCalendar === 'function') {
3684				syncMapFromRefugiCalendar(normalizedText, 151);
3685			} else {
3686				$('#data_reserva').val(normalizedText);
3687				my_day = normalizedText;
3688				addClickListenerSelectRefugi(151);
3689			}
3690		}
3691	}
3692
3693	function dataDay_151(date_151) {
3694		var openRaw = '';
3695		var closeRaw = '';
3696
3697		if (openRaw && closeRaw) {
3698			var openDate = parseDate(openRaw);
3699			var closeDate = parseDate(closeRaw);
3700
3701			if (!isNaN(openDate.getTime()) && !isNaN(closeDate.getTime())) {
3702				if (date_151 < openDate || date_151 > closeDate) {
3703					return [false, '', 'Ruta no activa'];
3704				}
3705			}
3706		}
3707
3708		if (openedDays_151 && openedDays_151.length > 0) {
3709			for (var i = 0; i < openedDays_151.length; i++) {
3710				if (
3711					parseInt(date_151.getMonth() + 1, 10) == parseInt(openedDays_151[i].month, 10)
3712					&& parseInt(date_151.getDate(), 10) == parseInt(openedDays_151[i].day, 10)
3713					&& parseInt(date_151.getFullYear(), 10) == parseInt(openedDays_151[i].year, 10)
3714				) {
3715					var day_class = '';
3716					var day_focus_text = '';
3717					switch (parseInt(openedDays_151[i].estat, 10)) {
3718						case 0: //tancat
3719							break;
3720						case 1: //verd
3721							day_class = 'datepick-open-day';
3722							day_focus_text = 'obert';
3723							break;
3724						case 2: //vermell
3725							day_class = 'datepick-complet-day';
3726							day_focus_text = 'complet';
3727							break;
3728						case 3: //groc q ara no el fem servir i posem verd
3729							day_class = 'datepick-open-day';
3730							day_focus_text = 'obert';
3731							break;
3732						case 4: //tronja
3733							day_class = 'datepick-comented-day';
3734							day_focus_text = 'hi ha un comentari restrictiu';
3735							break;
3736					}
3737
3738					return [true, day_class, day_focus_text];
3739				}
3740			}
3741		}
3742		return [true, '', 'tancat'];
3743	}
3744
3745	function getDatesMes_151(year_151, month_151) {
3746		if (suppressMonthChange_151) {
3747			return;
3748		}
3749		fetchDatesMes_151(year_151, month_151);
3750	}
3751
3752	function initCalendari_151(defaultData_151) {
3753		if (calInitialized_151) {
3754			return;
3755		}
3756
3757		var datepickerLocale_151 = 'ca';
3758		if (datepickerLocale_151 === 'en' && $.datepicker.regional['en-GB']) {
3759			datepickerLocale_151 = 'en-GB';
3760		}
3761
3762		$.datepicker.setDefaults($.datepicker.regional[datepickerLocale_151] || $.datepicker.regional['ca'] || {});
3763		$("#calendari_151").datepicker({
3764			changeMonth: true,
3765			changeYear: true,
3766			onChangeMonthYear: getDatesMes_151,
3767			prevText: '< ',
3768			todayText: 'M yyyy',
3769			nextText: ' >',
3770			commandsAsDateFormat: true,
3771			onSelect: pickDay_151,
3772			beforeShowDay: dataDay_151,
3773			defaultDate: defaultData_151,
3774			minDate: "0d",
3775			yearRange: 'c:c+1'
3776		});
3777		calInitialized_151 = true;
3778	}
3779
3780	function redrawCalendari_151() {
3781		var $cal = $("#calendari_151");
3782		if (!$cal.hasClass('hasDatepicker')) {
3783			return;
3784		}
3785		// Prefer refresh; fall back to forcing a redraw via setDate of current view.
3786		try {
3787			$cal.datepicker('refresh');
3788		} catch (e) {
3789			var inst = $.datepicker._getInst($cal[0]);
3790			if (inst) {
3791				$.datepicker._updateDatepicker(inst);
3792			}
3793		}
3794	}
3795
3796	function fetchDatesMes_151(year_151, month_151, done_151) {
3797		$("#loading_151").empty().html('<img src="/img/admin/ajax-loader.gif" alt="" />');
3798
3799		openedDays_151 = [];
3800		redrawCalendari_151();
3801
3802		month_151 = addZeros_151(month_151);
3803		mes_seleccionat_151 = month_151;
3804		any_seleccionat_151 = String(year_151);
3805
3806		var seq_151 = ++calFetchSeq_151;
3807
3808		$.getJSON(
3809			'/calendari/get_estat_mes/151/' + mes_seleccionat_151 + '/' + any_seleccionat_151,
3810			function (data_151) {
3811				if (seq_151 !== calFetchSeq_151) {
3812					return;
3813				}
3814				processData_151(data_151);
3815			}
3816		).fail(function () {
3817			if (seq_151 !== calFetchSeq_151) {
3818				return;
3819			}
3820			openedDays_151 = [];
3821			redrawCalendari_151();
3822		}).always(function () {
3823			if (seq_151 === calFetchSeq_151) {
3824				$("#loading_151").empty();
3825			}
3826			if (typeof done_151 === 'function') {
3827				done_151();
3828			}
3829		});
3830	}
3831
3832	function processData_151(data_151) {
3833		if (data_151 && data_151.length !== undefined) {
3834			if (0) {
3835				cama_total_151 = 15;
3836				suelo_total_151 = 0;
3837			}
3838			openedDays_151 = data_151;
3839		} else {
3840			openedDays_151 = [];
3841		}
3842
3843		var defaultData_151 = new Date(
3844			parseInt(any_seleccionat_151, 10),
3845			parseInt(mes_seleccionat_151, 10) - 1,
3846			1
3847		);
3848
3849		$("#calendari_151").show();
3850
3851		if (!calInitialized_151) {
3852			suppressMonthChange_151 = true;
3853			initCalendari_151(defaultData_151);
3854			suppressMonthChange_151 = false;
3855		} else {
3856			// Month already changed by the datepicker UI; only re-apply day colours.
3857			redrawCalendari_151();
3858		}
3859	}
3860
3861	$(document).ready(function () {
3862		var defaultData_151 = new Date(
3863			parseInt(any_seleccionat_151, 10),
3864			parseInt(mes_seleccionat_151, 10) - 1,
3865			parseInt(dia_seleccionat_151, 10)
3866		);
3867
3868		if (isNaN(defaultData_151.getTime())) {
3869			defaultData_151 = new Date();
3870		}
3871
3872		if (lazyLoad_151) {
3873			$("#loading_151").empty().html('<img src="/img/admin/ajax-loader.gif" alt="" />');
3874			// Paint an empty calendar immediately so the layout is stable,
3875			// then fill colours when AJAX returns.
3876			suppressMonthChange_151 = true;
3877			initCalendari_151(defaultData_151);
3878			suppressMonthChange_151 = false;
3879
3880			window['clientLazyLoadCal_151'] = function (done) {
3881				fetchDatesMes_151(
3882					any_seleccionat_151,
3883					mes_seleccionat_151,
3884					done
3885				);
3886			};
3887			return;
3888		}
3889
3890		initCalendari_151(defaultData_151);
3891	});
3892</script>
3892
3893
3894<div class="calendar-container-left">
3895
3896    <span id="chivato_151"></span>
3897    <h5>ERA HONERIA</h5>
3898    <div id="loading_151"></div>
3899    <div id="calendari_151"></div>
3900    <div class="inner-nav">
3901        <span class="clearFix">&nbsp;</span>
3902    </div>
3903</div><!-- end of div#calendar-container -->
3904<meta http-equiv='cache-control' content='no-cache'>
3905<meta http-equiv='expires' content='0'>
3906<meta http-equiv='pragma' content='no-cache'>
3907
3908<script type="text/javascript">
3909	var str_json = JSON.stringify([]);
3910	var openedDays_143 = JSON.parse(str_json);
3911	var lazyLoad_143 = 1;
3912	var suppressMonthChange_143 = false;
3913	var daysContent_143 = [];
3914	var cama_143;
3915	var suelo_143;
3916	var cama_total_143 = null;
3917	var suelo_total_143 = null;
3918	var dia_seleccionat_143 = '02';
3919	var mes_seleccionat_143 = '10';
3920	var any_seleccionat_143 = '2026';
3921	var ruta_open_date_143 = '';
3922	var ruta_close_date_143 = '';
3923	var calInitialized_143 = false;
3924	var calFetchSeq_143 = 0;
3925
3926	function parseDate(dateString) {
3927		var parts = String(dateString || '').split('/');
3928		if (parts.length !== 3) {
3929			return new Date(NaN);
3930		}
3931
3932		var day = parseInt(parts[0], 10);
3933		var month = parseInt(parts[1], 10);
3934		var year = parseInt(parts[2], 10);
3935
3936		if (parts[2].length === 2) {
3937			year = 2000 + year;
3938		}
3939
3940		return new Date(year, month - 1, day);
3941	}
3942
3943	function ltrim(str, chars) {
3944		chars = chars || "\\s";
3945		return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
3946	}
3947
3948	function addZeros_143(n) {
3949		n = parseInt(n, 10);
3950		if (isNaN(n)) {
3951			return '00';
3952		}
3953		return (n < 10) ? '0' + n : String(n);
3954	}
3955
3956	function pickDay_143(dateText, inst) {
3957		var normalizedText = dateText;
3958
3959		if (inst && inst.selectedYear) {
3960			var day = inst.selectedDay;
3961			var month = inst.selectedMonth + 1;
3962			var year = inst.selectedYear;
3963			normalizedText =
3964				(day < 10 ? '0' : '') + day + '/' +
3965				(month < 10 ? '0' : '') + month + '/' +
3966				year;
3967		}
3968
3969		var openRaw = '';
3970		var closeRaw = '';
3971		var canSelect = true;
3972
3973		if (openRaw && closeRaw) {
3974			var selectedDate = parseDate(normalizedText);
3975			var openDate = parseDate(openRaw);
3976			var closeDate = parseDate(closeRaw);
3977			if (!isNaN(openDate.getTime()) && !isNaN(closeDate.getTime())) {
3978				canSelect = selectedDate >= openDate && selectedDate <= closeDate;
3979			}
3980		}
3981
3982		if (canSelect) {
3983			if (typeof syncMapFromRefugiCalendar === 'function') {
3984				syncMapFromRefugiCalendar(normalizedText, 143);
3985			} else {
3986				$('#data_reserva').val(normalizedText);
3987				my_day = normalizedText;
3988				addClickListenerSelectRefugi(143);
3989			}
3990		}
3991	}
3992
3993	function dataDay_143(date_143) {
3994		var openRaw = '';
3995		var closeRaw = '';
3996
3997		if (openRaw && closeRaw) {
3998			var openDate = parseDate(openRaw);
3999			var closeDate = parseDate(closeRaw);
4000
4001			if (!isNaN(openDate.getTime()) && !isNaN(closeDate.getTime())) {
4002				if (date_143 < openDate || date_143 > closeDate) {
4003					return [false, '', 'Ruta no activa'];
4004				}
4005			}
4006		}
4007
4008		if (openedDays_143 && openedDays_143.length > 0) {
4009			for (var i = 0; i < openedDays_143.length; i++) {
4010				if (
4011					parseInt(date_143.getMonth() + 1, 10) == parseInt(openedDays_143[i].month, 10)
4012					&& parseInt(date_143.getDate(), 10) == parseInt(openedDays_143[i].day, 10)
4013					&& parseInt(date_143.getFullYear(), 10) == parseInt(openedDays_143[i].year, 10)
4014				) {
4015					var day_class = '';
4016					var day_focus_text = '';
4017					switch (parseInt(openedDays_143[i].estat, 10)) {
4018						case 0: //tancat
4019							break;
4020						case 1: //verd
4021							day_class = 'datepick-open-day';
4022							day_focus_text = 'obert';
4023							break;
4024						case 2: //vermell
4025							day_class = 'datepick-complet-day';
4026							day_focus_text = 'complet';
4027							break;
4028						case 3: //groc q ara no el fem servir i posem verd
4029							day_class = 'datepick-open-day';
4030							day_focus_text = 'obert';
4031							break;
4032						case 4: //tronja
4033							day_class = 'datepick-comented-day';
4034							day_focus_text = 'hi ha un comentari restrictiu';
4035							break;
4036					}
4037
4038					return [true, day_class, day_focus_text];
4039				}
4040			}
4041		}
4042		return [true, '', 'tancat'];
4043	}
4044
4045	function getDatesMes_143(year_143, month_143) {
4046		if (suppressMonthChange_143) {
4047			return;
4048		}
4049		fetchDatesMes_143(year_143, month_143);
4050	}
4051
4052	function initCalendari_143(defaultData_143) {
4053		if (calInitialized_143) {
4054			return;
4055		}
4056
4057		var datepickerLocale_143 = 'ca';
4058		if (datepickerLocale_143 === 'en' && $.datepicker.regional['en-GB']) {
4059			datepickerLocale_143 = 'en-GB';
4060		}
4061
4062		$.datepicker.setDefaults($.datepicker.regional[datepickerLocale_143] || $.datepicker.regional['ca'] || {});
4063		$("#calendari_143").datepicker({
4064			changeMonth: true,
4065			changeYear: true,
4066			onChangeMonthYear: getDatesMes_143,
4067			prevText: '< ',
4068			todayText: 'M yyyy',
4069			nextText: ' >',
4070			commandsAsDateFormat: true,
4071			onSelect: pickDay_143,
4072			beforeShowDay: dataDay_143,
4073			defaultDate: defaultData_143,
4074			minDate: "0d",
4075			yearRange: 'c:c+1'
4076		});
4077		calInitialized_143 = true;
4078	}
4079
4080	function redrawCalendari_143() {
4081		var $cal = $("#calendari_143");
4082		if (!$cal.hasClass('hasDatepicker')) {
4083			return;
4084		}
4085		// Prefer refresh; fall back to forcing a redraw via setDate of current view.
4086		try {
4087			$cal.datepicker('refresh');
4088		} catch (e) {
4089			var inst = $.datepicker._getInst($cal[0]);
4090			if (inst) {
4091				$.datepicker._updateDatepicker(inst);
4092			}
4093		}
4094	}
4095
4096	function fetchDatesMes_143(year_143, month_143, done_143) {
4097		$("#loading_143").empty().html('<img src="/img/admin/ajax-loader.gif" alt="" />');
4098
4099		openedDays_143 = [];
4100		redrawCalendari_143();
4101
4102		month_143 = addZeros_143(month_143);
4103		mes_seleccionat_143 = month_143;
4104		any_seleccionat_143 = String(year_143);
4105
4106		var seq_143 = ++calFetchSeq_143;
4107
4108		$.getJSON(
4109			'/calendari/get_estat_mes/143/' + mes_seleccionat_143 + '/' + any_seleccionat_143,
4110			function (data_143) {
4111				if (seq_143 !== calFetchSeq_143) {
4112					return;
4113				}
4114				processData_143(data_143);
4115			}
4116		).fail(function () {
4117			if (seq_143 !== calFetchSeq_143) {
4118				return;
4119			}
4120			openedDays_143 = [];
4121			redrawCalendari_143();
4122		}).always(function () {
4123			if (seq_143 === calFetchSeq_143) {
4124				$("#loading_143").empty();
4125			}
4126			if (typeof done_143 === 'function') {
4127				done_143();
4128			}
4129		});
4130	}
4131
4132	function processData_143(data_143) {
4133		if (data_143 && data_143.length !== undefined) {
4134			if (0) {
4135				cama_total_143 = 24;
4136				suelo_total_143 = 4;
4137			}
4138			openedDays_143 = data_143;
4139		} else {
4140			openedDays_143 = [];
4141		}
4142
4143		var defaultData_143 = new Date(
4144			parseInt(any_seleccionat_143, 10),
4145			parseInt(mes_seleccionat_143, 10) - 1,
4146			1
4147		);
4148
4149		$("#calendari_143").show();
4150
4151		if (!calInitialized_143) {
4152			suppressMonthChange_143 = true;
4153			initCalendari_143(defaultData_143);
4154			suppressMonthChange_143 = false;
4155		} else {
4156			// Month already changed by the datepicker UI; only re-apply day colours.
4157			redrawCalendari_143();
4158		}
4159	}
4160
4161	$(document).ready(function () {
4162		var defaultData_143 = new Date(
4163			parseInt(any_seleccionat_143, 10),
4164			parseInt(mes_seleccionat_143, 10) - 1,
4165			parseInt(dia_seleccionat_143, 10)
4166		);
4167
4168		if (isNaN(defaultData_143.getTime())) {
4169			defaultData_143 = new Date();
4170		}
4171
4172		if (lazyLoad_143) {
4173			$("#loading_143").empty().html('<img src="/img/admin/ajax-loader.gif" alt="" />');
4174			// Paint an empty calendar immediately so the layout is stable,
4175			// then fill colours when AJAX returns.
4176			suppressMonthChange_143 = true;
4177			initCalendari_143(defaultData_143);
4178			suppressMonthChange_143 = false;
4179
4180			window['clientLazyLoadCal_143'] = function (done) {
4181				fetchDatesMes_143(
4182					any_seleccionat_143,
4183					mes_seleccionat_143,
4184					done
4185				);
4186			};
4187			return;
4188		}
4189
4190		initCalendari_143(defaultData_143);
4191	});
4192</script>
4192
4193
4194<div class="calendar-container-left">
4195
4196    <span id="chivato_143"></span>
4197    <h5>ERNEST MALLAFRÉ (FEEC)</h5>
4198    <div id="loading_143"></div>
4199    <div id="calendari_143"></div>
4200    <div class="inner-nav">
4201        <span class="clearFix">&nbsp;</span>
4202    </div>
4203</div><!-- end of div#calendar-container -->
4204<meta http-equiv='cache-control' content='no-cache'>
4205<meta http-equiv='expires' content='0'>
4206<meta http-equiv='pragma' content='no-cache'>
4207
4208<script type="text/javascript">
4209	var str_json = JSON.stringify([]);
4210	var openedDays_142 = JSON.parse(str_json);
4211	var lazyLoad_142 = 1;
4212	var suppressMonthChange_142 = false;
4213	var daysContent_142 = [];
4214	var cama_142;
4215	var suelo_142;
4216	var cama_total_142 = null;
4217	var suelo_total_142 = null;
4218	var dia_seleccionat_142 = '02';
4219	var mes_seleccionat_142 = '10';
4220	var any_seleccionat_142 = '2026';
4221	var ruta_open_date_142 = '';
4222	var ruta_close_date_142 = '';
4223	var calInitialized_142 = false;
4224	var calFetchSeq_142 = 0;
4225
4226	function parseDate(dateString) {
4227		var parts = String(dateString || '').split('/');
4228		if (parts.length !== 3) {
4229			return new Date(NaN);
4230		}
4231
4232		var day = parseInt(parts[0], 10);
4233		var month = parseInt(parts[1], 10);
4234		var year = parseInt(parts[2], 10);
4235
4236		if (parts[2].length === 2) {
4237			year = 2000 + year;
4238		}
4239
4240		return new Date(year, month - 1, day);
4241	}
4242
4243	function ltrim(str, chars) {
4244		chars = chars || "\\s";
4245		return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
4246	}
4247
4248	function addZeros_142(n) {
4249		n = parseInt(n, 10);
4250		if (isNaN(n)) {
4251			return '00';
4252		}
4253		return (n < 10) ? '0' + n : String(n);
4254	}
4255
4256	function pickDay_142(dateText, inst) {
4257		var normalizedText = dateText;
4258
4259		if (inst && inst.selectedYear) {
4260			var day = inst.selectedDay;
4261			var month = inst.selectedMonth + 1;
4262			var year = inst.selectedYear;
4263			normalizedText =
4264				(day < 10 ? '0' : '') + day + '/' +
4265				(month < 10 ? '0' : '') + month + '/' +
4266				year;
4267		}
4268
4269		var openRaw = '';
4270		var closeRaw = '';
4271		var canSelect = true;
4272
4273		if (openRaw && closeRaw) {
4274			var selectedDate = parseDate(normalizedText);
4275			var openDate = parseDate(openRaw);
4276			var closeDate = parseDate(closeRaw);
4277			if (!isNaN(openDate.getTime()) && !isNaN(closeDate.getTime())) {
4278				canSelect = selectedDate >= openDate && selectedDate <= closeDate;
4279			}
4280		}
4281
4282		if (canSelect) {
4283			if (typeof syncMapFromRefugiCalendar === 'function') {
4284				syncMapFromRefugiCalendar(normalizedText, 142);
4285			} else {
4286				$('#data_reserva').val(normalizedText);
4287				my_day = normalizedText;
4288				addClickListenerSelectRefugi(142);
4289			}
4290		}
4291	}
4292
4293	function dataDay_142(date_142) {
4294		var openRaw = '';
4295		var closeRaw = '';
4296
4297		if (openRaw && closeRaw) {
4298			var openDate = parseDate(openRaw);
4299			var closeDate = parseDate(closeRaw);
4300
4301			if (!isNaN(openDate.getTime()) && !isNaN(closeDate.getTime())) {
4302				if (date_142 < openDate || date_142 > closeDate) {
4303					return [false, '', 'Ruta no activa'];
4304				}
4305			}
4306		}
4307
4308		if (openedDays_142 && openedDays_142.length > 0) {
4309			for (var i = 0; i < openedDays_142.length; i++) {
4310				if (
4311					parseInt(date_142.getMonth() + 1, 10) == parseInt(openedDays_142[i].month, 10)
4312					&& parseInt(date_142.getDate(), 10) == parseInt(openedDays_142[i].day, 10)
4313					&& parseInt(date_142.getFullYear(), 10) == parseInt(openedDays_142[i].year, 10)
4314				) {
4315					var day_class = '';
4316					var day_focus_text = '';
4317					switch (parseInt(openedDays_142[i].estat, 10)) {
4318						case 0: //tancat
4319							break;
4320						case 1: //verd
4321							day_class = 'datepick-open-day';
4322							day_focus_text = 'obert';
4323							break;
4324						case 2: //vermell
4325							day_class = 'datepick-complet-day';
4326							day_focus_text = 'complet';
4327							break;
4328						case 3: //groc q ara no el fem servir i posem verd
4329							day_class = 'datepick-open-day';
4330							day_focus_text = 'obert';
4331							break;
4332						case 4: //tronja
4333							day_class = 'datepick-comented-day';
4334							day_focus_text = 'hi ha un comentari restrictiu';
4335							break;
4336					}
4337
4338					return [true, day_class, day_focus_text];
4339				}
4340			}
4341		}
4342		return [true, '', 'tancat'];
4343	}
4344
4345	function getDatesMes_142(year_142, month_142) {
4346		if (suppressMonthChange_142) {
4347			return;
4348		}
4349		fetchDatesMes_142(year_142, month_142);
4350	}
4351
4352	function initCalendari_142(defaultData_142) {
4353		if (calInitialized_142) {
4354			return;
4355		}
4356
4357		var datepickerLocale_142 = 'ca';
4358		if (datepickerLocale_142 === 'en' && $.datepicker.regional['en-GB']) {
4359			datepickerLocale_142 = 'en-GB';
4360		}
4361
4362		$.datepicker.setDefaults($.datepicker.regional[datepickerLocale_142] || $.datepicker.regional['ca'] || {});
4363		$("#calendari_142").datepicker({
4364			changeMonth: true,
4365			changeYear: true,
4366			onChangeMonthYear: getDatesMes_142,
4367			prevText: '< ',
4368			todayText: 'M yyyy',
4369			nextText: ' >',
4370			commandsAsDateFormat: true,
4371			onSelect: pickDay_142,
4372			beforeShowDay: dataDay_142,
4373			defaultDate: defaultData_142,
4374			minDate: "0d",
4375			yearRange: 'c:c+1'
4376		});
4377		calInitialized_142 = true;
4378	}
4379
4380	function redrawCalendari_142() {
4381		var $cal = $("#calendari_142");
4382		if (!$cal.hasClass('hasDatepicker')) {
4383			return;
4384		}
4385		// Prefer refresh; fall back to forcing a redraw via setDate of current view.
4386		try {
4387			$cal.datepicker('refresh');
4388		} catch (e) {
4389			var inst = $.datepicker._getInst($cal[0]);
4390			if (inst) {
4391				$.datepicker._updateDatepicker(inst);
4392			}
4393		}
4394	}
4395
4396	function fetchDatesMes_142(year_142, month_142, done_142) {
4397		$("#loading_142").empty().html('<img src="/img/admin/ajax-loader.gif" alt="" />');
4398
4399		openedDays_142 = [];
4400		redrawCalendari_142();
4401
4402		month_142 = addZeros_142(month_142);
4403		mes_seleccionat_142 = month_142;
4404		any_seleccionat_142 = String(year_142);
4405
4406		var seq_142 = ++calFetchSeq_142;
4407
4408		$.getJSON(
4409			'/calendari/get_estat_mes/142/' + mes_seleccionat_142 + '/' + any_seleccionat_142,
4410			function (data_142) {
4411				if (seq_142 !== calFetchSeq_142) {
4412					return;
4413				}
4414				processData_142(data_142);
4415			}
4416		).fail(function () {
4417			if (seq_142 !== calFetchSeq_142) {
4418				return;
4419			}
4420			openedDays_142 = [];
4421			redrawCalendari_142();
4422		}).always(function () {
4423			if (seq_142 === calFetchSeq_142) {
4424				$("#loading_142").empty();
4425			}
4426			if (typeof done_142 === 'function') {
4427				done_142();
4428			}
4429		});
4430	}
4431
4432	function processData_142(data_142) {
4433		if (data_142 && data_142.length !== undefined) {
4434			if (0) {
4435				cama_total_142 = 46;
4436				suelo_total_142 = 0;
4437			}
4438			openedDays_142 = data_142;
4439		} else {
4440			openedDays_142 = [];
4441		}
4442
4443		var defaultData_142 = new Date(
4444			parseInt(any_seleccionat_142, 10),
4445			parseInt(mes_seleccionat_142, 10) - 1,
4446			1
4447		);
4448
4449		$("#calendari_142").show();
4450
4451		if (!calInitialized_142) {
4452			suppressMonthChange_142 = true;
4453			initCalendari_142(defaultData_142);
4454			suppressMonthChange_142 = false;
4455		} else {
4456			// Month already changed by the datepicker UI; only re-apply day colours.
4457			redrawCalendari_142();
4458		}
4459	}
4460
4461	$(document).ready(function () {
4462		var defaultData_142 = new Date(
4463			parseInt(any_seleccionat_142, 10),
4464			parseInt(mes_seleccionat_142, 10) - 1,
4465			parseInt(dia_seleccionat_142, 10)
4466		);
4467
4468		if (isNaN(defaultData_142.getTime())) {
4469			defaultData_142 = new Date();
4470		}
4471
4472		if (lazyLoad_142) {
4473			$("#loading_142").empty().html('<img src="/img/admin/ajax-loader.gif" alt="" />');
4474			// Paint an empty calendar immediately so the layout is stable,
4475			// then fill colours when AJAX returns.
4476			suppressMonthChange_142 = true;
4477			initCalendari_142(defaultData_142);
4478			suppressMonthChange_142 = false;
4479
4480			window['clientLazyLoadCal_142'] = function (done) {
4481				fetchDatesMes_142(
4482					any_seleccionat_142,
4483					mes_seleccionat_142,
4484					done
4485				);
4486			};
4487			return;
4488		}
4489
4490		initCalendari_142(defaultData_142);
4491	});
4492</script>
4492
4493
4494<div class="calendar-container-left">
4495
4496    <span id="chivato_142"></span>
4497    <h5>ESTANY LLONG</h5>
4498    <div id="loading_142"></div>
4499    <div id="calendari_142"></div>
4500    <div class="inner-nav">
4501        <span class="clearFix">&nbsp;</span>
4502    </div>
4503</div><!-- end of div#calendar-container -->
4504<meta http-equiv='cache-control' content='no-cache'>
4505<meta http-equiv='expires' content='0'>
4506<meta http-equiv='pragma' content='no-cache'>
4507
4508<script type="text/javascript">
4509	var str_json = JSON.stringify([]);
4510	var openedDays_154 = JSON.parse(str_json);
4511	var lazyLoad_154 = 1;
4512	var suppressMonthChange_154 = false;
4513	var daysContent_154 = [];
4514	var cama_154;
4515	var suelo_154;
4516	var cama_total_154 = null;
4517	var suelo_total_154 = null;
4518	var dia_seleccionat_154 = '02';
4519	var mes_seleccionat_154 = '10';
4520	var any_seleccionat_154 = '2026';
4521	var ruta_open_date_154 = '';
4522	var ruta_close_date_154 = '';
4523	var calInitialized_154 = false;
4524	var calFetchSeq_154 = 0;
4525
4526	function parseDate(dateString) {
4527		var parts = String(dateString || '').split('/');
4528		if (parts.length !== 3) {
4529			return new Date(NaN);
4530		}
4531
4532		var day = parseInt(parts[0], 10);
4533		var month = parseInt(parts[1], 10);
4534		var year = parseInt(parts[2], 10);
4535
4536		if (parts[2].length === 2) {
4537			year = 2000 + year;
4538		}
4539
4540		return new Date(year, month - 1, day);
4541	}
4542
4543	function ltrim(str, chars) {
4544		chars = chars || "\\s";
4545		return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
4546	}
4547
4548	function addZeros_154(n) {
4549		n = parseInt(n, 10);
4550		if (isNaN(n)) {
4551			return '00';
4552		}
4553		return (n < 10) ? '0' + n : String(n);
4554	}
4555
4556	function pickDay_154(dateText, inst) {
4557		var normalizedText = dateText;
4558
4559		if (inst && inst.selectedYear) {
4560			var day = inst.selectedDay;
4561			var month = inst.selectedMonth + 1;
4562			var year = inst.selectedYear;
4563			normalizedText =
4564				(day < 10 ? '0' : '') + day + '/' +
4565				(month < 10 ? '0' : '') + month + '/' +
4566				year;
4567		}
4568
4569		var openRaw = '';
4570		var closeRaw = '';
4571		var canSelect = true;
4572
4573		if (openRaw && closeRaw) {
4574			var selectedDate = parseDate(normalizedText);
4575			var openDate = parseDate(openRaw);
4576			var closeDate = parseDate(closeRaw);
4577			if (!isNaN(openDate.getTime()) && !isNaN(closeDate.getTime())) {
4578				canSelect = selectedDate >= openDate && selectedDate <= closeDate;
4579			}
4580		}
4581
4582		if (canSelect) {
4583			if (typeof syncMapFromRefugiCalendar === 'function') {
4584				syncMapFromRefugiCalendar(normalizedText, 154);
4585			} else {
4586				$('#data_reserva').val(normalizedText);
4587				my_day = normalizedText;
4588				addClickListenerSelectRefugi(154);
4589			}
4590		}
4591	}
4592
4593	function dataDay_154(date_154) {
4594		var openRaw = '';
4595		var closeRaw = '';
4596
4597		if (openRaw && closeRaw) {
4598			var openDate = parseDate(openRaw);
4599			var closeDate = parseDate(closeRaw);
4600
4601			if (!isNaN(openDate.getTime()) && !isNaN(closeDate.getTime())) {
4602				if (date_154 < openDate || date_154 > closeDate) {
4603					return [false, '', 'Ruta no activa'];
4604				}
4605			}
4606		}
4607
4608		if (openedDays_154 && openedDays_154.length > 0) {
4609			for (var i = 0; i < openedDays_154.length; i++) {
4610				if (
4611					parseInt(date_154.getMonth() + 1, 10) == parseInt(openedDays_154[i].month, 10)
4612					&& parseInt(date_154.getDate(), 10) == parseInt(openedDays_154[i].day, 10)
4613					&& parseInt(date_154.getFullYear(), 10) == parseInt(openedDays_154[i].year, 10)
4614				) {
4615					var day_class = '';
4616					var day_focus_text = '';
4617					switch (parseInt(openedDays_154[i].estat, 10)) {
4618						case 0: //tancat
4619							break;
4620						case 1: //verd
4621							day_class = 'datepick-open-day';
4622							day_focus_text = 'obert';
4623							break;
4624						case 2: //vermell
4625							day_class = 'datepick-complet-day';
4626							day_focus_text = 'complet';
4627							break;
4628						case 3: //groc q ara no el fem servir i posem verd
4629							day_class = 'datepick-open-day';
4630							day_focus_text = 'obert';
4631							break;
4632						case 4: //tronja
4633							day_class = 'datepick-comented-day';
4634							day_focus_text = 'hi ha un comentari restrictiu';
4635							break;
4636					}
4637
4638					return [true, day_class, day_focus_text];
4639				}
4640			}
4641		}
4642		return [true, '', 'tancat'];
4643	}
4644
4645	function getDatesMes_154(year_154, month_154) {
4646		if (suppressMonthChange_154) {
4647			return;
4648		}
4649		fetchDatesMes_154(year_154, month_154);
4650	}
4651
4652	function initCalendari_154(defaultData_154) {
4653		if (calInitialized_154) {
4654			return;
4655		}
4656
4657		var datepickerLocale_154 = 'ca';
4658		if (datepickerLocale_154 === 'en' && $.datepicker.regional['en-GB']) {
4659			datepickerLocale_154 = 'en-GB';
4660		}
4661
4662		$.datepicker.setDefaults($.datepicker.regional[datepickerLocale_154] || $.datepicker.regional['ca'] || {});
4663		$("#calendari_154").datepicker({
4664			changeMonth: true,
4665			changeYear: true,
4666			onChangeMonthYear: getDatesMes_154,
4667			prevText: '< ',
4668			todayText: 'M yyyy',
4669			nextText: ' >',
4670			commandsAsDateFormat: true,
4671			onSelect: pickDay_154,
4672			beforeShowDay: dataDay_154,
4673			defaultDate: defaultData_154,
4674			minDate: "0d",
4675			yearRange: 'c:c+1'
4676		});
4677		calInitialized_154 = true;
4678	}
4679
4680	function redrawCalendari_154() {
4681		var $cal = $("#calendari_154");
4682		if (!$cal.hasClass('hasDatepicker')) {
4683			return;
4684		}
4685		// Prefer refresh; fall back to forcing a redraw via setDate of current view.
4686		try {
4687			$cal.datepicker('refresh');
4688		} catch (e) {
4689			var inst = $.datepicker._getInst($cal[0]);
4690			if (inst) {
4691				$.datepicker._updateDatepicker(inst);
4692			}
4693		}
4694	}
4695
4696	function fetchDatesMes_154(year_154, month_154, done_154) {
4697		$("#loading_154").empty().html('<img src="/img/admin/ajax-loader.gif" alt="" />');
4698
4699		openedDays_154 = [];
4700		redrawCalendari_154();
4701
4702		month_154 = addZeros_154(month_154);
4703		mes_seleccionat_154 = month_154;
4704		any_seleccionat_154 = String(year_154);
4705
4706		var seq_154 = ++calFetchSeq_154;
4707
4708		$.getJSON(
4709			'/calendari/get_estat_mes/154/' + mes_seleccionat_154 + '/' + any_seleccionat_154,
4710			function (data_154) {
4711				if (seq_154 !== calFetchSeq_154) {
4712					return;
4713				}
4714				processData_154(data_154);
4715			}
4716		).fail(function () {
4717			if (seq_154 !== calFetchSeq_154) {
4718				return;
4719			}
4720			openedDays_154 = [];
4721			redrawCalendari_154();
4722		}).always(function () {
4723			if (seq_154 === calFetchSeq_154) {
4724				$("#loading_154").empty();
4725			}
4726			if (typeof done_154 === 'function') {
4727				done_154();
4728			}
4729		});
4730	}
4731
4732	function processData_154(data_154) {
4733		if (data_154 && data_154.length !== undefined) {
4734			if (0) {
4735				cama_total_154 = 31;
4736				suelo_total_154 = 0;
4737			}
4738			openedDays_154 = data_154;
4739		} else {
4740			openedDays_154 = [];
4741		}
4742
4743		var defaultData_154 = new Date(
4744			parseInt(any_seleccionat_154, 10),
4745			parseInt(mes_seleccionat_154, 10) - 1,
4746			1
4747		);
4748
4749		$("#calendari_154").show();
4750
4751		if (!calInitialized_154) {
4752			suppressMonthChange_154 = true;
4753			initCalendari_154(defaultData_154);
4754			suppressMonthChange_154 = false;
4755		} else {
4756			// Month already changed by the datepicker UI; only re-apply day colours.
4757			redrawCalendari_154();
4758		}
4759	}
4760
4761	$(document).ready(function () {
4762		var defaultData_154 = new Date(
4763			parseInt(any_seleccionat_154, 10),
4764			parseInt(mes_seleccionat_154, 10) - 1,
4765			parseInt(dia_seleccionat_154, 10)
4766		);
4767
4768		if (isNaN(defaultData_154.getTime())) {
4769			defaultData_154 = new Date();
4770		}
4771
4772		if (lazyLoad_154) {
4773			$("#loading_154").empty().html('<img src="/img/admin/ajax-loader.gif" alt="" />');
4774			// Paint an empty calendar immediately so the layout is stable,
4775			// then fill colours when AJAX returns.
4776			suppressMonthChange_154 = true;
4777			initCalendari_154(defaultData_154);
4778			suppressMonthChange_154 = false;
4779
4780			window['clientLazyLoadCal_154'] = function (done) {
4781				fetchDatesMes_154(
4782					any_seleccionat_154,
4783					mes_seleccionat_154,
4784					done
4785				);
4786			};
4787			return;
4788		}
4789
4790		initCalendari_154(defaultData_154);
4791	});
4792</script>
4792
4793
4794<div class="calendar-container-left">
4795
4796    <span id="chivato_154"></span>
4797    <h5>GERDAR</h5>
4798    <div id="loading_154"></div>
4799    <div id="calendari_154"></div>
4800    <div class="inner-nav">
4801        <span class="clearFix">&nbsp;</span>
4802    </div>
4803</div><!-- end of div#calendar-container -->
4804<meta http-equiv='cache-control' content='no-cache'>
4805<meta http-equiv='expires' content='0'>
4806<meta http-equiv='pragma' content='no-cache'>
4807
4808<script type="text/javascript">
4809	var str_json = JSON.stringify([]);
4810	var openedDays_127 = JSON.parse(str_json);
4811	var lazyLoad_127 = 1;
4812	var suppressMonthChange_127 = false;
4813	var daysContent_127 = [];
4814	var cama_127;
4815	var suelo_127;
4816	var cama_total_127 = null;
4817	var suelo_total_127 = null;
4818	var dia_seleccionat_127 = '02';
4819	var mes_seleccionat_127 = '10';
4820	var any_seleccionat_127 = '2026';
4821	var ruta_open_date_127 = '';
4822	var ruta_close_date_127 = '';
4823	var calInitialized_127 = false;
4824	var calFetchSeq_127 = 0;
4825
4826	function parseDate(dateString) {
4827		var parts = String(dateString || '').split('/');
4828		if (parts.length !== 3) {
4829			return new Date(NaN);
4830		}
4831
4832		var day = parseInt(parts[0], 10);
4833		var month = parseInt(parts[1], 10);
4834		var year = parseInt(parts[2], 10);
4835
4836		if (parts[2].length === 2) {
4837			year = 2000 + year;
4838		}
4839
4840		return new Date(year, month - 1, day);
4841	}
4842
4843	function ltrim(str, chars) {
4844		chars = chars || "\\s";
4845		return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
4846	}
4847
4848	function addZeros_127(n) {
4849		n = parseInt(n, 10);
4850		if (isNaN(n)) {
4851			return '00';
4852		}
4853		return (n < 10) ? '0' + n : String(n);
4854	}
4855
4856	function pickDay_127(dateText, inst) {
4857		var normalizedText = dateText;
4858
4859		if (inst && inst.selectedYear) {
4860			var day = inst.selectedDay;
4861			var month = inst.selectedMonth + 1;
4862			var year = inst.selectedYear;
4863			normalizedText =
4864				(day < 10 ? '0' : '') + day + '/' +
4865				(month < 10 ? '0' : '') + month + '/' +
4866				year;
4867		}
4868
4869		var openRaw = '';
4870		var closeRaw = '';
4871		var canSelect = true;
4872
4873		if (openRaw && closeRaw) {
4874			var selectedDate = parseDate(normalizedText);
4875			var openDate = parseDate(openRaw);
4876			var closeDate = parseDate(closeRaw);
4877			if (!isNaN(openDate.getTime()) && !isNaN(closeDate.getTime())) {
4878				canSelect = selectedDate >= openDate && selectedDate <= closeDate;
4879			}
4880		}
4881
4882		if (canSelect) {
4883			if (typeof syncMapFromRefugiCalendar === 'function') {
4884				syncMapFromRefugiCalendar(normalizedText, 127);
4885			} else {
4886				$('#data_reserva').val(normalizedText);
4887				my_day = normalizedText;
4888				addClickListenerSelectRefugi(127);
4889			}
4890		}
4891	}
4892
4893	function dataDay_127(date_127) {
4894		var openRaw = '';
4895		var closeRaw = '';
4896
4897		if (openRaw && closeRaw) {
4898			var openDate = parseDate(openRaw);
4899			var closeDate = parseDate(closeRaw);
4900
4901			if (!isNaN(openDate.getTime()) && !isNaN(closeDate.getTime())) {
4902				if (date_127 < openDate || date_127 > closeDate) {
4903					return [false, '', 'Ruta no activa'];
4904				}
4905			}
4906		}
4907
4908		if (openedDays_127 && openedDays_127.length > 0) {
4909			for (var i = 0; i < openedDays_127.length; i++) {
4910				if (
4911					parseInt(date_127.getMonth() + 1, 10) == parseInt(openedDays_127[i].month, 10)
4912					&& parseInt(date_127.getDate(), 10) == parseInt(openedDays_127[i].day, 10)
4913					&& parseInt(date_127.getFullYear(), 10) == parseInt(openedDays_127[i].year, 10)
4914				) {
4915					var day_class = '';
4916					var day_focus_text = '';
4917					switch (parseInt(openedDays_127[i].estat, 10)) {
4918						case 0: //tancat
4919							break;
4920						case 1: //verd
4921							day_class = 'datepick-open-day';
4922							day_focus_text = 'obert';
4923							break;
4924						case 2: //vermell
4925							day_class = 'datepick-complet-day';
4926							day_focus_text = 'complet';
4927							break;
4928						case 3: //groc q ara no el fem servir i posem verd
4929							day_class = 'datepick-open-day';
4930							day_focus_text = 'obert';
4931							break;
4932						case 4: //tronja
4933							day_class = 'datepick-comented-day';
4934							day_focus_text = 'hi ha un comentari restrictiu';
4935							break;
4936					}
4937
4938					return [true, day_class, day_focus_text];
4939				}
4940			}
4941		}
4942		return [true, '', 'tancat'];
4943	}
4944
4945	function getDatesMes_127(year_127, month_127) {
4946		if (suppressMonthChange_127) {
4947			return;
4948		}
4949		fetchDatesMes_127(year_127, month_127);
4950	}
4951
4952	function initCalendari_127(defaultData_127) {
4953		if (calInitialized_127) {
4954			return;
4955		}
4956
4957		var datepickerLocale_127 = 'ca';
4958		if (datepickerLocale_127 === 'en' && $.datepicker.regional['en-GB']) {
4959			datepickerLocale_127 = 'en-GB';
4960		}
4961
4962		$.datepicker.setDefaults($.datepicker.regional[datepickerLocale_127] || $.datepicker.regional['ca'] || {});
4963		$("#calendari_127").datepicker({
4964			changeMonth: true,
4965			changeYear: true,
4966			onChangeMonthYear: getDatesMes_127,
4967			prevText: '< ',
4968			todayText: 'M yyyy',
4969			nextText: ' >',
4970			commandsAsDateFormat: true,
4971			onSelect: pickDay_127,
4972			beforeShowDay: dataDay_127,
4973			defaultDate: defaultData_127,
4974			minDate: "0d",
4975			yearRange: 'c:c+1'
4976		});
4977		calInitialized_127 = true;
4978	}
4979
4980	function redrawCalendari_127() {
4981		var $cal = $("#calendari_127");
4982		if (!$cal.hasClass('hasDatepicker')) {
4983			return;
4984		}
4985		// Prefer refresh; fall back to forcing a redraw via setDate of current view.
4986		try {
4987			$cal.datepicker('refresh');
4988		} catch (e) {
4989			var inst = $.datepicker._getInst($cal[0]);
4990			if (inst) {
4991				$.datepicker._updateDatepicker(inst);
4992			}
4993		}
4994	}
4995
4996	function fetchDatesMes_127(year_127, month_127, done_127) {
4997		$("#loading_127").empty().html('<img src="/img/admin/ajax-loader.gif" alt="" />');
4998
4999		openedDays_127 = [];
5000		redrawCalendari_127();
5001
5002		month_127 = addZeros_127(month_127);
5003		mes_seleccionat_127 = month_127;
5004		any_seleccionat_127 = String(year_127);
5005
5006		var seq_127 = ++calFetchSeq_127;
5007
5008		$.getJSON(
5009			'/calendari/get_estat_mes/127/' + mes_seleccionat_127 + '/' + any_seleccionat_127,
5010			function (data_127) {
5011				if (seq_127 !== calFetchSeq_127) {
5012					return;
5013				}
5014				processData_127(data_127);
5015			}
5016		).fail(function () {
5017			if (seq_127 !== calFetchSeq_127) {
5018				return;
5019			}
5020			openedDays_127 = [];
5021			redrawCalendari_127();
5022		}).always(function () {
5023			if (seq_127 === calFetchSeq_127) {
5024				$("#loading_127").empty();
5025			}
5026			if (typeof done_127 === 'function') {
5027				done_127();
5028			}
5029		});
5030	}
5031
5032	function processData_127(data_127) {
5033		if (data_127 && data_127.length !== undefined) {
5034			if (0) {
5035				cama_total_127 = 68;
5036				suelo_total_127 = 0;
5037			}
5038			openedDays_127 = data_127;
5039		} else {
5040			openedDays_127 = [];
5041		}
5042
5043		var defaultData_127 = new Date(
5044			parseInt(any_seleccionat_127, 10),
5045			parseInt(mes_seleccionat_127, 10) - 1,
5046			1
5047		);
5048
5049		$("#calendari_127").show();
5050
5051		if (!calInitialized_127) {
5052			suppressMonthChange_127 = true;
5053			initCalendari_127(defaultData_127);
5054			suppressMonthChange_127 = false;
5055		} else {
5056			// Month already changed by the datepicker UI; only re-apply day colours.
5057			redrawCalendari_127();
5058		}
5059	}
5060
5061	$(document).ready(function () {
5062		var defaultData_127 = new Date(
5063			parseInt(any_seleccionat_127, 10),
5064			parseInt(mes_seleccionat_127, 10) - 1,
5065			parseInt(dia_seleccionat_127, 10)
5066		);
5067
5068		if (isNaN(defaultData_127.getTime())) {
5069			defaultData_127 = new Date();
5070		}
5071
5072		if (lazyLoad_127) {
5073			$("#loading_127").empty().html('<img src="/img/admin/ajax-loader.gif" alt="" />');
5074			// Paint an empty calendar immediately so the layout is stable,
5075			// then fill colours when AJAX returns.
5076			suppressMonthChange_127 = true;
5077			initCalendari_127(defaultData_127);
5078			suppressMonthChange_127 = false;
5079
5080			window['clientLazyLoadCal_127'] = function (done) {
5081				fetchDatesMes_127(
5082					any_seleccionat_127,
5083					mes_seleccionat_127,
5084					done
5085				);
5086			};
5087			return;
5088		}
5089
5090		initCalendari_127(defaultData_127);
5091	});
5092</script>
5092
5093
5094<div class="calendar-container-left">
5095
5096    <span id="chivato_127"></span>
5097    <h5>JM BLANC</h5>
5098    <div id="loading_127"></div>
5099    <div id="calendari_127"></div>
5100    <div class="inner-nav">
5101        <span class="clearFix">&nbsp;</span>
5102    </div>
5103</div><!-- end of div#calendar-container -->
5104<meta http-equiv='cache-control' content='no-cache'>
5105<meta http-equiv='expires' content='0'>
5106<meta http-equiv='pragma' content='no-cache'>
5107
5108<script type="text/javascript">
5109	var str_json = JSON.stringify([]);
5110	var openedDays_145 = JSON.parse(str_json);
5111	var lazyLoad_145 = 1;
5112	var suppressMonthChange_145 = false;
5113	var daysContent_145 = [];
5114	var cama_145;
5115	var suelo_145;
5116	var cama_total_145 = null;
5117	var suelo_total_145 = null;
5118	var dia_seleccionat_145 = '02';
5119	var mes_seleccionat_145 = '10';
5120	var any_seleccionat_145 = '2026';
5121	var ruta_open_date_145 = '';
5122	var ruta_close_date_145 = '';
5123	var calInitialized_145 = false;
5124	var calFetchSeq_145 = 0;
5125
5126	function parseDate(dateString) {
5127		var parts = String(dateString || '').split('/');
5128		if (parts.length !== 3) {
5129			return new Date(NaN);
5130		}
5131
5132		var day = parseInt(parts[0], 10);
5133		var month = parseInt(parts[1], 10);
5134		var year = parseInt(parts[2], 10);
5135
5136		if (parts[2].length === 2) {
5137			year = 2000 + year;
5138		}
5139
5140		return new Date(year, month - 1, day);
5141	}
5142
5143	function ltrim(str, chars) {
5144		chars = chars || "\\s";
5145		return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
5146	}
5147
5148	function addZeros_145(n) {
5149		n = parseInt(n, 10);
5150		if (isNaN(n)) {
5151			return '00';
5152		}
5153		return (n < 10) ? '0' + n : String(n);
5154	}
5155
5156	function pickDay_145(dateText, inst) {
5157		var normalizedText = dateText;
5158
5159		if (inst && inst.selectedYear) {
5160			var day = inst.selectedDay;
5161			var month = inst.selectedMonth + 1;
5162			var year = inst.selectedYear;
5163			normalizedText =
5164				(day < 10 ? '0' : '') + day + '/' +
5165				(month < 10 ? '0' : '') + month + '/' +
5166				year;
5167		}
5168
5169		var openRaw = '';
5170		var closeRaw = '';
5171		var canSelect = true;
5172
5173		if (openRaw && closeRaw) {
5174			var selectedDate = parseDate(normalizedText);
5175			var openDate = parseDate(openRaw);
5176			var closeDate = parseDate(closeRaw);
5177			if (!isNaN(openDate.getTime()) && !isNaN(closeDate.getTime())) {
5178				canSelect = selectedDate >= openDate && selectedDate <= closeDate;
5179			}
5180		}
5181
5182		if (canSelect) {
5183			if (typeof syncMapFromRefugiCalendar === 'function') {
5184				syncMapFromRefugiCalendar(normalizedText, 145);
5185			} else {
5186				$('#data_reserva').val(normalizedText);
5187				my_day = normalizedText;
5188				addClickListenerSelectRefugi(145);
5189			}
5190		}
5191	}
5192
5193	function dataDay_145(date_145) {
5194		var openRaw = '';
5195		var closeRaw = '';
5196
5197		if (openRaw && closeRaw) {
5198			var openDate = parseDate(openRaw);
5199			var closeDate = parseDate(closeRaw);
5200
5201			if (!isNaN(openDate.getTime()) && !isNaN(closeDate.getTime())) {
5202				if (date_145 < openDate || date_145 > closeDate) {
5203					return [false, '', 'Ruta no activa'];
5204				}
5205			}
5206		}
5207
5208		if (openedDays_145 && openedDays_145.length > 0) {
5209			for (var i = 0; i < openedDays_145.length; i++) {
5210				if (
5211					parseInt(date_145.getMonth() + 1, 10) == parseInt(openedDays_145[i].month, 10)
5212					&& parseInt(date_145.getDate(), 10) == parseInt(openedDays_145[i].day, 10)
5213					&& parseInt(date_145.getFullYear(), 10) == parseInt(openedDays_145[i].year, 10)
5214				) {
5215					var day_class = '';
5216					var day_focus_text = '';
5217					switch (parseInt(openedDays_145[i].estat, 10)) {
5218						case 0: //tancat
5219							break;
5220						case 1: //verd
5221							day_class = 'datepick-open-day';
5222							day_focus_text = 'obert';
5223							break;
5224						case 2: //vermell
5225							day_class = 'datepick-complet-day';
5226							day_focus_text = 'complet';
5227							break;
5228						case 3: //groc q ara no el fem servir i posem verd
5229							day_class = 'datepick-open-day';
5230							day_focus_text = 'obert';
5231							break;
5232						case 4: //tronja
5233							day_class = 'datepick-comented-day';
5234							day_focus_text = 'hi ha un comentari restrictiu';
5235							break;
5236					}
5237
5238					return [true, day_class, day_focus_text];
5239				}
5240			}
5241		}
5242		return [true, '', 'tancat'];
5243	}
5244
5245	function getDatesMes_145(year_145, month_145) {
5246		if (suppressMonthChange_145) {
5247			return;
5248		}
5249		fetchDatesMes_145(year_145, month_145);
5250	}
5251
5252	function initCalendari_145(defaultData_145) {
5253		if (calInitialized_145) {
5254			return;
5255		}
5256
5257		var datepickerLocale_145 = 'ca';
5258		if (datepickerLocale_145 === 'en' && $.datepicker.regional['en-GB']) {
5259			datepickerLocale_145 = 'en-GB';
5260		}
5261
5262		$.datepicker.setDefaults($.datepicker.regional[datepickerLocale_145] || $.datepicker.regional['ca'] || {});
5263		$("#calendari_145").datepicker({
5264			changeMonth: true,
5265			changeYear: true,
5266			onChangeMonthYear: getDatesMes_145,
5267			prevText: '< ',
5268			todayText: 'M yyyy',
5269			nextText: ' >',
5270			commandsAsDateFormat: true,
5271			onSelect: pickDay_145,
5272			beforeShowDay: dataDay_145,
5273			defaultDate: defaultData_145,
5274			minDate: "0d",
5275			yearRange: 'c:c+1'
5276		});
5277		calInitialized_145 = true;
5278	}
5279
5280	function redrawCalendari_145() {
5281		var $cal = $("#calendari_145");
5282		if (!$cal.hasClass('hasDatepicker')) {
5283			return;
5284		}
5285		// Prefer refresh; fall back to forcing a redraw via setDate of current view.
5286		try {
5287			$cal.datepicker('refresh');
5288		} catch (e) {
5289			var inst = $.datepicker._getInst($cal[0]);
5290			if (inst) {
5291				$.datepicker._updateDatepicker(inst);
5292			}
5293		}
5294	}
5295
5296	function fetchDatesMes_145(year_145, month_145, done_145) {
5297		$("#loading_145").empty().html('<img src="/img/admin/ajax-loader.gif" alt="" />');
5298
5299		openedDays_145 = [];
5300		redrawCalendari_145();
5301
5302		month_145 = addZeros_145(month_145);
5303		mes_seleccionat_145 = month_145;
5304		any_seleccionat_145 = String(year_145);
5305
5306		var seq_145 = ++calFetchSeq_145;
5307
5308		$.getJSON(
5309			'/calendari/get_estat_mes/145/' + mes_seleccionat_145 + '/' + any_seleccionat_145,
5310			function (data_145) {
5311				if (seq_145 !== calFetchSeq_145) {
5312					return;
5313				}
5314				processData_145(data_145);
5315			}
5316		).fail(function () {
5317			if (seq_145 !== calFetchSeq_145) {
5318				return;
5319			}
5320			openedDays_145 = [];
5321			redrawCalendari_145();
5322		}).always(function () {
5323			if (seq_145 === calFetchSeq_145) {
5324				$("#loading_145").empty();
5325			}
5326			if (typeof done_145 === 'function') {
5327				done_145();
5328			}
5329		});
5330	}
5331
5332	function processData_145(data_145) {
5333		if (data_145 && data_145.length !== undefined) {
5334			if (0) {
5335				cama_total_145 = 30;
5336				suelo_total_145 = 4;
5337			}
5338			openedDays_145 = data_145;
5339		} else {
5340			openedDays_145 = [];
5341		}
5342
5343		var defaultData_145 = new Date(
5344			parseInt(any_seleccionat_145, 10),
5345			parseInt(mes_seleccionat_145, 10) - 1,
5346			1
5347		);
5348
5349		$("#calendari_145").show();
5350
5351		if (!calInitialized_145) {
5352			suppressMonthChange_145 = true;
5353			initCalendari_145(defaultData_145);
5354			suppressMonthChange_145 = false;
5355		} else {
5356			// Month already changed by the datepicker UI; only re-apply day colours.
5357			redrawCalendari_145();
5358		}
5359	}
5360
5361	$(document).ready(function () {
5362		var defaultData_145 = new Date(
5363			parseInt(any_seleccionat_145, 10),
5364			parseInt(mes_seleccionat_145, 10) - 1,
5365			parseInt(dia_seleccionat_145, 10)
5366		);
5367
5368		if (isNaN(defaultData_145.getTime())) {
5369			defaultData_145 = new Date();
5370		}
5371
5372		if (lazyLoad_145) {
5373			$("#loading_145").empty().html('<img src="/img/admin/ajax-loader.gif" alt="" />');
5374			// Paint an empty calendar immediately so the layout is stable,
5375			// then fill colours when AJAX returns.
5376			suppressMonthChange_145 = true;
5377			initCalendari_145(defaultData_145);
5378			suppressMonthChange_145 = false;
5379
5380			window['clientLazyLoadCal_145'] = function (done) {
5381				fetchDatesMes_145(
5382					any_seleccionat_145,
5383					mes_seleccionat_145,
5384					done
5385				);
5386			};
5387			return;
5388		}
5389
5390		initCalendari_145(defaultData_145);
5391	});
5392</script>
5392
5393
5394<div class="calendar-container-left">
5395
5396    <span id="chivato_145"></span>
5397    <h5>MONTGARRI</h5>
5398    <div id="loading_145"></div>
5399    <div id="calendari_145"></div>
5400    <div class="inner-nav">
5401        <span class="clearFix">&nbsp;</span>
5402    </div>
5403</div><!-- end of div#calendar-container -->
5404<meta http-equiv='cache-control' content='no-cache'>
5405<meta http-equiv='expires' content='0'>
5406<meta http-equiv='pragma' content='no-cache'>
5407
5408<script type="text/javascript">
5409	var str_json = JSON.stringify([]);
5410	var openedDays_128 = JSON.parse(str_json);
5411	var lazyLoad_128 = 1;
5412	var suppressMonthChange_128 = false;
5413	var daysContent_128 = [];
5414	var cama_128;
5415	var suelo_128;
5416	var cama_total_128 = null;
5417	var suelo_total_128 = null;
5418	var dia_seleccionat_128 = '02';
5419	var mes_seleccionat_128 = '10';
5420	var any_seleccionat_128 = '2026';
5421	var ruta_open_date_128 = '';
5422	var ruta_close_date_128 = '';
5423	var calInitialized_128 = false;
5424	var calFetchSeq_128 = 0;
5425
5426	function parseDate(dateString) {
5427		var parts = String(dateString || '').split('/');
5428		if (parts.length !== 3) {
5429			return new Date(NaN);
5430		}
5431
5432		var day = parseInt(parts[0], 10);
5433		var month = parseInt(parts[1], 10);
5434		var year = parseInt(parts[2], 10);
5435
5436		if (parts[2].length === 2) {
5437			year = 2000 + year;
5438		}
5439
5440		return new Date(year, month - 1, day);
5441	}
5442
5443	function ltrim(str, chars) {
5444		chars = chars || "\\s";
5445		return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
5446	}
5447
5448	function addZeros_128(n) {
5449		n = parseInt(n, 10);
5450		if (isNaN(n)) {
5451			return '00';
5452		}
5453		return (n < 10) ? '0' + n : String(n);
5454	}
5455
5456	function pickDay_128(dateText, inst) {
5457		var normalizedText = dateText;
5458
5459		if (inst && inst.selectedYear) {
5460			var day = inst.selectedDay;
5461			var month = inst.selectedMonth + 1;
5462			var year = inst.selectedYear;
5463			normalizedText =
5464				(day < 10 ? '0' : '') + day + '/' +
5465				(month < 10 ? '0' : '') + month + '/' +
5466				year;
5467		}
5468
5469		var openRaw = '';
5470		var closeRaw = '';
5471		var canSelect = true;
5472
5473		if (openRaw && closeRaw) {
5474			var selectedDate = parseDate(normalizedText);
5475			var openDate = parseDate(openRaw);
5476			var closeDate = parseDate(closeRaw);
5477			if (!isNaN(openDate.getTime()) && !isNaN(closeDate.getTime())) {
5478				canSelect = selectedDate >= openDate && selectedDate <= closeDate;
5479			}
5480		}
5481
5482		if (canSelect) {
5483			if (typeof syncMapFromRefugiCalendar === 'function') {
5484				syncMapFromRefugiCalendar(normalizedText, 128);
5485			} else {
5486				$('#data_reserva').val(normalizedText);
5487				my_day = normalizedText;
5488				addClickListenerSelectRefugi(128);
5489			}
5490		}
5491	}
5492
5493	function dataDay_128(date_128) {
5494		var openRaw = '';
5495		var closeRaw = '';
5496
5497		if (openRaw && closeRaw) {
5498			var openDate = parseDate(openRaw);
5499			var closeDate = parseDate(closeRaw);
5500
5501			if (!isNaN(openDate.getTime()) && !isNaN(closeDate.getTime())) {
5502				if (date_128 < openDate || date_128 > closeDate) {
5503					return [false, '', 'Ruta no activa'];
5504				}
5505			}
5506		}
5507
5508		if (openedDays_128 && openedDays_128.length > 0) {
5509			for (var i = 0; i < openedDays_128.length; i++) {
5510				if (
5511					parseInt(date_128.getMonth() + 1, 10) == parseInt(openedDays_128[i].month, 10)
5512					&& parseInt(date_128.getDate(), 10) == parseInt(openedDays_128[i].day, 10)
5513					&& parseInt(date_128.getFullYear(), 10) == parseInt(openedDays_128[i].year, 10)
5514				) {
5515					var day_class = '';
5516					var day_focus_text = '';
5517					switch (parseInt(openedDays_128[i].estat, 10)) {
5518						case 0: //tancat
5519							break;
5520						case 1: //verd
5521							day_class = 'datepick-open-day';
5522							day_focus_text = 'obert';
5523							break;
5524						case 2: //vermell
5525							day_class = 'datepick-complet-day';
5526							day_focus_text = 'complet';
5527							break;
5528						case 3: //groc q ara no el fem servir i posem verd
5529							day_class = 'datepick-open-day';
5530							day_focus_text = 'obert';
5531							break;
5532						case 4: //tronja
5533							day_class = 'datepick-comented-day';
5534							day_focus_text = 'hi ha un comentari restrictiu';
5535							break;
5536					}
5537
5538					return [true, day_class, day_focus_text];
5539				}
5540			}
5541		}
5542		return [true, '', 'tancat'];
5543	}
5544
5545	function getDatesMes_128(year_128, month_128) {
5546		if (suppressMonthChange_128) {
5547			return;
5548		}
5549		fetchDatesMes_128(year_128, month_128);
5550	}
5551
5552	function initCalendari_128(defaultData_128) {
5553		if (calInitialized_128) {
5554			return;
5555		}
5556
5557		var datepickerLocale_128 = 'ca';
5558		if (datepickerLocale_128 === 'en' && $.datepicker.regional['en-GB']) {
5559			datepickerLocale_128 = 'en-GB';
5560		}
5561
5562		$.datepicker.setDefaults($.datepicker.regional[datepickerLocale_128] || $.datepicker.regional['ca'] || {});
5563		$("#calendari_128").datepicker({
5564			changeMonth: true,
5565			changeYear: true,
5566			onChangeMonthYear: getDatesMes_128,
5567			prevText: '< ',
5568			todayText: 'M yyyy',
5569			nextText: ' >',
5570			commandsAsDateFormat: true,
5571			onSelect: pickDay_128,
5572			beforeShowDay: dataDay_128,
5573			defaultDate: defaultData_128,
5574			minDate: "0d",
5575			yearRange: 'c:c+1'
5576		});
5577		calInitialized_128 = true;
5578	}
5579
5580	function redrawCalendari_128() {
5581		var $cal = $("#calendari_128");
5582		if (!$cal.hasClass('hasDatepicker')) {
5583			return;
5584		}
5585		// Prefer refresh; fall back to forcing a redraw via setDate of current view.
5586		try {
5587			$cal.datepicker('refresh');
5588		} catch (e) {
5589			var inst = $.datepicker._getInst($cal[0]);
5590			if (inst) {
5591				$.datepicker._updateDatepicker(inst);
5592			}
5593		}
5594	}
5595
5596	function fetchDatesMes_128(year_128, month_128, done_128) {
5597		$("#loading_128").empty().html('<img src="/img/admin/ajax-loader.gif" alt="" />');
5598
5599		openedDays_128 = [];
5600		redrawCalendari_128();
5601
5602		month_128 = addZeros_128(month_128);
5603		mes_seleccionat_128 = month_128;
5604		any_seleccionat_128 = String(year_128);
5605
5606		var seq_128 = ++calFetchSeq_128;
5607
5608		$.getJSON(
5609			'/calendari/get_estat_mes/128/' + mes_seleccionat_128 + '/' + any_seleccionat_128,
5610			function (data_128) {
5611				if (seq_128 !== calFetchSeq_128) {
5612					return;
5613				}
5614				processData_128(data_128);
5615			}
5616		).fail(function () {
5617			if (seq_128 !== calFetchSeq_128) {
5618				return;
5619			}
5620			openedDays_128 = [];
5621			redrawCalendari_128();
5622		}).always(function () {
5623			if (seq_128 === calFetchSeq_128) {
5624				$("#loading_128").empty();
5625			}
5626			if (typeof done_128 === 'function') {
5627				done_128();
5628			}
5629		});
5630	}
5631
5632	function processData_128(data_128) {
5633		if (data_128 && data_128.length !== undefined) {
5634			if (0) {
5635				cama_total_128 = 23;
5636				suelo_total_128 = 0;
5637			}
5638			openedDays_128 = data_128;
5639		} else {
5640			openedDays_128 = [];
5641		}
5642
5643		var defaultData_128 = new Date(
5644			parseInt(any_seleccionat_128, 10),
5645			parseInt(mes_seleccionat_128, 10) - 1,
5646			1
5647		);
5648
5649		$("#calendari_128").show();
5650
5651		if (!calInitialized_128) {
5652			suppressMonthChange_128 = true;
5653			initCalendari_128(defaultData_128);
5654			suppressMonthChange_128 = false;
5655		} else {
5656			// Month already changed by the datepicker UI; only re-apply day colours.
5657			redrawCalendari_128();
5658		}
5659	}
5660
5661	$(document).ready(function () {
5662		var defaultData_128 = new Date(
5663			parseInt(any_seleccionat_128, 10),
5664			parseInt(mes_seleccionat_128, 10) - 1,
5665			parseInt(dia_seleccionat_128, 10)
5666		);
5667
5668		if (isNaN(defaultData_128.getTime())) {
5669			defaultData_128 = new Date();
5670		}
5671
5672		if (lazyLoad_128) {
5673			$("#loading_128").empty().html('<img src="/img/admin/ajax-loader.gif" alt="" />');
5674			// Paint an empty calendar immediately so the layout is stable,
5675			// then fill colours when AJAX returns.
5676			suppressMonthChange_128 = true;
5677			initCalendari_128(defaultData_128);
5678			suppressMonthChange_128 = false;
5679
5680			window['clientLazyLoadCal_128'] = function (done) {
5681				fetchDatesMes_128(
5682					any_seleccionat_128,
5683					mes_seleccionat_128,
5684					done
5685				);
5686			};
5687			return;
5688		}
5689
5690		initCalendari_128(defaultData_128);
5691	});
5692</script>
5692
5693
5694<div class="calendar-container-left">
5695
5696    <span id="chivato_128"></span>
5697    <h5>PLA DE LA FONT</h5>
5698    <div id="loading_128"></div>
5699    <div id="calendari_128"></div>
5700    <div class="inner-nav">
5701        <span class="clearFix">&nbsp;</span>
5702    </div>
5703</div><!-- end of div#calendar-container -->
5704<meta http-equiv='cache-control' content='no-cache'>
5705<meta http-equiv='expires' content='0'>
5706<meta http-equiv='pragma' content='no-cache'>
5707
5708<script type="text/javascript">
5709	var str_json = JSON.stringify([]);
5710	var openedDays_139 = JSON.parse(str_json);
5711	var lazyLoad_139 = 1;
5712	var suppressMonthChange_139 = false;
5713	var daysContent_139 = [];
5714	var cama_139;
5715	var suelo_139;
5716	var cama_total_139 = null;
5717	var suelo_total_139 = null;
5718	var dia_seleccionat_139 = '02';
5719	var mes_seleccionat_139 = '10';
5720	var any_seleccionat_139 = '2026';
5721	var ruta_open_date_139 = '';
5722	var ruta_close_date_139 = '';
5723	var calInitialized_139 = false;
5724	var calFetchSeq_139 = 0;
5725
5726	function parseDate(dateString) {
5727		var parts = String(dateString || '').split('/');
5728		if (parts.length !== 3) {
5729			return new Date(NaN);
5730		}
5731
5732		var day = parseInt(parts[0], 10);
5733		var month = parseInt(parts[1], 10);
5734		var year = parseInt(parts[2], 10);
5735
5736		if (parts[2].length === 2) {
5737			year = 2000 + year;
5738		}
5739
5740		return new Date(year, month - 1, day);
5741	}
5742
5743	function ltrim(str, chars) {
5744		chars = chars || "\\s";
5745		return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
5746	}
5747
5748	function addZeros_139(n) {
5749		n = parseInt(n, 10);
5750		if (isNaN(n)) {
5751			return '00';
5752		}
5753		return (n < 10) ? '0' + n : String(n);
5754	}
5755
5756	function pickDay_139(dateText, inst) {
5757		var normalizedText = dateText;
5758
5759		if (inst && inst.selectedYear) {
5760			var day = inst.selectedDay;
5761			var month = inst.selectedMonth + 1;
5762			var year = inst.selectedYear;
5763			normalizedText =
5764				(day < 10 ? '0' : '') + day + '/' +
5765				(month < 10 ? '0' : '') + month + '/' +
5766				year;
5767		}
5768
5769		var openRaw = '';
5770		var closeRaw = '';
5771		var canSelect = true;
5772
5773		if (openRaw && closeRaw) {
5774			var selectedDate = parseDate(normalizedText);
5775			var openDate = parseDate(openRaw);
5776			var closeDate = parseDate(closeRaw);
5777			if (!isNaN(openDate.getTime()) && !isNaN(closeDate.getTime())) {
5778				canSelect = selectedDate >= openDate && selectedDate <= closeDate;
5779			}
5780		}
5781
5782		if (canSelect) {
5783			if (typeof syncMapFromRefugiCalendar === 'function') {
5784				syncMapFromRefugiCalendar(normalizedText, 139);
5785			} else {
5786				$('#data_reserva').val(normalizedText);
5787				my_day = normalizedText;
5788				addClickListenerSelectRefugi(139);
5789			}
5790		}
5791	}
5792
5793	function dataDay_139(date_139) {
5794		var openRaw = '';
5795		var closeRaw = '';
5796
5797		if (openRaw && closeRaw) {
5798			var openDate = parseDate(openRaw);
5799			var closeDate = parseDate(closeRaw);
5800
5801			if (!isNaN(openDate.getTime()) && !isNaN(closeDate.getTime())) {
5802				if (date_139 < openDate || date_139 > closeDate) {
5803					return [false, '', 'Ruta no activa'];
5804				}
5805			}
5806		}
5807
5808		if (openedDays_139 && openedDays_139.length > 0) {
5809			for (var i = 0; i < openedDays_139.length; i++) {
5810				if (
5811					parseInt(date_139.getMonth() + 1, 10) == parseInt(openedDays_139[i].month, 10)
5812					&& parseInt(date_139.getDate(), 10) == parseInt(openedDays_139[i].day, 10)
5813					&& parseInt(date_139.getFullYear(), 10) == parseInt(openedDays_139[i].year, 10)
5814				) {
5815					var day_class = '';
5816					var day_focus_text = '';
5817					switch (parseInt(openedDays_139[i].estat, 10)) {
5818						case 0: //tancat
5819							break;
5820						case 1: //verd
5821							day_class = 'datepick-open-day';
5822							day_focus_text = 'obert';
5823							break;
5824						case 2: //vermell
5825							day_class = 'datepick-complet-day';
5826							day_focus_text = 'complet';
5827							break;
5828						case 3: //groc q ara no el fem servir i posem verd
5829							day_class = 'datepick-open-day';
5830							day_focus_text = 'obert';
5831							break;
5832						case 4: //tronja
5833							day_class = 'datepick-comented-day';
5834							day_focus_text = 'hi ha un comentari restrictiu';
5835							break;
5836					}
5837
5838					return [true, day_class, day_focus_text];
5839				}
5840			}
5841		}
5842		return [true, '', 'tancat'];
5843	}
5844
5845	function getDatesMes_139(year_139, month_139) {
5846		if (suppressMonthChange_139) {
5847			return;
5848		}
5849		fetchDatesMes_139(year_139, month_139);
5850	}
5851
5852	function initCalendari_139(defaultData_139) {
5853		if (calInitialized_139) {
5854			return;
5855		}
5856
5857		var datepickerLocale_139 = 'ca';
5858		if (datepickerLocale_139 === 'en' && $.datepicker.regional['en-GB']) {
5859			datepickerLocale_139 = 'en-GB';
5860		}
5861
5862		$.datepicker.setDefaults($.datepicker.regional[datepickerLocale_139] || $.datepicker.regional['ca'] || {});
5863		$("#calendari_139").datepicker({
5864			changeMonth: true,
5865			changeYear: true,
5866			onChangeMonthYear: getDatesMes_139,
5867			prevText: '< ',
5868			todayText: 'M yyyy',
5869			nextText: ' >',
5870			commandsAsDateFormat: true,
5871			onSelect: pickDay_139,
5872			beforeShowDay: dataDay_139,
5873			defaultDate: defaultData_139,
5874			minDate: "0d",
5875			yearRange: 'c:c+1'
5876		});
5877		calInitialized_139 = true;
5878	}
5879
5880	function redrawCalendari_139() {
5881		var $cal = $("#calendari_139");
5882		if (!$cal.hasClass('hasDatepicker')) {
5883			return;
5884		}
5885		// Prefer refresh; fall back to forcing a redraw via setDate of current view.
5886		try {
5887			$cal.datepicker('refresh');
5888		} catch (e) {
5889			var inst = $.datepicker._getInst($cal[0]);
5890			if (inst) {
5891				$.datepicker._updateDatepicker(inst);
5892			}
5893		}
5894	}
5895
5896	function fetchDatesMes_139(year_139, month_139, done_139) {
5897		$("#loading_139").empty().html('<img src="/img/admin/ajax-loader.gif" alt="" />');
5898
5899		openedDays_139 = [];
5900		redrawCalendari_139();
5901
5902		month_139 = addZeros_139(month_139);
5903		mes_seleccionat_139 = month_139;
5904		any_seleccionat_139 = String(year_139);
5905
5906		var seq_139 = ++calFetchSeq_139;
5907
5908		$.getJSON(
5909			'/calendari/get_estat_mes/139/' + mes_seleccionat_139 + '/' + any_seleccionat_139,
5910			function (data_139) {
5911				if (seq_139 !== calFetchSeq_139) {
5912					return;
5913				}
5914				processData_139(data_139);
5915			}
5916		).fail(function () {
5917			if (seq_139 !== calFetchSeq_139) {
5918				return;
5919			}
5920			openedDays_139 = [];
5921			redrawCalendari_139();
5922		}).always(function () {
5923			if (seq_139 === calFetchSeq_139) {
5924				$("#loading_139").empty();
5925			}
5926			if (typeof done_139 === 'function') {
5927				done_139();
5928			}
5929		});
5930	}
5931
5932	function processData_139(data_139) {
5933		if (data_139 && data_139.length !== undefined) {
5934			if (0) {
5935				cama_total_139 = 72;
5936				suelo_total_139 = 0;
5937			}
5938			openedDays_139 = data_139;
5939		} else {
5940			openedDays_139 = [];
5941		}
5942
5943		var defaultData_139 = new Date(
5944			parseInt(any_seleccionat_139, 10),
5945			parseInt(mes_seleccionat_139, 10) - 1,
5946			1
5947		);
5948
5949		$("#calendari_139").show();
5950
5951		if (!calInitialized_139) {
5952			suppressMonthChange_139 = true;
5953			initCalendari_139(defaultData_139);
5954			suppressMonthChange_139 = false;
5955		} else {
5956			// Month already changed by the datepicker UI; only re-apply day colours.
5957			redrawCalendari_139();
5958		}
5959	}
5960
5961	$(document).ready(function () {
5962		var defaultData_139 = new Date(
5963			parseInt(any_seleccionat_139, 10),
5964			parseInt(mes_seleccionat_139, 10) - 1,
5965			parseInt(dia_seleccionat_139, 10)
5966		);
5967
5968		if (isNaN(defaultData_139.getTime())) {
5969			defaultData_139 = new Date();
5970		}
5971
5972		if (lazyLoad_139) {
5973			$("#loading_139").empty().html('<img src="/img/admin/ajax-loader.gif" alt="" />');
5974			// Paint an empty calendar immediately so the layout is stable,
5975			// then fill colours when AJAX returns.
5976			suppressMonthChange_139 = true;
5977			initCalendari_139(defaultData_139);
5978			suppressMonthChange_139 = false;
5979
5980			window['clientLazyLoadCal_139'] = function (done) {
5981				fetchDatesMes_139(
5982					any_seleccionat_139,
5983					mes_seleccionat_139,
5984					done
5985				);
5986			};
5987			return;
5988		}
5989
5990		initCalendari_139(defaultData_139);
5991	});
5992</script>
5992
5993
5994<div class="calendar-container-left">
5995
5996    <span id="chivato_139"></span>
5997    <h5>RESTANCA</h5>
5998    <div id="loading_139"></div>
5999    <div id="calendari_139"></div>
6000    <div class="inner-nav">
6001        <span class="clearFix">&nbsp;</span>
6002    </div>
6003</div><!-- end of div#calendar-container -->
6004<meta http-equiv='cache-control' content='no-cache'>
6005<meta http-equiv='expires' content='0'>
6006<meta http-equiv='pragma' content='no-cache'>
6007
6008<script type="text/javascript">
6009	var str_json = JSON.stringify([]);
6010	var openedDays_144 = JSON.parse(str_json);
6011	var lazyLoad_144 = 1;
6012	var suppressMonthChange_144 = false;
6013	var daysContent_144 = [];
6014	var cama_144;
6015	var suelo_144;
6016	var cama_total_144 = null;
6017	var suelo_total_144 = null;
6018	var dia_seleccionat_144 = '02';
6019	var mes_seleccionat_144 = '10';
6020	var any_seleccionat_144 = '2026';
6021	var ruta_open_date_144 = '';
6022	var ruta_close_date_144 = '';
6023	var calInitialized_144 = false;
6024	var calFetchSeq_144 = 0;
6025
6026	function parseDate(dateString) {
6027		var parts = String(dateString || '').split('/');
6028		if (parts.length !== 3) {
6029			return new Date(NaN);
6030		}
6031
6032		var day = parseInt(parts[0], 10);
6033		var month = parseInt(parts[1], 10);
6034		var year = parseInt(parts[2], 10);
6035
6036		if (parts[2].length === 2) {
6037			year = 2000 + year;
6038		}
6039
6040		return new Date(year, month - 1, day);
6041	}
6042
6043	function ltrim(str, chars) {
6044		chars = chars || "\\s";
6045		return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
6046	}
6047
6048	function addZeros_144(n) {
6049		n = parseInt(n, 10);
6050		if (isNaN(n)) {
6051			return '00';
6052		}
6053		return (n < 10) ? '0' + n : String(n);
6054	}
6055
6056	function pickDay_144(dateText, inst) {
6057		var normalizedText = dateText;
6058
6059		if (inst && inst.selectedYear) {
6060			var day = inst.selectedDay;
6061			var month = inst.selectedMonth + 1;
6062			var year = inst.selectedYear;
6063			normalizedText =
6064				(day < 10 ? '0' : '') + day + '/' +
6065				(month < 10 ? '0' : '') + month + '/' +
6066				year;
6067		}
6068
6069		var openRaw = '';
6070		var closeRaw = '';
6071		var canSelect = true;
6072
6073		if (openRaw && closeRaw) {
6074			var selectedDate = parseDate(normalizedText);
6075			var openDate = parseDate(openRaw);
6076			var closeDate = parseDate(closeRaw);
6077			if (!isNaN(openDate.getTime()) && !isNaN(closeDate.getTime())) {
6078				canSelect = selectedDate >= openDate && selectedDate <= closeDate;
6079			}
6080		}
6081
6082		if (canSelect) {
6083			if (typeof syncMapFromRefugiCalendar === 'function') {
6084				syncMapFromRefugiCalendar(normalizedText, 144);
6085			} else {
6086				$('#data_reserva').val(normalizedText);
6087				my_day = normalizedText;
6088				addClickListenerSelectRefugi(144);
6089			}
6090		}
6091	}
6092
6093	function dataDay_144(date_144) {
6094		var openRaw = '';
6095		var closeRaw = '';
6096
6097		if (openRaw && closeRaw) {
6098			var openDate = parseDate(openRaw);
6099			var closeDate = parseDate(closeRaw);
6100
6101			if (!isNaN(openDate.getTime()) && !isNaN(closeDate.getTime())) {
6102				if (date_144 < openDate || date_144 > closeDate) {
6103					return [false, '', 'Ruta no activa'];
6104				}
6105			}
6106		}
6107
6108		if (openedDays_144 && openedDays_144.length > 0) {
6109			for (var i = 0; i < openedDays_144.length; i++) {
6110				if (
6111					parseInt(date_144.getMonth() + 1, 10) == parseInt(openedDays_144[i].month, 10)
6112					&& parseInt(date_144.getDate(), 10) == parseInt(openedDays_144[i].day, 10)
6113					&& parseInt(date_144.getFullYear(), 10) == parseInt(openedDays_144[i].year, 10)
6114				) {
6115					var day_class = '';
6116					var day_focus_text = '';
6117					switch (parseInt(openedDays_144[i].estat, 10)) {
6118						case 0: //tancat
6119							break;
6120						case 1: //verd
6121							day_class = 'datepick-open-day';
6122							day_focus_text = 'obert';
6123							break;
6124						case 2: //vermell
6125							day_class = 'datepick-complet-day';
6126							day_focus_text = 'complet';
6127							break;
6128						case 3: //groc q ara no el fem servir i posem verd
6129							day_class = 'datepick-open-day';
6130							day_focus_text = 'obert';
6131							break;
6132						case 4: //tronja
6133							day_class = 'datepick-comented-day';
6134							day_focus_text = 'hi ha un comentari restrictiu';
6135							break;
6136					}
6137
6138					return [true, day_class, day_focus_text];
6139				}
6140			}
6141		}
6142		return [true, '', 'tancat'];
6143	}
6144
6145	function getDatesMes_144(year_144, month_144) {
6146		if (suppressMonthChange_144) {
6147			return;
6148		}
6149		fetchDatesMes_144(year_144, month_144);
6150	}
6151
6152	function initCalendari_144(defaultData_144) {
6153		if (calInitialized_144) {
6154			return;
6155		}
6156
6157		var datepickerLocale_144 = 'ca';
6158		if (datepickerLocale_144 === 'en' && $.datepicker.regional['en-GB']) {
6159			datepickerLocale_144 = 'en-GB';
6160		}
6161
6162		$.datepicker.setDefaults($.datepicker.regional[datepickerLocale_144] || $.datepicker.regional['ca'] || {});
6163		$("#calendari_144").datepicker({
6164			changeMonth: true,
6165			changeYear: true,
6166			onChangeMonthYear: getDatesMes_144,
6167			prevText: '< ',
6168			todayText: 'M yyyy',
6169			nextText: ' >',
6170			commandsAsDateFormat: true,
6171			onSelect: pickDay_144,
6172			beforeShowDay: dataDay_144,
6173			defaultDate: defaultData_144,
6174			minDate: "0d",
6175			yearRange: 'c:c+1'
6176		});
6177		calInitialized_144 = true;
6178	}
6179
6180	function redrawCalendari_144() {
6181		var $cal = $("#calendari_144");
6182		if (!$cal.hasClass('hasDatepicker')) {
6183			return;
6184		}
6185		// Prefer refresh; fall back to forcing a redraw via setDate of current view.
6186		try {
6187			$cal.datepicker('refresh');
6188		} catch (e) {
6189			var inst = $.datepicker._getInst($cal[0]);
6190			if (inst) {
6191				$.datepicker._updateDatepicker(inst);
6192			}
6193		}
6194	}
6195
6196	function fetchDatesMes_144(year_144, month_144, done_144) {
6197		$("#loading_144").empty().html('<img src="/img/admin/ajax-loader.gif" alt="" />');
6198
6199		openedDays_144 = [];
6200		redrawCalendari_144();
6201
6202		month_144 = addZeros_144(month_144);
6203		mes_seleccionat_144 = month_144;
6204		any_seleccionat_144 = String(year_144);
6205
6206		var seq_144 = ++calFetchSeq_144;
6207
6208		$.getJSON(
6209			'/calendari/get_estat_mes/144/' + mes_seleccionat_144 + '/' + any_seleccionat_144,
6210			function (data_144) {
6211				if (seq_144 !== calFetchSeq_144) {
6212					return;
6213				}
6214				processData_144(data_144);
6215			}
6216		).fail(function () {
6217			if (seq_144 !== calFetchSeq_144) {
6218				return;
6219			}
6220			openedDays_144 = [];
6221			redrawCalendari_144();
6222		}).always(function () {
6223			if (seq_144 === calFetchSeq_144) {
6224				$("#loading_144").empty();
6225			}
6226			if (typeof done_144 === 'function') {
6227				done_144();
6228			}
6229		});
6230	}
6231
6232	function processData_144(data_144) {
6233		if (data_144 && data_144.length !== undefined) {
6234			if (0) {
6235				cama_total_144 = 29;
6236				suelo_total_144 = 0;
6237			}
6238			openedDays_144 = data_144;
6239		} else {
6240			openedDays_144 = [];
6241		}
6242
6243		var defaultData_144 = new Date(
6244			parseInt(any_seleccionat_144, 10),
6245			parseInt(mes_seleccionat_144, 10) - 1,
6246			1
6247		);
6248
6249		$("#calendari_144").show();
6250
6251		if (!calInitialized_144) {
6252			suppressMonthChange_144 = true;
6253			initCalendari_144(defaultData_144);
6254			suppressMonthChange_144 = false;
6255		} else {
6256			// Month already changed by the datepicker UI; only re-apply day colours.
6257			redrawCalendari_144();
6258		}
6259	}
6260
6261	$(document).ready(function () {
6262		var defaultData_144 = new Date(
6263			parseInt(any_seleccionat_144, 10),
6264			parseInt(mes_seleccionat_144, 10) - 1,
6265			parseInt(dia_seleccionat_144, 10)
6266		);
6267
6268		if (isNaN(defaultData_144.getTime())) {
6269			defaultData_144 = new Date();
6270		}
6271
6272		if (lazyLoad_144) {
6273			$("#loading_144").empty().html('<img src="/img/admin/ajax-loader.gif" alt="" />');
6274			// Paint an empty calendar immediately so the layout is stable,
6275			// then fill colours when AJAX returns.
6276			suppressMonthChange_144 = true;
6277			initCalendari_144(defaultData_144);
6278			suppressMonthChange_144 = false;
6279
6280			window['clientLazyLoadCal_144'] = function (done) {
6281				fetchDatesMes_144(
6282					any_seleccionat_144,
6283					mes_seleccionat_144,
6284					done
6285				);
6286			};
6287			return;
6288		}
6289
6290		initCalendari_144(defaultData_144);
6291	});
6292</script>
6292
6293
6294<div class="calendar-container-left">
6295
6296    <span id="chivato_144"></span>
6297    <h5>SABOREDO</h5>
6298    <div id="loading_144"></div>
6299    <div id="calendari_144"></div>
6300    <div class="inner-nav">
6301        <span class="clearFix">&nbsp;</span>
6302    </div>
6303</div><!-- end of div#calendar-container -->
6304<meta http-equiv='cache-control' content='no-cache'>
6305<meta http-equiv='expires' content='0'>
6306<meta http-equiv='pragma' content='no-cache'>
6307
6308<script type="text/javascript">
6309	var str_json = JSON.stringify([]);
6310	var openedDays_131 = JSON.parse(str_json);
6311	var lazyLoad_131 = 1;
6312	var suppressMonthChange_131 = false;
6313	var daysContent_131 = [];
6314	var cama_131;
6315	var suelo_131;
6316	var cama_total_131 = null;
6317	var suelo_total_131 = null;
6318	var dia_seleccionat_131 = '02';
6319	var mes_seleccionat_131 = '10';
6320	var any_seleccionat_131 = '2026';
6321	var ruta_open_date_131 = '';
6322	var ruta_close_date_131 = '';
6323	var calInitialized_131 = false;
6324	var calFetchSeq_131 = 0;
6325
6326	function parseDate(dateString) {
6327		var parts = String(dateString || '').split('/');
6328		if (parts.length !== 3) {
6329			return new Date(NaN);
6330		}
6331
6332		var day = parseInt(parts[0], 10);
6333		var month = parseInt(parts[1], 10);
6334		var year = parseInt(parts[2], 10);
6335
6336		if (parts[2].length === 2) {
6337			year = 2000 + year;
6338		}
6339
6340		return new Date(year, month - 1, day);
6341	}
6342
6343	function ltrim(str, chars) {
6344		chars = chars || "\\s";
6345		return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
6346	}
6347
6348	function addZeros_131(n) {
6349		n = parseInt(n, 10);
6350		if (isNaN(n)) {
6351			return '00';
6352		}
6353		return (n < 10) ? '0' + n : String(n);
6354	}
6355
6356	function pickDay_131(dateText, inst) {
6357		var normalizedText = dateText;
6358
6359		if (inst && inst.selectedYear) {
6360			var day = inst.selectedDay;
6361			var month = inst.selectedMonth + 1;
6362			var year = inst.selectedYear;
6363			normalizedText =
6364				(day < 10 ? '0' : '') + day + '/' +
6365				(month < 10 ? '0' : '') + month + '/' +
6366				year;
6367		}
6368
6369		var openRaw = '';
6370		var closeRaw = '';
6371		var canSelect = true;
6372
6373		if (openRaw && closeRaw) {
6374			var selectedDate = parseDate(normalizedText);
6375			var openDate = parseDate(openRaw);
6376			var closeDate = parseDate(closeRaw);
6377			if (!isNaN(openDate.getTime()) && !isNaN(closeDate.getTime())) {
6378				canSelect = selectedDate >= openDate && selectedDate <= closeDate;
6379			}
6380		}
6381
6382		if (canSelect) {
6383			if (typeof syncMapFromRefugiCalendar === 'function') {
6384				syncMapFromRefugiCalendar(normalizedText, 131);
6385			} else {
6386				$('#data_reserva').val(normalizedText);
6387				my_day = normalizedText;
6388				addClickListenerSelectRefugi(131);
6389			}
6390		}
6391	}
6392
6393	function dataDay_131(date_131) {
6394		var openRaw = '';
6395		var closeRaw = '';
6396
6397		if (openRaw && closeRaw) {
6398			var openDate = parseDate(openRaw);
6399			var closeDate = parseDate(closeRaw);
6400
6401			if (!isNaN(openDate.getTime()) && !isNaN(closeDate.getTime())) {
6402				if (date_131 < openDate || date_131 > closeDate) {
6403					return [false, '', 'Ruta no activa'];
6404				}
6405			}
6406		}
6407
6408		if (openedDays_131 && openedDays_131.length > 0) {
6409			for (var i = 0; i < openedDays_131.length; i++) {
6410				if (
6411					parseInt(date_131.getMonth() + 1, 10) == parseInt(openedDays_131[i].month, 10)
6412					&& parseInt(date_131.getDate(), 10) == parseInt(openedDays_131[i].day, 10)
6413					&& parseInt(date_131.getFullYear(), 10) == parseInt(openedDays_131[i].year, 10)
6414				) {
6415					var day_class = '';
6416					var day_focus_text = '';
6417					switch (parseInt(openedDays_131[i].estat, 10)) {
6418						case 0: //tancat
6419							break;
6420						case 1: //verd
6421							day_class = 'datepick-open-day';
6422							day_focus_text = 'obert';
6423							break;
6424						case 2: //vermell
6425							day_class = 'datepick-complet-day';
6426							day_focus_text = 'complet';
6427							break;
6428						case 3: //groc q ara no el fem servir i posem verd
6429							day_class = 'datepick-open-day';
6430							day_focus_text = 'obert';
6431							break;
6432						case 4: //tronja
6433							day_class = 'datepick-comented-day';
6434							day_focus_text = 'hi ha un comentari restrictiu';
6435							break;
6436					}
6437
6438					return [true, day_class, day_focus_text];
6439				}
6440			}
6441		}
6442		return [true, '', 'tancat'];
6443	}
6444
6445	function getDatesMes_131(year_131, month_131) {
6446		if (suppressMonthChange_131) {
6447			return;
6448		}
6449		fetchDatesMes_131(year_131, month_131);
6450	}
6451
6452	function initCalendari_131(defaultData_131) {
6453		if (calInitialized_131) {
6454			return;
6455		}
6456
6457		var datepickerLocale_131 = 'ca';
6458		if (datepickerLocale_131 === 'en' && $.datepicker.regional['en-GB']) {
6459			datepickerLocale_131 = 'en-GB';
6460		}
6461
6462		$.datepicker.setDefaults($.datepicker.regional[datepickerLocale_131] || $.datepicker.regional['ca'] || {});
6463		$("#calendari_131").datepicker({
6464			changeMonth: true,
6465			changeYear: true,
6466			onChangeMonthYear: getDatesMes_131,
6467			prevText: '< ',
6468			todayText: 'M yyyy',
6469			nextText: ' >',
6470			commandsAsDateFormat: true,
6471			onSelect: pickDay_131,
6472			beforeShowDay: dataDay_131,
6473			defaultDate: defaultData_131,
6474			minDate: "0d",
6475			yearRange: 'c:c+1'
6476		});
6477		calInitialized_131 = true;
6478	}
6479
6480	function redrawCalendari_131() {
6481		var $cal = $("#calendari_131");
6482		if (!$cal.hasClass('hasDatepicker')) {
6483			return;
6484		}
6485		// Prefer refresh; fall back to forcing a redraw via setDate of current view.
6486		try {
6487			$cal.datepicker('refresh');
6488		} catch (e) {
6489			var inst = $.datepicker._getInst($cal[0]);
6490			if (inst) {
6491				$.datepicker._updateDatepicker(inst);
6492			}
6493		}
6494	}
6495
6496	function fetchDatesMes_131(year_131, month_131, done_131) {
6497		$("#loading_131").empty().html('<img src="/img/admin/ajax-loader.gif" alt="" />');
6498
6499		openedDays_131 = [];
6500		redrawCalendari_131();
6501
6502		month_131 = addZeros_131(month_131);
6503		mes_seleccionat_131 = month_131;
6504		any_seleccionat_131 = String(year_131);
6505
6506		var seq_131 = ++calFetchSeq_131;
6507
6508		$.getJSON(
6509			'/calendari/get_estat_mes/131/' + mes_seleccionat_131 + '/' + any_seleccionat_131,
6510			function (data_131) {
6511				if (seq_131 !== calFetchSeq_131) {
6512					return;
6513				}
6514				processData_131(data_131);
6515			}
6516		).fail(function () {
6517			if (seq_131 !== calFetchSeq_131) {
6518				return;
6519			}
6520			openedDays_131 = [];
6521			redrawCalendari_131();
6522		}).always(function () {
6523			if (seq_131 === calFetchSeq_131) {
6524				$("#loading_131").empty();
6525			}
6526			if (typeof done_131 === 'function') {
6527				done_131();
6528			}
6529		});
6530	}
6531
6532	function processData_131(data_131) {
6533		if (data_131 && data_131.length !== undefined) {
6534			if (0) {
6535				cama_total_131 = 65;
6536				suelo_total_131 = 0;
6537			}
6538			openedDays_131 = data_131;
6539		} else {
6540			openedDays_131 = [];
6541		}
6542
6543		var defaultData_131 = new Date(
6544			parseInt(any_seleccionat_131, 10),
6545			parseInt(mes_seleccionat_131, 10) - 1,
6546			1
6547		);
6548
6549		$("#calendari_131").show();
6550
6551		if (!calInitialized_131) {
6552			suppressMonthChange_131 = true;
6553			initCalendari_131(defaultData_131);
6554			suppressMonthChange_131 = false;
6555		} else {
6556			// Month already changed by the datepicker UI; only re-apply day colours.
6557			redrawCalendari_131();
6558		}
6559	}
6560
6561	$(document).ready(function () {
6562		var defaultData_131 = new Date(
6563			parseInt(any_seleccionat_131, 10),
6564			parseInt(mes_seleccionat_131, 10) - 1,
6565			parseInt(dia_seleccionat_131, 10)
6566		);
6567
6568		if (isNaN(defaultData_131.getTime())) {
6569			defaultData_131 = new Date();
6570		}
6571
6572		if (lazyLoad_131) {
6573			$("#loading_131").empty().html('<img src="/img/admin/ajax-loader.gif" alt="" />');
6574			// Paint an empty calendar immediately so the layout is stable,
6575			// then fill colours when AJAX returns.
6576			suppressMonthChange_131 = true;
6577			initCalendari_131(defaultData_131);
6578			suppressMonthChange_131 = false;
6579
6580			window['clientLazyLoadCal_131'] = function (done) {
6581				fetchDatesMes_131(
6582					any_seleccionat_131,
6583					mes_seleccionat_131,
6584					done
6585				);
6586			};
6587			return;
6588		}
6589
6590		initCalendari_131(defaultData_131);
6591	});
6592</script>
6592
6593
6594<div class="calendar-container-left">
6595
6596    <span id="chivato_131"></span>
6597    <h5>VENTOSA</h5>
6598    <div id="loading_131"></div>
6599    <div id="calendari_131"></div>
6600    <div class="inner-nav">
6601        <span class="clearFix">&nbsp;</span>
6602    </div>
6603</div><!-- end of div#calendar-container -->
6604                                
6604<script type="text/javascript">
6605                (function ($) {
6606                    $(function () {
6607                        var queue = [10,155,197,140,141,129,150,151,143,142,154,127,145,128,139,144,131];
6608                        var running = 0;
6609                        var maxConcurrent = 2;
6610
6611                        function kick() {
6612                            while (running < maxConcurrent && queue.length > 0) {
6613                                var id = queue.shift();
6614                                var loader = window['clientLazyLoadCal_' + id];
6615                                if (typeof loader !== 'function') {
6616                                    continue;
6617                                }
6618                                running++;
6619                                loader(function () {
6620                                    running--;
6621                                    kick();
6622                                });
6623                            }
6624                        }
6625
6626                        kick();
6627                    });
6628                })(jQuery);
6629                </script>
6629
6630                            </div>
6631        </fieldset>
6632    </form>
6633</div><!-- end of div.box-container -->
6634<script src="https://refusonline.com/dist/bootstrap-3.3.7-dist/js/bootstrap.min.js"></script>
6634
6635        </div>
6636        <div id="step-form">
6637            <div class="box-container">
6638	<div class="step-title">
6639		<h2>Pas 2. Dades personals</h2>
6640	</div>
6641
6642	<div id="datos_reserva">
6643		<div id="resum_estancies"></div>
6644		<span id="loading_estancia"></span>
6645		<form name="form-dades-reserva" id="form-dades-reserva" method="post" class="middle-forms">
6646		<input id="dia_consultat" type="hidden" value="02_10_2026" name="dia_str"/>
6647		<input type="hidden" value="client" id="tipus_reserva" name="tipus_reserva" />
6648		<input type="hidden" value="new" id="action" name="action" />
6649		<input type="hidden" value="online" id="usuari_do" name="usuari_do" />
6650		<input type="hidden" value="refusonline" id="subdomini_ruta" name="subdomini_ruta" />
6651		<input type="hidden" value="7" id="id_codi_reserva" name="codi" />
6652
6653				<h3>Dades Personals</h3>
6654		<!--<span class="info">Omple el formulari. Camp obligatoris marcats amb <font color="red"><em>*</em></font></span>-->
6655				<fieldset>
6656						<legend>Dades Personals</legend>
6657						<ol>
6658
6659							<li class="even"><label class="field-title-long">Nom <span style="color: red"><em>*</em></span>:</label>
6660                <label><input class="txtbox-short" name="nom" id="nom" value=""/>
6661                </label><span class="status"></span><span class="clearFix">&nbsp;</span>
6662              </li>
6663
6664              <li>
6665                <label class="field-title-long">Cognoms <span style="color: red"><em>*</em></span>: </label>
6666                <label><input class="txtbox-long" name="cognom" id="cognom" value=""/>
6667                </label><span class="status"></span><span class="clearFix">&nbsp;</span>
6668							</li>
6669
6670							<li class="even"><label class="field-title-long">Telèfon <span style="color: red"><em>*</em></span>: </label>
6671                <label><input class="txtbox-short" name="telefon" id="telefon" value=""/>
6672                </label><span class="status"></span><span class="clearFix">&nbsp;</span>
6673							</li>
6674
6675							<!-- email form fields -->
6676								
6677			<li><div id="div_email_1" class="clonedEmail"><label class="field-title-long">Email  <font color="red"><em>*</em></font>: </label>
6678			<label><input class="email_input txtbox-long" name="email" id="email" value=""/>
6679			</label><span class="status"></span>
6680			</div>
6681			<span class="clearFix">&nbsp;</span>
6682			</li>
6683			<div>
6684		        <input type="button" id="btnAddEmail" value="Afegir Email" />
6685		        <input type="button" id="btnDelEmail" value="Treure Email" />
6686		    </div>
6687							<li class="even"><label class="field-title-long">NIF / Passaport <span style="color: red"><em>*</em></span>: </label>
6688                <label><input class="txtbox-short" name="nif" id="nif" value=""/>
6689                </label><span class="status"></span><span class="clearFix">&nbsp;</span>
6690							</li>
6691
6692              <li><label class="field-title-long">Direcció <span style="color: red"><em>*</em></span>: </label>
6693                <label><input class="txtbox-long" name="direccio" id="direccio" value=""/>
6694                </label><span class="status"></span><span class="clearFix">&nbsp;</span>
6695              </li>
6696
6697              <li class="even"><label class="field-title-long">Població <span style="color: red"><em>*</em></span>: </label>
6698							  <label><input class="txtbox-long" name="poblacio" id="poblacio" value=""/>
6699							  </label><span class="status"></span><span class="clearFix">&nbsp;</span>
6700							</li>
6701
6702							<li><label class="field-title-long">CP <span style="color: red"><em>*</em></span>: </label>
6703							  <label><input class="txtbox-short" name="cp" id="cp" value=""/>
6704							  </label><span class="status"></span><span class="clearFix">&nbsp;</span>
6705							</li>
6706
6707							<li class="even"><label class="field-title-long">País <span style="color: red"><em>*</em></span>:</label>
6708							  <label><input class="txtbox-short" name="pais" id="pais" value=""/>
6709							  </label>
6710							  <label class="field-title-short">Idioma  : </label>
6711                <label><select name="idioma" id="idioma">
6712                                      <option value="1"  SELECTED>Català</option>
6713                                      <option value="2" >Castellano</option>
6714                                      <option value="3" >English</option>
6715                                      <option value="4" >French</option>
6716                                  </select>
6717                </label><span class="status"></span><span class="clearFix">&nbsp;</span>
6718							</li>
6719
6720							<li>
6721                <label class="field-title-long">Observacions  : </label>
6722							  <label>
6723                  <textarea id="observacions" rows="7" cols="25" name="observacions" class="observacions_central"></textarea>
6724							  </label><span class="status"></span><span class="clearFix">&nbsp;</span></label>
6725							</li>
6726
6727              <li class="even"><label>
6727<input type="checkbox" checked name="accept_avis_dades" id="accept_avis_dades"/>
6728                </label>
6729                <label style="width: 90%;">Autoritzo el tractament de les dades personals facilitades. Refusonline tractarà les meves dades amb la finalitat de gestionar la reserva sol·licitada. Pot exercir els drets d'accés, rectificació, supressió, portabilitat i oposició com s'informa a la 
6730<a href="https://refusonline.com/uploads/Política de Privacitat i Avís Legal-Trekking Carros de Foc SL.pdf" target="_blank" >Politica de Privacitat i Avís Legal</a><span
6731                          style="color: red"><em>*</em></span></label>
6732                <span class="status"></span><span class="clearFix">&nbsp;</span>
6733              </li>
6734                            <li class="even"><label><input type="checkbox" checked name="accept_avis_marketing" id="accept_avis_marketing"/>
6735                                </label>
6736                                <label style="width: 90%;">Autoritzo el tractament de les dades personals facilitades per a possibles informacions comercials d'interès específic relacionat amb Carros de Foc</label>
6737                                <span class="status"></span><span class="clearFix">&nbsp;</span>
6738                            </li>
6739            </ol><!-- end of form elements -->
6740
6741					<br/><br/>
6742					<span class="sistema_submit align-left">
6743					<button name="anterior" class="basic next" id="tornar_to_mapa" type="button" ><< Pas Anterior</button>
6744					</span>
6745					<span class="sistema_submit align-right">
6746					<button name="continuar" class="basic next" id="continuar_to_tpv" type="submit" >Següent Pas >></button></span>
6747
6748					<span class="clearFix">&nbsp;</span>
6749				</fieldset>
6750			</form>
6751	</div>
6752</div><!-- end of div.box-container -->
6753<script type="text/javascript" src="/js/reservar/add_email_field.js"></script>
6753
6754        </div>
6755        <div id="step-resum">
6756        </div>
6757                </div><!-- end of div.box -->
6758    </div><!-- end of div#mid-col -->
6759    <span class="clearFix">&nbsp;</span>
6760  </div><!-- end of div#content -->
6761  <div class="push"></div>
6762  <div id="networkin"></div>
6763</div><!-- end of #container -->
6764
6765<div id="footer-wrap">
6766  <div id="footer-top" >
6767    <div id="footer">
6768      <div class="align-left">
6769        <h4>Informació</h4>
6770        <div class="client-contacte-info client-contacte-info--footer">
6771      <p class="client-contacte-horari">Horari d'oficina : Del 01/10 al 31/05 de dilluns a divendres de 9h a 14h<br/>
6772Del 01/06 al 30/09 de dilluns a divendres de 9h a 17h</p>
6773        <p class="client-contacte-telefon">
6774      Telf. :       <a class="client-contacte-link" href="tel:+34973641681">
6775        + 34 973 641 681      </a>
6776    </p>
6777        <p class="client-contacte-email">
6778      Email :       <a class="client-contacte-link" href="mailto:[email protected]">
6779        [email protected]      </a>
6780    </p>
6781  </div>
6782        <p>
6783          <a href="/ca/client/contacte/1"              title="contacta amb refusonline"
6784             class="colorbox footer-contacte-desktop-link">Contactar</a>
6785          |
6786          <a href="/uploads/Política de Privacitat i Avís Legal-Trekking Carros de Foc SL.pdf"              target="_blank" class=""
6787             title="Política de Privacitat i Avís Legal">Política de Privacitat i Avís Legal</a>
6788          |
6789          <a href="/uploads/Termes_i_condicions_refusonline.pdf"              target="_blank" class=""
6790             title="termes i condicions de reservar online a refusonline.com">Termes i Condicions d'Ús</a>
6791        </p>
6792      </div>
6793      <div class="align-right">
6794        <h2>
6795          <a href="/ca/index"              title="central de reserves online vall d'aran, trekking carros de foc">refusonline.com</a></h2>
6796      </div>
6797      <span class="clearFix"></span>
6798    </div><!-- end of div#footer-top -->
6799  </div>
6800  <div id="footer-bottom" >
6801    <div id="footer">
6802      <p>&copy; 2026 refusonline.com All rights reserved.</p>
6803    </div>
6804  </div>
6805</div>
6806<!--Código HTML de la política de cookies -->
6807
6808<!--La URL incluida es la parte que se ha de modificar -->
6809
6810<div class="cookiesms" id="cookie1">
6811  <p>Utilitzem cookies pròpies i de tercers per al mesurament de l'activitat del lloc web per tal de millorar els nostres serveis en funció de l'anàlisi de l'ús que fan els usuaris del sevei.</p>
6812  <p>Si continua navegant accepta el seu ús. Podeu configurar, rebutjar les galetes, o obtenir més informació clicant l'opció "Configurar"</p>
6813  <button type="button" onclick="acceptcookies()">Acceptar</button>
6814  <div class="cookies2" onmouseover="document.getElementById('cookie1').style.bottom = '0px';">Política de cookies +</div>
6815</div>
6816
6817
6818<script type="text/javascript">
6819
6820  function GetCookie(name) {
6821    var arg = name + '=';
6822    var alen = arg.length;
6823    var clen = document.cookie.length;
6824    var i = 0;
6825
6826    while (i < clen) {
6827      var j = i + alen;
6828      if (document.cookie.substring(i, j) === arg)
6829        return '1';
6830      i = document.cookie.indexOf(' ', i) + 1;
6831      if (i === 0)
6832        break;
6833    }
6834
6835    return null;
6836  }
6837
6838  function controlcookies() {
6839
6840  }
6841
6842  function isCookieBannerMobile() {
6843    return window.matchMedia('(max-width: 768px)').matches;
6844  }
6845
6846  function updateCookieBannerLayout() {
6847    if (!isCookieBannerMobile()) {
6848      document.body.style.paddingBottom = '';
6849      return;
6850    }
6851    var banner = document.getElementById('cookie1');
6852    if (!banner || banner.style.display === 'none') {
6853      document.body.style.paddingBottom = '';
6854      return;
6855    }
6856    document.body.style.paddingBottom = banner.offsetHeight + 'px';
6857  }
6858
6859  function acceptcookies() {
6860    var expire = new Date()
6861    expire = new Date(expire.getTime() + 7776000000)
6862    document.cookie = 'cookies_refusonline=accepted; expires=' + expire
6863    var visit = GetCookie('cookies_refusonline')
6864    if (visit == 1) {
6865      document.getElementById('cookie1').style.display = 'none';
6866      document.body.style.paddingBottom = '';
6867    }
6868  }
6869
6870  function isHorariMobile() {
6871    return window.matchMedia('(max-width: 768px)').matches;
6872  }
6873
6874  function openHorariPanel() {
6875    if (!isHorariMobile()) {
6876      return;
6877    }
6878    $('#horari-panel').addClass('is-open').attr('aria-hidden', 'false');
6879    $('body').addClass('horari-modal-open');
6880  }
6881
6882  function closeHorariPanel() {
6883    $('#horari-panel').removeClass('is-open').attr('aria-hidden', 'true');
6884    $('body').removeClass('horari-modal-open');
6885  }
6886
6887  $(function () {
6888    if (GetCookie('cookies_refusonline') == 1) {
6889      document.getElementById('cookie1').style.display = 'none';
6890    } else if (isCookieBannerMobile()) {
6891      updateCookieBannerLayout();
6892      $(window).on('resize.cookieBanner', updateCookieBannerLayout);
6893    }
6894
6895    $('#horari-open-btn').on('click', openHorariPanel);
6896    $('#horari-panel-close').on('click', closeHorariPanel);
6897  });
6898
6899</script>
6899
6900
6901
6902<script type="text/javascript">
6903
6904	var esRuta = false;
6905	var current_step = 1;
6906
6907	$(document).ready(function () {
6908
6909		$(".colorbox").colorbox({transitionSpeed: "100"});
6910
6911
6912		$('div#step-mapa').show();
6913		$('div#step-form').hide();
6914
6915		$("#form-dades-reserva").validate({
6916			rules: {
6917				nom: {
6918					required: true
6919				},
6920				cognom: {
6921					required: true
6922				},
6923				telefon: {
6924					required: true
6925				},
6926				email: {
6927					required: true,
6928					email: true
6929				},
6930				nif: {
6931					required: true
6932				},
6933				direccio: {
6934					required: true
6935				},
6936				poblacio: {
6937					required: true
6938				},
6939				cp: {
6940					required: true
6941				},
6942				pais: {
6943					required: true
6944				},
6945				accept_avis_dades: {
6946					required: true
6947				}
6948			},
6949			messages: {
6950				nom: {
6951					required: 'obligatori'
6952				},
6953				cognom: {
6954					required: 'obligatori'
6955				},
6956				telefon: {
6957					required: 'obligatori'
6958				},
6959				email: {
6960					required: 'obligatori',
6961					email: 'format incorrecte'
6962				},
6963				nif: {
6964					required: 'obligatori'
6965				},
6966				direccio: {
6967					required: 'obligatori'
6968				},
6969				poblacio: {
6970					required: 'obligatori'
6971				},
6972				cp: {
6973					required: 'obligatori'
6974				},
6975				pais: {
6976					required: 'obligatori'
6977				},
6978				accept_avis_dades: {
6979					required: 'obligatori'
6980				}
6981			},
6982			submitHandler: function () {
6983				fillReservaObject();
6984
6985				$.post('https://refusonline.com/reservar/verificar_reserva_online/', reservaObject, function (response) {
6986					if (response.check_obert) {
6987						// si hi han errors els mostrem a un confirm pq puguis eguir o no, si no hi han errors procedim a fer la reserva
6988						if (response.check) {
6989                            reservaObject.avisMarketing = $('#accept_avis_marketing').is(':checked');
6990							do_reserva(reservaObject);
6991						} else {
6992							$.each(response.errors, function (index, element) {
6993								// classe error a la estancia de la llista de la reserva
6994								$('li#estancia' + element.id).addClass('error_check');
6995
6996								//esborrem els misatges anteriors i posem els nous
6997								$("li#estancia" + element.id + " p.error_check").remove();
6998								for (var i = 0; i < element.msg.length; i++) {
6999									$('li#estancia' + element.id).append('<p class="error_check">[X] ' + element.msg[i] + '</p>');
7000								}
7001							});
7002
7003							$('div#step-mapa').show();
7004							$('div#step-form').hide();
7005							render(my_day);
7006						}
7007					}
7008				}, "json");
7009			}
7010		});
7011
7012		$('#continuar_to_dades').live('click', function () {
7013			if (reserva.length == 0) {
7014				jAlert('<span class="alerta-big-gris">No tens Estades</span>', 'Avis Mapa Reserva Online');
7015			} else if (esRuta) {
7016				if (routeValidation(reserva))
7017					stepToDades();
7018			} else {
7019				stepToDades();
7020			}
7021		});
7022
7023		$('#tornar_to_dades').live('click', function () {
7024			stepToDades();
7025		});
7026
7027		$('#tornar_to_mapa').live('click', function () {
7028			stepToMapa();
7029		});
7030	});
7031
7032	function stepToDades() {
7033		var reservaObject = {};
7034		$('div#step-mapa').hide();
7035		$('div#step-form').show();
7036		$('div#step-resum').hide();
7037	}
7038
7039	function stepToMapa() {
7040		$('div#step-mapa').show();
7041		$('div#step-form').hide();
7042		$('div#step-resum').hide();
7043	}
7044
7045	function loadingMapa() {
7046		//$('div#mapa_central').hide();
7047		//$('div#mapa_central_loading').show();
7048	}
7049
7050	function loadedMapa() {
7051		//$('div#mapa_central').show();
7052		//$('div#mapa_central_loading').hide();
7053	}
7054
7055</script>
7055
7056
7057<div id="horari-panel" class="horari-panel" aria-hidden="true" role="dialog" aria-modal="true">
7058  <div class="horari-panel-toolbar">
7059    <h2 class="horari-panel-title">CONTACTE</h2>
7060    <button type="button" id="horari-panel-close" class="horari-panel-close" aria-label="Tancar">&times;</button>
7061  </div>
7062  <div class="horari-panel-content">
7063    <div class="client-contacte-info client-contacte-info--modal">
7064      <p class="client-contacte-horari">Horari d'oficina : Del 01/10 al 31/05 de dilluns a divendres de 9h a 14h<br/>
7065Del 01/06 al 30/09 de dilluns a divendres de 9h a 17h</p>
7066        <p class="client-contacte-telefon">
7067      Telf. :       <a class="client-contacte-link" href="tel:+34973641681">
7068        + 34 973 641 681      </a>
7069    </p>
7070        <p class="client-contacte-email">
7071      Email :       <a class="client-contacte-link" href="mailto:[email protected]">
7072        [email protected]      </a>
7073    </p>
7074  </div>
7075  </div>
7076</div>
7077
7078<div id="mapa-refugi-panel" class="mapa-refugi-panel" aria-hidden="true" role="dialog" aria-modal="true">
7079  <div class="mapa-refugi-panel-toolbar">
7080    <button type="button" id="mapa-refugi-panel-close" class="mapa-refugi-panel-close"
7081            aria-label="Tancar">&times;</button>
7082  </div>
7083  <div id="mapa-refugi-panel-content"></div>
7084</div>
7085
7086<!-- Fin del código de cookies --->
7087
7088<script type="text/javascript">window.NREUM||(NREUM={});NREUM.info={"beacon":"bam.eu01.nr-data.net","licenseKey":"NRJS-16b87faba696953ba4d","applicationID":"249428569","transactionName":"MhBSZQoZCEIHUkxdVgtaZUMRVw9fAlRAGkkNBQ==","queueTime":0,"applicationTime":78,"atts":"HldRE0IDG0w=","errorBeacon":"bam.eu01.nr-data.net","agent":""}</script>
7088</body>
7089</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.