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> | 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 | 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 | 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"> </span> 270 </div><!-- end of #top-right --> 271 </div><!-- end of #top --> 272 <span style="height: 30px" class="clearFix"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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>© 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">×</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">×</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.