{"version":3,"sources":["webpack://kigen//usr/home/fmweb/http/app/javascript/channels|sync|/_channel\\.js$/","webpack://kigen//usr/home/fmweb/http/app/javascript/controllers|sync|/_controller\\.js$/","webpack://kigen/./app/javascript/channels/index.js","webpack://kigen/./app/javascript/controllers/agent_baskets_controller.js","webpack://kigen/./app/javascript/controllers/agent_checkout_controller.js","webpack://kigen/./app/javascript/controllers/avatar_edit_controller.js","webpack://kigen/./app/javascript/controllers/bike_booking_controller.js","webpack://kigen/./app/javascript/controllers/booking_process_controller.js","webpack://kigen/./app/javascript/controllers/booking_tours_controller.js","webpack://kigen/./app/javascript/controllers/booking_week_controller.js","webpack://kigen/./app/javascript/controllers/confirmation_controller.js","webpack://kigen/./app/javascript/controllers/countries_controller.js","webpack://kigen/./app/javascript/controllers/dropzone_controller.js","webpack://kigen/./app/javascript/controllers/editor_html_controller.js","webpack://kigen/./app/javascript/controllers/faq_controller.js","webpack://kigen/./app/javascript/controllers/finder_field_controller.js","webpack://kigen/./app/javascript/controllers/groups_controller.js","webpack://kigen/./app/javascript/controllers/header_controller.js","webpack://kigen/./app/javascript/controllers/hello_controller.js","webpack://kigen/./app/javascript/controllers/home_controller.js","webpack://kigen/./app/javascript/controllers/home_filters_controller.js","webpack://kigen/./app/javascript/controllers/islands_controller.js","webpack://kigen/./app/javascript/controllers/page_new_controller.js","webpack://kigen/./app/javascript/controllers/password_field_controller.js","webpack://kigen/./app/javascript/controllers/related_controller.js","webpack://kigen/./app/javascript/controllers/shops_controller.js","webpack://kigen/./app/javascript/controllers/tour_booking_controller.js","webpack://kigen/./app/javascript/controllers/vivawallet_controller.js","webpack://kigen/./app/javascript/helpers/index.js","webpack://kigen/./app/javascript/helpers/data-confirm-tailwind-modal.js","webpack://kigen/./app/javascript/controllers/index.js","webpack://kigen/./app/javascript/packs/application.js"],"names":["webpackEmptyContext","req","e","Error","code","keys","resolve","id","module","exports","map","webpackContext","webpackContextResolve","__webpack_require__","o","Object","channels","require","forEach","countries","Germany","Austria","Switzerland","Sweden","Norway","Finland","Netherlands","Belgium","Denmark","Spain","Portugal","Italy","France","Afghanistan","Albania","Algeria","Andorra","Angola","Anguilla","Antarctica","Argentina","Armenia","Aruba","Australia","Azerbaijan","Bahamas","Bahrain","Bangladesh","Barbados","Belarus","Belize","Benin","Bermuda","Bhutan","Bolivia","Botswana","Brazil","Brunei","Bulgaria","Burundi","Cambodia","Cameroon","Canada","Chad","Chile","China","Colombia","Comoros","Croatia","Cuba","Curacao","Cyprus","Djibouti","Dominica","Ecuador","Egypt","Eritrea","Estonia","Ethiopia","Fiji","Gabon","Gambia","Georgia","Ghana","Gibraltar","Greece","Greenland","Grenada","Guadeloupe","Guam","Guatemala","Guernsey","Guinea","Guyana","Haiti","Honduras","Hungary","Iceland","India","Indonesia","Iran","Iraq","Ireland","Israel","Jamaica","Japan","Jersey","Jordan","Kazakhstan","Kenya","Kiribati","Kosovo","Kuwait","Kyrgyzstan","Laos","Latvia","Lebanon","Lesotho","Liberia","Libya","Liechtenstein","Lithuania","Luxembourg","Macao","Macedonia","Madagascar","Malawi","Malaysia","Maldives","Mali","Malta","Martinique","Mauritania","Mauritius","Mayotte","Mexico","Micronesia","Moldova","Monaco","Mongolia","Montenegro","Montserrat","Morocco","Mozambique","Myanmar","Namibia","Nauru","Nepal","Nicaragua","Niger","Nigeria","Niue","Oman","Pakistan","Palau","Panama","Paraguay","Peru","Philippines","Pitcairn","Poland","Qatar","Reunion","Romania","Russia","Rwanda","Samoa","Senegal","Serbia","Seychelles","Singapore","Slovakia","Slovenia","Somalia","Sudan","Suriname","Swaziland","Syria","Taiwan","Tajikistan","Tanzania","Thailand","Togo","Tokelau","Tonga","Tunisia","Turkey","Turkmenistan","Tuvalu","Uganda","Ukraine","Uruguay","Uzbekistan","Vanuatu","Vatican","Venezuela","Vietnam","Yemen","Zambia","Zimbabwe","mobiles","name","dial_code","connect","this","updateBasket","urlParams","slice","call","document","querySelectorAll","tooltipTriggerEl","Tooltip","window","onpopstate","match","pl","search","decode","s","decodeURIComponent","replace","query","location","substring","exec","model_type","getElementById","basketValue","value","models","length","reset","classList","remove","plocId","locations","locationsTarget","i","options","dataset","island","add","pathname","split","element","height","active","getElementsByClassName","types","type","select","key","option","createElement","text","country","selected","appendChild","select2","prefix","layer","bikes_layer","bike","single_bike_layer","anchor","filterTagsMobile","addEventListener","event","offsetTop","scrollY","cart_layer","removeFromCart","tmp","basket","cancel","path","composedPath","JSON","parse","item","items","modelId","item_id","toString","item_name","modelName","item_brand","manufacturer","item_category","category","location_id","price","parseFloat","pricePerUnit","quantity","unitCount","tourId","details","tourName","categoryName","locId","fetch","then","data","removeFromCart_layer","priceTotal","storedBasket","sessionStorage","getItem","basketArray","indexToRemove","indexOf","parseInt","splice","updatedBasket","stringify","setItem","removeBasketFromSession","updateBasketHeader","reload","toggleExtra","extra","target","resId","checked","url","response","json","prodId","title","currency","prodType","addToCart_layer","toggleTour","tour","date","tours","setAttribute","bpr","loc","removeAttribute","error","console","unavailable","discount","sum","OrderPosition","Math","abs","total","supertotal","superdiscount","wrapper","toFixed","innerHTML","interval","setInterval","clearInterval","totalBaskets","totalInputs","totalSum","input","createEvent","initEvent","dispatchEvent","setPrice","count","elem","user","email","first_name","last_name","phone_number","street","city","region","postal_code","dataLayer","push","ecommerce","item_list_name","model_id","model_title","index","product_group_name","enhanced_conversion_data","log","bikesData","bikes","removeEventListener","itemsData","session","innerText","Controller","targets","values","String","step3","url2","Turbo","action","payBooking","terms","basketsString","baskets","comment","ref","closeBaskets","finish","href","undefined","removeAvatar","avatarTarget","dropzoneMsgTarget","removeAvatarTarget","rate","model","test","filterShops","flag","filterBikes","selectIsland","shops","shop","setToDate","from","Date","to","min","check_season","setDate","getDate","toISOString","verifyShops","that","setTimeout","fromDate","toDate","locale","closed","url1","opening_hours","toLocaleDateString","weekday","padTo2Digits","getMonth","checkBike","errors","place","checkFrom","checkTo","checkHeight","setHours","getTime","temp","selectedIndex","disabled","topPos","scrollTo","filterBike","checkBikes","doCheck","featured","scroll","checks","modelsNumber","closeAlert","toggleLogin","elem2","toggle","toggleTags","container","chevron","contains","bike_type","availability","localeTarget","tagsContainer","brand","filterTags","tags","selectBike","unchecks","pickBike","prices","texts","image","el","bike_brandTarget","src","toLowerCase","alt","bike_modelTarget","bike_expertTarget","teaser_expert","bike_highlightsTarget","highlights","children","bike_descriptionTarget","description","day1Target","days2Target","days6Target","days13Target","nodeName","bike_imageTarget","showBike","unit","shop_name","lang","addToCart","button","surname","weight","pedal","saddle","bikeShop","model_name","start","end","qty","ceil","insuprice","insurance","bikeId","longDescription","addToCartAgent","mail","phone","updateBasketAgent","step2","spinner","spinner_modal","step2Agent","checkbox","customer","forms","getElementsByTagName","errorMsgs","removeTour","parentElement","removeChild","removeExtra","closeBasket","removeItem","closeUnavailable","summer_start","summer_end","num","padStart","closeModal","showPasswordField","tour_type","season","level","season_cont","filterLevels","level_cont","filterTours","info","userInfo","price_plain","tour_id","category_name","loc_id","tourType","tours_layer","turbo_fetch","saveFilters","form","pedals","pedalName","pedalId","body","tour_data","spinner_text","tour_name","showTab","preventDefault","stopPropagation","param","cont1","conts1","cont2","conts2","cont3","conts3","navContent","navContentArray","Array","navContentArrayLength","showSpinner","toursData","setBike","obj","pick","unpick","boxes","box","dates","getWeekDay","getDay","day","weekDays","undoBike","pickTour","stringDate","arrayDate","month","formatDate","tour_group_id","locg_id","season_id","duration","num_sub_tours","parentNode","addSubTour","closeModalList","res_id","clearSubTour","resid","checkout","checkoutAgent","order","listPricePerUnit","navItemNo","unitDescription","discountPercent","transaction_id","orderId","myCountry","previewNode","controller","previewTemplate","querySelector","dropZone","Dropzone","headers","maxFiles","maxFilesize","maxFileSize","acceptedFiles","addRemoveLinks","Boolean","autoQueue","hideFileInput","bindEvents","dropzoneErrorTarget","style","display","inputTarget","on","file","getAcceptedFiles","removeFile","avatarToEdit","accepted","source","DirectUploadController","createDirectUploadController","removeElement","hiddenInput","dropzoneTarget","progress","preview","xhr","abort","err","getMetaValue","getAttribute","get","directUpload","DirectUpload","createDirectUpload","createHiddenInput","create","attributes","emitDropzoneError","signed_id","emitDropzoneSuccess","insertAfter","directUploadWillStoreFileWithXHR","bindProgressEvent","emitDropzoneUploading","upload","uploadRequestDidProgress","loaded","dropzoneProgressTarget","firstElementChild","width","status","emit","htmlEditor","ckEditor","currentTab","_loadAceEditor","CKEDITOR","instances","langValue","openPreview","content_html","getData","getValue","modal","changeTab","setValue","setData","ace","config","set","edit","setMode","setTheme","setUseWorker","fontSize","delta","bind","parent","lastSearchValue","formTarget","submitTarget","update","click","isAgent","hasAgentValue","agentValue","agent","textContent","Glide","focusAt","startAt","perView","mount","selector","toggleMain","bikeType","islandName","seoJSONEditor","seoJSONEditorEN","seoJSONEditorDE","_initAce","_loadAceEditorForSEO","_loadAceEditorForSeoEN","_loadAceEditorForSeoDE","actionValue","seoURLTarget","urlValue","closePreview","updateSeoURL","baseUrl","hostValue","_string_parameterize","str","trim","seoJSONEditorOnChange","seoJSONEditorOnChangeEN","seoJSONEditorOnChangeDE","hiddenSeoJSONTarget","hiddenSeoJsonENTarget","hiddenSeoJsonDETarget","preSubmit","requestSubmit","host","generateRandomPassword","password","randomString","passwordInputTarget","togglePassword","passwordEyeButtonTarget","breakpoints","767","root","findElement","head","referenceNode","insertBefore","nextSibling","result","chars","floor","random","Accept","html","Event","bubbles","cancelable","closeAndDestroyModal","modalObj","overlay","createModalElement","method","commit","commitClass","cancelClass","Rails","join","ele","createModal","application","Application","context","load","definitionsFromContext","ActiveStorage","attachment","AttachmentUpload"],"mappings":"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,gBACNC,UAAW,QACXtM,KAAM,MAER,CACEqM,KAAM,UACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,SACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,WACNC,UAAW,QACXtM,KAAM,MAER,CACEqM,KAAM,aACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,sBACNC,UAAW,QACXtM,KAAM,MAER,CACEqM,KAAM,YACNC,UAAW,MACXtM,KAAM,MAER,CACEqM,KAAM,UACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,QACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,YACNC,UAAW,MACXtM,KAAM,MAER,CACEqM,KAAM,aACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,UACNC,UAAW,QACXtM,KAAM,MAER,CACEqM,KAAM,UACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,aACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,WACNC,UAAW,QACXtM,KAAM,MAER,CACEqM,KAAM,UACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,SACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,QACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,UACNC,UAAW,QACXtM,KAAM,MAER,CACEqM,KAAM,SACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,kCACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,yBACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,WACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,SACNC,UAAW,MACXtM,KAAM,MAER,CACEqM,KAAM,iCACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,oBACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,WACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,eACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,UACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,WACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,WACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,SACNC,UAAW,KACXtM,KAAM,MAER,CACEqM,KAAM,aACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,iBACNC,UAAW,QACXtM,KAAM,MAER,CACEqM,KAAM,2BACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,OACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,QACNC,UAAW,MACXtM,KAAM,MAER,CACEqM,KAAM,QACNC,UAAW,MACXtM,KAAM,MAER,CACEqM,KAAM,mBACNC,UAAW,MACXtM,KAAM,MAER,CACEqM,KAAM,0BACNC,UAAW,MACXtM,KAAM,MAER,CACEqM,KAAM,WACNC,UAAW,MACXtM,KAAM,MAER,CACEqM,KAAM,UACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,QACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,8CACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,eACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,aACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,gBACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,UACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,OACNC,UAAW,MACXtM,KAAM,MAER,CACEqM,KAAM,SACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,iBACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,WACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,WACNC,UAAW,QACXtM,KAAM,MAER,CACEqM,KAAM,qBACNC,UAAW,QACXtM,KAAM,MAER,CACEqM,KAAM,UACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,QACNC,UAAW,MACXtM,KAAM,MAER,CACEqM,KAAM,cACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,oBACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,UACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,UACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,WACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,8BACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,gBACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,OACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,gBACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,mBACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,QACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,SACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,UACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,QACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,YACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,SACNC,UAAW,MACXtM,KAAM,MAER,CACEqM,KAAM,YACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,UACNC,UAAW,QACXtM,KAAM,MAER,CACEqM,KAAM,aACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,OACNC,UAAW,QACXtM,KAAM,MAER,CACEqM,KAAM,YACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,WACNC,UAAW,MACXtM,KAAM,MAER,CACEqM,KAAM,SACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,gBACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,SACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,QACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,gCACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,WACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,YACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,UACNC,UAAW,MACXtM,KAAM,MAER,CACEqM,KAAM,UACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,QACNC,UAAW,MACXtM,KAAM,MAER,CACEqM,KAAM,YACNC,UAAW,MACXtM,KAAM,MAER,CACEqM,KAAM,yCACNC,UAAW,MACXtM,KAAM,MAER,CACEqM,KAAM,OACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,UACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,cACNC,UAAW,MACXtM,KAAM,MAER,CACEqM,KAAM,SACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,UACNC,UAAW,QACXtM,KAAM,MAER,CACEqM,KAAM,QACNC,UAAW,MACXtM,KAAM,MAER,CACEqM,KAAM,SACNC,UAAW,MACXtM,KAAM,MAER,CACEqM,KAAM,SACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,aACNC,UAAW,MACXtM,KAAM,MAER,CACEqM,KAAM,QACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,WACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,+CACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,iCACNC,UAAW,MACXtM,KAAM,MAER,CACEqM,KAAM,SACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,aACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,OACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,SACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,UACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,UACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,UACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,yBACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,gBACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,YACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,aACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,QACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,YACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,aACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,SACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,WACNC,UAAW,MACXtM,KAAM,MAER,CACEqM,KAAM,WACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,OACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,QACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,mBACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,aACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,aACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,YACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,UACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,SACNC,UAAW,MACXtM,KAAM,MAER,CACEqM,KAAM,6CACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,UACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,SACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,WACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,aACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,aACNC,UAAW,QACXtM,KAAM,MAER,CACEqM,KAAM,UACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,aACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,UACNC,UAAW,MACXtM,KAAM,MAER,CACEqM,KAAM,UACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,QACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,QACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,uBACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,gBACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,cACNC,UAAW,MACXtM,KAAM,MAER,CACEqM,KAAM,YACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,QACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,UACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,OACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,iBACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,2BACNC,UAAW,QACXtM,KAAM,MAER,CACEqM,KAAM,OACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,WACNC,UAAW,MACXtM,KAAM,MAER,CACEqM,KAAM,QACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,kCACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,SACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,mBACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,WACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,OACNC,UAAW,MACXtM,KAAM,MAER,CACEqM,KAAM,cACNC,UAAW,MACXtM,KAAM,MAER,CACEqM,KAAM,WACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,SACNC,UAAW,MACXtM,KAAM,MAER,CACEqM,KAAM,cACNC,UAAW,QACXtM,KAAM,MAER,CACEqM,KAAM,QACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,UACNC,UAAW,MACXtM,KAAM,MAER,CACEqM,KAAM,SACNC,UAAW,KACXtM,KAAM,MAER,CACEqM,KAAM,SACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,UACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,mBACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,+CACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,wBACNC,UAAW,QACXtM,KAAM,MAER,CACEqM,KAAM,cACNC,UAAW,QACXtM,KAAM,MAER,CACEqM,KAAM,eACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,4BACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,mCACNC,UAAW,QACXtM,KAAM,MAER,CACEqM,KAAM,QACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,aACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,wBACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,eACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,UACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,SACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,aACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,eACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,YACNC,UAAW,MACXtM,KAAM,MAER,CACEqM,KAAM,WACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,WACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,kBACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,UACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,eACNC,UAAW,MACXtM,KAAM,MAER,CACEqM,KAAM,cACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,+CACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,YACNC,UAAW,MACXtM,KAAM,MAER,CACEqM,KAAM,QACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,WACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,yBACNC,UAAW,MACXtM,KAAM,MAER,CACEqM,KAAM,YACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,uBACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,SACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,aACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,wCACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,WACNC,UAAW,MACXtM,KAAM,MAER,CACEqM,KAAM,cACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,OACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,UACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,QACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,sBACNC,UAAW,QACXtM,KAAM,MAER,CACEqM,KAAM,UACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,SACNC,UAAW,MACXtM,KAAM,MAER,CACEqM,KAAM,eACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,2BACNC,UAAW,QACXtM,KAAM,MAER,CACEqM,KAAM,SACNC,UAAW,OACXtM,KAAM,MAER,CACE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KAAM,MAER,CACEqM,KAAM,iBACNC,UAAW,MACXtM,KAAM,MAER,CACEqM,KAAM,QACNC,UAAW,MACXtM,KAAM,MAER,CACEqM,KAAM,WACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,QACNC,UAAW,MACXtM,KAAM,MAER,CACEqM,KAAM,SACNC,UAAW,MACXtM,KAAM,MAER,CACEqM,KAAM,cACNC,UAAW,MACXtM,KAAM,MAER,CACEqM,KAAM,gBACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,UACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,UACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,gBACNC,UAAW,QACXtM,KAAM,MAER,CACEqM,KAAM,UACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,SACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,WACNC,UAAW,QACXtM,KAAM,MAER,CACEqM,KAAM,aACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,sBACNC,UAAW,QACXtM,KAAM,MAER,CACEqM,KAAM,YACNC,UAAW,MACXtM,KAAM,MAER,CACEqM,KAAM,UACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,QACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,YACNC,UAAW,MACXtM,KAAM,MAER,CACEqM,KAAM,aACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,UACNC,UAAW,QACXtM,KAAM,MAER,CACEqM,KAAM,UACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,aACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,WACNC,UAAW,QACXtM,KAAM,MAER,CACEqM,KAAM,UACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,SACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,QACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,UACNC,UAAW,QACXtM,KAAM,MAER,CACEqM,KAAM,SACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,kCACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,yBACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,WACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,SACNC,UAAW,MACXtM,KAAM,MAER,CACEqM,KAAM,iCACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,oBACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,WACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,eACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,UACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,WACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,WACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,SACNC,UAAW,KACXtM,KAAM,MAER,CACEqM,KAAM,aACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,iBACNC,UAAW,QACXtM,KAAM,MAER,CACEqM,KAAM,2BACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,OACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,QACNC,UAAW,MACXtM,KAAM,MAER,CACEqM,KAAM,QACNC,UAAW,MACXtM,KAAM,MAER,CACEqM,KAAM,mBACNC,UAAW,MACXtM,KAAM,MAER,CACEqM,KAAM,0BACNC,UAAW,MACXtM,KAAM,MAER,CACEqM,KAAM,WACNC,UAAW,MACXtM,KAAM,MAER,CACEqM,KAAM,UACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,QACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,8CACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,eACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,aACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,gBACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,UACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,OACNC,UAAW,MACXtM,KAAM,MAER,CACEqM,KAAM,SACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,iBACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,WACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,WACNC,UAAW,QACXtM,KAAM,MAER,CACEqM,KAAM,qBACNC,UAAW,QACXtM,KAAM,MAER,CACEqM,KAAM,UACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,QACNC,UAAW,MACXtM,KAAM,MAER,CACEqM,KAAM,cACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,oBACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,UACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,UACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,WACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,8BACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,gBACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,OACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,gBACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,mBACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,QACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,SACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,UACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,QACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,YACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,SACNC,UAAW,MACXtM,KAAM,MAER,CACEqM,KAAM,YACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,UACNC,UAAW,QACXtM,KAAM,MAER,CACEqM,KAAM,aACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,OACNC,UAAW,QACXtM,KAAM,MAER,CACEqM,KAAM,YACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,WACNC,UAAW,MACXtM,KAAM,MAER,CACEqM,KAAM,SACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,gBACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,SACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,QACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,gCACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,WACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,YACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,UACNC,UAAW,MACXtM,KAAM,MAER,CACEqM,KAAM,UACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,QACNC,UAAW,MACXtM,KAAM,MAER,CACEqM,KAAM,YACNC,UAAW,MACXtM,KAAM,MAER,CACEqM,KAAM,yCACNC,UAAW,MACXtM,KAAM,MAER,CACEqM,KAAM,OACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,UACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,cACNC,UAAW,MACXtM,KAAM,MAER,CACEqM,KAAM,SACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,UACNC,UAAW,QACXtM,KAAM,MAER,CACEqM,KAAM,QACNC,UAAW,MACXtM,KAAM,MAER,CACEqM,KAAM,SACNC,UAAW,MACXtM,KAAM,MAER,CACEqM,KAAM,SACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,aACNC,UAAW,MACXtM,KAAM,MAER,CACEqM,KAAM,QACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,WACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,+CACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,iCACNC,UAAW,MACXtM,KAAM,MAER,CACEqM,KAAM,SACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,aACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,OACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,SACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,UACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,UACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,UACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,yBACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,gBACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,YACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,aACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,QACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,YACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,aACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,SACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,WACNC,UAAW,MACXtM,KAAM,MAER,CACEqM,KAAM,WACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,OACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,QACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,mBACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,aACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,aACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,YACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,UACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,SACNC,UAAW,MACXtM,KAAM,MAER,CACEqM,KAAM,6CACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,UACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,SACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,WACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,aACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,aACNC,UAAW,QACXtM,KAAM,MAER,CACEqM,KAAM,UACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,aACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,UACNC,UAAW,MACXtM,KAAM,MAER,CACEqM,KAAM,UACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,QACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,QACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,uBACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,gBACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,cACNC,UAAW,MACXtM,KAAM,MAER,CACEqM,KAAM,YACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,QACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,UACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,OACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,iBACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,2BACNC,UAAW,QACXtM,KAAM,MAER,CACEqM,KAAM,OACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,WACNC,UAAW,MACXtM,KAAM,MAER,CACEqM,KAAM,QACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,kCACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,SACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,mBACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,WACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,OACNC,UAAW,MACXtM,KAAM,MAER,CACEqM,KAAM,cACNC,UAAW,MACXtM,KAAM,MAER,CACEqM,KAAM,WACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,SACNC,UAAW,MACXtM,KAAM,MAER,CACEqM,KAAM,cACNC,UAAW,QACXtM,KAAM,MAER,CACEqM,KAAM,QACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,UACNC,UAAW,MACXtM,KAAM,MAER,CACEqM,KAAM,SACNC,UAAW,KACXtM,KAAM,MAER,CACEqM,KAAM,SACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,UACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,mBACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,+CACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,wBACNC,UAAW,QACXtM,KAAM,MAER,CACEqM,KAAM,cACNC,UAAW,QACXtM,KAAM,MAER,CACEqM,KAAM,eACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,4BACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,mCACNC,UAAW,QACXtM,KAAM,MAER,CACEqM,KAAM,QACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,aACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,wBACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,eACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,UACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,SACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,aACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,eACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,YACNC,UAAW,MACXtM,KAAM,MAER,CACEqM,KAAM,WACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,WACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,kBACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,UACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,eACNC,UAAW,MACXtM,KAAM,MAER,CACEqM,KAAM,cACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,+CACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,YACNC,UAAW,MACXtM,KAAM,MAER,CACEqM,KAAM,QACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,WACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,yBACNC,UAAW,MACXtM,KAAM,MAER,CACEqM,KAAM,YACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,uBACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,SACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,aACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,wCACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,WACNC,UAAW,MACXtM,KAAM,MAER,CACEqM,KAAM,cACNC,UAAW,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","file":"js/application-be11c965bfec34363d4d.js","sourcesContent":["function webpackEmptyContext(req) {\n\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\te.code = 'MODULE_NOT_FOUND';\n\tthrow e;\n}\nwebpackEmptyContext.keys = function() { return []; };\nwebpackEmptyContext.resolve = webpackEmptyContext;\nwebpackEmptyContext.id = 463;\nmodule.exports = webpackEmptyContext;","var map = {\n\t\"./agent_baskets_controller.js\": 452,\n\t\"./agent_checkout_controller.js\": 366,\n\t\"./avatar_edit_controller.js\": 654,\n\t\"./bike_booking_controller.js\": 484,\n\t\"./booking_process_controller.js\": 47,\n\t\"./booking_tours_controller.js\": 90,\n\t\"./booking_week_controller.js\": 688,\n\t\"./confirmation_controller.js\": 423,\n\t\"./countries_controller.js\": 16,\n\t\"./dropzone_controller.js\": 712,\n\t\"./editor_html_controller.js\": 570,\n\t\"./faq_controller.js\": 455,\n\t\"./finder_field_controller.js\": 432,\n\t\"./groups_controller.js\": 266,\n\t\"./header_controller.js\": 145,\n\t\"./hello_controller.js\": 155,\n\t\"./home_controller.js\": 206,\n\t\"./home_filters_controller.js\": 378,\n\t\"./islands_controller.js\": 874,\n\t\"./page_new_controller.js\": 761,\n\t\"./password_field_controller.js\": 267,\n\t\"./related_controller.js\": 372,\n\t\"./shops_controller.js\": 652,\n\t\"./tour_booking_controller.js\": 722,\n\t\"./vivawallet_controller.js\": 114,\n\t\"controllers/agent_baskets_controller.js\": 452,\n\t\"controllers/agent_checkout_controller.js\": 366,\n\t\"controllers/avatar_edit_controller.js\": 654,\n\t\"controllers/bike_booking_controller.js\": 484,\n\t\"controllers/booking_process_controller.js\": 47,\n\t\"controllers/booking_tours_controller.js\": 90,\n\t\"controllers/booking_week_controller.js\": 688,\n\t\"controllers/confirmation_controller.js\": 423,\n\t\"controllers/countries_controller.js\": 16,\n\t\"controllers/dropzone_controller.js\": 712,\n\t\"controllers/editor_html_controller.js\": 570,\n\t\"controllers/faq_controller.js\": 455,\n\t\"controllers/finder_field_controller.js\": 432,\n\t\"controllers/groups_controller.js\": 266,\n\t\"controllers/header_controller.js\": 145,\n\t\"controllers/hello_controller.js\": 155,\n\t\"controllers/home_controller.js\": 206,\n\t\"controllers/home_filters_controller.js\": 378,\n\t\"controllers/islands_controller.js\": 874,\n\t\"controllers/page_new_controller.js\": 761,\n\t\"controllers/password_field_controller.js\": 267,\n\t\"controllers/related_controller.js\": 372,\n\t\"controllers/shops_controller.js\": 652,\n\t\"controllers/tour_booking_controller.js\": 722,\n\t\"controllers/vivawallet_controller.js\": 114\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 74;","// Load all the channels within this directory and all subdirectories.\n// Channel files must be named *_channel.js.\n\nconst channels = require.context('.', true, /_channel\\.js$/)\nchannels.keys().forEach(channels)\n","import { Turbo } from \"@hotwired/turbo-rails\";\nimport { Controller } from \"stimulus\";\n\nconst countries = {\n Germany: \"DE\",\n Austria: \"AT\",\n Switzerland: \"CH\",\n Sweden: \"SE\",\n Norway: \"NO\",\n Finland: \"FI\",\n Netherlands: \"NL\",\n Belgium: \"BE\",\n Denmark: \"DK\",\n \"United Kingdom\": \"GB\",\n Spain: \"ES\",\n Portugal: \"PT\",\n Italy: \"IT\",\n France: \"FR\",\n Afghanistan: \"AF\",\n \"Aland Islands\": \"AX\",\n Albania: \"AL\",\n Algeria: \"DZ\",\n \"American Samoa\": \"AS\",\n Andorra: \"AD\",\n Angola: \"AO\",\n Anguilla: \"AI\",\n Antarctica: \"AQ\",\n \"Antigua and Barbuda\": \"AG\",\n Argentina: \"AR\",\n Armenia: \"AM\",\n Aruba: \"AW\",\n Australia: \"AU\",\n Azerbaijan: \"AZ\",\n Bahamas: \"BS\",\n Bahrain: \"BH\",\n Bangladesh: \"BD\",\n Barbados: \"BB\",\n Belarus: \"BY\",\n Belize: \"BZ\",\n Benin: \"BJ\",\n Bermuda: \"BM\",\n Bhutan: \"BT\",\n Bolivia: \"BO\",\n \"Bonaire, Saint Eustatius and Saba\": \"BQ\",\n \"Bosnia and Herzegovina\": \"BA\",\n Botswana: \"BW\",\n \"Bouvet Island\": \"BV\",\n Brazil: \"BR\",\n \"British Indian Ocean Territory\": \"IO\",\n \"British Virgin Islands\": \"VG\",\n Brunei: \"BN\",\n Bulgaria: \"BG\",\n \"Burkina Faso\": \"BF\",\n Burundi: \"BI\",\n Cambodia: \"KH\",\n Cameroon: \"CM\",\n Canada: \"CA\",\n \"Cape Verde\": \"CV\",\n \"Cayman Islands\": \"KY\",\n \"Central African Republic\": \"CF\",\n Chad: \"TD\",\n Chile: \"CL\",\n China: \"CN\",\n \"Christmas Island\": \"CX\",\n \"Cocos Islands\": \"CC\",\n Colombia: \"CO\",\n Comoros: \"KM\",\n \"Cook Islands\": \"CK\",\n \"Costa Rica\": \"CR\",\n Croatia: \"HR\",\n Cuba: \"CU\",\n Curacao: \"CW\",\n Cyprus: \"CY\",\n \"Czech Republic\": \"CZ\",\n \"Democratic Republic of the Congo\": \"CD\",\n Djibouti: \"DJ\",\n Dominica: \"DM\",\n \"Dominican Republic\": \"DO\",\n \"East Timor\": \"TL\",\n Ecuador: \"EC\",\n Egypt: \"EG\",\n \"El Salvador\": \"SV\",\n \"Equatorial Guinea\": \"GQ\",\n Eritrea: \"ER\",\n Estonia: \"EE\",\n Ethiopia: \"ET\",\n \"Falkland Islands\": \"FK\",\n \"Faroe Islands\": \"FO\",\n Fiji: \"FJ\",\n \"French Guiana\": \"GF\",\n \"French Polynesia\": \"PF\",\n \"French Southern Territories\": \"TF\",\n Gabon: \"GA\",\n Gambia: \"GM\",\n Georgia: \"GE\",\n Ghana: \"GH\",\n Gibraltar: \"GI\",\n Greece: \"GR\",\n Greenland: \"GL\",\n Grenada: \"GD\",\n Guadeloupe: \"GP\",\n Guam: \"GU\",\n Guatemala: \"GT\",\n Guernsey: \"GG\",\n Guinea: \"GN\",\n \"Guinea-Bissau\": \"GW\",\n Guyana: \"GY\",\n Haiti: \"HT\",\n \"Heard Island and McDonald Islands\": \"HM\",\n Honduras: \"HN\",\n \"Hong Kong\": \"HK\",\n Hungary: \"HU\",\n Iceland: \"IS\",\n India: \"IN\",\n Indonesia: \"ID\",\n Iran: \"IR\",\n Iraq: \"IQ\",\n Ireland: \"IE\",\n \"Isle of Man\": \"IM\",\n Israel: \"IL\",\n \"Ivory Coast\": \"CI\",\n Jamaica: \"JM\",\n Japan: \"JP\",\n Jersey: \"JE\",\n Jordan: \"JO\",\n Kazakhstan: \"KZ\",\n Kenya: \"KE\",\n Kiribati: \"KI\",\n Kosovo: \"XK\",\n Kuwait: \"KW\",\n Kyrgyzstan: \"KG\",\n Laos: \"LA\",\n Latvia: \"LV\",\n Lebanon: \"LB\",\n Lesotho: \"LS\",\n Liberia: \"LR\",\n Libya: \"LY\",\n Liechtenstein: \"LI\",\n Lithuania: \"LT\",\n Luxembourg: \"LU\",\n Macao: \"MO\",\n Macedonia: \"MK\",\n Madagascar: \"MG\",\n Malawi: \"MW\",\n Malaysia: \"MY\",\n Maldives: \"MV\",\n Mali: \"ML\",\n Malta: \"MT\",\n \"Marshall Islands\": \"MH\",\n Martinique: \"MQ\",\n Mauritania: \"MR\",\n Mauritius: \"MU\",\n Mayotte: \"YT\",\n Mexico: \"MX\",\n Micronesia: \"FM\",\n Moldova: \"MD\",\n Monaco: \"MC\",\n Mongolia: \"MN\",\n Montenegro: \"ME\",\n Montserrat: \"MS\",\n Morocco: \"MA\",\n Mozambique: \"MZ\",\n Myanmar: \"MM\",\n Namibia: \"NA\",\n Nauru: \"NR\",\n Nepal: \"NP\",\n \"New Caledonia\": \"NC\",\n \"New Zealand\": \"NZ\",\n Nicaragua: \"NI\",\n Niger: \"NE\",\n Nigeria: \"NG\",\n Niue: \"NU\",\n \"Norfolk Island\": \"NF\",\n \"North Korea\": \"KP\",\n \"Northern Mariana Islands\": \"MP\",\n Oman: \"OM\",\n Pakistan: \"PK\",\n Palau: \"PW\",\n \"Palestinian Territory\": \"PS\",\n Panama: \"PA\",\n \"Papua New Guinea\": \"PG\",\n Paraguay: \"PY\",\n Peru: \"PE\",\n Philippines: \"PH\",\n Pitcairn: \"PN\",\n Poland: \"PL\",\n \"Puerto Rico\": \"PR\",\n Qatar: \"QA\",\n \"Republic of the Congo\": \"CG\",\n Reunion: \"RE\",\n Romania: \"RO\",\n Russia: \"RU\",\n Rwanda: \"RW\",\n \"Saint Barthelemy\": \"BL\",\n \"Saint Helena\": \"SH\",\n \"Saint Kitts and Nevis\": \"KN\",\n \"Saint Lucia\": \"LC\",\n \"Saint Martin\": \"MF\",\n \"Saint Pierre and Miquelon\": \"PM\",\n \"Saint Vincent and the Grenadines\": \"VC\",\n Samoa: \"WS\",\n \"San Marino\": \"SM\",\n \"Sao Tome and Principe\": \"ST\",\n \"Saudi Arabia\": \"SA\",\n Senegal: \"SN\",\n Serbia: \"RS\",\n Seychelles: \"SC\",\n \"Sierra Leone\": \"SL\",\n Singapore: \"SG\",\n \"Sint Maarten\": \"SX\",\n Slovakia: \"SK\",\n Slovenia: \"SI\",\n \"Solomon Islands\": \"SB\",\n Somalia: \"SO\",\n \"South Africa\": \"ZA\",\n \"South Georgia and the South Sandwich Islands\": \"GS\",\n \"South Korea\": \"KR\",\n \"South Sudan\": \"SS\",\n \"Sri Lanka\": \"LK\",\n Sudan: \"SD\",\n Suriname: \"SR\",\n \"Svalbard and Jan Mayen\": \"SJ\",\n Swaziland: \"SZ\",\n Syria: \"SY\",\n Taiwan: \"TW\",\n Tajikistan: \"TJ\",\n Tanzania: \"TZ\",\n Thailand: \"TH\",\n Togo: \"TG\",\n Tokelau: \"TK\",\n Tonga: \"TO\",\n \"Trinidad and Tobago\": \"TT\",\n Tunisia: \"TN\",\n Turkey: \"TR\",\n Turkmenistan: \"TM\",\n \"Turks and Caicos Islands\": \"TC\",\n Tuvalu: \"TV\",\n \"U.S. Virgin Islands\": \"VI\",\n Uganda: \"UG\",\n Ukraine: \"UA\",\n \"United Arab Emirates\": \"AE\",\n \"United States\": \"US\",\n \"United States Minor Outlying Islands\": \"UM\",\n Uruguay: \"UY\",\n Uzbekistan: \"UZ\",\n Vanuatu: \"VU\",\n Vatican: \"VA\",\n Venezuela: \"VE\",\n Vietnam: \"VN\",\n \"Wallis and Futuna\": \"WF\",\n \"Western Sahara\": \"EH\",\n Yemen: \"YE\",\n Zambia: \"ZM\",\n Zimbabwe: \"ZW\",\n};\nconst mobiles = [\n {\n name: \"Germany\",\n dial_code: \"+49\",\n code: \"DE\",\n },\n {\n name: \"Austria\",\n dial_code: \"+43\",\n code: \"AT\",\n },\n {\n name: \"Switzerland\",\n dial_code: \"+41\",\n code: \"CH\",\n },\n {\n name: \"Sweden\",\n dial_code: \"+46\",\n code: \"SE\",\n },\n {\n name: \"Norway\",\n dial_code: \"+47\",\n code: \"NO\",\n },\n {\n name: \"Finland\",\n dial_code: \"+358\",\n code: \"FI\",\n },\n {\n name: \"Netherlands\",\n dial_code: \"+31\",\n code: \"NL\",\n },\n {\n name: \"Belgium\",\n dial_code: \"+32\",\n code: \"BE\",\n },\n {\n name: \"Denmark\",\n dial_code: \"+45\",\n code: \"DK\",\n },\n {\n name: \"United Kingdom\",\n dial_code: \"+44\",\n code: \"GB\",\n },\n {\n name: \"Spain\",\n dial_code: \"+34\",\n code: \"ES\",\n },\n {\n name: \"Portugal\",\n dial_code: \"+351\",\n code: \"PT\",\n },\n {\n name: \"Italy\",\n dial_code: \"+39\",\n code: \"IT\",\n },\n {\n name: \"France\",\n dial_code: \"+33\",\n code: \"FR\",\n },\n {\n name: \"Afghanistan\",\n dial_code: \"+93\",\n code: \"AF\",\n },\n {\n name: \"Aland Islands\",\n dial_code: \"+358\",\n code: \"AX\",\n },\n {\n name: \"Albania\",\n dial_code: \"+355\",\n code: \"AL\",\n },\n {\n name: \"Algeria\",\n dial_code: \"+213\",\n code: \"DZ\",\n },\n {\n name: \"AmericanSamoa\",\n dial_code: \"+1684\",\n code: \"AS\",\n },\n {\n name: \"Andorra\",\n dial_code: \"+376\",\n code: \"AD\",\n },\n {\n name: \"Angola\",\n dial_code: \"+244\",\n code: \"AO\",\n },\n {\n name: \"Anguilla\",\n dial_code: \"+1264\",\n code: \"AI\",\n },\n {\n name: \"Antarctica\",\n dial_code: \"+672\",\n code: \"AQ\",\n },\n {\n name: \"Antigua and Barbuda\",\n dial_code: \"+1268\",\n code: \"AG\",\n },\n {\n name: \"Argentina\",\n dial_code: \"+54\",\n code: \"AR\",\n },\n {\n name: \"Armenia\",\n dial_code: \"+374\",\n code: \"AM\",\n },\n {\n name: \"Aruba\",\n dial_code: \"+297\",\n code: \"AW\",\n },\n {\n name: \"Australia\",\n dial_code: \"+61\",\n code: \"AU\",\n },\n {\n name: \"Azerbaijan\",\n dial_code: \"+994\",\n code: \"AZ\",\n },\n {\n name: \"Bahamas\",\n dial_code: \"+1242\",\n code: \"BS\",\n },\n {\n name: \"Bahrain\",\n dial_code: \"+973\",\n code: \"BH\",\n },\n {\n name: \"Bangladesh\",\n dial_code: \"+880\",\n code: \"BD\",\n },\n {\n name: \"Barbados\",\n dial_code: \"+1246\",\n code: \"BB\",\n },\n {\n name: \"Belarus\",\n dial_code: \"+375\",\n code: \"BY\",\n },\n {\n name: \"Belize\",\n dial_code: \"+501\",\n code: \"BZ\",\n },\n {\n name: \"Benin\",\n dial_code: \"+229\",\n code: \"BJ\",\n },\n {\n name: \"Bermuda\",\n dial_code: \"+1441\",\n code: \"BM\",\n },\n {\n name: \"Bhutan\",\n dial_code: \"+975\",\n code: \"BT\",\n },\n {\n name: \"Bolivia, Plurinational State of\",\n dial_code: \"+591\",\n code: \"BO\",\n },\n {\n name: \"Bosnia and Herzegovina\",\n dial_code: \"+387\",\n code: \"BA\",\n },\n {\n name: \"Botswana\",\n dial_code: \"+267\",\n code: \"BW\",\n },\n {\n name: \"Brazil\",\n dial_code: \"+55\",\n code: \"BR\",\n },\n {\n name: \"British Indian Ocean Territory\",\n dial_code: \"+246\",\n code: \"IO\",\n },\n {\n name: \"Brunei Darussalam\",\n dial_code: \"+673\",\n code: \"BN\",\n },\n {\n name: \"Bulgaria\",\n dial_code: \"+359\",\n code: \"BG\",\n },\n {\n name: \"Burkina Faso\",\n dial_code: \"+226\",\n code: \"BF\",\n },\n {\n name: \"Burundi\",\n dial_code: \"+257\",\n code: \"BI\",\n },\n {\n name: \"Cambodia\",\n dial_code: \"+855\",\n code: \"KH\",\n },\n {\n name: \"Cameroon\",\n dial_code: \"+237\",\n code: \"CM\",\n },\n {\n name: \"Canada\",\n dial_code: \"+1\",\n code: \"CA\",\n },\n {\n name: \"Cape Verde\",\n dial_code: \"+238\",\n code: \"CV\",\n },\n {\n name: \"Cayman Islands\",\n dial_code: \"+ 345\",\n code: \"KY\",\n },\n {\n name: \"Central African Republic\",\n dial_code: \"+236\",\n code: \"CF\",\n },\n {\n name: \"Chad\",\n dial_code: \"+235\",\n code: \"TD\",\n },\n {\n name: \"Chile\",\n dial_code: \"+56\",\n code: \"CL\",\n },\n {\n name: \"China\",\n dial_code: \"+86\",\n code: \"CN\",\n },\n {\n name: \"Christmas Island\",\n dial_code: \"+61\",\n code: \"CX\",\n },\n {\n name: \"Cocos (Keeling) Islands\",\n dial_code: \"+61\",\n code: \"CC\",\n },\n {\n name: \"Colombia\",\n dial_code: \"+57\",\n code: \"CO\",\n },\n {\n name: \"Comoros\",\n dial_code: \"+269\",\n code: \"KM\",\n },\n {\n name: \"Congo\",\n dial_code: \"+242\",\n code: \"CG\",\n },\n {\n name: \"Congo, The Democratic Republic of the Congo\",\n dial_code: \"+243\",\n code: \"CD\",\n },\n {\n name: \"Cook Islands\",\n dial_code: \"+682\",\n code: \"CK\",\n },\n {\n name: \"Costa Rica\",\n dial_code: \"+506\",\n code: \"CR\",\n },\n {\n name: \"Cote d'Ivoire\",\n dial_code: \"+225\",\n code: \"CI\",\n },\n {\n name: \"Croatia\",\n dial_code: \"+385\",\n code: \"HR\",\n },\n {\n name: \"Cuba\",\n dial_code: \"+53\",\n code: \"CU\",\n },\n {\n name: \"Cyprus\",\n dial_code: \"+357\",\n code: \"CY\",\n },\n {\n name: \"Czech Republic\",\n dial_code: \"+420\",\n code: \"CZ\",\n },\n {\n name: \"Djibouti\",\n dial_code: \"+253\",\n code: \"DJ\",\n },\n {\n name: \"Dominica\",\n dial_code: \"+1767\",\n code: \"DM\",\n },\n {\n name: \"Dominican Republic\",\n dial_code: \"+1849\",\n code: \"DO\",\n },\n {\n name: \"Ecuador\",\n dial_code: \"+593\",\n code: \"EC\",\n },\n {\n name: \"Egypt\",\n dial_code: \"+20\",\n code: \"EG\",\n },\n {\n name: \"El Salvador\",\n dial_code: \"+503\",\n code: \"SV\",\n },\n {\n name: \"Equatorial Guinea\",\n dial_code: \"+240\",\n code: \"GQ\",\n },\n {\n name: \"Eritrea\",\n dial_code: \"+291\",\n code: \"ER\",\n },\n {\n name: \"Estonia\",\n dial_code: \"+372\",\n code: \"EE\",\n },\n {\n name: \"Ethiopia\",\n dial_code: \"+251\",\n code: \"ET\",\n },\n {\n name: \"Falkland Islands (Malvinas)\",\n dial_code: \"+500\",\n code: \"FK\",\n },\n {\n name: \"Faroe Islands\",\n dial_code: \"+298\",\n code: \"FO\",\n },\n {\n name: \"Fiji\",\n dial_code: \"+679\",\n code: \"FJ\",\n },\n {\n name: \"French Guiana\",\n dial_code: \"+594\",\n code: \"GF\",\n },\n {\n name: \"French Polynesia\",\n dial_code: \"+689\",\n code: \"PF\",\n },\n {\n name: \"Gabon\",\n dial_code: \"+241\",\n code: \"GA\",\n },\n {\n name: \"Gambia\",\n dial_code: \"+220\",\n code: \"GM\",\n },\n {\n name: \"Georgia\",\n dial_code: \"+995\",\n code: \"GE\",\n },\n {\n name: \"Ghana\",\n dial_code: \"+233\",\n code: \"GH\",\n },\n {\n name: \"Gibraltar\",\n dial_code: \"+350\",\n code: \"GI\",\n },\n {\n name: \"Greece\",\n dial_code: \"+30\",\n code: \"GR\",\n },\n {\n name: \"Greenland\",\n dial_code: \"+299\",\n code: \"GL\",\n },\n {\n name: \"Grenada\",\n dial_code: \"+1473\",\n code: \"GD\",\n },\n {\n name: \"Guadeloupe\",\n dial_code: \"+590\",\n code: \"GP\",\n },\n {\n name: \"Guam\",\n dial_code: \"+1671\",\n code: \"GU\",\n },\n {\n name: \"Guatemala\",\n dial_code: \"+502\",\n code: \"GT\",\n },\n {\n name: \"Guernsey\",\n dial_code: \"+44\",\n code: \"GG\",\n },\n {\n name: \"Guinea\",\n dial_code: \"+224\",\n code: \"GN\",\n },\n {\n name: \"Guinea-Bissau\",\n dial_code: \"+245\",\n code: \"GW\",\n },\n {\n name: \"Guyana\",\n dial_code: \"+595\",\n code: \"GY\",\n },\n {\n name: \"Haiti\",\n dial_code: \"+509\",\n code: \"HT\",\n },\n {\n name: \"Holy See (Vatican City State)\",\n dial_code: \"+379\",\n code: \"VA\",\n },\n {\n name: \"Honduras\",\n dial_code: \"+504\",\n code: \"HN\",\n },\n {\n name: \"Hong Kong\",\n dial_code: \"+852\",\n code: \"HK\",\n },\n {\n name: \"Hungary\",\n dial_code: \"+36\",\n code: \"HU\",\n },\n {\n name: \"Iceland\",\n dial_code: \"+354\",\n code: \"IS\",\n },\n {\n name: \"India\",\n dial_code: \"+91\",\n code: \"IN\",\n },\n {\n name: \"Indonesia\",\n dial_code: \"+62\",\n code: \"ID\",\n },\n {\n name: \"Iran, Islamic Republic of Persian Gulf\",\n dial_code: \"+98\",\n code: \"IR\",\n },\n {\n name: \"Iraq\",\n dial_code: \"+964\",\n code: \"IQ\",\n },\n {\n name: \"Ireland\",\n dial_code: \"+353\",\n code: \"IE\",\n },\n {\n name: \"Isle of Man\",\n dial_code: \"+44\",\n code: \"IM\",\n },\n {\n name: \"Israel\",\n dial_code: \"+972\",\n code: \"IL\",\n },\n {\n name: \"Jamaica\",\n dial_code: \"+1876\",\n code: \"JM\",\n },\n {\n name: \"Japan\",\n dial_code: \"+81\",\n code: \"JP\",\n },\n {\n name: \"Jersey\",\n dial_code: \"+44\",\n code: \"JE\",\n },\n {\n name: \"Jordan\",\n dial_code: \"+962\",\n code: \"JO\",\n },\n {\n name: \"Kazakhstan\",\n dial_code: \"+77\",\n code: \"KZ\",\n },\n {\n name: \"Kenya\",\n dial_code: \"+254\",\n code: \"KE\",\n },\n {\n name: \"Kiribati\",\n dial_code: \"+686\",\n code: \"KI\",\n },\n {\n name: \"Korea, Democratic People's Republic of Korea\",\n dial_code: \"+850\",\n code: \"KP\",\n },\n {\n name: \"Korea, Republic of South Korea\",\n dial_code: \"+82\",\n code: \"KR\",\n },\n {\n name: \"Kuwait\",\n dial_code: \"+965\",\n code: \"KW\",\n },\n {\n name: \"Kyrgyzstan\",\n dial_code: \"+996\",\n code: \"KG\",\n },\n {\n name: \"Laos\",\n dial_code: \"+856\",\n code: \"LA\",\n },\n {\n name: \"Latvia\",\n dial_code: \"+371\",\n code: \"LV\",\n },\n {\n name: \"Lebanon\",\n dial_code: \"+961\",\n code: \"LB\",\n },\n {\n name: \"Lesotho\",\n dial_code: \"+266\",\n code: \"LS\",\n },\n {\n name: \"Liberia\",\n dial_code: \"+231\",\n code: \"LR\",\n },\n {\n name: \"Libyan Arab Jamahiriya\",\n dial_code: \"+218\",\n code: \"LY\",\n },\n {\n name: \"Liechtenstein\",\n dial_code: \"+423\",\n code: \"LI\",\n },\n {\n name: \"Lithuania\",\n dial_code: \"+370\",\n code: \"LT\",\n },\n {\n name: \"Luxembourg\",\n dial_code: \"+352\",\n code: \"LU\",\n },\n {\n name: \"Macao\",\n dial_code: \"+853\",\n code: \"MO\",\n },\n {\n name: \"Macedonia\",\n dial_code: \"+389\",\n code: \"MK\",\n },\n {\n name: \"Madagascar\",\n dial_code: \"+261\",\n code: \"MG\",\n },\n {\n name: \"Malawi\",\n dial_code: \"+265\",\n code: \"MW\",\n },\n {\n name: \"Malaysia\",\n dial_code: \"+60\",\n code: \"MY\",\n },\n {\n name: \"Maldives\",\n dial_code: \"+960\",\n code: \"MV\",\n },\n {\n name: \"Mali\",\n dial_code: \"+223\",\n code: \"ML\",\n },\n {\n name: \"Malta\",\n dial_code: \"+356\",\n code: \"MT\",\n },\n {\n name: \"Marshall Islands\",\n dial_code: \"+692\",\n code: \"MH\",\n },\n {\n name: \"Martinique\",\n dial_code: \"+596\",\n code: \"MQ\",\n },\n {\n name: \"Mauritania\",\n dial_code: \"+222\",\n code: \"MR\",\n },\n {\n name: \"Mauritius\",\n dial_code: \"+230\",\n code: \"MU\",\n },\n {\n name: \"Mayotte\",\n dial_code: \"+262\",\n code: \"YT\",\n },\n {\n name: \"Mexico\",\n dial_code: \"+52\",\n code: \"MX\",\n },\n {\n name: \"Micronesia, Federated States of Micronesia\",\n dial_code: \"+691\",\n code: \"FM\",\n },\n {\n name: \"Moldova\",\n dial_code: \"+373\",\n code: \"MD\",\n },\n {\n name: \"Monaco\",\n dial_code: \"+377\",\n code: \"MC\",\n },\n {\n name: \"Mongolia\",\n dial_code: \"+976\",\n code: \"MN\",\n },\n {\n name: \"Montenegro\",\n dial_code: \"+382\",\n code: \"ME\",\n },\n {\n name: \"Montserrat\",\n dial_code: \"+1664\",\n code: \"MS\",\n },\n {\n name: \"Morocco\",\n dial_code: \"+212\",\n code: \"MA\",\n },\n {\n name: \"Mozambique\",\n dial_code: \"+258\",\n code: \"MZ\",\n },\n {\n name: \"Myanmar\",\n dial_code: \"+95\",\n code: \"MM\",\n },\n {\n name: \"Namibia\",\n dial_code: \"+264\",\n code: \"NA\",\n },\n {\n name: \"Nauru\",\n dial_code: \"+674\",\n code: \"NR\",\n },\n {\n name: \"Nepal\",\n dial_code: \"+977\",\n code: \"NP\",\n },\n {\n name: \"Netherlands Antilles\",\n dial_code: \"+599\",\n code: \"AN\",\n },\n {\n name: \"New Caledonia\",\n dial_code: \"+687\",\n code: \"NC\",\n },\n {\n name: \"New Zealand\",\n dial_code: \"+64\",\n code: \"NZ\",\n },\n {\n name: \"Nicaragua\",\n dial_code: \"+505\",\n code: \"NI\",\n },\n {\n name: \"Niger\",\n dial_code: \"+227\",\n code: \"NE\",\n },\n {\n name: \"Nigeria\",\n dial_code: \"+234\",\n code: \"NG\",\n },\n {\n name: \"Niue\",\n dial_code: \"+683\",\n code: \"NU\",\n },\n {\n name: \"Norfolk Island\",\n dial_code: \"+672\",\n code: \"NF\",\n },\n {\n name: \"Northern Mariana Islands\",\n dial_code: \"+1670\",\n code: \"MP\",\n },\n {\n name: \"Oman\",\n dial_code: \"+968\",\n code: \"OM\",\n },\n {\n name: \"Pakistan\",\n dial_code: \"+92\",\n code: \"PK\",\n },\n {\n name: \"Palau\",\n dial_code: \"+680\",\n code: \"PW\",\n },\n {\n name: \"Palestinian Territory, Occupied\",\n dial_code: \"+970\",\n code: \"PS\",\n },\n {\n name: \"Panama\",\n dial_code: \"+507\",\n code: \"PA\",\n },\n {\n name: \"Papua New Guinea\",\n dial_code: \"+675\",\n code: \"PG\",\n },\n {\n name: \"Paraguay\",\n dial_code: \"+595\",\n code: \"PY\",\n },\n {\n name: \"Peru\",\n dial_code: \"+51\",\n code: \"PE\",\n },\n {\n name: \"Philippines\",\n dial_code: \"+63\",\n code: \"PH\",\n },\n {\n name: \"Pitcairn\",\n dial_code: \"+872\",\n code: \"PN\",\n },\n {\n name: \"Poland\",\n dial_code: \"+48\",\n code: \"PL\",\n },\n {\n name: \"Puerto Rico\",\n dial_code: \"+1939\",\n code: \"PR\",\n },\n {\n name: \"Qatar\",\n dial_code: \"+974\",\n code: \"QA\",\n },\n {\n name: \"Romania\",\n dial_code: \"+40\",\n code: \"RO\",\n },\n {\n name: \"Russia\",\n dial_code: \"+7\",\n code: \"RU\",\n },\n {\n name: \"Rwanda\",\n dial_code: \"+250\",\n code: \"RW\",\n },\n {\n name: \"Reunion\",\n dial_code: \"+262\",\n code: \"RE\",\n },\n {\n name: \"Saint Barthelemy\",\n dial_code: \"+590\",\n code: \"BL\",\n },\n {\n name: \"Saint Helena, Ascension and Tristan Da Cunha\",\n dial_code: \"+290\",\n code: \"SH\",\n },\n {\n name: \"Saint Kitts and Nevis\",\n dial_code: \"+1869\",\n code: \"KN\",\n },\n {\n name: \"Saint Lucia\",\n dial_code: \"+1758\",\n code: \"LC\",\n },\n {\n name: \"Saint Martin\",\n dial_code: \"+590\",\n code: \"MF\",\n },\n {\n name: \"Saint Pierre and Miquelon\",\n dial_code: \"+508\",\n code: \"PM\",\n },\n {\n name: \"Saint Vincent and the Grenadines\",\n dial_code: \"+1784\",\n code: \"VC\",\n },\n {\n name: \"Samoa\",\n dial_code: \"+685\",\n code: \"WS\",\n },\n {\n name: \"San Marino\",\n dial_code: \"+378\",\n code: \"SM\",\n },\n {\n name: \"Sao Tome and Principe\",\n dial_code: \"+239\",\n code: \"ST\",\n },\n {\n name: \"Saudi Arabia\",\n dial_code: \"+966\",\n code: \"SA\",\n },\n {\n name: \"Senegal\",\n dial_code: \"+221\",\n code: \"SN\",\n },\n {\n name: \"Serbia\",\n dial_code: \"+381\",\n code: \"RS\",\n },\n {\n name: \"Seychelles\",\n dial_code: \"+248\",\n code: \"SC\",\n },\n {\n name: \"Sierra Leone\",\n dial_code: \"+232\",\n code: \"SL\",\n },\n {\n name: \"Singapore\",\n dial_code: \"+65\",\n code: \"SG\",\n },\n {\n name: \"Slovakia\",\n dial_code: \"+421\",\n code: \"SK\",\n },\n {\n name: \"Slovenia\",\n dial_code: \"+386\",\n code: \"SI\",\n },\n {\n name: \"Solomon Islands\",\n dial_code: \"+677\",\n code: \"SB\",\n },\n {\n name: \"Somalia\",\n dial_code: \"+252\",\n code: \"SO\",\n },\n {\n name: \"South Africa\",\n dial_code: \"+27\",\n code: \"ZA\",\n },\n {\n name: \"South Sudan\",\n dial_code: \"+211\",\n code: \"SS\",\n },\n {\n name: \"South Georgia and the South Sandwich Islands\",\n dial_code: \"+500\",\n code: \"GS\",\n },\n {\n name: \"Sri Lanka\",\n dial_code: \"+94\",\n code: \"LK\",\n },\n {\n name: \"Sudan\",\n dial_code: \"+249\",\n code: \"SD\",\n },\n {\n name: \"Suriname\",\n dial_code: \"+597\",\n code: \"SR\",\n },\n {\n name: \"Svalbard and Jan Mayen\",\n dial_code: \"+47\",\n code: \"SJ\",\n },\n {\n name: \"Swaziland\",\n dial_code: \"+268\",\n code: \"SZ\",\n },\n {\n name: \"Syrian Arab Republic\",\n dial_code: \"+963\",\n code: \"SY\",\n },\n {\n name: \"Taiwan\",\n dial_code: \"+886\",\n code: \"TW\",\n },\n {\n name: \"Tajikistan\",\n dial_code: \"+992\",\n code: \"TJ\",\n },\n {\n name: \"Tanzania, United Republic of Tanzania\",\n dial_code: \"+255\",\n code: \"TZ\",\n },\n {\n name: \"Thailand\",\n dial_code: \"+66\",\n code: \"TH\",\n },\n {\n name: \"Timor-Leste\",\n dial_code: \"+670\",\n code: \"TL\",\n },\n {\n name: \"Togo\",\n dial_code: \"+228\",\n code: \"TG\",\n },\n {\n name: \"Tokelau\",\n dial_code: \"+690\",\n code: \"TK\",\n },\n {\n name: \"Tonga\",\n dial_code: \"+676\",\n code: \"TO\",\n },\n {\n name: \"Trinidad and Tobago\",\n dial_code: \"+1868\",\n code: \"TT\",\n },\n {\n name: \"Tunisia\",\n dial_code: \"+216\",\n code: \"TN\",\n },\n {\n name: \"Turkey\",\n dial_code: \"+90\",\n code: \"TR\",\n },\n {\n name: \"Turkmenistan\",\n dial_code: \"+993\",\n code: \"TM\",\n },\n {\n name: \"Turks and Caicos Islands\",\n dial_code: \"+1649\",\n code: \"TC\",\n },\n {\n name: \"Tuvalu\",\n dial_code: \"+688\",\n code: \"TV\",\n },\n {\n name: \"Uganda\",\n dial_code: \"+256\",\n code: \"UG\",\n },\n {\n name: \"Ukraine\",\n dial_code: \"+380\",\n code: \"UA\",\n },\n {\n name: \"United Arab Emirates\",\n dial_code: \"+971\",\n code: \"AE\",\n },\n {\n name: \"United States\",\n dial_code: \"+1\",\n code: \"US\",\n },\n {\n name: \"Uruguay\",\n dial_code: \"+598\",\n code: \"UY\",\n },\n {\n name: \"Uzbekistan\",\n dial_code: \"+998\",\n code: \"UZ\",\n },\n {\n name: \"Vanuatu\",\n dial_code: \"+678\",\n code: \"VU\",\n },\n {\n name: \"Venezuela, Bolivarian Republic of Venezuela\",\n dial_code: \"+58\",\n code: \"VE\",\n },\n {\n name: \"Vietnam\",\n dial_code: \"+84\",\n code: \"VN\",\n },\n {\n name: \"Virgin Islands, British\",\n dial_code: \"+1284\",\n code: \"VG\",\n },\n {\n name: \"Virgin Islands, U.S.\",\n dial_code: \"+1340\",\n code: \"VI\",\n },\n {\n name: \"Wallis and Futuna\",\n dial_code: \"+681\",\n code: \"WF\",\n },\n {\n name: \"Yemen\",\n dial_code: \"+967\",\n code: \"YE\",\n },\n {\n name: \"Zambia\",\n dial_code: \"+260\",\n code: \"ZM\",\n },\n {\n name: \"Zimbabwe\",\n dial_code: \"+263\",\n code: \"ZW\",\n },\n];\n\nexport default class extends Controller {\n\n static targets = [\"locations\"];\n static values = { basket: String };\n\n connect() {\n\n this.updateBasket();\n\n let tooltipTriggerList = [].slice.call(\n document.querySelectorAll('[data-bs-toggle=\"tooltip\"]')\n );\n let tooltipList = tooltipTriggerList.map(function (tooltipTriggerEl) {\n return new Tooltip(tooltipTriggerEl);\n });\n var urlParams;\n (window.onpopstate = function () {\n var match,\n pl = /\\+/g, // Regex for replacing addition symbol with a space\n search = /([^&=]+)=?([^&]*)/g,\n decode = function (s) {\n return decodeURIComponent(s.replace(pl, \" \"));\n },\n query = window.location.search.substring(1);\n\n urlParams = {};\n while ((match = search.exec(query)))\n urlParams[decode(match[1])] = decode(match[2]);\n })();\n\n if (urlParams.model_type) {\n document.getElementById(`type-${this.basketValue}`).value =\n urlParams.model_type;\n }\n\n if (urlParams.models && urlParams.models.length > 0) {\n const reset = document.getElementById(`reset-${this.basketValue}`);\n if (reset) reset.classList.remove(\"hidden\");\n }\n let plocId = document.getElementById(`plocId-${this.basketValue}`);\n if (urlParams.plocId && plocId) {\n plocId.value = urlParams.plocId;\n let flag = false;\n let locations = this.locationsTarget;\n for (var i = 1; i < locations.options.length; i++) {\n locations.options[i].classList.remove(\"hidden\");\n if (plocId.value && locations.options[i].dataset.island != plocId.value)\n locations.options[i].classList.add(\"hidden\");\n }\n } else {\n let query = window.location.pathname.split(\"/\");\n let island = false;\n if (plocId) {\n query.forEach((element) => {\n switch (element) {\n case \"gran-canaria\":\n island = true;\n plocId.value = \"1\";\n break;\n case \"tenerife\":\n island = true;\n plocId.value = \"2\";\n break;\n case \"lanzarote\":\n island = true;\n plocId.value = \"3\";\n break;\n }\n });\n if (!island) {\n plocId.value = 1;\n }\n }\n }\n if (urlParams.height) {\n document.getElementById(`height-${this.basketValue}`).value =\n urlParams.height;\n }\n let active = document.getElementsByClassName(\"filter-type bg-black\")[0];\n if (active) {\n active.classList.remove(\"bg-black\");\n active.classList.add(\"bg-gray-300\");\n let types = document.getElementsByClassName(\"filter-type\");\n for (let i = 0; i < types.length; i++) {\n if (urlParams.model_type === types[i].dataset.type) {\n types[i].classList.remove(\"bg-gray-300\");\n types[i].classList.add(\"bg-black\");\n }\n }\n }\n let selected = false;\n let select = document.getElementById(`country-${this.basketValue}`);\n if (select) {\n for (var key in countries) {\n let option = document.createElement(\"option\");\n option.text = key;\n option.value = countries[key];\n if (option.value === \"ES\") {\n option.id = \"es\";\n }\n if (select.dataset.country === countries[key]) {\n option.selected = \"selected\";\n selected = true;\n }\n select.appendChild(option);\n } /*\n if ( !selected ) {\n let spain = document.getElementById('es');\n spain.setAttribute('selected', 'selected');\n }*/\n }\n let select2 = document.getElementById(`prefix-${this.basketValue}`);\n if (select2) {\n selected = false;\n mobiles.forEach((prefix) => {\n let option = document.createElement(\"option\");\n option.text = prefix.dial_code + \" \" + prefix.name;\n option.value = prefix.dial_code;\n if (prefix.code === \"ES\") {\n option.id = \"es2\";\n }\n if (select && select.dataset.country === prefix.code) {\n option.selected = \"selected\";\n selected = true;\n }\n select2.appendChild(option);\n });\n }\n\n let layer = document.getElementById(`bikes-booking-${this.basketValue}`);\n if (layer) this.bikes_layer();\n\n let bike = document.getElementById(`single-bike-${this.basketValue}`);\n if (bike) this.single_bike_layer(bike);\n\n let anchor = document.getElementById(`main-filters-${this.basketValue}`);\n let filterTagsMobile = document.getElementById(\n `filterTagsMobile-${this.basketValue}`\n );\n if (filterTagsMobile) {\n document.addEventListener(\"scroll\", (event) => {\n if (anchor.offsetTop + 278 <= window.scrollY)\n filterTagsMobile.classList.add(\"fixed-filters\");\n else filterTagsMobile.classList.remove(\"fixed-filters\");\n });\n }\n\n layer = null;\n layer = document.getElementById(`cart-${this.basketValue}`);\n if (layer) document.addEventListener(\"priced\", this.cart_layer);\n }\n\n removeFromCart(event) {\n document.getElementById(`spinner`).classList.remove(\"hidden\");\n let basket = this.basketValue;\n let cancel = \"\";\n let tmp;\n let path = event.path || (event.composedPath && event.composedPath());\n path.forEach((element) => {\n if (element.dataset && element.dataset.cancel) {\n cancel = element.dataset.cancel;\n tmp = JSON.parse(element.dataset.item);\n }\n });\n if (cancel.length > 0) {\n let items;\n if (tmp.modelId) {\n items = [\n {\n item_id: tmp.modelId.toString(),\n item_name: tmp.modelName,\n item_brand: tmp.manufacturer,\n item_category: tmp.category,\n location_id: tmp.plocId,\n price: parseFloat(tmp.pricePerUnit),\n quantity: tmp.unitCount,\n },\n ];\n } else {\n items = [\n {\n item_id: tmp.tourId.toString(),\n item_name: tmp.details.tourName,\n item_category: tmp.details.categoryName,\n location_id: tmp.details.locId,\n price: parseFloat(tmp.pricePerUnit),\n quantity: 1,\n },\n ];\n }\n let url = `/agents/remove_from_basket?basket=${basket}&res_id=${cancel}`;\n fetch(url).then((data) => {\n this.removeFromCart_layer(parseFloat(tmp.priceTotal), items);\n removeBasketFromSession(this.basketValue);\n this.updateBasket();\n this.updateBasketHeader();\n window.location.reload();\n });\n\n function removeBasketFromSession(value) {\n let storedBasket = sessionStorage.getItem(\"baskets\");\n let basketArray = storedBasket ? JSON.parse(storedBasket) : [];\n let indexToRemove = basketArray.indexOf(parseInt(value));\n if (indexToRemove !== -1) {\n basketArray.splice(indexToRemove, 1);\n let updatedBasket = JSON.stringify(basketArray);\n sessionStorage.setItem(\"baskets\", updatedBasket);\n }\n }\n }\n }\n\n toggleExtra(event) {\n let lang = \"en\";\n let basket = this.basketValue;\n const extra = event.target;\n const cancel = extra.dataset.cancel;\n let resId = extra.dataset.bike;\n let tmp = JSON.parse(extra.dataset.item);\n let add;\n\n if (extra.checked) {\n add = true;\n var url = `/booking_process/add_extra_to_bike?basket=${basket}&res_id=${resId}&prod_id=${extra.value}&lang=${lang}`;\n } else {\n add = false;\n var url = `/booking_process/remove_from_basket?basket=${basket}&res_id=${cancel}`;\n }\n fetch(url)\n .then((response) => response.json())\n .then((data) => {\n let items = [\n {\n item_id: tmp.prodId.toString(),\n item_name: tmp.title,\n currency: \"EUR\",\n item_category: tmp.prodType,\n price: parseFloat(tmp.price),\n },\n ];\n if (add) this.addToCart_layer(parseFloat(tmp.price), items);\n else this.removeFromCart_layer(parseFloat(tmp.price), items);\n this.updateBasket();\n if (data && data.resId) event.target.dataset.cancel = data.resId;\n else delete event.target.dataset.cancel;\n });\n }\n\n toggleTour(event) {\n let basket = event.target.dataset.basket\n ? event.target.dataset.basket\n : this.basketValue;\n const tour = event.target;\n const bike = tour.dataset.bike;\n var date = tour.dataset.date;\n const cancel = tour.dataset.cancel;\n let tours = document.querySelectorAll(`.tour-${bike}`);\n let tmp = JSON.parse(tour.dataset.item);\n let add;\n\n if (tour.checked) {\n tours.forEach((element) => {\n if (element.value != tour.value && date == element.dataset.date)\n element.setAttribute(\"disabled\", \"disabled\");\n });\n add = true;\n var url = `/booking_process/add_tour_to_basket?basket=${basket}&tour=${tour.value}&bpr=${tour.dataset.bpr}&res=${bike}&loc=${tour.dataset.loc}&date=${date}`;\n } else {\n tours.forEach((element) => {\n if (element.value != tour.value && date == element.dataset.date)\n element.removeAttribute(\"disabled\");\n });\n add = false;\n var url = `/booking_process/remove_from_basket?basket=${basket}&res_id=${cancel}`;\n }\n fetch(url)\n .then((response) => response.json())\n .then((data) => {\n let items = [\n {\n item_id: tmp.tourId.toString(),\n item_name: tmp.details.tourName,\n item_category: tmp.details.categoryName,\n location_id: tmp.details.locId,\n price: parseFloat(tmp.price),\n quantity: 1,\n },\n ];\n if (add) this.addToCart_layer(parseFloat(tmp.price), items);\n else this.removeFromCart_layer(parseFloat(tmp.price), items);\n this.updateBasket();\n if (data && data.resId) event.target.dataset.cancel = data.resId;\n else delete event.target.dataset.cancel;\n });\n }\n\n updateBasket() {\n let basket = this.basketValue;\n if (basket) {\n const url = `/booking_process/get_basket/${basket}`;\n fetch(url)\n .then((response) => {\n return response.json();\n })\n .catch((error) => {\n console.error(error);\n })\n .then((data) => {\n let unavailable = document.getElementById(\n `unavailable-${this.basketValue}`\n );\n if (unavailable) unavailable.classList.add(\"hidden\");\n let price = 0;\n let discount = 0;\n let sum = 0;\n if (data) {\n data.OrderPosition.forEach((element) => {\n price = price + element.pricePerUnit;\n if (element.prodType == \"X\")\n discount = discount + Math.abs(element.pricePerUnit);\n });\n }\n let supertotal = document.getElementById(\n `supertotal-${this.basketValue}`\n );\n let superdiscount = document.getElementById(\n `discount-${this.basketValue}`\n );\n let wrapper = document.getElementById(\n `discount-wrapper-${this.basketValue}`\n );\n if (discount > 0) {\n sum = price + discount;\n sum = sum.toFixed(2);\n sum = sum.replace(\".\", \",\");\n price = price.toFixed(2);\n price = price.replace(\".\", \",\");\n discount = discount.toFixed(2);\n discount = discount.replace(\".\", \",\");\n if (supertotal) {\n supertotal.value = sum;\n supertotal.classList.remove(\"hidden\");\n }\n if (superdiscount) {\n superdiscount.innerHTML = discount;\n wrapper.classList.remove(\"hidden\");\n }\n }\n /*else {\n if ( supertotal )\n supertotal.classList.add('hidden');\n if ( wrapper )\n wrapper.classList.add('hidden');\n }*/\n let total;\n let interval = setInterval(() => {\n total = document.getElementById(`total-${this.basketValue}`);\n if (total) {\n clearInterval(interval);\n setPrice();\n document.getElementById(\"prices-section\").classList.remove(\"hidden\");\n document.getElementById(`spinner`).classList.add(\"hidden\");\n }\n }, 1000);\n\n function setPrice() {\n total.value = price;\n let totalBaskets = document.getElementById(`total-baskets`);\n const totalInputs = document.querySelectorAll(\".total-input\");\n let totalSum = 0;\n totalInputs.forEach(function (input) {\n totalSum += parseFloat(input.value);\n });\n totalBaskets.innerHTML = totalSum;\n\n const event = document.createEvent(\"Event\");\n event.initEvent(\"priced\", true, true);\n document.dispatchEvent(event);\n }\n });\n }\n }\n\n updateBasketHeader() {\n let basket = sessionStorage.getItem(\"baskets\");\n let count = basket ? JSON.parse(basket).length : 0;\n document.getElementById(`cart1`).innerHTML = count;\n document.getElementById(`cart2`).innerHTML = count;\n }\n\n //\n // Layers functions\n //\n\n single_bike_layer(elem) {\n let bike;\n if (elem && elem.dataset) {\n bike = JSON.parse(elem.dataset.bike);\n let price = parseFloat(elem.dataset.price);\n let tmp = document.getElementById(\"user-info\");\n let user = {};\n if (tmp) {\n tmp = tmp.dataset;\n user = {\n email: tmp.email,\n first_name: tmp.first_name,\n last_name: tmp.last_name,\n phone_number: tmp.phone_number,\n street: tmp.street,\n city: tmp.city,\n region: tmp.region,\n postal_code: tmp.postal_code,\n country: tmp.country,\n };\n }\n\n dataLayer.push({ ecommerce: null }); // Clear the previous ecommerce object.\n dataLayer.push({\n event: \"view_item\",\n ecommerce: {\n item_list_name: \"Bikes\",\n items: [\n {\n item_id: bike.model_id.toString(),\n item_name: bike.model_title,\n currency: \"EUR\",\n index: 0,\n item_brand: bike.manufacturer,\n item_category: bike.product_group_name,\n price: parseFloat(price),\n quantity: 1,\n },\n ],\n enhanced_conversion_data: user,\n },\n });\n console.log(\"DATALAYER - view_item\", dataLayer);\n }\n }\n\n bikes_layer() {\n let bikesData = [];\n let bikes = document.getElementsByClassName(\"bike-info\");\n for (let i = 0; i < bikes.length; i++) {\n let bike = JSON.parse(bikes[i].dataset.bike);\n bikesData.push({\n item_id: bike.model_id.toString(),\n item_name: bike.model_title,\n currency: \"EUR\",\n index: i,\n item_brand: bike.manufacturer,\n item_category: bike.product_group_name,\n price: parseFloat(bikes[i].dataset.price),\n quantity: 1,\n });\n }\n let tmp = document.getElementById(\"user-info\");\n let user = {};\n if (tmp) {\n tmp = tmp.dataset;\n user = {\n email: tmp.email,\n first_name: tmp.first_name,\n last_name: tmp.last_name,\n phone_number: tmp.phone_number,\n street: tmp.street,\n city: tmp.city,\n region: tmp.region,\n postal_code: tmp.postal_code,\n country: tmp.country,\n };\n }\n dataLayer.push({ ecommerce: null }); // Clear the previous ecommerce object.\n dataLayer.push({\n event: \"view_item_list\",\n ecommerce: {\n item_list_name: \"Bikes\",\n items: bikesData,\n enhanced_conversion_data: user,\n },\n });\n console.log(\"DATALAYER - view_item_list\", dataLayer);\n }\n\n cart_layer() {\n document.removeEventListener(\"priced\", this.cart_layer);\n const items = document.getElementsByClassName(\"cart-item\");\n const options = document.querySelectorAll(\"input.extra:checked\");\n const total = document.getElementById(`total-${this.basketValue}`);\n let tmp;\n let itemsData = [];\n for (let i = 0; i < items.length; i++) {\n let item = items[i].dataset;\n tmp = JSON.parse(item.value);\n if (item.type === \"bike\") {\n itemsData.push({\n item_id: tmp.modelId.toString(),\n item_name: tmp.modelName,\n currency: \"EUR\",\n index: i,\n item_brand: tmp.manufacturer,\n item_category: tmp.category,\n price: parseFloat(tmp.pricePerUnit),\n location_id: tmp.plocId.toString(),\n quantity: tmp.unitCount,\n });\n }\n if (item.type === \"tour\") {\n itemsData.push({\n item_id: tmp.tourId.toString(),\n item_name: tmp.details.tourName,\n currency: \"EUR\",\n index: i,\n item_category: tmp.details.categoryName,\n price: parseFloat(tmp.pricePerUnit),\n location_id: tmp.details.locId.toString(),\n quantity: tmp.unitCount,\n });\n }\n }\n for (let i = 0; i < options.length; i++) {\n let item = options[i].dataset;\n tmp = JSON.parse(item.item);\n itemsData.push({\n item_id: tmp.prodId.toString(),\n item_name: tmp.title,\n currency: \"EUR\",\n index: i,\n item_category: tmp.prodType,\n price: parseFloat(tmp.price),\n });\n }\n tmp = document.getElementById(\"user-info\");\n let user = {};\n if (tmp) {\n tmp = tmp.dataset;\n user = {\n email: tmp.email,\n first_name: tmp.first_name,\n last_name: tmp.last_name,\n phone_number: tmp.phone_number,\n street: tmp.street,\n city: tmp.city,\n region: tmp.region,\n postal_code: tmp.postal_code,\n country: tmp.country,\n };\n }\n let session = JSON.stringify({\n currency: \"EUR\",\n value: parseFloat(total.innerText),\n items: itemsData,\n enhanced_conversion_data: user,\n });\n sessionStorage.setItem(\"cart_layer\", session);\n dataLayer.push({ ecommerce: null }); // Clear the previous ecommerce object.\n dataLayer.push({\n event: \"view_cart\",\n ecommerce: { session },\n });\n console.log(\"DATALAYER - view_cart\", dataLayer);\n }\n\n addToCart_layer(total, items) {\n let tmp = document.getElementById(\"user-info\");\n let user = {};\n if (tmp) {\n tmp = tmp.dataset;\n user = {\n email: tmp.email,\n first_name: tmp.first_name,\n last_name: tmp.last_name,\n phone_number: tmp.phone_number,\n street: tmp.street,\n city: tmp.city,\n region: tmp.region,\n postal_code: tmp.postal_code,\n country: tmp.country,\n };\n }\n dataLayer.push({ ecommerce: null }); // Clear the previous ecommerce object.\n dataLayer.push({\n event: \"add_to_cart\",\n ecommerce: {\n currency: \"EUR\",\n value: parseFloat(total),\n items: items,\n enhanced_conversion_data: user,\n },\n });\n console.log(\"DATALAYER - add_to_cart\", dataLayer);\n }\n\n removeFromCart_layer(total, items) {\n let tmp = document.getElementById(\"user-info\");\n let user = {};\n if (tmp) {\n tmp = tmp.dataset;\n user = {\n email: tmp.email,\n first_name: tmp.first_name,\n last_name: tmp.last_name,\n phone_number: tmp.phone_number,\n street: tmp.street,\n city: tmp.city,\n region: tmp.region,\n postal_code: tmp.postal_code,\n country: tmp.country,\n };\n }\n dataLayer.push({ ecommerce: null }); // Clear the previous ecommerce object.\n dataLayer.push({\n event: \"remove_from_cart\",\n ecommerce: {\n currency: \"EUR\",\n value: parseFloat(total),\n items: items,\n enhanced_conversion_data: user,\n },\n });\n console.log(\"DATALAYER - remove_from_cart\", dataLayer);\n }\n}\n","import { Turbo } from \"@hotwired/turbo-rails\";\nimport { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n\n static targets = [ \"locale\" ];\n\n connect() {\n let storedBasket = JSON.parse(sessionStorage.getItem(\"baskets\") || \"[]\");\n if (storedBasket.length == 0) document.getElementById(\"spinner\").classList.add(\"hidden\");\n }\n \n step3() {\n const lang = document.getElementById('locale-target').value;\n let url2 = `/${lang}/agents/step3`;\n\n document.getElementById('spinner').classList.remove(\"hidden\");\n const cart_layer = JSON.parse(sessionStorage.getItem(\"cart_layer\"));\n if (cart_layer) {\n dataLayer.push({ ecommerce: null }); // Clear the previous ecommerce object.\n dataLayer.push({\n event: \"begin_checkout\",\n ecommerce: { cart_layer },\n });\n console.log(\"DATALAYER - begin_checkout\", dataLayer);\n }\n Turbo.visit(url2, { action: \"replace\" });\n }\n\n payBooking() {\n let terms = document.getElementById(\"terms\");\n let basketsString = sessionStorage.getItem(\"baskets\");\n let baskets = JSON.parse(basketsString);\n if (terms.checked) {\n document.getElementById(\"spinner\").classList.remove(\"hidden\");\n baskets.forEach((basket) => {\n let comment = document.getElementById(`comment-${basket}`).value;\n let email = document.getElementById(`email-${basket}`).value;\n let url = `/booking_process/send_comment?basket=${basket}&comment=${comment}`;\n console.log(url);\n fetch(url)\n .then((response) => response.json())\n .then((data) => {\n console.log(data);\n });\n });\n\n let url2 = `/agents/create-payment?baskets=${baskets}`;\n console.log(url2);\n fetch(url2)\n .then((response) => response.json())\n .then((data) => {\n console.log(data);\n window.location = `https://www.vivapayments.com/web/checkout?ref=${data.ref}`;\n });\n }\n }\n\n closeBaskets() {\n let terms = document.getElementById(\"terms\");\n let basketsString = sessionStorage.getItem(\"baskets\");\n let baskets = JSON.parse(basketsString);\n if (terms.checked) {\n document.getElementById(\"spinner\").classList.remove(\"hidden\");\n baskets.forEach((basket) => {\n let comment = document.getElementById(`comment-${basket}`).value;\n let email = document.getElementById(`email-${basket}`).value;\n let url = `/booking_process/send_comment?basket=${basket}&comment=${comment}`;\n \n fetch(url)\n .then((response) => response.json())\n .then((data) => {\n let url2\n if (document.getElementById(\"group_name\")) {\n const name = document.getElementById(\"group_name\").innerHTML;\n url2 = `/agents/close_basket?basket=${basket}&email=${email}&group_name=${name}`;\n } else {\n url2 = `/agents/close_basket?basket=${basket}&email=${email}`;\n }\n fetch(url2).then((response) => {\n this.removeBasketFromSession(basket)\n let modal = document.getElementById(\"modal\");\n modal.classList.remove(\"hidden\");\n document.getElementById(\"spinner\").classList.add(\"hidden\");\n });\n });\n })\n \n }\n }\n\n finish(event) {\n window.location.href = \"/\";\n }\n\n removeBasketFromSession(value) {\n let storedBasket = sessionStorage.getItem(\"baskets\");\n let basketArray = storedBasket ? JSON.parse(storedBasket) : [];\n if (value !== undefined) {\n let indexToRemove = basketArray.indexOf(parseInt(value));\n if (indexToRemove !== -1) {\n basketArray.splice(indexToRemove, 1);\n }\n } else {\n basketArray = [];\n }\n let updatedBasket = JSON.stringify(basketArray);\n sessionStorage.setItem(\"baskets\", updatedBasket);\n }\n\n}\n","import { Controller } from 'stimulus';\n\n/*\n * Avatar Edition controller\n * Let to create a dropzone zone to\n * upload and preview files.\n *\n */\n\nexport default class extends Controller {\n\n\tstatic targets = [\n\t \t'avatar',\n\t \t'dropzoneMsg',\n\t \t'removeAvatar'\n ];\n\n\tconnect () {}\n\n\tremoveAvatar () {\n\t\tthis.avatarTarget.remove();\n\t\tthis.dropzoneMsgTarget.classList.remove('border-l-2');\n\t\tthis.removeAvatarTarget.value = true;\n\t}\n\n}","import { Controller } from \"stimulus\"\nimport { Turbo } from \"@hotwired/turbo-rails\";\n\nexport default class extends Controller {\n connect() {\n }\n\n rate(event) {\n let rating = event.target.dataset.value;\n let model = event.target.dataset.model;\n let index = event.target.dataset.index;\n const url = `/bikes_rating/rate?rating=${rating}&model_id=${model}&index=${index}`;\n\n Turbo.visit(url, { action: 'replace' });\n }\n\n}","import { Turbo } from \"@hotwired/turbo-rails\";\nimport { Controller } from \"stimulus\";\n\nconst countries = {\n Germany: \"DE\",\n Austria: \"AT\",\n Switzerland: \"CH\",\n Sweden: \"SE\",\n Norway: \"NO\",\n Finland: \"FI\",\n Netherlands: \"NL\",\n Belgium: \"BE\",\n Denmark: \"DK\",\n \"United Kingdom\": \"GB\",\n Spain: \"ES\",\n Portugal: \"PT\",\n Italy: \"IT\",\n France: \"FR\",\n Afghanistan: \"AF\",\n \"Aland Islands\": \"AX\",\n Albania: \"AL\",\n Algeria: \"DZ\",\n \"American Samoa\": \"AS\",\n Andorra: \"AD\",\n Angola: \"AO\",\n Anguilla: \"AI\",\n Antarctica: \"AQ\",\n \"Antigua and Barbuda\": \"AG\",\n Argentina: \"AR\",\n Armenia: \"AM\",\n Aruba: \"AW\",\n Australia: \"AU\",\n Azerbaijan: \"AZ\",\n Bahamas: \"BS\",\n Bahrain: \"BH\",\n Bangladesh: \"BD\",\n Barbados: \"BB\",\n Belarus: \"BY\",\n Belize: \"BZ\",\n Benin: \"BJ\",\n Bermuda: \"BM\",\n Bhutan: \"BT\",\n Bolivia: \"BO\",\n \"Bonaire, Saint Eustatius and Saba\": \"BQ\",\n \"Bosnia and Herzegovina\": \"BA\",\n Botswana: \"BW\",\n \"Bouvet Island\": \"BV\",\n Brazil: \"BR\",\n \"British Indian Ocean Territory\": \"IO\",\n \"British Virgin Islands\": \"VG\",\n Brunei: \"BN\",\n Bulgaria: \"BG\",\n \"Burkina Faso\": \"BF\",\n Burundi: \"BI\",\n Cambodia: \"KH\",\n Cameroon: \"CM\",\n Canada: \"CA\",\n \"Cape Verde\": \"CV\",\n \"Cayman Islands\": \"KY\",\n \"Central African Republic\": \"CF\",\n Chad: \"TD\",\n Chile: \"CL\",\n China: \"CN\",\n \"Christmas Island\": \"CX\",\n \"Cocos Islands\": \"CC\",\n Colombia: \"CO\",\n Comoros: \"KM\",\n \"Cook Islands\": \"CK\",\n \"Costa Rica\": \"CR\",\n Croatia: \"HR\",\n Cuba: \"CU\",\n Curacao: \"CW\",\n Cyprus: \"CY\",\n \"Czech Republic\": \"CZ\",\n \"Democratic Republic of the Congo\": \"CD\",\n Djibouti: \"DJ\",\n Dominica: \"DM\",\n \"Dominican Republic\": \"DO\",\n \"East Timor\": \"TL\",\n Ecuador: \"EC\",\n Egypt: \"EG\",\n \"El Salvador\": \"SV\",\n \"Equatorial Guinea\": \"GQ\",\n Eritrea: \"ER\",\n Estonia: \"EE\",\n Ethiopia: \"ET\",\n \"Falkland Islands\": \"FK\",\n \"Faroe Islands\": \"FO\",\n Fiji: \"FJ\",\n \"French Guiana\": \"GF\",\n \"French Polynesia\": \"PF\",\n \"French Southern Territories\": \"TF\",\n Gabon: \"GA\",\n Gambia: \"GM\",\n Georgia: \"GE\",\n Ghana: \"GH\",\n Gibraltar: \"GI\",\n Greece: \"GR\",\n Greenland: \"GL\",\n Grenada: \"GD\",\n Guadeloupe: \"GP\",\n Guam: \"GU\",\n Guatemala: \"GT\",\n Guernsey: \"GG\",\n Guinea: \"GN\",\n \"Guinea-Bissau\": \"GW\",\n Guyana: \"GY\",\n Haiti: \"HT\",\n \"Heard Island and McDonald Islands\": \"HM\",\n Honduras: \"HN\",\n \"Hong Kong\": \"HK\",\n Hungary: \"HU\",\n Iceland: \"IS\",\n India: \"IN\",\n Indonesia: \"ID\",\n Iran: \"IR\",\n Iraq: \"IQ\",\n Ireland: \"IE\",\n \"Isle of Man\": \"IM\",\n Israel: \"IL\",\n \"Ivory Coast\": \"CI\",\n Jamaica: \"JM\",\n Japan: \"JP\",\n Jersey: \"JE\",\n Jordan: \"JO\",\n Kazakhstan: \"KZ\",\n Kenya: \"KE\",\n Kiribati: \"KI\",\n Kosovo: \"XK\",\n Kuwait: \"KW\",\n Kyrgyzstan: \"KG\",\n Laos: \"LA\",\n Latvia: \"LV\",\n Lebanon: \"LB\",\n Lesotho: \"LS\",\n Liberia: \"LR\",\n Libya: \"LY\",\n Liechtenstein: \"LI\",\n Lithuania: \"LT\",\n Luxembourg: \"LU\",\n Macao: \"MO\",\n Macedonia: \"MK\",\n Madagascar: \"MG\",\n Malawi: \"MW\",\n Malaysia: \"MY\",\n Maldives: \"MV\",\n Mali: \"ML\",\n Malta: \"MT\",\n \"Marshall Islands\": \"MH\",\n Martinique: \"MQ\",\n Mauritania: \"MR\",\n Mauritius: \"MU\",\n Mayotte: \"YT\",\n Mexico: \"MX\",\n Micronesia: \"FM\",\n Moldova: \"MD\",\n Monaco: \"MC\",\n Mongolia: \"MN\",\n Montenegro: \"ME\",\n Montserrat: \"MS\",\n Morocco: \"MA\",\n Mozambique: \"MZ\",\n Myanmar: \"MM\",\n Namibia: \"NA\",\n Nauru: \"NR\",\n Nepal: \"NP\",\n \"New Caledonia\": \"NC\",\n \"New Zealand\": \"NZ\",\n Nicaragua: \"NI\",\n Niger: \"NE\",\n Nigeria: \"NG\",\n Niue: \"NU\",\n \"Norfolk Island\": \"NF\",\n \"North Korea\": \"KP\",\n \"Northern Mariana Islands\": \"MP\",\n Oman: \"OM\",\n Pakistan: \"PK\",\n Palau: \"PW\",\n \"Palestinian Territory\": \"PS\",\n Panama: \"PA\",\n \"Papua New Guinea\": \"PG\",\n Paraguay: \"PY\",\n Peru: \"PE\",\n Philippines: \"PH\",\n Pitcairn: \"PN\",\n Poland: \"PL\",\n \"Puerto Rico\": \"PR\",\n Qatar: \"QA\",\n \"Republic of the Congo\": \"CG\",\n Reunion: \"RE\",\n Romania: \"RO\",\n Russia: \"RU\",\n Rwanda: \"RW\",\n \"Saint Barthelemy\": \"BL\",\n \"Saint Helena\": \"SH\",\n \"Saint Kitts and Nevis\": \"KN\",\n \"Saint Lucia\": \"LC\",\n \"Saint Martin\": \"MF\",\n \"Saint Pierre and Miquelon\": \"PM\",\n \"Saint Vincent and the Grenadines\": \"VC\",\n Samoa: \"WS\",\n \"San Marino\": \"SM\",\n \"Sao Tome and Principe\": \"ST\",\n \"Saudi Arabia\": \"SA\",\n Senegal: \"SN\",\n Serbia: \"RS\",\n Seychelles: \"SC\",\n \"Sierra Leone\": \"SL\",\n Singapore: \"SG\",\n \"Sint Maarten\": \"SX\",\n Slovakia: \"SK\",\n Slovenia: \"SI\",\n \"Solomon Islands\": \"SB\",\n Somalia: \"SO\",\n \"South Africa\": \"ZA\",\n \"South Georgia and the South Sandwich Islands\": \"GS\",\n \"South Korea\": \"KR\",\n \"South Sudan\": \"SS\",\n \"Sri Lanka\": \"LK\",\n Sudan: \"SD\",\n Suriname: \"SR\",\n \"Svalbard and Jan Mayen\": \"SJ\",\n Swaziland: \"SZ\",\n Syria: \"SY\",\n Taiwan: \"TW\",\n Tajikistan: \"TJ\",\n Tanzania: \"TZ\",\n Thailand: \"TH\",\n Togo: \"TG\",\n Tokelau: \"TK\",\n Tonga: \"TO\",\n \"Trinidad and Tobago\": \"TT\",\n Tunisia: \"TN\",\n Turkey: \"TR\",\n Turkmenistan: \"TM\",\n \"Turks and Caicos Islands\": \"TC\",\n Tuvalu: \"TV\",\n \"U.S. Virgin Islands\": \"VI\",\n Uganda: \"UG\",\n Ukraine: \"UA\",\n \"United Arab Emirates\": \"AE\",\n \"United States\": \"US\",\n \"United States Minor Outlying Islands\": \"UM\",\n Uruguay: \"UY\",\n Uzbekistan: \"UZ\",\n Vanuatu: \"VU\",\n Vatican: \"VA\",\n Venezuela: \"VE\",\n Vietnam: \"VN\",\n \"Wallis and Futuna\": \"WF\",\n \"Western Sahara\": \"EH\",\n Yemen: \"YE\",\n Zambia: \"ZM\",\n Zimbabwe: \"ZW\",\n};\nconst mobiles = [\n {\n name: \"Germany\",\n dial_code: \"+49\",\n code: \"DE\",\n },\n {\n name: \"Austria\",\n dial_code: \"+43\",\n code: \"AT\",\n },\n {\n name: \"Switzerland\",\n dial_code: \"+41\",\n code: \"CH\",\n },\n {\n name: \"Sweden\",\n dial_code: \"+46\",\n code: \"SE\",\n },\n {\n name: \"Norway\",\n dial_code: \"+47\",\n code: \"NO\",\n },\n {\n name: \"Finland\",\n dial_code: \"+358\",\n code: \"FI\",\n },\n {\n name: \"Netherlands\",\n dial_code: \"+31\",\n code: \"NL\",\n },\n {\n name: \"Belgium\",\n dial_code: \"+32\",\n code: \"BE\",\n },\n {\n name: \"Denmark\",\n dial_code: \"+45\",\n code: \"DK\",\n },\n {\n name: \"United Kingdom\",\n dial_code: \"+44\",\n code: \"GB\",\n },\n {\n name: \"Spain\",\n dial_code: \"+34\",\n code: \"ES\",\n },\n {\n name: \"Portugal\",\n dial_code: \"+351\",\n code: \"PT\",\n },\n {\n name: \"Italy\",\n dial_code: \"+39\",\n code: \"IT\",\n },\n {\n name: \"France\",\n dial_code: \"+33\",\n code: \"FR\",\n },\n {\n name: \"Afghanistan\",\n dial_code: \"+93\",\n code: \"AF\",\n },\n {\n name: \"Aland Islands\",\n dial_code: \"+358\",\n code: \"AX\",\n },\n {\n name: \"Albania\",\n dial_code: \"+355\",\n code: \"AL\",\n },\n {\n name: \"Algeria\",\n dial_code: \"+213\",\n code: \"DZ\",\n },\n {\n name: \"AmericanSamoa\",\n dial_code: \"+1684\",\n code: \"AS\",\n },\n {\n name: \"Andorra\",\n dial_code: \"+376\",\n code: \"AD\",\n },\n {\n name: \"Angola\",\n dial_code: \"+244\",\n code: \"AO\",\n },\n {\n name: \"Anguilla\",\n dial_code: \"+1264\",\n code: \"AI\",\n },\n {\n name: \"Antarctica\",\n dial_code: \"+672\",\n code: \"AQ\",\n },\n {\n name: \"Antigua and Barbuda\",\n dial_code: \"+1268\",\n code: \"AG\",\n },\n {\n name: \"Argentina\",\n dial_code: \"+54\",\n code: \"AR\",\n },\n {\n name: \"Armenia\",\n dial_code: \"+374\",\n code: \"AM\",\n },\n {\n name: \"Aruba\",\n dial_code: \"+297\",\n code: \"AW\",\n },\n {\n name: \"Australia\",\n dial_code: \"+61\",\n code: \"AU\",\n },\n {\n name: \"Azerbaijan\",\n dial_code: \"+994\",\n code: \"AZ\",\n },\n {\n name: \"Bahamas\",\n dial_code: \"+1242\",\n code: \"BS\",\n },\n {\n name: \"Bahrain\",\n dial_code: \"+973\",\n code: \"BH\",\n },\n {\n name: \"Bangladesh\",\n dial_code: \"+880\",\n code: \"BD\",\n },\n {\n name: \"Barbados\",\n dial_code: \"+1246\",\n code: \"BB\",\n },\n {\n name: \"Belarus\",\n dial_code: \"+375\",\n code: \"BY\",\n },\n {\n name: \"Belize\",\n dial_code: \"+501\",\n code: \"BZ\",\n },\n {\n name: \"Benin\",\n dial_code: \"+229\",\n code: \"BJ\",\n },\n {\n name: \"Bermuda\",\n dial_code: \"+1441\",\n code: \"BM\",\n },\n {\n name: \"Bhutan\",\n dial_code: \"+975\",\n code: \"BT\",\n },\n {\n name: \"Bolivia, Plurinational State of\",\n dial_code: \"+591\",\n code: \"BO\",\n },\n {\n name: \"Bosnia and Herzegovina\",\n dial_code: \"+387\",\n code: \"BA\",\n },\n {\n name: \"Botswana\",\n dial_code: \"+267\",\n code: \"BW\",\n },\n {\n name: \"Brazil\",\n dial_code: \"+55\",\n code: \"BR\",\n },\n {\n name: \"British Indian Ocean Territory\",\n dial_code: \"+246\",\n code: \"IO\",\n },\n {\n name: \"Brunei Darussalam\",\n dial_code: \"+673\",\n code: \"BN\",\n },\n {\n name: \"Bulgaria\",\n dial_code: \"+359\",\n code: \"BG\",\n },\n {\n name: \"Burkina Faso\",\n dial_code: \"+226\",\n code: \"BF\",\n },\n {\n name: \"Burundi\",\n dial_code: \"+257\",\n code: \"BI\",\n },\n {\n name: \"Cambodia\",\n dial_code: \"+855\",\n code: \"KH\",\n },\n {\n name: \"Cameroon\",\n dial_code: \"+237\",\n code: \"CM\",\n },\n {\n name: \"Canada\",\n dial_code: \"+1\",\n code: \"CA\",\n },\n {\n name: \"Cape Verde\",\n dial_code: \"+238\",\n code: \"CV\",\n },\n {\n name: \"Cayman Islands\",\n dial_code: \"+ 345\",\n code: \"KY\",\n },\n {\n name: \"Central African Republic\",\n dial_code: \"+236\",\n code: \"CF\",\n },\n {\n name: \"Chad\",\n dial_code: \"+235\",\n code: \"TD\",\n },\n {\n name: \"Chile\",\n dial_code: \"+56\",\n code: \"CL\",\n },\n {\n name: \"China\",\n dial_code: \"+86\",\n code: \"CN\",\n },\n {\n name: \"Christmas Island\",\n dial_code: \"+61\",\n code: \"CX\",\n },\n {\n name: \"Cocos (Keeling) Islands\",\n dial_code: \"+61\",\n code: \"CC\",\n },\n {\n name: \"Colombia\",\n dial_code: \"+57\",\n code: \"CO\",\n },\n {\n name: \"Comoros\",\n dial_code: \"+269\",\n code: \"KM\",\n },\n {\n name: \"Congo\",\n dial_code: \"+242\",\n code: \"CG\",\n },\n {\n name: \"Congo, The Democratic Republic of the Congo\",\n dial_code: \"+243\",\n code: \"CD\",\n },\n {\n name: \"Cook Islands\",\n dial_code: \"+682\",\n code: \"CK\",\n },\n {\n name: \"Costa Rica\",\n dial_code: \"+506\",\n code: \"CR\",\n },\n {\n name: \"Cote d'Ivoire\",\n dial_code: \"+225\",\n code: \"CI\",\n },\n {\n name: \"Croatia\",\n dial_code: \"+385\",\n code: \"HR\",\n },\n {\n name: \"Cuba\",\n dial_code: \"+53\",\n code: \"CU\",\n },\n {\n name: \"Cyprus\",\n dial_code: \"+357\",\n code: \"CY\",\n },\n {\n name: \"Czech Republic\",\n dial_code: \"+420\",\n code: \"CZ\",\n },\n {\n name: \"Djibouti\",\n dial_code: \"+253\",\n code: \"DJ\",\n },\n {\n name: \"Dominica\",\n dial_code: \"+1767\",\n code: \"DM\",\n },\n {\n name: \"Dominican Republic\",\n dial_code: \"+1849\",\n code: \"DO\",\n },\n {\n name: \"Ecuador\",\n dial_code: \"+593\",\n code: \"EC\",\n },\n {\n name: \"Egypt\",\n dial_code: \"+20\",\n code: \"EG\",\n },\n {\n name: \"El Salvador\",\n dial_code: \"+503\",\n code: \"SV\",\n },\n {\n name: \"Equatorial Guinea\",\n dial_code: \"+240\",\n code: \"GQ\",\n },\n {\n name: \"Eritrea\",\n dial_code: \"+291\",\n code: \"ER\",\n },\n {\n name: \"Estonia\",\n dial_code: \"+372\",\n code: \"EE\",\n },\n {\n name: \"Ethiopia\",\n dial_code: \"+251\",\n code: \"ET\",\n },\n {\n name: \"Falkland Islands (Malvinas)\",\n dial_code: \"+500\",\n code: \"FK\",\n },\n {\n name: \"Faroe Islands\",\n dial_code: \"+298\",\n code: \"FO\",\n },\n {\n name: \"Fiji\",\n dial_code: \"+679\",\n code: \"FJ\",\n },\n {\n name: \"French Guiana\",\n dial_code: \"+594\",\n code: \"GF\",\n },\n {\n name: \"French Polynesia\",\n dial_code: \"+689\",\n code: \"PF\",\n },\n {\n name: \"Gabon\",\n dial_code: \"+241\",\n code: \"GA\",\n },\n {\n name: \"Gambia\",\n dial_code: \"+220\",\n code: \"GM\",\n },\n {\n name: \"Georgia\",\n dial_code: \"+995\",\n code: \"GE\",\n },\n {\n name: \"Ghana\",\n dial_code: \"+233\",\n code: \"GH\",\n },\n {\n name: \"Gibraltar\",\n dial_code: \"+350\",\n code: \"GI\",\n },\n {\n name: \"Greece\",\n dial_code: \"+30\",\n code: \"GR\",\n },\n {\n name: \"Greenland\",\n dial_code: \"+299\",\n code: \"GL\",\n },\n {\n name: \"Grenada\",\n dial_code: \"+1473\",\n code: \"GD\",\n },\n {\n name: \"Guadeloupe\",\n dial_code: \"+590\",\n code: \"GP\",\n },\n {\n name: \"Guam\",\n dial_code: \"+1671\",\n code: \"GU\",\n },\n {\n name: \"Guatemala\",\n dial_code: \"+502\",\n code: \"GT\",\n },\n {\n name: \"Guernsey\",\n dial_code: \"+44\",\n code: \"GG\",\n },\n {\n name: \"Guinea\",\n dial_code: \"+224\",\n code: \"GN\",\n },\n {\n name: \"Guinea-Bissau\",\n dial_code: \"+245\",\n code: \"GW\",\n },\n {\n name: \"Guyana\",\n dial_code: \"+595\",\n code: \"GY\",\n },\n {\n name: \"Haiti\",\n dial_code: \"+509\",\n code: \"HT\",\n },\n {\n name: \"Holy See (Vatican City State)\",\n dial_code: \"+379\",\n code: \"VA\",\n },\n {\n name: \"Honduras\",\n dial_code: \"+504\",\n code: \"HN\",\n },\n {\n name: \"Hong Kong\",\n dial_code: \"+852\",\n code: \"HK\",\n },\n {\n name: \"Hungary\",\n dial_code: \"+36\",\n code: \"HU\",\n },\n {\n name: \"Iceland\",\n dial_code: \"+354\",\n code: \"IS\",\n },\n {\n name: \"India\",\n dial_code: \"+91\",\n code: \"IN\",\n },\n {\n name: \"Indonesia\",\n dial_code: \"+62\",\n code: \"ID\",\n },\n {\n name: \"Iran, Islamic Republic of Persian Gulf\",\n dial_code: \"+98\",\n code: \"IR\",\n },\n {\n name: \"Iraq\",\n dial_code: \"+964\",\n code: \"IQ\",\n },\n {\n name: \"Ireland\",\n dial_code: \"+353\",\n code: \"IE\",\n },\n {\n name: \"Isle of Man\",\n dial_code: \"+44\",\n code: \"IM\",\n },\n {\n name: \"Israel\",\n dial_code: \"+972\",\n code: \"IL\",\n },\n {\n name: \"Jamaica\",\n dial_code: \"+1876\",\n code: \"JM\",\n },\n {\n name: \"Japan\",\n dial_code: \"+81\",\n code: \"JP\",\n },\n {\n name: \"Jersey\",\n dial_code: \"+44\",\n code: \"JE\",\n },\n {\n name: \"Jordan\",\n dial_code: \"+962\",\n code: \"JO\",\n },\n {\n name: \"Kazakhstan\",\n dial_code: \"+77\",\n code: \"KZ\",\n },\n {\n name: \"Kenya\",\n dial_code: \"+254\",\n code: \"KE\",\n },\n {\n name: \"Kiribati\",\n dial_code: \"+686\",\n code: \"KI\",\n },\n {\n name: \"Korea, Democratic People's Republic of Korea\",\n dial_code: \"+850\",\n code: \"KP\",\n },\n {\n name: \"Korea, Republic of South Korea\",\n dial_code: \"+82\",\n code: \"KR\",\n },\n {\n name: \"Kuwait\",\n dial_code: \"+965\",\n code: \"KW\",\n },\n {\n name: \"Kyrgyzstan\",\n dial_code: \"+996\",\n code: \"KG\",\n },\n {\n name: \"Laos\",\n dial_code: \"+856\",\n code: \"LA\",\n },\n {\n name: \"Latvia\",\n dial_code: \"+371\",\n code: \"LV\",\n },\n {\n name: \"Lebanon\",\n dial_code: \"+961\",\n code: \"LB\",\n },\n {\n name: \"Lesotho\",\n dial_code: \"+266\",\n code: \"LS\",\n },\n {\n name: \"Liberia\",\n dial_code: \"+231\",\n code: \"LR\",\n },\n {\n name: \"Libyan Arab Jamahiriya\",\n dial_code: \"+218\",\n code: \"LY\",\n },\n {\n name: \"Liechtenstein\",\n dial_code: \"+423\",\n code: \"LI\",\n },\n {\n name: \"Lithuania\",\n dial_code: \"+370\",\n code: \"LT\",\n },\n {\n name: \"Luxembourg\",\n dial_code: \"+352\",\n code: \"LU\",\n },\n {\n name: \"Macao\",\n dial_code: \"+853\",\n code: \"MO\",\n },\n {\n name: \"Macedonia\",\n dial_code: \"+389\",\n code: \"MK\",\n },\n {\n name: \"Madagascar\",\n dial_code: \"+261\",\n code: \"MG\",\n },\n {\n name: \"Malawi\",\n dial_code: \"+265\",\n code: \"MW\",\n },\n {\n name: \"Malaysia\",\n dial_code: \"+60\",\n code: \"MY\",\n },\n {\n name: \"Maldives\",\n dial_code: \"+960\",\n code: \"MV\",\n },\n {\n name: \"Mali\",\n dial_code: \"+223\",\n code: \"ML\",\n },\n {\n name: \"Malta\",\n dial_code: \"+356\",\n code: \"MT\",\n },\n {\n name: \"Marshall Islands\",\n dial_code: \"+692\",\n code: \"MH\",\n },\n {\n name: \"Martinique\",\n dial_code: \"+596\",\n code: \"MQ\",\n },\n {\n name: \"Mauritania\",\n dial_code: \"+222\",\n code: \"MR\",\n },\n {\n name: \"Mauritius\",\n dial_code: \"+230\",\n code: \"MU\",\n },\n {\n name: \"Mayotte\",\n dial_code: \"+262\",\n code: \"YT\",\n },\n {\n name: \"Mexico\",\n dial_code: \"+52\",\n code: \"MX\",\n },\n {\n name: \"Micronesia, Federated States of Micronesia\",\n dial_code: \"+691\",\n code: \"FM\",\n },\n {\n name: \"Moldova\",\n dial_code: \"+373\",\n code: \"MD\",\n },\n {\n name: \"Monaco\",\n dial_code: \"+377\",\n code: \"MC\",\n },\n {\n name: \"Mongolia\",\n dial_code: \"+976\",\n code: \"MN\",\n },\n {\n name: \"Montenegro\",\n dial_code: \"+382\",\n code: \"ME\",\n },\n {\n name: \"Montserrat\",\n dial_code: \"+1664\",\n code: \"MS\",\n },\n {\n name: \"Morocco\",\n dial_code: \"+212\",\n code: \"MA\",\n },\n {\n name: \"Mozambique\",\n dial_code: \"+258\",\n code: \"MZ\",\n },\n {\n name: \"Myanmar\",\n dial_code: \"+95\",\n code: \"MM\",\n },\n {\n name: \"Namibia\",\n dial_code: \"+264\",\n code: \"NA\",\n },\n {\n name: \"Nauru\",\n dial_code: \"+674\",\n code: \"NR\",\n },\n {\n name: \"Nepal\",\n dial_code: \"+977\",\n code: \"NP\",\n },\n {\n name: \"Netherlands Antilles\",\n dial_code: \"+599\",\n code: \"AN\",\n },\n {\n name: \"New Caledonia\",\n dial_code: \"+687\",\n code: \"NC\",\n },\n {\n name: \"New Zealand\",\n dial_code: \"+64\",\n code: \"NZ\",\n },\n {\n name: \"Nicaragua\",\n dial_code: \"+505\",\n code: \"NI\",\n },\n {\n name: \"Niger\",\n dial_code: \"+227\",\n code: \"NE\",\n },\n {\n name: \"Nigeria\",\n dial_code: \"+234\",\n code: \"NG\",\n },\n {\n name: \"Niue\",\n dial_code: \"+683\",\n code: \"NU\",\n },\n {\n name: \"Norfolk Island\",\n dial_code: \"+672\",\n code: \"NF\",\n },\n {\n name: \"Northern Mariana Islands\",\n dial_code: \"+1670\",\n code: \"MP\",\n },\n {\n name: \"Oman\",\n dial_code: \"+968\",\n code: \"OM\",\n },\n {\n name: \"Pakistan\",\n dial_code: \"+92\",\n code: \"PK\",\n },\n {\n name: \"Palau\",\n dial_code: \"+680\",\n code: \"PW\",\n },\n {\n name: \"Palestinian Territory, Occupied\",\n dial_code: \"+970\",\n code: \"PS\",\n },\n {\n name: \"Panama\",\n dial_code: \"+507\",\n code: \"PA\",\n },\n {\n name: \"Papua New Guinea\",\n dial_code: \"+675\",\n code: \"PG\",\n },\n {\n name: \"Paraguay\",\n dial_code: \"+595\",\n code: \"PY\",\n },\n {\n name: \"Peru\",\n dial_code: \"+51\",\n code: \"PE\",\n },\n {\n name: \"Philippines\",\n dial_code: \"+63\",\n code: \"PH\",\n },\n {\n name: \"Pitcairn\",\n dial_code: \"+872\",\n code: \"PN\",\n },\n {\n name: \"Poland\",\n dial_code: \"+48\",\n code: \"PL\",\n },\n {\n name: \"Puerto Rico\",\n dial_code: \"+1939\",\n code: \"PR\",\n },\n {\n name: \"Qatar\",\n dial_code: \"+974\",\n code: \"QA\",\n },\n {\n name: \"Romania\",\n dial_code: \"+40\",\n code: \"RO\",\n },\n {\n name: \"Russia\",\n dial_code: \"+7\",\n code: \"RU\",\n },\n {\n name: \"Rwanda\",\n dial_code: \"+250\",\n code: \"RW\",\n },\n {\n name: \"Reunion\",\n dial_code: \"+262\",\n code: \"RE\",\n },\n {\n name: \"Saint Barthelemy\",\n dial_code: \"+590\",\n code: \"BL\",\n },\n {\n name: \"Saint Helena, Ascension and Tristan Da Cunha\",\n dial_code: \"+290\",\n code: \"SH\",\n },\n {\n name: \"Saint Kitts and Nevis\",\n dial_code: \"+1869\",\n code: \"KN\",\n },\n {\n name: \"Saint Lucia\",\n dial_code: \"+1758\",\n code: \"LC\",\n },\n {\n name: \"Saint Martin\",\n dial_code: \"+590\",\n code: \"MF\",\n },\n {\n name: \"Saint Pierre and Miquelon\",\n dial_code: \"+508\",\n code: \"PM\",\n },\n {\n name: \"Saint Vincent and the Grenadines\",\n dial_code: \"+1784\",\n code: \"VC\",\n },\n {\n name: \"Samoa\",\n dial_code: \"+685\",\n code: \"WS\",\n },\n {\n name: \"San Marino\",\n dial_code: \"+378\",\n code: \"SM\",\n },\n {\n name: \"Sao Tome and Principe\",\n dial_code: \"+239\",\n code: \"ST\",\n },\n {\n name: \"Saudi Arabia\",\n dial_code: \"+966\",\n code: \"SA\",\n },\n {\n name: \"Senegal\",\n dial_code: \"+221\",\n code: \"SN\",\n },\n {\n name: \"Serbia\",\n dial_code: \"+381\",\n code: \"RS\",\n },\n {\n name: \"Seychelles\",\n dial_code: \"+248\",\n code: \"SC\",\n },\n {\n name: \"Sierra Leone\",\n dial_code: \"+232\",\n code: \"SL\",\n },\n {\n name: \"Singapore\",\n dial_code: \"+65\",\n code: \"SG\",\n },\n {\n name: \"Slovakia\",\n dial_code: \"+421\",\n code: \"SK\",\n },\n {\n name: \"Slovenia\",\n dial_code: \"+386\",\n code: \"SI\",\n },\n {\n name: \"Solomon Islands\",\n dial_code: \"+677\",\n code: \"SB\",\n },\n {\n name: \"Somalia\",\n dial_code: \"+252\",\n code: \"SO\",\n },\n {\n name: \"South Africa\",\n dial_code: \"+27\",\n code: \"ZA\",\n },\n {\n name: \"South Sudan\",\n dial_code: \"+211\",\n code: \"SS\",\n },\n {\n name: \"South Georgia and the South Sandwich Islands\",\n dial_code: \"+500\",\n code: \"GS\",\n },\n {\n name: \"Sri Lanka\",\n dial_code: \"+94\",\n code: \"LK\",\n },\n {\n name: \"Sudan\",\n dial_code: \"+249\",\n code: \"SD\",\n },\n {\n name: \"Suriname\",\n dial_code: \"+597\",\n code: \"SR\",\n },\n {\n name: \"Svalbard and Jan Mayen\",\n dial_code: \"+47\",\n code: \"SJ\",\n },\n {\n name: \"Swaziland\",\n dial_code: \"+268\",\n code: \"SZ\",\n },\n {\n name: \"Syrian Arab Republic\",\n dial_code: \"+963\",\n code: \"SY\",\n },\n {\n name: \"Taiwan\",\n dial_code: \"+886\",\n code: \"TW\",\n },\n {\n name: \"Tajikistan\",\n dial_code: \"+992\",\n code: \"TJ\",\n },\n {\n name: \"Tanzania, United Republic of Tanzania\",\n dial_code: \"+255\",\n code: \"TZ\",\n },\n {\n name: \"Thailand\",\n dial_code: \"+66\",\n code: \"TH\",\n },\n {\n name: \"Timor-Leste\",\n dial_code: \"+670\",\n code: \"TL\",\n },\n {\n name: \"Togo\",\n dial_code: \"+228\",\n code: \"TG\",\n },\n {\n name: \"Tokelau\",\n dial_code: \"+690\",\n code: \"TK\",\n },\n {\n name: \"Tonga\",\n dial_code: \"+676\",\n code: \"TO\",\n },\n {\n name: \"Trinidad and Tobago\",\n dial_code: \"+1868\",\n code: \"TT\",\n },\n {\n name: \"Tunisia\",\n dial_code: \"+216\",\n code: \"TN\",\n },\n {\n name: \"Turkey\",\n dial_code: \"+90\",\n code: \"TR\",\n },\n {\n name: \"Turkmenistan\",\n dial_code: \"+993\",\n code: \"TM\",\n },\n {\n name: \"Turks and Caicos Islands\",\n dial_code: \"+1649\",\n code: \"TC\",\n },\n {\n name: \"Tuvalu\",\n dial_code: \"+688\",\n code: \"TV\",\n },\n {\n name: \"Uganda\",\n dial_code: \"+256\",\n code: \"UG\",\n },\n {\n name: \"Ukraine\",\n dial_code: \"+380\",\n code: \"UA\",\n },\n {\n name: \"United Arab Emirates\",\n dial_code: \"+971\",\n code: \"AE\",\n },\n {\n name: \"United States\",\n dial_code: \"+1\",\n code: \"US\",\n },\n {\n name: \"Uruguay\",\n dial_code: \"+598\",\n code: \"UY\",\n },\n {\n name: \"Uzbekistan\",\n dial_code: \"+998\",\n code: \"UZ\",\n },\n {\n name: \"Vanuatu\",\n dial_code: \"+678\",\n code: \"VU\",\n },\n {\n name: \"Venezuela, Bolivarian Republic of Venezuela\",\n dial_code: \"+58\",\n code: \"VE\",\n },\n {\n name: \"Vietnam\",\n dial_code: \"+84\",\n code: \"VN\",\n },\n {\n name: \"Virgin Islands, British\",\n dial_code: \"+1284\",\n code: \"VG\",\n },\n {\n name: \"Virgin Islands, U.S.\",\n dial_code: \"+1340\",\n code: \"VI\",\n },\n {\n name: \"Wallis and Futuna\",\n dial_code: \"+681\",\n code: \"WF\",\n },\n {\n name: \"Yemen\",\n dial_code: \"+967\",\n code: \"YE\",\n },\n {\n name: \"Zambia\",\n dial_code: \"+260\",\n code: \"ZM\",\n },\n {\n name: \"Zimbabwe\",\n dial_code: \"+263\",\n code: \"ZW\",\n },\n];\n\nexport default class extends Controller {\n \n static targets = [\"locale\", \"locations\", \"bikeType\", \"bike_brand\", \"bike_type\", \"bike_model\", \"bike_teaser\", \"bike_expert\", \"bike_highlights\", \"bike_image\", \"bike_description\", \"day1\", \"days2\", \"days6\", \"days13\"];\n\n test() {\n url = \"\";\n fetch(url)\n .then((response) => response.json())\n .then((data) => {\n console.log(\"DATA\", data);\n });\n }\n\n connect() {\n this.updateBasket();\n\n let tooltipTriggerList = [].slice.call(\n document.querySelectorAll('[data-bs-toggle=\"tooltip\"]')\n );\n let tooltipList = tooltipTriggerList.map(function (tooltipTriggerEl) {\n return new Tooltip(tooltipTriggerEl);\n });\n var urlParams;\n (window.onpopstate = function () {\n var match,\n pl = /\\+/g, // Regex for replacing addition symbol with a space\n search = /([^&=]+)=?([^&]*)/g,\n decode = function (s) {\n return decodeURIComponent(s.replace(pl, \" \"));\n },\n query = window.location.search.substring(1);\n\n urlParams = {};\n while ((match = search.exec(query)))\n urlParams[decode(match[1])] = decode(match[2]);\n })();\n\n if (urlParams.model_type) {\n document.getElementById(\"type\").value = urlParams.model_type;\n }\n\n if (urlParams.models && urlParams.models.length > 0) {\n const reset = document.getElementById(\"reset\");\n if (reset) reset.classList.remove(\"hidden\");\n }\n let plocId = document.getElementById(\"plocId\");\n if (urlParams.plocId && plocId) {\n plocId.value = urlParams.plocId;\n let flag = false;\n let locations = this.locationsTarget;\n for (var i = 1; i < locations.options.length; i++) {\n locations.options[i].classList.remove(\"hidden\");\n if (plocId.value && locations.options[i].dataset.island != plocId.value)\n locations.options[i].classList.add(\"hidden\");\n }\n } else {\n let query = window.location.pathname.split(\"/\");\n let island = false;\n if (plocId) {\n query.forEach((element) => {\n switch (element) {\n case \"gran-canaria\":\n island = true;\n plocId.value = \"1\";\n break;\n case \"tenerife\":\n island = true;\n plocId.value = \"2\";\n break;\n case \"lanzarote\":\n island = true;\n plocId.value = \"3\";\n break;\n }\n });\n if (!island) {\n plocId.value = 1;\n }\n }\n }\n if (urlParams.height) {\n document.getElementById(\"height\").value = urlParams.height;\n }\n let active = document.getElementsByClassName(\"filter-type bg-black\")[0];\n if (active) {\n active.classList.remove(\"bg-black\");\n active.classList.add(\"bg-gray-300\");\n let types = document.getElementsByClassName(\"filter-type\");\n for (let i = 0; i < types.length; i++) {\n if (urlParams.model_type === types[i].dataset.type) {\n types[i].classList.remove(\"bg-gray-300\");\n types[i].classList.add(\"bg-black\");\n }\n }\n }\n let selected = false;\n let select = document.getElementById(\"country\");\n if (select) {\n for (var key in countries) {\n let option = document.createElement(\"option\");\n option.text = key;\n option.value = countries[key];\n if (option.value === \"ES\") {\n option.id = \"es\";\n }\n if (select.dataset.country === countries[key]) {\n option.selected = \"selected\";\n selected = true;\n }\n select.appendChild(option);\n } /*\n if ( !selected ) {\n let spain = document.getElementById('es');\n spain.setAttribute('selected', 'selected');\n }*/\n }\n let select2 = document.getElementById(\"prefix\");\n if (select2) {\n selected = false;\n mobiles.forEach((prefix) => {\n let option = document.createElement(\"option\");\n option.text = prefix.dial_code + \" \" + prefix.name;\n option.value = prefix.dial_code;\n if (prefix.code === \"ES\") {\n option.id = \"es2\";\n }\n if (select && select.dataset.country === prefix.code) {\n option.selected = \"selected\";\n selected = true;\n }\n select2.appendChild(option);\n });\n /*if ( !selected ) {\n let spain = document.getElementById('es2');\n spain.setAttribute('selected', 'selected');\n }*/\n }\n\n let layer = document.getElementById(\"bikes-booking\");\n if (layer) this.bikes_layer();\n\n let bike = document.getElementById(\"single-bike\");\n if (bike) this.single_bike_layer(bike);\n\n let anchor = document.getElementById(\"main-filters\");\n let filterTagsMobile = document.getElementById(\"filterTagsMobile\");\n if (filterTagsMobile) {\n document.addEventListener(\"scroll\", (event) => {\n if (anchor.offsetTop + 278 <= window.scrollY)\n filterTagsMobile.classList.add(\"fixed-filters\");\n else filterTagsMobile.classList.remove(\"fixed-filters\");\n });\n }\n\n layer = null;\n layer = document.getElementById(\"cart\");\n if (layer) document.addEventListener(\"priced\", this.cart_layer);\n }\n\n filterShops(event) {\n const flag = document.getElementById(\"single-bike\");\n var select = this.locationsTarget;\n for (var i = 1; i < select.options.length; i++) {\n select.options[i].classList.remove(\"hidden\");\n if (\n event.target.value &&\n select.options[i].dataset.island != event.target.value\n )\n select.options[i].classList.add(\"hidden\");\n }\n if (!flag) this.filterBikes();\n }\n\n selectIsland(event) {\n let place = document.getElementById(\"locations\");\n place.classList.remove(\"error\", \"bg-red-100\");\n const shops = this.locationsTarget;\n const shop = event.target.value;\n let select = document.getElementById(\"plocId\");\n for (var i = 1; i < shops.options.length; i++) {\n if (shops.options[i].value === shop) {\n select.value = shops.options[i].dataset.island;\n break;\n }\n }\n for (var i = 1; i < shops.options.length; i++) {\n shops.options[i].classList.remove(\"hidden\");\n if (select.value && shops.options[i].dataset.island != select.value)\n shops.options[i].classList.add(\"hidden\");\n }\n }\n\n setToDate(event) {\n let from = new Date(event.target.value);\n let tmp = new Date(from);\n let to = document.getElementById(\"to\");\n let min = this.check_season(from);\n\n tmp.setDate(from.getDate() + min);\n tmp = tmp.toISOString().split(\"T\")[0];\n to.setAttribute(\"min\", tmp);\n if (!to.value || to.value < tmp) to.value = tmp;\n }\n\n verifyShops() {\n let that = this;\n setTimeout(() => {\n const from = document.getElementById(\"from\").value;\n const fromDate = new Date(from);\n const to = document.getElementById(\"to\").value;\n const toDate = new Date(to);\n const locale = document.getElementById(\"locale\").value;\n let closed = \"Closed\";\n switch (locale) {\n case \"es\":\n closed = \"Cerrada\";\n break;\n case \"de\":\n closed = \"Chlossen\";\n break;\n case \"en\":\n closed = \"Closed\";\n break;\n }\n let locations = this.locationsTarget;\n if (!from) return;\n for (var i = 0; i < locations.options.length; i++) {\n if (locations.options[i].value !== \"\") {\n locations.options[i].removeAttribute(\"disabled\");\n locations.options[i].classList.remove(\"bg-gray-200\");\n const index = locations.options[i].innerHTML.indexOf(\" \" + closed);\n if (index != -1)\n locations.options[i].innerHTML = locations.options[\n i\n ].innerHTML.substring(0, index - 2);\n let url1 = `/shops/opening_hours?loc_id=${locations.options[i].value}&date=${from}&index=${i}`;\n let url2 = `/shops/opening_hours?loc_id=${locations.options[i].value}&date=${to}&index=${i}`;\n fetch(url1)\n .then((response) => response.json())\n .then((data) => {\n if (data.opening_hours === \"closed\") {\n const day = fromDate.toLocaleDateString(locale, {\n weekday: \"long\",\n });\n const date =\n day +\n \" \" +\n that.padTo2Digits(fromDate.getDate()) +\n \".\" +\n that.padTo2Digits(fromDate.getMonth() + 1);\n locations.options[data.index].setAttribute(\n \"disabled\",\n \"disabled\"\n );\n locations.options[data.index].classList.add(\"bg-gray-200\");\n const index = locations.options[data.index].innerHTML.indexOf(\n \" \" + closed\n );\n if (index == -1)\n locations.options[data.index].innerHTML =\n locations.options[data.index].innerHTML +\n \" ⚠ \" +\n closed +\n \" \" +\n date;\n }\n fetch(url2)\n .then((response) => response.json())\n .then((data) => {\n if (data.opening_hours === \"closed\") {\n const day = toDate.toLocaleDateString(locale, {\n weekday: \"long\",\n });\n const date =\n day +\n \" \" +\n that.padTo2Digits(toDate.getDate()) +\n \".\" +\n that.padTo2Digits(toDate.getMonth() + 1);\n locations.options[data.index].setAttribute(\n \"disabled\",\n \"disabled\"\n );\n locations.options[data.index].classList.add(\"bg-gray-200\");\n const index = locations.options[\n data.index\n ].innerHTML.indexOf(\" \" + closed);\n if (index == -1)\n locations.options[data.index].innerHTML =\n locations.options[data.index].innerHTML +\n \" ⚠ \" +\n closed +\n \" \" +\n date;\n else\n locations.options[data.index].innerHTML =\n locations.options[data.index].innerHTML + \" , \" + date;\n }\n });\n });\n }\n }\n }, 100);\n }\n\n checkBike(event) {\n let errors = false;\n let from = document.getElementById(\"from\");\n let to = document.getElementById(\"to\");\n let plocId = document.getElementById(\"plocId\");\n let place = document.getElementById(\"locations\");\n let height = document.getElementById(\"height\");\n let featured = document.getElementById(\"featured\");\n let checkFrom = document.getElementById(\"error-from\");\n let checkTo = document.getElementById(\"error-to\");\n let shop = document.getElementById(\"error-shop\");\n let checkHeight = document.getElementById(\"error-height\");\n let scroll = true;\n\n let min = new Date();\n min.setDate(new Date().getDate() + 2);\n min.setHours(0, 0, 0);\n\n if (!from.value || new Date(from.value).getTime() < min.getTime()) {\n from.classList.add(\"error\");\n if (checkFrom) checkFrom.classList.remove(\"hidden\");\n errors = true;\n } else {\n from.classList.remove(\"error\");\n if (checkFrom) checkFrom.classList.add(\"hidden\");\n }\n\n const temp = this.check_season(new Date(from.value));\n\n min = new Date(from.value);\n min.setDate(new Date(from.value).getDate() + temp);\n min.setHours(0, 0, 0);\n\n if (!to.value || new Date(to.value).getTime() < min.getTime()) {\n to.classList.add(\"error\");\n if (checkTo) checkTo.classList.remove(\"hidden\");\n errors = true;\n } else {\n to.classList.remove(\"error\");\n if (checkTo) checkTo.classList.add(\"hidden\");\n }\n\n if (!plocId.value) {\n plocId.classList.add(\"error\");\n errors = true;\n } else plocId.classList.remove(\"error\");\n\n if (!place.value || place.options[place.selectedIndex].disabled) {\n place.classList.add(\"error\", \"bg-red-100\");\n if (shop) shop.classList.remove(\"hidden\");\n errors = true;\n } else {\n place.classList.remove(\"error\", \"bg-red-100\");\n if (shop) shop.classList.add(\"hidden\");\n }\n\n if (!height.value) {\n height.classList.add(\"error\");\n if (checkHeight) checkHeight.classList.remove(\"hidden\");\n errors = true;\n } else {\n height.classList.remove(\"error\");\n if (checkHeight) checkHeight.classList.add(\"hidden\");\n }\n\n if (errors) {\n if (scroll) {\n let filters = document.getElementById(\"main-filters\");\n let topPos = filters.offsetTop;\n window.scrollTo(0, topPos);\n }\n return;\n } else this.filterBike(event);\n }\n\n checkBikes(event) {\n let doCheck = false;\n if (event.target.id == \"availability\") doCheck = true;\n let errors = false;\n let from = document.getElementById(\"from\");\n let to = document.getElementById(\"to\");\n let plocId = document.getElementById(\"plocId\");\n let place = document.getElementById(\"locations\");\n let height = document.getElementById(\"height\");\n let featured = document.getElementById(\"featured\");\n let filterTags = document.getElementById(\"filterTags\");\n let filterTagsMobile = document.getElementById(\"filterTagsMobile\");\n let availability = document.getElementById(\"availability\");\n let checkFrom = document.getElementById(\"error-from\");\n let checkTo = document.getElementById(\"error-to\");\n let shop = document.getElementById(\"error-shop\");\n let checkHeight = document.getElementById(\"error-height\");\n let scroll = true;\n\n let min = new Date();\n min.setDate(new Date().getDate() + 2);\n min.setHours(0, 0, 0);\n\n if (!from.value || new Date(from.value).getTime() < min.getTime()) {\n from.classList.add(\"error\");\n if (checkFrom) checkFrom.classList.remove(\"hidden\");\n errors = true;\n } else {\n from.classList.remove(\"error\");\n if (checkFrom) checkFrom.classList.add(\"hidden\");\n }\n\n const temp = this.check_season(new Date(from.value));\n min = new Date(from.value);\n min.setDate(new Date(from.value).getDate() + temp);\n min.setHours(0, 0, 0);\n\n if (!to.value || new Date(to.value).getTime() < min.getTime()) {\n to.classList.add(\"error\");\n if (checkTo) checkTo.classList.remove(\"hidden\");\n errors = true;\n } else {\n to.classList.remove(\"error\");\n if (checkTo) checkTo.classList.add(\"hidden\");\n }\n\n if (!plocId.value) {\n plocId.classList.add(\"error\");\n errors = true;\n } else plocId.classList.remove(\"error\");\n\n if (!place.value || place.options[place.selectedIndex].disabled) {\n place.classList.add(\"error\", \"bg-red-100\");\n if (shop) shop.classList.remove(\"hidden\");\n errors = true;\n } else {\n place.classList.remove(\"error\", \"bg-red-100\");\n if (shop) shop.classList.add(\"hidden\");\n }\n\n if (!height.value) {\n height.classList.add(\"error\");\n if (checkHeight) checkHeight.classList.remove(\"hidden\");\n errors = true;\n } else {\n height.classList.remove(\"error\");\n if (checkHeight) checkHeight.classList.add(\"hidden\");\n }\n\n let checks = document.querySelectorAll(\".model:checked\");\n let modelsNumber = document.querySelectorAll(\".model\").length;\n\n if (!errors && checks.length === 0 && modelsNumber > 3) {\n featured.classList.remove(\"hidden\");\n errors = true;\n scroll = false;\n }\n\n if (errors) {\n if (scroll) {\n let filters = document.getElementById(\"main-filters\");\n let topPos = filters.offsetTop;\n window.scrollTo(0, topPos);\n }\n return;\n } else this.filterBikes(event, doCheck);\n }\n\n closeAlert(event) {\n document.getElementById(\"featured\").classList.add(\"hidden\");\n }\n\n toggleLogin(event) {\n let elem = document.getElementById(\"collapse\");\n let elem2 = document.getElementById(\"session\");\n elem.classList.toggle(\"hidden\");\n elem2.classList.toggle(\"hidden\");\n }\n\n toggleTags(event) {\n let container = document.getElementById(\"filterWrapper\");\n let chevron = document.getElementById(\"filterChevron\");\n if (container.classList.contains(\"lg:block\")) {\n container.classList.remove(\"lg:block\", \"hidden\");\n chevron.classList.remove(\"lg:rotate-180\");\n }\n if (container.classList.contains(\"hidden\")) {\n container.classList.remove(\"hidden\");\n chevron.classList.add(\"rotate-180\");\n } else {\n container.classList.add(\"hidden\");\n chevron.classList.remove(\"rotate-180\");\n }\n }\n\n filterBike(event) {\n var bike_type = document.getElementById(\"type\").value;\n var from = document.getElementById(\"from\").value;\n var to = document.getElementById(\"to\").value;\n //var from_diff = document.getElementById('from_variation').value;\n //var to_diff = document.getElementById('to_variation').value;\n var plocId = document.getElementById(\"plocId\").value;\n var place = document.getElementById(\"locations\").value;\n var height = document.getElementById(\"height\").value;\n let availability = document.getElementById(\"availability\");\n let bike = document.getElementById(\"single-bike\");\n\n let models = bike.dataset.model;\n\n const lang = this.localeTarget.value;\n var url = `/${lang}/booking_process/finder/bikes?models=${models}&model_type=${bike_type}&from=${from}&to=${to}&plocId=${plocId}&place=${place}&height=${height}`;\n\n document.getElementById(\"spinner\").classList.remove(\"hidden\");\n\n availability.classList.add(\"hidden\");\n\n let results = document.getElementById(\"results\");\n let topPos = results.offsetTop;\n window.scrollTo(0, topPos);\n\n Turbo.visit(url, { action: \"replace\" });\n }\n\n filterBikes(event, doCheck = false) {\n var bike_type = document.getElementById(\"type\").value;\n\n var from = document.getElementById(\"from\").value;\n var to = document.getElementById(\"to\").value;\n //var from_diff = document.getElementById('from_variation').value;\n //var to_diff = document.getElementById('to_variation').value;\n var plocId = document.getElementById(\"plocId\").value;\n var place = document.getElementById(\"locations\").value;\n var height = document.getElementById(\"height\").value;\n var tagsContainer = document.getElementsByClassName(\"filterTag\");\n var brand = document.querySelectorAll(\".brand:checked\");\n let availability = document.getElementById(\"availability\");\n let filterTags = document.getElementById(\"filterTags\");\n let filterTagsMobile = document.getElementById(\"filterTagsMobile\");\n\n setTimeout(() => {\n if (brand.length > 0) {\n brand = brand[0].value;\n } else brand = \"\";\n\n let checks = document.querySelectorAll(\".model:checked\");\n let modelsNumber = document.querySelectorAll(\".model\").length;\n\n if (modelsNumber < 4 && doCheck)\n checks = document.querySelectorAll(\".model\");\n\n let models = \"\";\n\n for (let i = 0; i < checks.length; i++) {\n models += checks[i].value;\n if (i !== checks.length - 1) models += \",\";\n }\n\n const lang = this.localeTarget.value;\n var url = `/${lang}/booking_process/finder/bikes?models=${models}&model_type=${bike_type}&from=${from}&to=${to}&plocId=${plocId}&place=${place}&height=${height}`;\n\n var tags = [];\n\n for (var i = 0; i < tagsContainer.length; i++) {\n if (tagsContainer[i].checked) tags.push(tagsContainer[i].value);\n }\n\n if (brand && brand.length > 0) url = url + `&brand=${brand}`;\n\n if (tags.length > 0) url = url + `&tags=${tags}`;\n\n document.getElementById(\"spinner\").classList.remove(\"hidden\");\n document.getElementById(\"reset\").classList.remove(\"hidden\");\n if (checks.length > 0) {\n let container = document.getElementById(\"filterWrapper\");\n let chevron = document.getElementById(\"filterChevron\");\n if (filterTags) filterTags.classList.add(\"hidden\");\n if (filterTagsMobile) filterTagsMobile.classList.add(\"hidden\");\n if (container) container.classList.add(\"md:block\", \"hidden\");\n chevron.classList.add(\"md:rotate-180\");\n availability.classList.add(\"hidden\");\n } else {\n availability.classList.remove(\"hidden\");\n if (filterTags) filterTags.classList.remove(\"hidden\");\n if (filterTagsMobile) filterTagsMobile.classList.remove(\"hidden\");\n }\n\n let results = document.getElementById(\"results\");\n let topPos = results.offsetTop;\n window.scrollTo(0, topPos);\n\n Turbo.visit(url, { action: \"replace\" });\n let interval = setInterval(() => {\n if (document.getElementById(\"spinner\").classList.contains(\"hidden\")) {\n clearInterval(interval);\n this.bikes_layer();\n }\n }, 500);\n }, 1000);\n }\n\n selectBike(event) {\n let checks = document.querySelectorAll(\".model:checked\");\n let unchecks = document.querySelectorAll(\".model:not(:checked)\");\n if (checks.length === 3)\n for (let i = 0; i < unchecks.length; i++) {\n unchecks[i].disabled = true;\n unchecks[i].classList.add(\n \"cursor-not-allowed\",\n \"bg-gray-100\",\n \"opacity-50\"\n );\n }\n else\n for (let i = 0; i < unchecks.length; i++) {\n unchecks[i].disabled = false;\n unchecks[i].classList.remove(\n \"cursor-not-allowed\",\n \"bg-gray-100\",\n \"opacity-50\"\n );\n }\n }\n\n pickBike(event) {\n let bike = null;\n let texts = [];\n let image = [];\n let price;\n let prices;\n let path = event.path || (event.composedPath && event.composedPath());\n path.forEach((el) => {\n if (el.dataset && el.dataset.bike) {\n bike = JSON.parse(el.dataset.bike);\n prices = JSON.parse(el.dataset.prices);\n price = el.dataset.price;\n texts = JSON.parse(el.dataset.texts);\n image = el.dataset.image;\n }\n });\n this.bike_brandTarget.src = `/fileadmin/website/files/manufacturer/${bike.manufacturer.toLowerCase()}.png`;\n this.bike_brandTarget.alt = bike.manufacturer;\n /*if ( bike.category_name == 'n/a' )\n this.bike_typeTarget.innerHTML = '';\n else\n this.bike_typeTarget.innerHTML = bike.category_name;*/\n //this.bike_teaserTarget.innerHTML = texts.teaser;\n this.bike_modelTarget.innerHTML = texts.title;\n this.bike_expertTarget.innerHTML = texts.teaser_expert;\n this.bike_highlightsTarget.innerHTML = texts.highlights;\n this.bike_highlightsTarget.children[0].classList.add(\"list-disc\", \"pl-5\");\n this.bike_descriptionTarget.innerHTML = texts.description;\n if (prices && prices.length > 3) {\n this.day1Target.innerHTML = \"€ \" + prices[0].price;\n this.days2Target.innerHTML = \"€ \" + prices[1].price;\n this.days6Target.innerHTML = \"€ \" + prices[2].price;\n this.days13Target.innerHTML = \"€ \" + prices[3].price;\n document.getElementById(\"price-row\").classList.remove(\"hidden\");\n document.getElementById(\"price-explanation\").classList.remove(\"hidden\");\n } else {\n document.getElementById(\"price-row\").classList.add(\"hidden\");\n document.getElementById(\"price-explanation\").classList.add(\"hidden\");\n }\n let tmp = this.bike_descriptionTarget.children[0];\n if (tmp && tmp.nodeName === \"B\") tmp.classList.add(\"sm:text-2xl\");\n this.bike_imageTarget.setAttribute(\"src\", image);\n tmp = document.getElementById(\"user-info\");\n let user = {};\n if (tmp) {\n tmp = tmp.dataset;\n user = {\n email: tmp.email,\n first_name: tmp.first_name,\n last_name: tmp.last_name,\n phone_number: tmp.phone_number,\n street: tmp.street,\n city: tmp.city,\n region: tmp.region,\n postal_code: tmp.postal_code,\n country: tmp.country,\n };\n }\n\n dataLayer.push({ ecommerce: null }); // Clear the previous ecommerce object.\n dataLayer.push({\n event: \"select_item\",\n ecommerce: {\n item_list_name: \"Bikes\",\n items: [\n {\n item_id: bike.model_id.toString(),\n item_name: bike.model_title,\n currency: \"EUR\",\n index: 0,\n item_brand: bike.manufacturer,\n item_category: bike.product_group_name,\n price: parseFloat(price),\n quantity: 1,\n },\n ],\n enhanced_conversion_data: user,\n },\n });\n console.log(\"DATALAYER - select_item\", dataLayer);\n }\n\n showBike(event) {\n let errors = false;\n var bike = JSON.parse(event.target.dataset.bike);\n var price = event.target.dataset.price;\n var unit = event.target.dataset.unit;\n var from = document.getElementById(\"from\");\n var to = document.getElementById(\"to\");\n var height = document.getElementById(\"height\");\n var place = document.getElementById(\"locations\");\n var shop_name = place.options[place.options.selectedIndex].innerHTML;\n let checkFrom = document.getElementById(\"error-from\");\n let checkTo = document.getElementById(\"error-to\");\n let shop = document.getElementById(\"error-shop\");\n let checkHeight = document.getElementById(\"error-height\");\n\n const lang = this.localeTarget.value;\n\n if (!place.value || place.options[place.selectedIndex].disabled) {\n errors = true;\n place.classList.add(\"error\");\n if (shop) shop.classList.remove(\"hidden\");\n } else {\n place.classList.remove(\"error\");\n if (shop) shop.classList.add(\"hidden\");\n }\n\n let min = new Date();\n min.setDate(new Date().getDate() + 2);\n min.setHours(0, 0, 0);\n let tmp = from.value;\n if (tmp < min) {\n document.getElementById(\"from\").classList.add(\"error\");\n if (checkFrom) checkFrom.classList.remove(\"hidden\");\n errors = true;\n } else {\n document.getElementById(\"from\").classList.remove(\"error\");\n if (checkFrom) checkFrom.classList.add(\"hidden\");\n }\n\n const temp = this.check_season(new Date(from.value));\n tmp = new Date(from.value);\n tmp.setDate(tmp.getDate() + temp);\n if (tmp.getTime() > new Date(to.value).getTime()) {\n document.getElementById(\"to\").classList.add(\"error\");\n if (checkTo) checkTo.classList.remove(\"hidden\");\n errors = true;\n } else {\n document.getElementById(\"to\").classList.remove(\"error\");\n if (checkTo) checkTo.classList.add(\"hidden\");\n }\n\n if (!errors) {\n tmp = document.getElementById(\"user-info\");\n let user = {};\n if (tmp) {\n tmp = tmp.dataset;\n user = {\n email: tmp.email,\n first_name: tmp.first_name,\n last_name: tmp.last_name,\n phone_number: tmp.phone_number,\n street: tmp.street,\n city: tmp.city,\n postal_code: tmp.postal_code,\n country: tmp.country,\n };\n }\n dataLayer.push({ ecommerce: null }); // Clear the previous ecommerce object.\n dataLayer.push({\n event: \"select_item\",\n ecommerce: {\n item_list_name: \"Bikes\",\n items: [\n {\n item_id: bike.model_id.toString(),\n item_name: bike.model_title,\n currency: \"EUR\",\n index: 0,\n item_brand: bike.manufacturer,\n item_category: bike.product_group_name,\n price: parseFloat(price),\n quantity: 1,\n },\n ],\n enhanced_conversion_data: user,\n },\n });\n from = event.target.dataset.from;\n to = event.target.dataset.to;\n console.log(\"DATALAYER - select_item\", dataLayer);\n document.getElementById(\"spinner_modal\").classList.remove(\"hidden\");\n document.getElementById(\"modal\").classList.remove(\"hidden\");\n let url = `/${lang}/booking_process/modal/bike?model=${bike.model_id}&lang=en&from=${from}&to=${to}&place=${place.value}&height=${height.value}&shop_name=${shop_name}&price=${price}}&unit=${unit}`;\n Turbo.visit(url, { action: \"replace\" });\n }\n }\n\n addToCart(event) {\n let button;\n let path = event.path || (event.composedPath && event.composedPath());\n for (let el of path) {\n if (el.dataset.model !== undefined && el.dataset.model !== \"\") {\n button = el;\n break;\n }\n };\n\n document.getElementById(\"addToCart\").classList.remove(\"hidden\");\n var errors = false;\n var name = document.getElementById(\"name\");\n var surname = document.getElementById(\"surname\");\n var weight = document.getElementById(\"weight\");\n var height = document.getElementById(\"height_modal\").value;\n var pedal = document.getElementById(\"pedal\");\n var saddle = document.getElementById(\"saddle\");\n var location = document.getElementById(\"locations\");\n let bikeShop = document.getElementById(\"bikeShop\");\n let checkFrom = document.getElementById(\"error-from\");\n let checkTo = document.getElementById(\"error-to\");\n let shop = document.getElementById(\"error-shop\");\n let checkHeight = document.getElementById(\"error-height\");\n var modelId = button.dataset.model;\n var total = button.dataset.total;\n var unit = button.dataset.unit;\n var from = document.getElementById(\"from\");\n var to = document.getElementById(\"to\");\n let model_name = button.dataset.name;\n let manufacturer = button.dataset.brand;\n let category = button.dataset.category;\n\n if (!location.value || location.options[location.selectedIndex].disabled) {\n errors = true;\n bikeShop.classList.add(\"text-red-500\");\n if (shop) shop.classList.remove(\"hidden\");\n } else {\n bikeShop.classList.remove(\"text-red-500\");\n if (shop) shop.classList.add(\"hidden\");\n location = location.value;\n }\n\n let min = new Date();\n min.setDate(new Date().getDate() + 2);\n min.setHours(0, 0, 0);\n let tmp = from.value;\n if (tmp < min) {\n errors = true;\n if (checkFrom) checkFrom.classList.remove(\"hidden\");\n } else {\n if (checkFrom) checkFrom.classList.add(\"hidden\");\n }\n const temp = this.check_season(new Date(from.value));\n tmp = new Date(from.value);\n tmp.setDate(tmp.getDate() + temp);\n\n if (tmp > to.value) {\n errors = true;\n if (checkTo) checkTo.classList.remove(\"hidden\");\n } else {\n if (checkTo) checkTo.classList.add(\"hidden\");\n }\n\n if (errors) document.getElementById(\"modal\").classList.add(\"hidden\");\n\n if (!name.value) {\n name.classList.add(\"error\");\n errors = true;\n } else name.classList.remove(\"error\");\n\n if (!surname.value) {\n surname.classList.add(\"error\");\n errors = true;\n } else surname.classList.remove(\"error\");\n\n if (!weight.value) {\n weight.classList.add(\"error\");\n errors = true;\n } else weight.classList.remove(\"error\");\n\n if (!pedal.value) {\n pedal.classList.add(\"error\");\n errors = true;\n } else pedal.classList.remove(\"error\");\n\n if (errors) return true;\n\n name = name.value;\n surname = surname.value;\n from = button.dataset.from;\n to = button.dataset.to;\n\n var url = `/booking_process/add_to_basket?name=${name}&surname=${surname}&weight=${weight.value}&height=${height}&pedal=${pedal.value}&modelId=${modelId}&loc=${location}&total=${total}&unit=${unit}&from=${from}&to=${to}`;\n\n if (saddle.value) {\n saddle = saddle.value;\n url += `&saddle=${saddle}`;\n }\n\n const url2 = url;\n\n var basket = sessionStorage.getItem(\"basket\");\n\n if (basket && basket !== \"undefined\") url += `&basket=${basket}`;\n\n document.getElementById(\"addToCart\").classList.add(\"hidden\");\n document.getElementById(\"spinner-text\").classList.remove(\"hidden\");\n document.getElementById(\"spinner_modal\").classList.remove(\"hidden\");\n\n fetch(url)\n .then((response) => response.json())\n .then((data) => {\n if (!data || data.unavailable) {\n document.getElementById(\"unavailable\").classList.remove(\"hidden\");\n document.getElementById(\"spinner_modal\").classList.add(\"hidden\");\n document.getElementById(\"spinner-text\").classList.add(\"hidden\");\n } else {\n const start = new Date(from);\n const end = new Date(to);\n const qty =\n Math.ceil(\n (end.getTime() - start.getTime()) / (1000 * 60 * 60 * 24)\n ) + 1;\n let items = [\n {\n item_id: modelId.toString(),\n item_name: model_name,\n index: 0,\n item_brand: manufacturer,\n item_category: category,\n location_id: location,\n price: parseFloat(unit),\n quantity: qty,\n },\n ];\n let insuprice = data.insurance.price;\n if (insuprice % 1 !== 0) insuprice = data.insurance.price.toFixed(2);\n this.addToCart_layer(total, items);\n document.getElementById(\"continue\").classList.remove(\"hidden\");\n document.getElementById(\"close\").classList.remove(\"hidden\");\n sessionStorage.setItem(\"basket\", data.basket);\n this.updateBasket();\n document.getElementById(\"spinner_modal\").classList.add(\"hidden\");\n document.getElementById(\"spinner-text\").classList.add(\"hidden\");\n document.getElementById(\"insumage\").alt = data.insurance.name;\n document.getElementById(\"insuname\").innerHTML = data.insurance.name;\n document.getElementById(\"insudays\").innerHTML = data.count;\n document.getElementById(\"insucheck\").dataset.bike = data.bikeId;\n document.getElementById(\"insucheck\").dataset.item = JSON.stringify(\n data.insurance\n );\n document.getElementById(\"insucheck\").value = data.insurance.prodId;\n document.getElementById(\"insuprice\").innerHTML = insuprice;\n document.getElementById(\"insudesc\").innerHTML =\n data.insurance.longDescription;\n document.getElementById(\"insurance\").classList.remove(\"hidden\");\n }\n })\n .catch((error) => {\n fetch(url2)\n .then((response) => response.json())\n .then((data) => {\n const start = new Date(from);\n const end = new Date(to);\n const qty =\n Math.ceil(\n (end.getTime() - start.getTime()) / (1000 * 60 * 60 * 24)\n ) + 1;\n let items = [\n {\n item_id: modelId.toString(),\n item_name: model_name,\n index: 0,\n item_brand: manufacturer,\n item_category: category,\n location_id: location,\n price: parseFloat(unit),\n quantity: qty,\n },\n ];\n this.addToCart_layer(total, items);\n let insuprice = data.insurance.price;\n if (insuprice % 1 !== 0)\n insuprice = data.insurance.price.toFixed(2);\n document.getElementById(\"continue\").classList.remove(\"hidden\");\n document.getElementById(\"close\").classList.remove(\"hidden\");\n sessionStorage.setItem(\"basket\", data.basket);\n document.getElementById(\"spinner_modal\").classList.add(\"hidden\");\n this.updateBasket();\n document.getElementById(\"insumage\").alt = data.insurance.name;\n document.getElementById(\"insuname\").innerHTML = data.insurance.name;\n document.getElementById(\"insudays\").innerHTML = data.count;\n document.getElementById(\n \"insudates\"\n ).innerHTML = `${data.from} - ${data.to}`;\n document.getElementById(\"insucheck\").dataset.bike = data.bikeId;\n document.getElementById(\"insucheck\").value = data.insurance.prodId;\n document.getElementById(\"insuprice\").innerHTML = insuprice;\n document.getElementById(\"insurance\").classList.remove(\"hidden\");\n });\n });\n }\n\n addToCartAgent(event) {\n document.getElementById(\"addToCart\").classList.remove(\"hidden\");\n var errors = false;\n var name = document.getElementById(\"name\");\n var surname = document.getElementById(\"surname\");\n var weight = document.getElementById(\"weight\");\n var height = document.getElementById(\"height_modal\").value;\n var pedal = document.getElementById(\"pedal\");\n var saddle = document.getElementById(\"saddle\");\n var location = document.getElementById(\"locations\");\n let bikeShop = document.getElementById(\"bikeShop\");\n let checkFrom = document.getElementById(\"error-from\");\n let checkTo = document.getElementById(\"error-to\");\n let shop = document.getElementById(\"error-shop\");\n let checkHeight = document.getElementById(\"error-height\");\n var modelId = event.target.dataset.model;\n var total = event.target.dataset.total;\n var unit = event.target.dataset.unit;\n var from = document.getElementById(\"from\");\n var to = document.getElementById(\"to\");\n let model_name = event.target.dataset.name;\n let manufacturer = event.target.dataset.brand;\n let category = event.target.dataset.category;\n let mail = document.getElementById(\"rider-mail\");\n let phone = document.getElementById(\"rider-phone\");\n\n if (!location.value || location.options[location.selectedIndex].disabled) {\n errors = true;\n bikeShop.classList.add(\"text-red-500\");\n if (shop) shop.classList.remove(\"hidden\");\n } else {\n bikeShop.classList.remove(\"text-red-500\");\n if (shop) shop.classList.add(\"hidden\");\n location = location.value;\n }\n\n let min = new Date();\n min.setDate(new Date().getDate() + 2);\n min.setHours(0, 0, 0);\n let tmp = from.value;\n if (tmp < min) {\n errors = true;\n if (checkFrom) checkFrom.classList.remove(\"hidden\");\n } else {\n if (checkFrom) checkFrom.classList.add(\"hidden\");\n }\n const temp = this.check_season(new Date(from.value));\n tmp = new Date(from.value);\n tmp.setDate(tmp.getDate() + temp);\n\n if (tmp > to.value) {\n errors = true;\n if (checkTo) checkTo.classList.remove(\"hidden\");\n } else {\n if (checkTo) checkTo.classList.add(\"hidden\");\n }\n\n if (errors) document.getElementById(\"modal\").classList.add(\"hidden\");\n\n if (!name.value) {\n name.classList.add(\"error\");\n errors = true;\n } else name.classList.remove(\"error\");\n\n if (!surname.value) {\n surname.classList.add(\"error\");\n errors = true;\n } else surname.classList.remove(\"error\");\n\n if (!weight.value) {\n weight.classList.add(\"error\");\n errors = true;\n } else weight.classList.remove(\"error\");\n\n if (!pedal.value) {\n pedal.classList.add(\"error\");\n errors = true;\n } else pedal.classList.remove(\"error\");\n\n if (!mail.value) {\n mail.classList.add(\"error\");\n errors = true;\n } else mail.classList.remove(\"error\");\n\n if (!phone.value) {\n phone.classList.add(\"error\");\n errors = true;\n } else phone.classList.remove(\"error\");\n\n if (errors) return true;\n\n name = name.value;\n surname = surname.value;\n phone = phone.value;\n mail = mail.value;\n from = event.target.dataset.from;\n to = event.target.dataset.to;\n\n var url = `/booking_process/agents/add_to_basket?name=${name}&surname=${surname}&weight=${weight.value}&height=${height}&pedal=${pedal.value}&modelId=${modelId}&loc=${location}&total=${total}&unit=${unit}&from=${from}&to=${to}&mail=${mail}&phone=${phone}`;\n\n if (saddle.value) {\n saddle = saddle.value;\n url += `&saddle=${saddle}`;\n }\n\n document.getElementById(\"addToCart\").classList.add(\"hidden\");\n document.getElementById(\"spinner_modal\").classList.remove(\"hidden\");\n\n fetch(url)\n .then((response) => response.json())\n .then((data) => {\n if (!data || data.unavailable) {\n document.getElementById(\"unavailable\").classList.remove(\"hidden\");\n document.getElementById(\"spinner_modal\").classList.add(\"hidden\");\n } else {\n const start = new Date(from);\n const end = new Date(to);\n const qty =\n Math.ceil(\n (end.getTime() - start.getTime()) / (1000 * 60 * 60 * 24)\n ) + 1;\n let items = [\n {\n item_id: modelId.toString(),\n item_name: model_name,\n index: 0,\n item_brand: manufacturer,\n item_category: category,\n location_id: location,\n price: parseFloat(unit),\n quantity: qty,\n },\n ];\n let insuprice = data.insurance.price;\n if (insuprice % 1 !== 0) insuprice = data.insurance.price.toFixed(2);\n this.addToCart_layer(total, items);\n document.getElementById(\"continue\").classList.remove(\"hidden\");\n document.getElementById(\"close\").classList.remove(\"hidden\");\n\n let storedBasket = sessionStorage.getItem(\"baskets\");\n let basketArray = storedBasket ? JSON.parse(storedBasket) : [];\n basketArray.push(data.basket);\n let updatedBasket = JSON.stringify(basketArray);\n sessionStorage.setItem(\"baskets\", updatedBasket);\n\n document.getElementById(\"spinner_modal\").classList.add(\"hidden\");\n this.updateBasketAgent(data.basket);\n document.getElementById(\"insumage\").alt = data.insurance.name;\n document.getElementById(\"insuname\").innerHTML = data.insurance.name;\n document.getElementById(\"insudays\").innerHTML = data.count;\n document.getElementById(\"insucheck\").dataset.bike = data.bikeId;\n document.getElementById(\"insucheck\").dataset.item = JSON.stringify(\n data.insurance\n );\n document.getElementById(\"insucheck\").value = data.insurance.prodId;\n document.getElementById(\"insuprice\").innerHTML = insuprice;\n document.getElementById(\"insudesc\").innerHTML =\n data.insurance.longDescription;\n document.getElementById(\"insurance\").classList.remove(\"hidden\");\n }\n })\n .catch((error) => {\n console.log(error);\n });\n }\n\n step2(event) {\n let urlParams;\n let basket;\n (window.onpopstate = function () {\n var match,\n pl = /\\+/g, // Regex for replacing addition symbol with a space\n search = /([^&=]+)=?([^&]*)/g,\n decode = function (s) {\n return decodeURIComponent(s.replace(pl, \" \"));\n },\n query = window.location.search.substring(1);\n\n urlParams = {};\n while ((match = search.exec(query)))\n urlParams[decode(match[1])] = decode(match[2]);\n })();\n if (urlParams.basket) {\n basket = urlParams.basket;\n sessionStorage.setItem(\"basket\", basket);\n } else basket = sessionStorage.getItem(\"basket\");\n if (basket) {\n let spinner = document.getElementById(\"spinner\");\n if (spinner) spinner.classList.remove(\"hidden\");\n let spinner_modal = document.getElementById(\"spinner_modal\");\n if (spinner_modal) spinner_modal.classList.remove(\"hidden\");\n document.addEventListener(\"turbo:before-fetch-response\", function (e) {\n let selected = false;\n var interval = setInterval(function () {\n let select = document.getElementById(\"country\");\n if (select) {\n clearInterval(interval);\n for (var key in countries) {\n var option = document.createElement(\"option\");\n option.text = key;\n option.value = countries[key];\n if (option.value === \"ES\") {\n option.id = \"es\";\n }\n if (select.dataset.country === countries[key]) {\n option.selected = \"selected\";\n selected = true;\n }\n select.appendChild(option);\n }\n if (!selected) {\n let spain = document.getElementById(\"es\");\n spain.setAttribute(\"selected\", \"selected\");\n }\n let select2 = document.getElementById(\"prefix\");\n if (select2) {\n selected = false;\n mobiles.forEach((prefix) => {\n let option = document.createElement(\"option\");\n option.text = prefix.dial_code + \" \" + prefix.name;\n option.value = prefix.dial_code;\n if (prefix.code === \"ES\") {\n option.id = \"es2\";\n }\n if (select && select.dataset.country === prefix.code) {\n option.selected = \"selected\";\n selected = true;\n }\n select2.appendChild(option);\n });\n if (!selected) {\n let spain = document.getElementById(\"es2\");\n spain.setAttribute(\"selected\", \"selected\");\n }\n }\n }\n }, 100);\n });\n const lang = this.localeTarget.value;\n window.location.href = `/${lang}/basket?basket=${basket}`;\n }\n }\n\n step2Agent(event) {\n let spinner = document.getElementById(\"spinner\");\n if (spinner) spinner.classList.remove(\"hidden\");\n let spinner_modal = document.getElementById(\"spinner_modal\");\n if (spinner_modal) spinner_modal.classList.remove(\"hidden\");\n const lang = this.localeTarget.value;\n window.location.href = `/${lang}/agents/baskets`;\n }\n\n step3(event) {\n let urlParams;\n let basket;\n (window.onpopstate = function () {\n var match,\n pl = /\\+/g, // Regex for replacing addition symbol with a space\n search = /([^&=]+)=?([^&]*)/g,\n decode = function (s) {\n return decodeURIComponent(s.replace(pl, \" \"));\n },\n query = window.location.search.substring(1);\n\n urlParams = {};\n while ((match = search.exec(query)))\n urlParams[decode(match[1])] = decode(match[2]);\n })();\n if (urlParams.basket) {\n basket = urlParams.basket;\n sessionStorage.setItem(\"basket\", basket);\n } else basket = sessionStorage.getItem(\"basket\");\n if (!basket) window.location.href = \"bikes?basket=null\";\n let checkbox = document.getElementById(\"account\");\n let errors = false;\n let customer = document.forms[\"customer\"].getElementsByTagName(\"input\");\n let errorMsgs = document.forms[\"customer\"].getElementsByTagName(\"p\");\n let country = document.getElementById(\"country\");\n let prefix = document.getElementById(\"prefix\");\n //let vat = document.getElementById('vat');\n //let vatError = document.getElementById('vat-error');\n const lang = this.localeTarget.value;\n let url2 = `/${lang}/booking_process/step3?basket=${basket}`;\n for (let i = 1; i < customer.length; i++) {\n if (!customer[i].value) {\n customer[i].classList.add(\"error\");\n errorMsgs[i - 1].classList.remove(\"hidden\");\n errors = true;\n } else {\n customer[i].classList.remove(\"error\");\n errorMsgs[i - 1].classList.add(\"hidden\");\n url2 += `&${customer[i].name}=${customer[i].value}`;\n }\n }\n\n if (!prefix.value) {\n prefix.classList.add(\"error\");\n document.getElementById(\"error-phone\").classList.remove(\"hidden\");\n errors = true;\n } else {\n prefix.classList.remove(\"error\");\n document.getElementById(\"error-phone\").classList.add(\"hidden\");\n let tmp = \"%2B\" + prefix.value.slice(1);\n url2 += `&prefix=${tmp}`;\n }\n\n if (!country.value) {\n country.classList.add(\"error\");\n document.getElementById(\"error-country\").classList.remove(\"hidden\");\n errors = true;\n } else {\n country.classList.remove(\"error\");\n document.getElementById(\"error-country\").classList.add(\"hidden\");\n url2 += `&country=${country.value}`;\n }\n\n /*if ( vat.value )\n url2 += `&vatId=${vat.value}`;*/\n\n if (checkbox) {\n if (!checkbox.checked) {\n checkbox.classList.add(\"error\");\n document.getElementById(\"error-account\").classList.remove(\"hidden\");\n errors = true;\n } else {\n checkbox.classList.remove(\"error\");\n document.getElementById(\"error-account\").classList.add(\"hidden\");\n }\n }\n\n if (errors) {\n let contractor = document.getElementById(\"contractor\");\n let topPos = contractor.offsetTop;\n window.scrollTo(0, topPos);\n return;\n }\n\n document.getElementById(\"spinner\").classList.remove(\"hidden\");\n const cart_layer = JSON.parse(sessionStorage.getItem(\"cart_layer\"));\n if (cart_layer) {\n dataLayer.push({ ecommerce: null }); // Clear the previous ecommerce object.\n dataLayer.push({\n event: \"begin_checkout\",\n ecommerce: { cart_layer },\n });\n console.log(\"DATALAYER - begin_checkout\", dataLayer);\n }\n Turbo.visit(url2, { action: \"replace\" });\n\n /*fetch(`/booking_process/get_total?basket=${basket}`)\n .then(response => response.json())\n .then((data) => {\n if ( data.price >= 400 )\n if ( !vat.value ) {\n vat.classList.add('error');\n vatError.classList.remove('hidden');\n errors = true;\n }\n else {\n vat.classList.remove('error');\n vatError.classList.add('hidden');\n url2 += `&vatId=${vat.value}`;\n }\n\n if ( errors ) {\n document.getElementById('spinner').classList.add('hidden');\n return;\n }\n Turbo.visit(url2, { action: 'replace' });\n });*/\n }\n\n updateBasket() {\n if (document.getElementById(\"price_spinner\")) document.getElementById(\"price_spinner\").classList.remove(\"hidden\");\n let basket = sessionStorage.getItem(\"basket\");\n if (basket) {\n const url = `/booking_process/get_basket/${basket}`;\n fetch(url)\n .then((response) => response.json())\n .then((data) => {\n let unavailable = document.getElementById(\"unavailable\");\n if (unavailable) unavailable.classList.add(\"hidden\");\n let count = 0;\n let price = 0;\n let discount = 0;\n let sum = 0;\n if (data) {\n data.OrderPosition.forEach((element) => {\n price = price + element.pricePerUnit;\n if (element.prodType == \"R\" || element.prodType == \"T\") count++;\n if (element.prodType == \"X\")\n if (element.pricePerUnit < 0)\n discount = discount + Math.abs(element.pricePerUnit);\n });\n }\n let supertotal = document.getElementById(\"supertotal\");\n let superdiscount = document.getElementById(\"discount\");\n let wrapper = document.getElementById(\"discount-wrapper\");\n if (discount > 0) {\n sum = price + discount;\n sum = sum.toFixed(2);\n sum = sum.replace(\".\", \",\");\n price = price.toFixed(2);\n price = price.replace(\".\", \",\");\n discount = discount.toFixed(2);\n discount = discount.replace(\".\", \",\");\n if (supertotal) {\n supertotal.innerHTML = sum + \"€\";\n supertotal.classList.remove(\"hidden\");\n }\n if (superdiscount) {\n superdiscount.innerHTML = discount + \"€\";\n wrapper.classList.remove(\"hidden\");\n }\n } else {\n if (supertotal) supertotal.classList.add(\"hidden\");\n if (wrapper) wrapper.classList.add(\"hidden\");\n }\n let total = document.getElementById(\"total\");\n if (total) total.innerHTML = price;\n\n const event = document.createEvent(\"Event\");\n event.initEvent(\"priced\", true, true);\n document.dispatchEvent(event);\n document.getElementById(\"cart1\").innerHTML = count;\n document.getElementById(\"cart2\").innerHTML = count;\n document.getElementById(\"spinner\").classList.add(\"hidden\");\n if (document.getElementById(\"price_spinner\"))\n document.getElementById(\"price_spinner\").classList.add(\"hidden\");\n });\n } else {\n document.getElementById(\"spinner\").classList.add(\"hidden\");\n }\n }\n\n updateBasketAgent(basket) {\n if (basket) {\n const url = `/booking_process/get_basket/${basket}`;\n let price = 0;\n let discount = 0;\n let sum = 0;\n let basket = sessionStorage.getItem(\"baskets\");\n let count = basket ? JSON.parse(basket).length : 0;\n fetch(url)\n .then((response) => response.json())\n .then((data) => {\n let unavailable = document.getElementById(\"unavailable\");\n if (unavailable) unavailable.classList.add(\"hidden\");\n if (data) {\n data.OrderPosition.forEach((element) => {\n price = price + element.pricePerUnit;\n if (element.prodType == \"X\")\n if (element.pricePerUnit < 0)\n discount = discount + Math.abs(element.pricePerUnit);\n });\n }\n let supertotal = document.getElementById(\"supertotal\");\n let superdiscount = document.getElementById(\"discount\");\n let wrapper = document.getElementById(\"discount-wrapper\");\n if (discount > 0) {\n sum = price + discount;\n sum = sum.toFixed(2);\n sum = sum.replace(\".\", \",\");\n price = price.toFixed(2);\n price = price.replace(\".\", \",\");\n discount = discount.toFixed(2);\n discount = discount.replace(\".\", \",\");\n if (supertotal) {\n supertotal.innerHTML = sum + \"€\";\n supertotal.classList.remove(\"hidden\");\n }\n if (superdiscount) {\n superdiscount.innerHTML = discount + \"€\";\n wrapper.classList.remove(\"hidden\");\n }\n } else {\n if (supertotal) supertotal.classList.add(\"hidden\");\n if (wrapper) wrapper.classList.add(\"hidden\");\n }\n let total = document.getElementById(\"total\");\n if (total) total.innerHTML = price;\n\n const event = document.createEvent(\"Event\");\n event.initEvent(\"priced\", true, true);\n document.dispatchEvent(event);\n document.getElementById(\"cart1\").innerHTML = count;\n document.getElementById(\"cart2\").innerHTML = count;\n });\n }\n }\n\n removeFromCart(event) {\n document.getElementById(\"spinner\").classList.remove(\"hidden\");\n let basket = sessionStorage.getItem(\"basket\");\n let cancel = \"\";\n let tmp;\n let path = event.path || (event.composedPath && event.composedPath());\n path.forEach((element) => {\n if (element.dataset && element.dataset.cancel) {\n cancel = element.dataset.cancel;\n tmp = JSON.parse(element.dataset.item);\n }\n });\n if (cancel.length > 0) {\n let items;\n if (tmp.modelId) {\n items = [\n {\n item_id: tmp.modelId.toString(),\n item_name: tmp.modelName,\n item_brand: tmp.manufacturer,\n item_category: tmp.category,\n location_id: tmp.plocId,\n price: parseFloat(tmp.pricePerUnit),\n quantity: tmp.unitCount,\n },\n ];\n } else {\n items = [\n {\n item_id: tmp.tourId.toString(),\n item_name: tmp.details.tourName,\n item_category: tmp.details.categoryName,\n location_id: tmp.details.locId,\n price: parseFloat(tmp.pricePerUnit),\n quantity: 1,\n },\n ];\n }\n let url = `/booking_process/remove_from_basket?basket=${basket}&res_id=${cancel}`;\n fetch(url).then((data) => {\n this.removeFromCart_layer(parseFloat(tmp.priceTotal), items);\n //this.updateBasket();\n window.location.reload();\n });\n }\n }\n\n toggleTour(event) {\n let basket = event.target.dataset.basket\n ? event.target.dataset.basket\n : sessionStorage.getItem(\"basket\");\n const tour = event.target;\n const bike = tour.dataset.bike;\n var date = tour.dataset.date;\n const cancel = tour.dataset.cancel;\n let tours = document.querySelectorAll(`.tour-${bike}`);\n let tmp = JSON.parse(tour.dataset.item);\n let add;\n\n if (tour.checked) {\n tours.forEach((element) => {\n if (element.value != tour.value && date == element.dataset.date)\n element.setAttribute(\"disabled\", \"disabled\");\n });\n add = true;\n var url = `/booking_process/add_tour_to_basket?basket=${basket}&tour=${tour.value}&bpr=${tour.dataset.bpr}&res=${bike}&loc=${tour.dataset.loc}&date=${date}`;\n } else {\n tours.forEach((element) => {\n if (element.value != tour.value && date == element.dataset.date)\n element.removeAttribute(\"disabled\");\n });\n add = false;\n var url = `/booking_process/remove_from_basket?basket=${basket}&res_id=${cancel}`;\n }\n fetch(url)\n .then((response) => response.json())\n .then((data) => {\n let items = [\n {\n item_id: tmp.tourId.toString(),\n item_name: tmp.details.tourName,\n item_category: tmp.details.categoryName,\n location_id: tmp.details.locId,\n price: parseFloat(tmp.price),\n quantity: 1,\n },\n ];\n if (add) this.addToCart_layer(parseFloat(tmp.price), items);\n else this.removeFromCart_layer(parseFloat(tmp.price), items);\n this.updateBasket();\n if (data && data.resId) event.target.dataset.cancel = data.resId;\n else delete event.target.dataset.cancel;\n });\n }\n\n toggleExtra(event) {\n let lang = \"en\";\n let basket = sessionStorage.getItem(\"basket\");\n const extra = event.target;\n const cancel = extra.dataset.cancel;\n let resId = extra.dataset.bike;\n let tmp = JSON.parse(extra.dataset.item);\n let add;\n\n if (extra.checked) {\n add = true;\n var url = `/booking_process/add_extra_to_bike?basket=${basket}&res_id=${resId}&prod_id=${extra.value}&lang=${lang}`;\n } else {\n add = false;\n var url = `/booking_process/remove_from_basket?basket=${basket}&res_id=${cancel}`;\n }\n fetch(url)\n .then((response) => response.json())\n .then((data) => {\n let items = [\n {\n item_id: tmp.prodId.toString(),\n item_name: tmp.title,\n currency: \"EUR\",\n item_category: tmp.prodType,\n price: parseFloat(tmp.price),\n },\n ];\n if (add) this.addToCart_layer(parseFloat(tmp.price), items);\n else this.removeFromCart_layer(parseFloat(tmp.price), items);\n this.updateBasket();\n if (data && data.resId) event.target.dataset.cancel = data.resId;\n else delete event.target.dataset.cancel;\n });\n }\n\n removeTour(event) {\n let basket = sessionStorage.getItem(\"basket\");\n const tour = event.target;\n const cancel = tour.dataset.cancel;\n var url = `/booking_process/remove_from_basket?basket=${basket}&res_id=${cancel}`;\n fetch(url)\n .then((response) => response.json())\n .then((data) => {\n const container = document.getElementById(\"tour-\" + cancel);\n container.parentElement.removeChild(container);\n this.updateBasket();\n });\n }\n\n removeExtra(event) {\n let basket = sessionStorage.getItem(\"basket\");\n const extra = event.target;\n const cancel = extra.dataset.cancel;\n var url = `/booking_process/remove_from_basket?basket=${basket}&res_id=${cancel}`;\n fetch(url)\n .then((response) => response.json())\n .then((data) => {\n const container = document.getElementById(\"extra-\" + cancel);\n container.parentElement.removeChild(container);\n });\n }\n\n payBooking() {\n let terms = document.getElementById(\"terms\");\n if (terms.checked) {\n let basket = sessionStorage.getItem(\"basket\");\n let comment = document.getElementById(\"comment\").value;\n let url = `/booking_process/send_comment?basket=${basket}&comment=${comment}`;\n document.getElementById(\"spinner\").classList.remove(\"hidden\");\n document.getElementById(\"spinner-text\").classList.remove(\"hidden\");\n fetch(url)\n .then((response) => response.json())\n .then((data) => {\n let url = `/booking_process/create-payment?basket=${basket}`;\n fetch(url)\n .then((response) => response.json())\n .then((data) => {\n console.log(data);\n window.location = `https://www.vivapayments.com/web/checkout?ref=${data.ref}`;\n });\n });\n }\n }\n\n closeBasket(event) {\n let terms = document.getElementById(\"terms\");\n if (terms.checked) {\n let basket = sessionStorage.getItem(\"basket\");\n let comment = document.getElementById(\"comment\").value;\n let email = document.getElementById(\"user-mail\").innerHTML;\n let url = `/booking_process/send_comment?basket=${basket}&comment=${comment}`;\n document.getElementById(\"spinner\").classList.remove(\"hidden\");\n fetch(url)\n .then((response) => response.json())\n .then((data) => {\n let url = `/booking_process/close_basket?basket=${basket}&email=${email}`;\n fetch(url).then((response) => {\n sessionStorage.removeItem(\"basket\");\n let modal = document.getElementById(\"modal\");\n modal.classList.remove(\"hidden\");\n document.getElementById(\"spinner\").classList.add(\"hidden\");\n });\n });\n }\n }\n\n closeUnavailable(event) {\n document.getElementById(\"unavailable\").classList.add(\"hidden\");\n }\n\n finish(event) {\n window.location.href = \"/\";\n }\n\n check_season(date) {\n let summer_start = document.getElementById(\"season_from\");\n let summer_end = document.getElementById(\"season_to\");\n let min = 2;\n\n if (summer_start && summer_end) {\n summer_start = new Date(summer_start.value);\n summer_end = new Date(summer_end.value);\n if (date >= summer_start && date <= summer_end) min = 0;\n }\n return min;\n }\n\n padTo2Digits(num) {\n return num.toString().padStart(2, \"0\");\n }\n\n closeModal() {\n document.getElementById(\"modal\").classList.add(\"hidden\");\n }\n\n reload() {\n document.getElementById(\"spinner\").classList.remove(\"hidden\");\n location.reload();\n }\n\n showPasswordField() {\n document.getElementById(\"password-section\").classList.toggle(\"hidden\");\n }\n\n single_bike_layer(elem) {\n let bike;\n if (elem && elem.dataset) {\n bike = JSON.parse(elem.dataset.bike);\n let price = parseFloat(elem.dataset.price);\n let tmp = document.getElementById(\"user-info\");\n let user = {};\n if (tmp) {\n tmp = tmp.dataset;\n user = {\n email: tmp.email,\n first_name: tmp.first_name,\n last_name: tmp.last_name,\n phone_number: tmp.phone_number,\n street: tmp.street,\n city: tmp.city,\n region: tmp.region,\n postal_code: tmp.postal_code,\n country: tmp.country,\n };\n }\n\n dataLayer.push({ ecommerce: null }); // Clear the previous ecommerce object.\n dataLayer.push({\n event: \"view_item\",\n ecommerce: {\n item_list_name: \"Bikes\",\n items: [\n {\n item_id: bike.model_id.toString(),\n item_name: bike.model_title,\n currency: \"EUR\",\n index: 0,\n item_brand: bike.manufacturer,\n item_category: bike.product_group_name,\n price: parseFloat(price),\n quantity: 1,\n },\n ],\n enhanced_conversion_data: user,\n },\n });\n console.log(\"DATALAYER - view_item\", dataLayer);\n }\n }\n\n bikes_layer() {\n let bikesData = [];\n let bikes = document.getElementsByClassName(\"bike-info\");\n for (let i = 0; i < bikes.length; i++) {\n let bike = JSON.parse(bikes[i].dataset.bike);\n bikesData.push({\n item_id: bike.model_id.toString(),\n item_name: bike.model_title,\n currency: \"EUR\",\n index: i,\n item_brand: bike.manufacturer,\n item_category: bike.product_group_name,\n price: parseFloat(bikes[i].dataset.price),\n quantity: 1,\n });\n }\n let tmp = document.getElementById(\"user-info\");\n let user = {};\n if (tmp) {\n tmp = tmp.dataset;\n user = {\n email: tmp.email,\n first_name: tmp.first_name,\n last_name: tmp.last_name,\n phone_number: tmp.phone_number,\n street: tmp.street,\n city: tmp.city,\n region: tmp.region,\n postal_code: tmp.postal_code,\n country: tmp.country,\n };\n }\n dataLayer.push({ ecommerce: null }); // Clear the previous ecommerce object.\n dataLayer.push({\n event: \"view_item_list\",\n ecommerce: {\n item_list_name: \"Bikes\",\n items: bikesData,\n enhanced_conversion_data: user,\n },\n });\n console.log(\"DATALAYER - view_item_list\", dataLayer);\n }\n\n cart_layer() {\n document.removeEventListener(\"priced\", this.cart_layer);\n const items = document.getElementsByClassName(\"cart-item\");\n const options = document.querySelectorAll(\"input.extra:checked\");\n const total = document.getElementById(\"total\");\n let tmp;\n let itemsData = [];\n for (let i = 0; i < items.length; i++) {\n let item = items[i].dataset;\n tmp = JSON.parse(item.value);\n if (item.type === \"bike\") {\n itemsData.push({\n item_id: tmp.modelId.toString(),\n item_name: tmp.modelName,\n currency: \"EUR\",\n index: i,\n item_brand: tmp.manufacturer,\n item_category: tmp.category,\n price: parseFloat(tmp.pricePerUnit),\n location_id: tmp.plocId.toString(),\n quantity: tmp.unitCount,\n });\n }\n if (item.type === \"tour\") {\n itemsData.push({\n item_id: tmp.tourId.toString(),\n item_name: tmp.details.tourName,\n currency: \"EUR\",\n index: i,\n item_category: tmp.details.categoryName,\n price: parseFloat(tmp.pricePerUnit),\n location_id: tmp.details.locId.toString(),\n quantity: tmp.unitCount,\n });\n }\n }\n for (let i = 0; i < options.length; i++) {\n let item = options[i].dataset;\n tmp = JSON.parse(item.item);\n itemsData.push({\n item_id: tmp.prodId.toString(),\n item_name: tmp.title,\n currency: \"EUR\",\n index: i,\n item_category: tmp.prodType,\n price: parseFloat(tmp.price),\n });\n }\n tmp = document.getElementById(\"user-info\");\n let user = {};\n if (tmp) {\n tmp = tmp.dataset;\n user = {\n email: tmp.email,\n first_name: tmp.first_name,\n last_name: tmp.last_name,\n phone_number: tmp.phone_number,\n street: tmp.street,\n city: tmp.city,\n region: tmp.region,\n postal_code: tmp.postal_code,\n country: tmp.country,\n };\n }\n let session = JSON.stringify({\n currency: \"EUR\",\n value: parseFloat(total.innerText),\n items: itemsData,\n enhanced_conversion_data: user,\n });\n sessionStorage.setItem(\"cart_layer\", session);\n dataLayer.push({ ecommerce: null }); // Clear the previous ecommerce object.\n dataLayer.push({\n event: \"view_cart\",\n ecommerce: { session },\n });\n console.log(\"DATALAYER - view_cart\", dataLayer);\n }\n\n addToCart_layer(total, items) {\n let tmp = document.getElementById(\"user-info\");\n let user = {};\n if (tmp) {\n tmp = tmp.dataset;\n user = {\n email: tmp.email,\n first_name: tmp.first_name,\n last_name: tmp.last_name,\n phone_number: tmp.phone_number,\n street: tmp.street,\n city: tmp.city,\n region: tmp.region,\n postal_code: tmp.postal_code,\n country: tmp.country,\n };\n }\n dataLayer.push({ ecommerce: null }); // Clear the previous ecommerce object.\n dataLayer.push({\n event: \"add_to_cart\",\n ecommerce: {\n currency: \"EUR\",\n value: parseFloat(total),\n items: items,\n enhanced_conversion_data: user,\n },\n });\n console.log(\"DATALAYER - add_to_cart\", dataLayer);\n }\n\n removeFromCart_layer(total, items) {\n let tmp = document.getElementById(\"user-info\");\n let user = {};\n if (tmp) {\n tmp = tmp.dataset;\n user = {\n email: tmp.email,\n first_name: tmp.first_name,\n last_name: tmp.last_name,\n phone_number: tmp.phone_number,\n street: tmp.street,\n city: tmp.city,\n region: tmp.region,\n postal_code: tmp.postal_code,\n country: tmp.country,\n };\n }\n dataLayer.push({ ecommerce: null }); // Clear the previous ecommerce object.\n dataLayer.push({\n event: \"remove_from_cart\",\n ecommerce: {\n currency: \"EUR\",\n value: parseFloat(total),\n items: items,\n enhanced_conversion_data: user,\n },\n });\n console.log(\"DATALAYER - remove_from_cart\", dataLayer);\n }\n}\n","import { Controller } from \"stimulus\"\nimport { Turbo } from \"@hotwired/turbo-rails\";\nimport { turbo_fetch } from \"../helpers\";\n\nconst countries = {'Afghanistan': \"AF\", 'Aland Islands': \"AX\", 'Albania': \"AL\", 'Algeria': \"DZ\", 'American Samoa': \"AS\", 'Andorra': \"AD\", 'Angola': \"AO\", 'Anguilla': \"AI\", 'Antarctica': \"AQ\", 'Antigua and Barbuda': \"AG\", 'Argentina': \"AR\", 'Armenia': \"AM\", 'Aruba': \"AW\", 'Australia': \"AU\", 'Austria': \"AT\", 'Azerbaijan': \"AZ\", 'Bahamas': \"BS\", 'Bahrain': \"BH\", 'Bangladesh': \"BD\", 'Barbados': \"BB\", 'Belarus': \"BY\", 'Belgium': \"BE\", 'Belize': \"BZ\", 'Benin': \"BJ\", 'Bermuda': \"BM\", 'Bhutan': \"BT\", 'Bolivia': \"BO\", 'Bonaire, Saint Eustatius and Saba': \"BQ\", 'Bosnia and Herzegovina': \"BA\", 'Botswana': \"BW\", 'Bouvet Island': \"BV\", 'Brazil': \"BR\", 'British Indian Ocean Territory': \"IO\", 'British Virgin Islands': \"VG\", 'Brunei': \"BN\", 'Bulgaria': \"BG\", 'Burkina Faso': \"BF\", 'Burundi': \"BI\", 'Cambodia': \"KH\", 'Cameroon': \"CM\", 'Canada': \"CA\", 'Cape Verde': \"CV\", 'Cayman Islands': \"KY\", 'Central African Republic': \"CF\", 'Chad': \"TD\", 'Chile': \"CL\", 'China': \"CN\", 'Christmas Island': \"CX\", 'Cocos Islands': \"CC\", 'Colombia': \"CO\", 'Comoros': \"KM\", 'Cook Islands': \"CK\", 'Costa Rica': \"CR\", 'Croatia': \"HR\", 'Cuba': \"CU\", 'Curacao': \"CW\", 'Cyprus': \"CY\", 'Czech Republic': \"CZ\", 'Democratic Republic of the Congo': \"CD\", 'Denmark': \"DK\", 'Djibouti': \"DJ\", 'Dominica': \"DM\", 'Dominican Republic': \"DO\", 'East Timor': \"TL\", 'Ecuador': \"EC\", 'Egypt': \"EG\", 'El Salvador': \"SV\", 'Equatorial Guinea': \"GQ\", 'Eritrea': \"ER\", 'Estonia': \"EE\", 'Ethiopia': \"ET\", 'Falkland Islands': \"FK\", 'Faroe Islands': \"FO\", 'Fiji': \"FJ\", 'Finland': \"FI\", 'France': \"FR\", 'French Guiana': \"GF\", 'French Polynesia': \"PF\", 'French Southern Territories': \"TF\", 'Gabon': \"GA\", 'Gambia': \"GM\", 'Georgia': \"GE\", 'Germany': \"DE\", 'Ghana': \"GH\", 'Gibraltar': \"GI\", 'Greece': \"GR\", 'Greenland': \"GL\", 'Grenada': \"GD\", 'Guadeloupe': \"GP\", 'Guam': \"GU\", 'Guatemala': \"GT\", 'Guernsey': \"GG\", 'Guinea': \"GN\", 'Guinea-Bissau': \"GW\", 'Guyana': \"GY\", 'Haiti': \"HT\", 'Heard Island and McDonald Islands': \"HM\", 'Honduras': \"HN\", 'Hong Kong': \"HK\", 'Hungary': \"HU\", 'Iceland': \"IS\", 'India': \"IN\", 'Indonesia': \"ID\", 'Iran': \"IR\", 'Iraq': \"IQ\", 'Ireland': \"IE\", 'Isle of Man': \"IM\", 'Israel': \"IL\", 'Italy': \"IT\", 'Ivory Coast': \"CI\", 'Jamaica': \"JM\", 'Japan': \"JP\", 'Jersey': \"JE\", 'Jordan': \"JO\", 'Kazakhstan': \"KZ\", 'Kenya': \"KE\", 'Kiribati': \"KI\", 'Kosovo': \"XK\", 'Kuwait': \"KW\", 'Kyrgyzstan': \"KG\", 'Laos': \"LA\", 'Latvia': \"LV\", 'Lebanon': \"LB\", 'Lesotho': \"LS\", 'Liberia': \"LR\", 'Libya': \"LY\", 'Liechtenstein': \"LI\", 'Lithuania': \"LT\", 'Luxembourg': \"LU\", 'Macao': \"MO\", 'Macedonia': \"MK\", 'Madagascar': \"MG\", 'Malawi': \"MW\", 'Malaysia': \"MY\", 'Maldives': \"MV\", 'Mali': \"ML\", 'Malta': \"MT\", 'Marshall Islands': \"MH\", 'Martinique': \"MQ\", 'Mauritania': \"MR\", 'Mauritius': \"MU\", 'Mayotte': \"YT\", 'Mexico': \"MX\", 'Micronesia': \"FM\", 'Moldova': \"MD\", 'Monaco': \"MC\", 'Mongolia': \"MN\", 'Montenegro': \"ME\", 'Montserrat': \"MS\", 'Morocco': \"MA\", 'Mozambique': \"MZ\", 'Myanmar': \"MM\", 'Namibia': \"NA\", 'Nauru': \"NR\", 'Nepal': \"NP\", 'Netherlands': \"NL\", 'New Caledonia': \"NC\", 'New Zealand': \"NZ\", 'Nicaragua': \"NI\", 'Niger': \"NE\", 'Nigeria': \"NG\", 'Niue': \"NU\", 'Norfolk Island': \"NF\", 'North Korea': \"KP\", 'Northern Mariana Islands': \"MP\", 'Norway': \"NO\", 'Oman': \"OM\", 'Pakistan': \"PK\", 'Palau': \"PW\", 'Palestinian Territory': \"PS\", 'Panama': \"PA\", 'Papua New Guinea': \"PG\", 'Paraguay': \"PY\", 'Peru': \"PE\", 'Philippines': \"PH\", 'Pitcairn': \"PN\", 'Poland': \"PL\", 'Portugal': \"PT\", 'Puerto Rico': \"PR\", 'Qatar': \"QA\", 'Republic of the Congo': \"CG\", 'Reunion': \"RE\", 'Romania': \"RO\", 'Russia': \"RU\", 'Rwanda': \"RW\", 'Saint Barthelemy': \"BL\", 'Saint Helena': \"SH\", 'Saint Kitts and Nevis': \"KN\", 'Saint Lucia': \"LC\", 'Saint Martin': \"MF\", 'Saint Pierre and Miquelon': \"PM\", 'Saint Vincent and the Grenadines': \"VC\", 'Samoa': \"WS\", 'San Marino': \"SM\", 'Sao Tome and Principe': \"ST\", 'Saudi Arabia': \"SA\", 'Senegal': \"SN\", 'Serbia': \"RS\", 'Seychelles': \"SC\", 'Sierra Leone': \"SL\", 'Singapore': \"SG\", 'Sint Maarten': \"SX\", 'Slovakia': \"SK\", 'Slovenia': \"SI\", 'Solomon Islands': \"SB\", 'Somalia': \"SO\", 'South Africa': \"ZA\", 'South Georgia and the South Sandwich Islands': \"GS\", 'South Korea': \"KR\", 'South Sudan': \"SS\", 'Spain': \"ES\", 'Sri Lanka': \"LK\", 'Sudan': \"SD\", 'Suriname': \"SR\", 'Svalbard and Jan Mayen': \"SJ\", 'Swaziland': \"SZ\", 'Sweden': \"SE\", 'Switzerland': \"CH\", 'Syria': \"SY\", 'Taiwan': \"TW\", 'Tajikistan': \"TJ\", 'Tanzania': \"TZ\", 'Thailand': \"TH\", 'Togo': \"TG\", 'Tokelau': \"TK\", 'Tonga': \"TO\", 'Trinidad and Tobago': \"TT\", 'Tunisia': \"TN\", 'Turkey': \"TR\", 'Turkmenistan': \"TM\", 'Turks and Caicos Islands': \"TC\", 'Tuvalu': \"TV\", 'U.S. Virgin Islands': \"VI\", 'Uganda': \"UG\", 'Ukraine': \"UA\", 'United Arab Emirates': \"AE\", 'United Kingdom': \"GB\", 'United States': \"US\", 'United States Minor Outlying Islands': \"UM\", 'Uruguay': \"UY\", 'Uzbekistan': \"UZ\", 'Vanuatu': \"VU\", 'Vatican': \"VA\", 'Venezuela': \"VE\", 'Vietnam': \"VN\", 'Wallis and Futuna': \"WF\", 'Western Sahara': \"EH\", 'Yemen': \"YE\", 'Zambia': \"ZM\", 'Zimbabwe': \"ZW\"};\n\nexport default class extends Controller {\n static targets = [\"locale\", \"locations\", \"tourType\", \"season\"];\n\n async connect() {\n this.updateBasketHeader()\n let urlParams;\n (window.onpopstate = function () {\n let match,\n pl = /\\+/g, // Regex for replacing addition symbol with a space\n search = /([^&=]+)=?([^&]*)/g,\n decode = function (s) { return decodeURIComponent(s.replace(pl, \" \")); },\n query = window.location.search.substring(1);\n\n urlParams = {};\n while (match = search.exec(query))\n urlParams[decode(match[1])] = decode(match[2]);\n })();\n let plocId = document.getElementById('plocId');\n if ( plocId ) {\n if ( urlParams.plocId ) {\n plocId.value = urlParams.plocId;\n }\n else {\n let query = window.location.pathname.split('/');\n let island = false;\n query.forEach(element => {\n switch (element) {\n case 'gran-canaria':\n island = true;\n plocId.value = '1';\n break;\n case 'tenerife':\n island = true;\n plocId.value = '2';\n break;\n case 'lanzarote':\n island = true;\n plocId.value = '3';\n break; \n }\n });\n if ( !island ) {\n plocId.value = 1;\n }\n }\n }\n let tour_type = document.getElementById('tourType');\n if ( tour_type ) {\n if ( urlParams.tour_type ){\n tour_type.value = urlParams.tour_type;\n }\n }\n\n const island = sessionStorage.getItem('plocId');\n const type = sessionStorage.getItem('type');\n const season = sessionStorage.getItem('season');\n const level = sessionStorage.getItem('level');\n if ( island ) {\n if ( plocId )\n plocId.value = island;\n }\n if ( type ) {\n if ( tour_type )\n tour_type.value = type;\n }\n if ( season ) {\n let season_cont = document.getElementById('season');\n if ( season_cont )\n season_cont.value = season;\n }\n await this.filterLevels(null);\n\n if ( level ) {\n let level_cont = document.getElementById('tourLevel');\n if ( level_cont )\n level_cont.value = level;\n }\n this.filterTours(null);\n\n const tour = document.getElementById('view-tour');\n if ( tour ) {\n const info = JSON.parse(tour.dataset.info);\n let userInfo = document.getElementById('user-info');\n let user = {};\n if ( userInfo ) {\n userInfo = userInfo.dataset;\n user = {\n email: userInfo.email,\n first_name: userInfo.first_name,\n last_name: userInfo.last_name,\n phone_number: userInfo.phone_number,\n street: userInfo.street,\n city: userInfo.city,\n postal_code: userInfo.postal_code,\n country: userInfo.country\n }\n }\n dataLayer.push({ ecommerce: null }); // Clear the previous ecommerce object.\n dataLayer.push({\n event: 'view_item',\n ecommerce: {\n currency: \"EUR\",\n value: info.price_plain,\n items: [\n {\n item_id: info.tour_id,\n item_name: info.category_name,\n currency: \"EUR\",\n item_category: info.category_name,\n location_id: info.loc_id,\n price: info.price_plain,\n quantity: 1\n }\n ],\n enhanced_conversion_data: user\n }\n });\n console.log('DATALAYER - view_item', dataLayer);\n }\n }\n\n filterLevels(event) {\n let tourType = document.getElementById('tourType');\n if ( tourType ) {\n tourType = tourType.value;\n } else {\n return;\n }\n let season = document.getElementById('season');\n if ( season )\n season = season.value;\n else\n return;\n switch ( tourType ) {\n case '3':\n document.getElementById('rbike').classList.remove('hidden');\n document.getElementById('mbike').classList.add('hidden');\n document.getElementById('embike').classList.add('hidden');\n document.getElementById('trekking').classList.add('hidden');\n break;\n case '2':\n document.getElementById('mbike').classList.remove('hidden');\n document.getElementById('rbike').classList.add('hidden');\n document.getElementById('embike').classList.add('hidden');\n document.getElementById('trekking').classList.add('hidden');\n break;\n case '14':\n document.getElementById('trekking').classList.remove('hidden');\n document.getElementById('rbike').classList.add('hidden');\n document.getElementById('mbike').classList.add('hidden');\n document.getElementById('embike').classList.add('hidden');\n break;\n case '15':\n document.getElementById('embike').classList.remove('hidden');\n document.getElementById('rbike').classList.add('hidden');\n document.getElementById('mbike').classList.add('hidden');\n document.getElementById('trekking').classList.add('hidden');\n break;\n default:\n document.getElementById('mbike').classList.add('hidden');\n document.getElementById('rbike').classList.add('hidden');\n document.getElementById('embike').classList.add('hidden');\n document.getElementById('trekking').classList.add('hidden');\n }\n let select = document.getElementById(\"tourLevel\");\n for (let i = 0; i < select.options.length; i++ ) {\n select.options[i].classList.add('hidden');\n select.options[i].setAttribute('disabled', 'disabled');\n if ( (select.options[i].value == '') || ((tourType && (select.options[i].dataset.tour_type == tourType)) && (season && (select.options[i].dataset.season == season))) ) {\n select.options[i].classList.remove('hidden');\n select.options[i].removeAttribute('disabled');\n }\n }\n select.value = '';\n this.filterTours();\n }\n\n filterTours(event) {\n let tour_type;\n let level\n let plocId\n let season\n if (document.getElementById('tourType')) tour_type = document.getElementById('tourType').value;\n if (document.getElementById('tourLevel')) level = document.getElementById('tourLevel').value;\n if (document.getElementById('plocId')) plocId = document.getElementById('plocId').value;\n if (document.getElementById('season')) season = document.getElementById('season').value;\n\n const lang = this.localeTarget.value;\n let url = `/${lang}/booking_process/finder/tours?tour_type=${tour_type}&season=${season}&level=${level}&plocId=${plocId}`;\n\n let spinner = document.getElementById('spinner');\n if ( spinner )\n spinner.classList.remove('hidden');\n let flag = false;\n document.addEventListener(\"framed\", this.tours_layer);\n turbo_fetch(url);\n }\n\n saveFilters(event) {\n const island = document.getElementById('plocId');\n const type = document.getElementById('tourType');\n const season = document.getElementById('season');\n const level = document.getElementById('tourLevel');\n if ( island && island.value )\n sessionStorage.setItem('island', island.value);\n if ( type && type.value )\n sessionStorage.setItem('type', type.value);\n if ( season && season.value )\n sessionStorage.setItem('season', season.value);\n if ( level && level.value )\n sessionStorage.setItem('level', level.value);\n }\n\n closeBasket(event) {\n let terms = document.getElementById('terms');\n if ( terms.checked ) {\n let basket = sessionStorage.getItem('basket');\n let url = `/booking_process/close_basket?basket=${basket}`;\n fetch(url)\n .then(response => response.json())\n .then((data) => {\n sessionStorage.removeItem('basket');\n let modal = document.getElementById('modal');\n modal.classList.remove('hidden');\n });\n }\n }\n\n finish(event) {\n window.location.href = '/';\n }\n\n updateBasketHeader() {\n let basket = sessionStorage.getItem(\"basket\");\n let count = 0;\n if (basket) {\n const url = `/booking_process/get_basket/${basket}`;\n fetch(url)\n .then((response) => response.json())\n .then((data) => {\n if (data) {\n data.OrderPosition.forEach((element) => {\n if (element.prodType == \"R\" || element.prodType == \"T\") count++;\n });\n document.getElementById(\"cart1\").innerHTML = count;\n document.getElementById(\"cart2\").innerHTML = count;\n }\n });\n } else {\n let baskets = sessionStorage.getItem(\"baskets\");\n if (baskets) {\n count = JSON.parse(baskets).length;\n document.getElementById(\"cart1\").innerHTML = count;\n document.getElementById(\"cart2\").innerHTML = count;\n }\n }\n }\n\n pickBike(event) {\n let button = document.getElementById('addToCart');\n let select = document.getElementById('pedal');\n select.forEach(option => {\n select.remove(option);\n });\n let bike = JSON.parse(event.target.dataset.bike);\n let price = document.getElementById('price');\n let image = document.getElementById('image');\n button.dataset.model = bike.modelId;\n button.dataset.total = bike.price;\n price.innerHTML = bike.price;\n\n image.src = bike.image;\n let form = document.getElementById('form');\n if ( bike.pedals ) {\n form.classList.remove('hidden');\n let selected = event.target.dataset.selected;\n let pedals = bike.pedals;\n pedals.forEach(pedal => {\n let option = document.createElement(\"option\");\n option.text = pedal.pedalName;\n option.value = pedal.pedalId;\n if ( pedal.pedalId == selected ) {\n option.selected = 'selected';\n }\n select.appendChild(option);\n });\n }\n else {\n form.classList.add('hidden');\n }\n\n document.getElementById('modal').classList.remove('hidden');\n document.body.classList.add('overflow-hidden');\n\n //document.getElementById('spinner_modal').classList.remove('hidden');\n \n }\n\n addToCart(event) {\n let button;\n let path = event.path || (event.composedPath && event.composedPath());\n for (let el of path) {\n if (el.dataset.model !== undefined && el.dataset.model !== \"\") {\n button = el;\n break;\n }\n };\n\n let elem = document.getElementById('addToCart');\n elem.classList.remove('hidden');\n elem = elem.dataset;\n let tour_data = JSON.parse(elem.info);\n let errors = false;\n let name = document.getElementById('name');\n let surname = document.getElementById('surname');\n let weight = document.getElementById('weight');\n let height = document.getElementById('height');\n let pedal = document.getElementById('pedal');\n let saddle = document.getElementById('saddle');\n let date = document.getElementById('date').value;\n let modelId = button.dataset.model;\n let tourId = button.dataset.tour;\n let total = button.dataset.total;\n let form = document.getElementById('form');\n let location = button.dataset.location;\n let spinner_modal = document.getElementById('spinner_modal');\n let spinner_text = document.getElementById(\"spinner-text\");\n\n if ( !name.value ) {\n name.classList.add('error');\n errors = true;\n }\n else\n name.classList.remove('error');\n \n if ( !surname.value ) {\n surname.classList.add('error');\n errors = true;\n }\n else\n surname.classList.remove('error');\n\n if ( errors )\n return true;\n \n name = name.value;\n surname = surname.value;\n\n let url = `/booking_tours/add_to_basket?name=${name}&surname=${surname}&tour=${tourId}&model=${modelId}&loc=${location}&total=${total}&date=${date}`;\n\n if ( form && !form.classList.contains('hidden') ) {\n if ( weight ) {\n if ( weight.value )\n url += `&weight=${weight.value}`;\n else\n errors = true;\n }\n\n if ( height ) {\n if ( height.value )\n url += `&height=${height.value}`;\n else\n errors = true;\n }\n\n if ( pedal ) {\n if ( pedal.value )\n url += `&pedal=${pedal.value}`;\n else\n errors = true;\n }\n\n if ( saddle ) {\n if ( saddle.value )\n url += `&saddle=${saddle.value}`;\n }\n\n if ( errors ) {\n return true;\n }\n }\n\n if (spinner_modal) {\n spinner_text.classList.remove('hidden')\n spinner_modal.classList.remove('hidden');\n }\n\n let basket = sessionStorage.getItem('basket');\n\n if ( basket && basket !== 'undefined' )\n url += `&basket=${basket}`; \n\n document.getElementById('addToCart').classList.add('hidden');\n\n fetch(url)\n .then(response => response.json())\n .then((data) => {\n if (!data || data.unavailable) {\n document.getElementById(\"unavailable\").classList.remove(\"hidden\");\n document.getElementById(\"addToCart\").classList.remove(\"hidden\");\n spinner_text.classList.add(\"hidden\");\n }\n else {\n document.getElementById('continue').classList.remove('hidden');\n document.getElementById('close').classList.remove('hidden');\n sessionStorage.setItem('basket', data.basket);\n this.updateBasketHeader();\n\n let userInfo = document.getElementById('user-info');\n let user = {};\n if ( userInfo ) {\n userInfo = userInfo.dataset;\n user = {\n email: userInfo.email,\n first_name: userInfo.first_name,\n last_name: userInfo.last_name,\n phone_number: userInfo.phone_number,\n street: userInfo.street,\n city: userInfo.city,\n postal_code: userInfo.postal_code,\n country: userInfo.country\n }\n }\n dataLayer.push({ ecommerce: null }); // Clear the previous ecommerce object.\n dataLayer.push({\n event: 'add_to_cart',\n ecommerce: {\n currency: \"EUR\",\n value: parseFloat(total),\n items: [{\n item_id: tour_data.tour_id.toString(),\n item_name: tour_data.tour_name,\n index: 0,\n item_category: tour_data.category_name,\n location_id: tour_data.loc_id.toString(),\n price: parseFloat(total),\n quantity: 1\n }],\n enhanced_conversion_data: user\n }\n });\n console.log('DATALAYER - add_to_cart', dataLayer);\n\n }\n spinner_modal.classList.add(\"hidden\");\n spinner_text.classList.add(\"hidden\");\n })\n .catch(error => {\n if ( spinner_modal )\n spinner_modal.classList.add('hidden');\n console.error(error);\n document.getElementById('addToCart').classList.remove('hidden');\n });\n }\n\n addToCartAgent(event) {\n let elem = document.getElementById('addToCart');\n elem.classList.remove('hidden');\n elem = elem.dataset;\n let tour_data = JSON.parse(elem.info);\n let errors = false;\n let name = document.getElementById('name');\n let surname = document.getElementById('surname');\n let weight = document.getElementById('weight');\n let height = document.getElementById('height');\n let pedal = document.getElementById('pedal');\n let saddle = document.getElementById('saddle');\n let date = document.getElementById('date').value;\n let modelId = event.target.dataset.model;\n let tourId = event.target.dataset.tour;\n let total = event.target.dataset.total;\n let form = document.getElementById('form');\n let location = event.target.dataset.location;\n let spinner_modal = document.getElementById('spinner_modal');\n let mail = document.getElementById(\"rider-mail\");\n let phone = document.getElementById(\"rider-phone\");\n\n if ( !name.value ) {\n name.classList.add('error');\n errors = true;\n }\n else\n name.classList.remove('error');\n \n if ( !surname.value ) {\n surname.classList.add('error');\n errors = true;\n }\n else\n surname.classList.remove('error');\n\n if (!mail.value) {\n mail.classList.add(\"error\");\n errors = true;\n } else mail.classList.remove(\"error\");\n\n if (!phone.value) {\n phone.classList.add(\"error\");\n errors = true;\n } else phone.classList.remove(\"error\");\n\n if ( errors )\n return true;\n \n name = name.value;\n surname = surname.value;\n phone = phone.value;\n mail = mail.value\n\n let url = `/agents/add_tour_to_basket?name=${name}&surname=${surname}&tour=${tourId}&model=${modelId}&loc=${location}&total=${total}&date=${date}&mail=${mail}&phone=${phone}`;\n\n if ( form && !form.classList.contains('hidden') ) {\n if ( weight ) {\n if ( weight.value )\n url += `&weight=${weight.value}`;\n else\n errors = true;\n }\n\n if ( height ) {\n if ( height.value )\n url += `&height=${height.value}`;\n else\n errors = true;\n }\n\n if ( pedal ) {\n if ( pedal.value )\n url += `&pedal=${pedal.value}`;\n else\n errors = true;\n }\n\n if ( saddle ) {\n if ( saddle.value )\n url += `&saddle=${saddle.value}`;\n }\n\n if ( errors ) {\n return true;\n }\n }\n\n if (spinner_modal) spinner_modal.classList.remove('hidden');\n document.getElementById(\"spinner-text\").classList.remove(\"hidden\");\n\n let basket = sessionStorage.getItem('basket');\n\n if ( basket && basket !== 'undefined' ) url += `&basket=${basket}`; \n\n document.getElementById('addToCart').classList.add('hidden');\n\n fetch(url)\n .then(response => response.json())\n .then((data) => {\n if ( !data || data.unavailable ) {\n document.getElementById('unavailable').classList.remove('hidden');\n document.getElementById('addToCart').classList.remove('hidden');\n spinner_modal.classList.add(\"hidden\");\n document.getElementById(\"spinner-text\").classList.remove(\"hidden\");\n } else {\n document.getElementById('continue').classList.remove('hidden');\n document.getElementById('close').classList.remove('hidden');\n\n let storedBasket = sessionStorage.getItem(\"baskets\");\n let basketArray = storedBasket ? JSON.parse(storedBasket) : [];\n basketArray.push(data.basket);\n let updatedBasket = JSON.stringify(basketArray);\n sessionStorage.setItem(\"baskets\", updatedBasket);\n\n this.updateBasketHeader();\n\n let userInfo = document.getElementById('user-info');\n let user = {};\n if ( userInfo ) {\n userInfo = userInfo.dataset;\n user = {\n email: userInfo.email,\n first_name: userInfo.first_name,\n last_name: userInfo.last_name,\n phone_number: userInfo.phone_number,\n street: userInfo.street,\n city: userInfo.city,\n postal_code: userInfo.postal_code,\n country: userInfo.country\n }\n }\n dataLayer.push({ ecommerce: null }); // Clear the previous ecommerce object.\n dataLayer.push({\n event: 'add_to_cart',\n ecommerce: {\n currency: \"EUR\",\n value: parseFloat(total),\n items: [{\n item_id: tour_data.tour_id.toString(),\n item_name: tour_data.tour_name,\n index: 0,\n item_category: tour_data.category_name,\n location_id: tour_data.loc_id.toString(),\n price: parseFloat(total),\n quantity: 1\n }],\n enhanced_conversion_data: user\n }\n });\n console.log('DATALAYER - add_to_cart', dataLayer);\n\n }\n if ( spinner_modal )\n spinner_modal.classList.add('hidden');\n })\n .catch(error => {\n if ( spinner_modal )\n spinner_modal.classList.add('hidden');\n console.error(error);\n document.getElementById('addToCart').classList.remove('hidden');\n });\n }\n\n closeModal(event) {\n document.getElementById('modal').classList.add('hidden');\n document.body.classList.remove('overflow-hidden');\n document.getElementById('addToCart').classList.remove('hidden');\n document.getElementById('continue').classList.add('hidden');\n document.getElementById('close').classList.add('hidden');\n }\n\n showTab(event) {\n event.preventDefault();\n event.stopPropagation();\n\n const param = event.target.dataset.container;\n\n let cont1 = document.getElementById('cont1');\n let conts1 = document.getElementsByClassName('cont1');\n let cont2 = document.getElementById('cont2');\n let conts2 = document.getElementsByClassName('cont2');\n let cont3 = document.getElementById('cont3');\n let conts3 = document.getElementsByClassName('cont3');\n let cont4 = document.getElementById('cont4');\n let conts4 = document.getElementsByClassName('cont4');\n let navContent = document.getElementsByClassName('nav-content');\n let navContentArray = Array.from(navContent);\n let navContentArrayLength = navContentArray.length;\n let i;\n\n for (i = 0; i < navContentArrayLength; i++) {\n navContentArray[i].classList.add('hidden');\n }\t\t\t\t\n\n switch(param) {\n\n case 'cont1':\n for (i = 0; i < conts1.length; i++) {\n conts1[i].classList.remove('border-transparent','text-gray-500');\n conts1[i].classList.add('freemotion-border','freemotion-color');\n conts2[i].classList.remove('freemotion-border','freemotion-color');\n conts2[i].classList.add('border-transparent','text-gray-500');\n conts3[i].classList.remove('freemotion-border','freemotion-color');\n conts3[i].classList.add('border-transparent','text-gray-500');\n //conts4[i].classList.remove('freemotion-border','freemotion-color');\n //conts4[i].classList.add('border-transparent','text-gray-500');\n }\n cont1.classList.remove('hidden');\n break;\n case 'cont2':\n for (i = 0; i < conts2.length; i++) {\n conts1[i].classList.remove('freemotion-border','freemotion-color');\n conts1[i].classList.add('border-transparent','text-gray-500');\n conts2[i].classList.remove('border-transparent','text-gray-500');\n conts2[i].classList.add('freemotion-border','freemotion-color');\n conts3[i].classList.remove('freemotion-border','freemotion-color');\n conts3[i].classList.add('border-transparent','text-gray-500');\n //conts4[i].classList.remove('freemotion-border','freemotion-color');\n //conts4[i].classList.add('border-transparent','text-gray-500');\n }\n cont2.classList.remove('hidden');\n break;\n case 'cont3':\n for (i = 0; i < conts3.length; i++) {\n conts1[i].classList.remove('freemotion-border','freemotion-color');\n conts1[i].classList.add('border-transparent','text-gray-500');\n conts2[i].classList.remove('freemotion-border','freemotion-color');\n conts2[i].classList.add('border-transparent','text-gray-500');\n conts3[i].classList.remove('border-transparent','text-gray-500');\n conts3[i].classList.add('freemotion-border','freemotion-color');\n //conts4[i].classList.remove('freemotion-border','freemotion-color');\n //conts4[i].classList.add('border-transparent','text-gray-500');\n }\n cont3.classList.remove('hidden');\n break;\n /*case 'cont4':\n for (i = 0; i < conts4.length; i++) {\n conts1[i].classList.remove('freemotion-border','freemotion-color');\n conts1[i].classList.add('border-transparent','text-gray-500');\n conts2[i].classList.remove('freemotion-border','freemotion-color');\n conts2[i].classList.add('border-transparent','text-gray-500');\n conts3[i].classList.remove('freemotion-border','freemotion-color');\n conts3[i].classList.add('border-transparent','text-gray-500');\n conts4[i].classList.remove('border-transparent','text-gray-500');\n conts4[i].classList.add('freemotion-border','freemotion-color');\n }\n cont4.classList.remove('hidden');\n break;*/\n }\n }\n\n closeUnavailable(event) {\n document.getElementById('unavailable').classList.add('hidden');\n }\n\n step2(event) {\n let basket = sessionStorage.getItem('basket');\n if ( basket ) {\n\n let spinner = document.getElementById('spinner');\n if ( spinner )\n spinner.classList.remove('hidden');\n let spinner_modal = document.getElementById('spinner_modal');\n if ( spinner_modal )\n spinner_modal.classList.remove('hidden');\n document.addEventListener(\"turbo:before-fetch-response\", function (e) {\n let selected = false;\n let interval = setInterval(function() {\n let select = document.getElementById(\"country\");\n if (select) {\n clearInterval(interval);\n for (let key in countries) {\n let option = document.createElement(\"option\");\n option.text = key;\n option.value = countries[key];\n if ( option.value === 'ES' ){\n option.id = 'es';\n }\n if ( select.dataset.country === countries[key] ){\n option.selected = 'selected';\n selected = true;\n }\n select.appendChild(option);\n }\n if ( !selected ) {\n let spain = document.getElementById('es');\n spain.setAttribute('selected', 'selected');\n }\n }\n }, 100);\n });\n const lang = this.localeTarget.value;\n window.location.href = `/${lang}/basket?basket=${basket}`;\n }\n \n }\n\n step2Agent() {\n let spinner = document.getElementById(\"spinner\");\n if (spinner) spinner.classList.remove(\"hidden\");\n let spinner_modal = document.getElementById(\"spinner_modal\");\n if (spinner_modal) spinner_modal.classList.remove(\"hidden\");\n const lang = this.localeTarget.value;\n window.location.href = `/${lang}/agents/baskets`;\n }\n\n toggleLogin(event) {\n let elem = document.getElementById(\"collapse\");\n let elem2 = document.getElementById(\"session\");\n elem.classList.toggle(\"hidden\");\n elem2.classList.toggle(\"hidden\");\n }\n\n showSpinner() {\n let spinner_modal = document.getElementById(\"spinner_modal\");\n if (spinner_modal) spinner_modal.classList.remove('hidden')\n }\n\n tours_layer() {\n document.removeEventListener(\"framed\", this.tours_layer);\n const layer = document.getElementById('tours-booking');\n if ( !layer )\n return;\n let toursData = [];\n setTimeout(() => {\n let tours = document.getElementsByClassName('tour-info');\n for( let i = 0; i < tours.length; i++ ) {\n const tour = JSON.parse(tours[i].dataset.tour);\n toursData.push(\n {\n item_id: tour.tour_id.toString(),\n item_name: tour.tour_name,\n currency: \"EUR\",\n index: i,\n item_category: tour.category_name,\n price: parseFloat(tour.price_plain),\n quantity: 1\n }\n );\n }\n let userInfo = document.getElementById('user-info');\n let user = {};\n if ( userInfo ) {\n userInfo = userInfo.dataset;\n user = {\n email: userInfo.email,\n first_name: userInfo.first_name,\n last_name: userInfo.last_name,\n phone_number: userInfo.phone_number,\n street: userInfo.street,\n city: userInfo.city,\n postal_code: userInfo.postal_code,\n country: userInfo.country\n }\n }\n\n dataLayer.push({ ecommerce: null }); // Clear the previous ecommerce object.\n dataLayer.push({\n event: 'view_item_list',\n ecommerce: {\n item_list_name: \"Tours\",\n items: toursData,\n enhanced_conversion_data: user\n }\n });\n console.log('DATALAYER - view_item_list', dataLayer);\n }, 100);\n }\n\n}","import { Controller } from \"stimulus\";\nimport { turbo_fetch } from \"../helpers\";\n\nexport default class extends Controller {\n static values = { tour: String };\n\n connect() {\n this.updateBasket();\n }\n\n pickBike(event) {\n let button = document.getElementById(\"addToCart\");\n let select = document.getElementById(\"pedal\");\n select.forEach((option) => {\n select.remove(option);\n });\n let bike = JSON.parse(event.target.dataset.bike);\n let price = document.getElementById(\"price\");\n let image = document.getElementById(\"image\");\n button.dataset.model = bike.modelId;\n button.dataset.total = bike.price;\n price.innerHTML = bike.price;\n\n image.src = bike.image;\n let form = document.getElementById(\"form\");\n if (bike.pedals) {\n form.classList.remove(\"hidden\");\n let selected = event.target.dataset.selected;\n let pedals = bike.pedals;\n pedals.forEach((pedal) => {\n let option = document.createElement(\"option\");\n option.text = pedal.pedalName;\n option.value = pedal.pedalId;\n if (pedal.pedalId == selected) {\n option.selected = \"selected\";\n }\n select.appendChild(option);\n });\n } else {\n form.classList.add(\"hidden\");\n }\n\n document.getElementById(\"modal\").classList.remove(\"hidden\");\n document.body.classList.add(\"overflow-hidden\");\n\n //document.getElementById('spinner_modal').classList.remove('hidden');\n }\n\n setBike(obj) {\n const lang = document.getElementById(\"locale\").value;\n let bike = null;\n if (obj && obj.modelId) {\n bike = obj.modelId;\n } else return;\n let date = obj.date.split(\"/\");\n date = new Date(date[2], date[1] - 1, date[0]);\n let pick = document.getElementById(\"select-\" + bike);\n let unpick = document.getElementById(\"unselect-\" + bike);\n let boxes = document.getElementsByClassName(\"bike-box\");\n let box = document.getElementById(\"bike-\" + bike);\n let tours = document.getElementById(\"tour-boxes\");\n boxes.forEach((element) => {\n element.classList.add(\"hidden\");\n });\n box.classList.remove(\"hidden\");\n pick.classList.add(\"hidden\");\n unpick.classList.remove(\"hidden\");\n unpick.dataset.resId = obj.resId;\n let dates = document.getElementsByClassName(\"tour-date\").length;\n for (let i = 0; i < dates; i++) {\n let elem = document.getElementById(`date-${i}`);\n let elem2 = document.getElementById(`tour-${i}`);\n elem.innerHTML = `${getWeekDay(date.getDay(),lang)} - ${date.toLocaleDateString()}`;\n elem2.dataset.date = date.toLocaleDateString();\n elem2.dataset.resId = obj.resId;\n date.setDate(date.getDate() + 1);\n }\n tours.classList.remove(\"hidden\");\n this.updateBasket();\n this.closeModal();\n\n function getWeekDay(day, lang) {\n let weekDays;\n switch (lang) {\n case \"es\":\n weekDays = [\n \"Domingo\",\n \"Lunes\",\n \"Martes\",\n \"Miércoles\",\n \"Jueves\",\n \"Viernes\",\n \"Sábado\",\n ];\n break;\n case \"de\":\n weekDays = [\n \"Sonntag\",\n \"Montag\",\n \"Dienstag\",\n \"Mittwoch\",\n \"Donnerstag\",\n \"Freitag\",\n \"Samstag\",\n ];\n break;\n default:\n weekDays = [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\",\n ];\n break;\n }\n return weekDays[day];\n }\n }\n\n undoBike(e) {\n let bike = null;\n let resId = null;\n if (e.target.dataset && e.target.dataset.bike) {\n bike = JSON.parse(e.target.dataset.bike);\n } else return;\n let pick = document.getElementById(\"select-\" + bike.modelId);\n let unpick = document.getElementById(\"unselect-\" + bike.modelId);\n let boxes = document.getElementsByClassName(\"bike-box\");\n let tours = document.getElementById(\"tour-boxes\");\n boxes.forEach((element) => {\n element.classList.remove(\"hidden\");\n });\n pick.classList.remove(\"hidden\");\n unpick.classList.add(\"hidden\");\n tours.classList.add(\"hidden\");\n if (e.target.dataset && e.target.dataset.resId) {\n resId = JSON.parse(e.target.dataset.resId);\n }\n let basket = sessionStorage.getItem(\"basket\");\n let url = `/booking_process/remove_from_basket?basket=${basket}&res_id=${resId}`;\n fetch(url).then((data) => {\n this.updateBasket();\n });\n }\n\n pickTour(e) {\n const lang = document.getElementById(\"locale\").value;\n let path = e.path || (e.composedPath && e.composedPath());\n path.forEach((el) => {\n if (el.dataset && el.dataset.date) {\n let tour = JSON.parse(\n document.getElementById(\"view-tour\").dataset.info\n );\n let stringDate = formatDate(el.dataset.date);\n let date = new Date(stringDate);\n let index = el.dataset.index;\n let week = [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"];\n let day = week[date.getDay()];\n let url = `/${lang}/booking_process/filter_tours?day=${day}&cat=${tour.tour_group_id}&locg_id=${tour.locg_id}&season=${tour.season_id}&index=${index}`;\n if (tour.duration - tour.num_sub_tours >= getTours(el))\n url += `&full=true`;\n turbo_fetch(url);\n fetch(url).then((response) => {\n let modal = document.getElementById(\"modal_list\");\n modal.classList.remove(\"hidden\");\n });\n }\n });\n\n function formatDate(stringDate) {\n let arrayDate = stringDate.split(\"/\");\n let day = arrayDate[0].padStart(2, \"0\");\n let month = arrayDate[1].padStart(2, \"0\");\n return `${arrayDate[2]}-${month}-${day}`;\n }\n\n function getTours(element) {\n let list = element.parentNode.parentNode;\n let notSelected = list.querySelectorAll(\n \":scope > turbo-frame > div[data-action]\"\n );\n return notSelected.length;\n }\n }\n\n addToCart(event) {\n let elem = document.getElementById(\"addToCart\");\n elem.classList.remove(\"hidden\");\n elem = elem.dataset;\n let tour_data = JSON.parse(elem.info);\n let errors = false;\n let name = document.getElementById(\"name\");\n let surname = document.getElementById(\"surname\");\n let weight = document.getElementById(\"weight\");\n let height = document.getElementById(\"height\");\n let pedal = document.getElementById(\"pedal\");\n let saddle = document.getElementById(\"saddle\");\n let date = document.getElementById(\"date\").value;\n let modelId = event.target.dataset.model;\n let tourId = event.target.dataset.tour;\n let total = event.target.dataset.total;\n let duration = event.target.dataset.duration;\n let form = document.getElementById(\"form\");\n let location = event.target.dataset.location;\n let spinner_modal = document.getElementById(\"spinner_modal\");\n\n if (!name.value) {\n name.classList.add(\"error\");\n errors = true;\n } else name.classList.remove(\"error\");\n\n if (!surname.value) {\n surname.classList.add(\"error\");\n errors = true;\n } else surname.classList.remove(\"error\");\n\n if (errors) return true;\n\n name = name.value;\n surname = surname.value;\n\n let url = `/booking_tours/add_to_basket?name=${name}&surname=${surname}&tour=${tourId}&model=${modelId}&loc=${location}&total=${total}&date=${date}&duration=${duration}`;\n\n if (form && !form.classList.contains(\"hidden\")) {\n if (weight) {\n if (weight.value) url += `&weight=${weight.value}`;\n else errors = true;\n }\n\n if (height) {\n if (height.value) url += `&height=${height.value}`;\n else errors = true;\n }\n\n if (pedal) {\n if (pedal.value) url += `&pedal=${pedal.value}`;\n else errors = true;\n }\n\n if (saddle) {\n if (saddle.value) url += `&saddle=${saddle.value}`;\n }\n\n if (errors) {\n return true;\n }\n }\n\n let basket = sessionStorage.getItem(\"basket\");\n\n if (basket && basket !== \"undefined\") url += `&basket=${basket}`;\n\n document.getElementById(\"addToCart\").classList.add(\"hidden\");\n document.getElementById(\"spinner-text\").classList.remove(\"hidden\");\n spinner_modal.classList.remove(\"hidden\");\n\n fetch(url)\n .then((response) => response.json())\n .then((data) => {\n if (!data || data.unavailable || data.resId == null) {\n document.getElementById(\"unavailable\").classList.remove(\"hidden\");\n document.getElementById(\"addToCart\").classList.remove(\"hidden\");\n spinner_modal.classList.add(\"hidden\");\n document.getElementById(\"spinner-text\").classList.add(\"hidden\");\n } else {\n sessionStorage.setItem(\"basket\", data.basket);\n\n let userInfo = document.getElementById(\"user-info\");\n let user = {};\n if (userInfo) {\n userInfo = userInfo.dataset;\n user = {\n email: userInfo.email,\n first_name: userInfo.first_name,\n last_name: userInfo.last_name,\n phone_number: userInfo.phone_number,\n street: userInfo.street,\n city: userInfo.city,\n postal_code: userInfo.postal_code,\n country: userInfo.country,\n };\n }\n dataLayer.push({ ecommerce: null }); // Clear the previous ecommerce object.\n dataLayer.push({\n event: \"add_to_cart\",\n ecommerce: {\n currency: \"EUR\",\n value: parseFloat(total),\n items: [\n {\n item_id: tour_data.tour_id.toString(),\n item_name: tour_data.tour_name,\n index: 0,\n item_category: tour_data.category_name,\n location_id: tour_data.loc_id.toString(),\n price: parseFloat(total),\n quantity: 1,\n },\n ],\n enhanced_conversion_data: user,\n },\n });\n console.log(\"DATALAYER - add_to_cart\", dataLayer);\n }\n if (spinner_modal) spinner_modal.classList.add(\"hidden\");\n document.getElementById(\"spinner-text\").classList.add(\"hidden\");\n\n let obj = {\n modelId: data.modelId,\n resId: data.resId,\n date: date,\n };\n this.setBike(obj);\n })\n .catch((error) => {\n if (spinner_modal) spinner_modal.classList.add(\"hidden\");\n document.getElementById(\"spinner-text\").classList.add(\"hidden\");\n console.error(error);\n document.getElementById(\"addToCart\").classList.remove(\"hidden\");\n });\n }\n\n addToCartAgent(event) {\n let elem = document.getElementById(\"addToCart\");\n elem.classList.remove(\"hidden\");\n elem = elem.dataset;\n let tour_data = JSON.parse(elem.info);\n let errors = false;\n let name = document.getElementById(\"name\");\n let surname = document.getElementById(\"surname\");\n let weight = document.getElementById(\"weight\");\n let height = document.getElementById(\"height\");\n let pedal = document.getElementById(\"pedal\");\n let saddle = document.getElementById(\"saddle\");\n let date = document.getElementById(\"date\").value;\n let modelId = event.target.dataset.model;\n let tourId = event.target.dataset.tour;\n let total = event.target.dataset.total;\n let duration = event.target.dataset.duration;\n let form = document.getElementById(\"form\");\n let location = event.target.dataset.location;\n let spinner_modal = document.getElementById(\"spinner_modal\");\n let mail = document.getElementById(\"rider-mail\");\n let phone = document.getElementById(\"rider-phone\");\n\n if (!name.value) {\n name.classList.add(\"error\");\n errors = true;\n } else name.classList.remove(\"error\");\n\n if (!surname.value) {\n surname.classList.add(\"error\");\n errors = true;\n } else surname.classList.remove(\"error\");\n\n if (!mail.value) {\n mail.classList.add(\"error\");\n errors = true;\n } else mail.classList.remove(\"error\");\n\n if (!phone.value) {\n phone.classList.add(\"error\");\n errors = true;\n } else phone.classList.remove(\"error\");\n\n if (errors) return true;\n\n name = name.value;\n surname = surname.value;\n phone = phone.value;\n mail = mail.value\n\n let url = `/agents/add_tour_to_basket?name=${name}&surname=${surname}&tour=${tourId}&model=${modelId}&loc=${location}&total=${total}&date=${date}&mail=${mail}&phone=${phone}`;\n\n if (form && !form.classList.contains(\"hidden\")) {\n if (weight) {\n if (weight.value) url += `&weight=${weight.value}`;\n else errors = true;\n }\n\n if (height) {\n if (height.value) url += `&height=${height.value}`;\n else errors = true;\n }\n\n if (pedal) {\n if (pedal.value) url += `&pedal=${pedal.value}`;\n else errors = true;\n }\n\n if (saddle) {\n if (saddle.value) url += `&saddle=${saddle.value}`;\n }\n\n if (errors) {\n return true;\n }\n }\n\n if ( spinner_modal ) spinner_modal.classList.remove('hidden');\n\n //let basket = sessionStorage.getItem(\"basket\");\n //if (basket && basket !== \"undefined\") url += `&basket=${basket}`;\n\n document.getElementById(\"addToCart\").classList.add(\"hidden\");\n document.getElementById(\"spinner-text\").classList.remove(\"hidden\");\n spinner_modal.classList.remove(\"hidden\");\n\n fetch(url)\n .then((response) => response.json())\n .then((data) => {\n if (!data || data.unavailable) {\n document.getElementById(\"unavailable\").classList.remove(\"hidden\");\n document.getElementById(\"addToCart\").classList.remove(\"hidden\");\n spinner_modal.classList.add(\"hidden\");\n document.getElementById(\"spinner-text\").classList.add(\"hidden\");\n } else {\n \n let storedBasket = sessionStorage.getItem(\"baskets\");\n let basketArray = storedBasket ? JSON.parse(storedBasket) : [];\n basketArray.push(data.basket);\n let updatedBasket = JSON.stringify(basketArray);\n sessionStorage.setItem(\"baskets\", updatedBasket);\n\n let userInfo = document.getElementById(\"user-info\");\n let user = {};\n if (userInfo) {\n userInfo = userInfo.dataset;\n user = {\n email: userInfo.email,\n first_name: userInfo.first_name,\n last_name: userInfo.last_name,\n phone_number: userInfo.phone_number,\n street: userInfo.street,\n city: userInfo.city,\n postal_code: userInfo.postal_code,\n country: userInfo.country,\n };\n }\n dataLayer.push({ ecommerce: null }); // Clear the previous ecommerce object.\n dataLayer.push({\n event: \"add_to_cart\",\n ecommerce: {\n currency: \"EUR\",\n value: parseFloat(total),\n items: [\n {\n item_id: tour_data.tour_id.toString(),\n item_name: tour_data.tour_name,\n index: 0,\n item_category: tour_data.category_name,\n location_id: tour_data.loc_id.toString(),\n price: parseFloat(total),\n quantity: 1,\n },\n ],\n enhanced_conversion_data: user,\n },\n });\n console.log(\"DATALAYER - add_to_cart\", dataLayer);\n }\n if (spinner_modal) spinner_modal.classList.add(\"hidden\");\n document.getElementById(\"spinner-text\").classList.add(\"hidden\");\n\n let obj = {\n modelId: data.modelId,\n resId: data.resId,\n date: date,\n };\n this.setBike(obj);\n })\n .catch((error) => {\n if (spinner_modal) spinner_modal.classList.add(\"hidden\");\n document.getElementById(\"spinner-text\").classList.add(\"hidden\");\n console.error(error);\n document.getElementById(\"addToCart\").classList.remove(\"hidden\");\n });\n }\n\n addSubTour(e) {\n const lang = document.getElementById(\"locale\").value;\n let tour = e.target.dataset.tour;\n let index = e.target.dataset.index;\n let resId = document.getElementById(`tour-${index}`).dataset.resId;\n let date = formatDate(\n document.getElementById(`tour-${index}`).dataset.date\n );\n let url = `/${lang}/tours-week/${resId}/add/${index}/${tour}/${date}`;\n\n fetch(url)\n .then((response) => response.json())\n .then((data) => {\n if (!data || data.unavailable) {\n document.getElementById(\"modal_list\").classList.add(\"hidden\");\n document.getElementById(\"unavailable\").classList.remove(\"hidden\");\n document.getElementById(\"modal\").classList.remove(\"hidden\");\n document.getElementById(\"spinner_modal\").classList.add(\"hidden\");\n } else {\n this.closeModalList();\n turbo_fetch(\n `/${lang}/tours-week/update_box/${data.index}/${data.res_id}/${data.tour_id}`\n );\n }\n })\n .catch((error) => {\n console.error(\"Error fetching data:\", error);\n });\n\n function formatDate(stringDate) {\n let arrayDate = stringDate.split(\"/\");\n let day = arrayDate[0].padStart(2, \"0\");\n let month = arrayDate[1].padStart(2, \"0\");\n return `${arrayDate[2]}-${month}-${day}`;\n }\n }\n\n clearSubTour(e) {\n let tour = e.target.dataset.tour;\n let index = e.target.dataset.index;\n let resId = e.target.dataset.resid;\n //let resId = getButton().dataset.resId;\n let url = `/tours-week/${resId}/remove/${index}/${tour}`;\n\n fetch(url)\n .then((response) => response.json())\n .then((data) => {\n if (data && !data.unavailable) {\n let url2 = `/tours-week/update_box/${data.index}/${data.res_id}/${data.tour_id}`;\n turbo_fetch(url2);\n fetch(url2).then((response) => {\n document.getElementById(`tour-${data.index}`).dataset.date =\n document\n .getElementById(`date-${data.index}`)\n .innerHTML.split(\" - \")[1];\n });\n }\n })\n .catch((error) => {\n console.error(\"Error fetching data:\", error);\n });\n\n function getButton() {\n var btns = document.querySelectorAll('[id^=\"unselect-\"]');\n var shownBtn = Array.from(btns).filter(function (btn) {\n return !btn.classList.contains(\"hidden\") && btn.dataset.resId !== \"\";\n });\n return shownBtn[0];\n }\n }\n\n closeModal(event) {\n document.getElementById(\"modal\").classList.add(\"hidden\");\n document.body.classList.remove(\"overflow-hidden\");\n document.getElementById(\"addToCart\").classList.remove(\"hidden\");\n }\n\n closeModalList(event) {\n document.getElementById(\"modal_list\").classList.add(\"hidden\");\n document.body.classList.remove(\"overflow-hidden\");\n //document.getElementById('addToCart').classList.remove('hidden');\n //document.getElementById('close').classList.add('hidden');\n }\n\n closeUnavailable(event) {\n document.getElementById(\"unavailable\").classList.add(\"hidden\");\n }\n\n updateBasket() {\n let basket = sessionStorage.getItem(\"basket\");\n let count = 0;\n if (basket) {\n const url = `/booking_process/get_basket/${basket}`;\n fetch(url)\n .then((response) => response.json())\n .then((data) => {\n if (data) {\n data.OrderPosition.forEach((element) => {\n if (element.prodType == \"R\" || element.prodType == \"T\") count++;\n });\n document.getElementById(\"cart1\").innerHTML = count;\n document.getElementById(\"cart2\").innerHTML = count;\n }\n });\n } else {\n let baskets = sessionStorage.getItem(\"baskets\");\n if (baskets) {\n count = JSON.parse(baskets).length;\n document.getElementById(\"cart1\").innerHTML = count;\n document.getElementById(\"cart2\").innerHTML = count;\n }\n }\n }\n\n checkout() {\n let basket = sessionStorage.getItem(\"basket\");\n const lang = document.getElementById(\"locale\").value;\n const isle = document.getElementById(\"current-island\");\n let island = \"gran-canaria\";\n switch (isle.innerText) {\n case \"GRAN CANARIA\":\n island = \"gran-canaria\";\n break;\n case \"TENERIFE\":\n island = \"tenerife\";\n break;\n case \"LANZAROTE\":\n island = \"lanzarote\";\n break;\n default:\n island = \"gran-canaria\";\n }\n window.location.href = `/${lang}/${island}/basket?basket=${basket}`;\n }\n\n checkoutAgent() {\n const lang = document.getElementById(\"locale\").value;\n const isle = document.getElementById(\"current-island\");\n let island = \"gran-canaria\";\n switch (isle.innerText) {\n case \"GRAN CANARIA\":\n island = \"gran-canaria\";\n break;\n case \"TENERIFE\":\n island = \"tenerife\";\n break;\n case \"LANZAROTE\":\n island = \"lanzarote\";\n break;\n default:\n island = \"gran-canaria\";\n }\n window.location.href = `/${lang}/${island}/agents/baskets`;\n }\n\n toggleLogin(event) {\n let elem = document.getElementById(\"collapse\");\n let elem2 = document.getElementById(\"session\");\n elem.classList.toggle(\"hidden\");\n elem2.classList.toggle(\"hidden\");\n }\n\n showSpinner() {\n let spinner_modal = document.getElementById(\"spinner_modal\");\n if (spinner_modal) spinner_modal.classList.remove(\"hidden\");\n }\n}\n","import { Turbo } from \"@hotwired/turbo-rails\";\nimport { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n connect() {\n let items = [];\n const tmp = document.getElementById('basket');\n const basket = JSON.parse(JSON.parse(tmp.dataset.basket));\n const order = basket.OrderPosition;\n let total = 0.0;\n let userInfo = document.getElementById('user-info');\n let user = {};\n if ( userInfo ) {\n userInfo = userInfo.dataset;\n user = {\n email: userInfo.email,\n first_name: userInfo.first_name,\n last_name: userInfo.last_name,\n phone_number: userInfo.phone_number,\n street: userInfo.street,\n city: userInfo.city,\n postal_code: userInfo.postal_code,\n country: userInfo.country\n }\n }\n for ( let i = 0; i < order.length; i++ ) {\n total += parseFloat(order[i].listPricePerUnit);\n items.push({\n item_id: order[i].navItemNo.toString(),\n item_name: order[i].unitDescription,\n currency: \"EUR\",\n discount: parseFloat(order[i].discountPercent),\n index: i,\n item_category: order[i].prodType,\n item_list_name: \"Purchase\",\n price: order[i].listPricePerUnit,\n quantity: order[i].unitCount\n });\n }\n dataLayer.push({ ecommerce: null }); // Clear the previous ecommerce object.\n dataLayer.push({\n event: 'purchase',\n ecommerce: {\n transaction_id: basket.orderId.toString(),\n currency: \"EUR\",\n value: total,\n items: items,\n enhanced_conversion_data: user\n }\n });\n console.log('DATALAYER - purchase', dataLayer);\n document.getElementById('cart1').innerHTML = 0;\n sessionStorage.removeItem('basket');\n }\n}","import { Controller } from \"stimulus\"\n\nconst countries = { 'Germany': \"DE\", 'Austria': \"AT\", 'Switzerland': \"CH\", 'Sweden': \"SE\", 'Norway': \"NO\", 'Finland': \"FI\", 'Netherlands': \"NL\", 'Belgium': \"BE\", 'Denmark': \"DK\", 'United Kingdom': \"GB\", 'Spain': \"ES\", 'Portugal': \"PT\", 'Italy': \"IT\", 'France': \"FR\", 'Afghanistan': \"AF\", 'Aland Islands': \"AX\", 'Albania': \"AL\", 'Algeria': \"DZ\", 'American Samoa': \"AS\", 'Andorra': \"AD\", 'Angola': \"AO\", 'Anguilla': \"AI\", 'Antarctica': \"AQ\", 'Antigua and Barbuda': \"AG\", 'Argentina': \"AR\", 'Armenia': \"AM\", 'Aruba': \"AW\", 'Australia': \"AU\", 'Azerbaijan': \"AZ\", 'Bahamas': \"BS\", 'Bahrain': \"BH\", 'Bangladesh': \"BD\", 'Barbados': \"BB\", 'Belarus': \"BY\", 'Belize': \"BZ\", 'Benin': \"BJ\", 'Bermuda': \"BM\", 'Bhutan': \"BT\", 'Bolivia': \"BO\", 'Bonaire, Saint Eustatius and Saba': \"BQ\", 'Bosnia and Herzegovina': \"BA\", 'Botswana': \"BW\", 'Bouvet Island': \"BV\", 'Brazil': \"BR\", 'British Indian Ocean Territory': \"IO\", 'British Virgin Islands': \"VG\", 'Brunei': \"BN\", 'Bulgaria': \"BG\", 'Burkina Faso': \"BF\", 'Burundi': \"BI\", 'Cambodia': \"KH\", 'Cameroon': \"CM\", 'Canada': \"CA\", 'Cape Verde': \"CV\", 'Cayman Islands': \"KY\", 'Central African Republic': \"CF\", 'Chad': \"TD\", 'Chile': \"CL\", 'China': \"CN\", 'Christmas Island': \"CX\", 'Cocos Islands': \"CC\", 'Colombia': \"CO\", 'Comoros': \"KM\", 'Cook Islands': \"CK\", 'Costa Rica': \"CR\", 'Croatia': \"HR\", 'Cuba': \"CU\", 'Curacao': \"CW\", 'Cyprus': \"CY\", 'Czech Republic': \"CZ\", 'Democratic Republic of the Congo': \"CD\", 'Djibouti': \"DJ\", 'Dominica': \"DM\", 'Dominican Republic': \"DO\", 'East Timor': \"TL\", 'Ecuador': \"EC\", 'Egypt': \"EG\", 'El Salvador': \"SV\", 'Equatorial Guinea': \"GQ\", 'Eritrea': \"ER\", 'Estonia': \"EE\", 'Ethiopia': \"ET\", 'Falkland Islands': \"FK\", 'Faroe Islands': \"FO\", 'Fiji': \"FJ\", 'French Guiana': \"GF\", 'French Polynesia': \"PF\", 'French Southern Territories': \"TF\", 'Gabon': \"GA\", 'Gambia': \"GM\", 'Georgia': \"GE\", 'Ghana': \"GH\", 'Gibraltar': \"GI\", 'Greece': \"GR\", 'Greenland': \"GL\", 'Grenada': \"GD\", 'Guadeloupe': \"GP\", 'Guam': \"GU\", 'Guatemala': \"GT\", 'Guernsey': \"GG\", 'Guinea': \"GN\", 'Guinea-Bissau': \"GW\", 'Guyana': \"GY\", 'Haiti': \"HT\", 'Heard Island and McDonald Islands': \"HM\", 'Honduras': \"HN\", 'Hong Kong': \"HK\", 'Hungary': \"HU\", 'Iceland': \"IS\", 'India': \"IN\", 'Indonesia': \"ID\", 'Iran': \"IR\", 'Iraq': \"IQ\", 'Ireland': \"IE\", 'Isle of Man': \"IM\", 'Israel': \"IL\", 'Ivory Coast': \"CI\", 'Jamaica': \"JM\", 'Japan': \"JP\", 'Jersey': \"JE\", 'Jordan': \"JO\", 'Kazakhstan': \"KZ\", 'Kenya': \"KE\", 'Kiribati': \"KI\", 'Kosovo': \"XK\", 'Kuwait': \"KW\", 'Kyrgyzstan': \"KG\", 'Laos': \"LA\", 'Latvia': \"LV\", 'Lebanon': \"LB\", 'Lesotho': \"LS\", 'Liberia': \"LR\", 'Libya': \"LY\", 'Liechtenstein': \"LI\", 'Lithuania': \"LT\", 'Luxembourg': \"LU\", 'Macao': \"MO\", 'Macedonia': \"MK\", 'Madagascar': \"MG\", 'Malawi': \"MW\", 'Malaysia': \"MY\", 'Maldives': \"MV\", 'Mali': \"ML\", 'Malta': \"MT\", 'Marshall Islands': \"MH\", 'Martinique': \"MQ\", 'Mauritania': \"MR\", 'Mauritius': \"MU\", 'Mayotte': \"YT\", 'Mexico': \"MX\", 'Micronesia': \"FM\", 'Moldova': \"MD\", 'Monaco': \"MC\", 'Mongolia': \"MN\", 'Montenegro': \"ME\", 'Montserrat': \"MS\", 'Morocco': \"MA\", 'Mozambique': \"MZ\", 'Myanmar': \"MM\", 'Namibia': \"NA\", 'Nauru': \"NR\", 'Nepal': \"NP\", 'New Caledonia': \"NC\", 'New Zealand': \"NZ\", 'Nicaragua': \"NI\", 'Niger': \"NE\", 'Nigeria': \"NG\", 'Niue': \"NU\", 'Norfolk Island': \"NF\", 'North Korea': \"KP\", 'Northern Mariana Islands': \"MP\", 'Oman': \"OM\", 'Pakistan': \"PK\", 'Palau': \"PW\", 'Palestinian Territory': \"PS\", 'Panama': \"PA\", 'Papua New Guinea': \"PG\", 'Paraguay': \"PY\", 'Peru': \"PE\", 'Philippines': \"PH\", 'Pitcairn': \"PN\", 'Poland': \"PL\", 'Puerto Rico': \"PR\", 'Qatar': \"QA\", 'Republic of the Congo': \"CG\", 'Reunion': \"RE\", 'Romania': \"RO\", 'Russia': \"RU\", 'Rwanda': \"RW\", 'Saint Barthelemy': \"BL\", 'Saint Helena': \"SH\", 'Saint Kitts and Nevis': \"KN\", 'Saint Lucia': \"LC\", 'Saint Martin': \"MF\", 'Saint Pierre and Miquelon': \"PM\", 'Saint Vincent and the Grenadines': \"VC\", 'Samoa': \"WS\", 'San Marino': \"SM\", 'Sao Tome and Principe': \"ST\", 'Saudi Arabia': \"SA\", 'Senegal': \"SN\", 'Serbia': \"RS\", 'Seychelles': \"SC\", 'Sierra Leone': \"SL\", 'Singapore': \"SG\", 'Sint Maarten': \"SX\", 'Slovakia': \"SK\", 'Slovenia': \"SI\", 'Solomon Islands': \"SB\", 'Somalia': \"SO\", 'South Africa': \"ZA\", 'South Georgia and the South Sandwich Islands': \"GS\", 'South Korea': \"KR\", 'South Sudan': \"SS\", 'Sri Lanka': \"LK\", 'Sudan': \"SD\", 'Suriname': \"SR\", 'Svalbard and Jan Mayen': \"SJ\", 'Swaziland': \"SZ\", 'Syria': \"SY\", 'Taiwan': \"TW\", 'Tajikistan': \"TJ\", 'Tanzania': \"TZ\", 'Thailand': \"TH\", 'Togo': \"TG\", 'Tokelau': \"TK\", 'Tonga': \"TO\", 'Trinidad and Tobago': \"TT\", 'Tunisia': \"TN\", 'Turkey': \"TR\", 'Turkmenistan': \"TM\", 'Turks and Caicos Islands': \"TC\", 'Tuvalu': \"TV\", 'U.S. Virgin Islands': \"VI\", 'Uganda': \"UG\", 'Ukraine': \"UA\", 'United Arab Emirates': \"AE\", 'United States': \"US\", 'United States Minor Outlying Islands': \"UM\", 'Uruguay': \"UY\", 'Uzbekistan': \"UZ\", 'Vanuatu': \"VU\", 'Vatican': \"VA\", 'Venezuela': \"VE\", 'Vietnam': \"VN\", 'Wallis and Futuna': \"WF\", 'Western Sahara': \"EH\", 'Yemen': \"YE\", 'Zambia': \"ZM\", 'Zimbabwe': \"ZW\"};\nconst mobiles = [\n {\n \"name\": \"Germany\",\n \"dial_code\": \"+49\",\n \"code\": \"DE\"\n },\n {\n \"name\": \"Austria\",\n \"dial_code\": \"+43\",\n \"code\": \"AT\"\n },\n {\n \"name\": \"Switzerland\",\n \"dial_code\": \"+41\",\n \"code\": \"CH\"\n },\n {\n \"name\": \"Sweden\",\n \"dial_code\": \"+46\",\n \"code\": \"SE\"\n },\n {\n \"name\": \"Norway\",\n \"dial_code\": \"+47\",\n \"code\": \"NO\"\n },\n {\n \"name\": \"Finland\",\n \"dial_code\": \"+358\",\n \"code\": \"FI\"\n },\n {\n \"name\": \"Netherlands\",\n \"dial_code\": \"+31\",\n \"code\": \"NL\"\n },\n {\n \"name\": \"Belgium\",\n \"dial_code\": \"+32\",\n \"code\": \"BE\"\n },\n {\n \"name\": \"Denmark\",\n \"dial_code\": \"+45\",\n \"code\": \"DK\"\n },\n {\n \"name\": \"United Kingdom\",\n \"dial_code\": \"+44\",\n \"code\": \"GB\"\n },\n {\n \"name\": \"Spain\",\n \"dial_code\": \"+34\",\n \"code\": \"ES\"\n },\n {\n \"name\": \"Portugal\",\n \"dial_code\": \"+351\",\n \"code\": \"PT\"\n },\n {\n \"name\": \"Italy\",\n \"dial_code\": \"+39\",\n \"code\": \"IT\"\n },\n {\n \"name\": \"France\",\n \"dial_code\": \"+33\",\n \"code\": \"FR\"\n },\n {\n \"name\": \"Afghanistan\",\n \"dial_code\": \"+93\",\n \"code\": \"AF\"\n },\n {\n \"name\": \"Aland Islands\",\n \"dial_code\": \"+358\",\n \"code\": \"AX\"\n },\n {\n \"name\": \"Albania\",\n \"dial_code\": \"+355\",\n \"code\": \"AL\"\n },\n {\n \"name\": \"Algeria\",\n \"dial_code\": \"+213\",\n \"code\": \"DZ\"\n },\n {\n \"name\": \"AmericanSamoa\",\n \"dial_code\": \"+1684\",\n \"code\": \"AS\"\n },\n {\n \"name\": \"Andorra\",\n \"dial_code\": \"+376\",\n \"code\": \"AD\"\n },\n {\n \"name\": \"Angola\",\n \"dial_code\": \"+244\",\n \"code\": \"AO\"\n },\n {\n \"name\": \"Anguilla\",\n \"dial_code\": \"+1264\",\n \"code\": \"AI\"\n },\n {\n \"name\": \"Antarctica\",\n \"dial_code\": \"+672\",\n \"code\": \"AQ\"\n },\n {\n \"name\": \"Antigua and Barbuda\",\n \"dial_code\": \"+1268\",\n \"code\": \"AG\"\n },\n {\n \"name\": \"Argentina\",\n \"dial_code\": \"+54\",\n \"code\": \"AR\"\n },\n {\n \"name\": \"Armenia\",\n \"dial_code\": \"+374\",\n \"code\": \"AM\"\n },\n {\n \"name\": \"Aruba\",\n \"dial_code\": \"+297\",\n \"code\": \"AW\"\n },\n {\n \"name\": \"Australia\",\n \"dial_code\": \"+61\",\n \"code\": \"AU\"\n },\n {\n \"name\": \"Azerbaijan\",\n \"dial_code\": \"+994\",\n \"code\": \"AZ\"\n },\n {\n \"name\": \"Bahamas\",\n \"dial_code\": \"+1242\",\n \"code\": \"BS\"\n },\n {\n \"name\": \"Bahrain\",\n \"dial_code\": \"+973\",\n \"code\": \"BH\"\n },\n {\n \"name\": \"Bangladesh\",\n \"dial_code\": \"+880\",\n \"code\": \"BD\"\n },\n {\n \"name\": \"Barbados\",\n \"dial_code\": \"+1246\",\n \"code\": \"BB\"\n },\n {\n \"name\": \"Belarus\",\n \"dial_code\": \"+375\",\n \"code\": \"BY\"\n },\n {\n \"name\": \"Belize\",\n \"dial_code\": \"+501\",\n \"code\": \"BZ\"\n },\n {\n \"name\": \"Benin\",\n \"dial_code\": \"+229\",\n \"code\": \"BJ\"\n },\n {\n \"name\": \"Bermuda\",\n \"dial_code\": \"+1441\",\n \"code\": \"BM\"\n },\n {\n \"name\": \"Bhutan\",\n \"dial_code\": \"+975\",\n \"code\": \"BT\"\n },\n {\n \"name\": \"Bolivia, Plurinational State of\",\n \"dial_code\": \"+591\",\n \"code\": \"BO\"\n },\n {\n \"name\": \"Bosnia and Herzegovina\",\n \"dial_code\": \"+387\",\n \"code\": \"BA\"\n },\n {\n \"name\": \"Botswana\",\n \"dial_code\": \"+267\",\n \"code\": \"BW\"\n },\n {\n \"name\": \"Brazil\",\n \"dial_code\": \"+55\",\n \"code\": \"BR\"\n },\n {\n \"name\": \"British Indian Ocean Territory\",\n \"dial_code\": \"+246\",\n \"code\": \"IO\"\n },\n {\n \"name\": \"Brunei Darussalam\",\n \"dial_code\": \"+673\",\n \"code\": \"BN\"\n },\n {\n \"name\": \"Bulgaria\",\n \"dial_code\": \"+359\",\n \"code\": \"BG\"\n },\n {\n \"name\": \"Burkina Faso\",\n \"dial_code\": \"+226\",\n \"code\": \"BF\"\n },\n {\n \"name\": \"Burundi\",\n \"dial_code\": \"+257\",\n \"code\": \"BI\"\n },\n {\n \"name\": \"Cambodia\",\n \"dial_code\": \"+855\",\n \"code\": \"KH\"\n },\n {\n \"name\": \"Cameroon\",\n \"dial_code\": \"+237\",\n \"code\": \"CM\"\n },\n {\n \"name\": \"Canada\",\n \"dial_code\": \"+1\",\n \"code\": \"CA\"\n },\n {\n \"name\": \"Cape Verde\",\n \"dial_code\": \"+238\",\n \"code\": \"CV\"\n },\n {\n \"name\": \"Cayman Islands\",\n \"dial_code\": \"+ 345\",\n \"code\": \"KY\"\n },\n {\n \"name\": \"Central African Republic\",\n \"dial_code\": \"+236\",\n \"code\": \"CF\"\n },\n {\n \"name\": \"Chad\",\n \"dial_code\": \"+235\",\n \"code\": \"TD\"\n },\n {\n \"name\": \"Chile\",\n \"dial_code\": \"+56\",\n \"code\": \"CL\"\n },\n {\n \"name\": \"China\",\n \"dial_code\": \"+86\",\n \"code\": \"CN\"\n },\n {\n \"name\": \"Christmas Island\",\n \"dial_code\": \"+61\",\n \"code\": \"CX\"\n },\n {\n \"name\": \"Cocos (Keeling) Islands\",\n \"dial_code\": \"+61\",\n \"code\": \"CC\"\n },\n {\n \"name\": \"Colombia\",\n \"dial_code\": \"+57\",\n \"code\": \"CO\"\n },\n {\n \"name\": \"Comoros\",\n \"dial_code\": \"+269\",\n \"code\": \"KM\"\n },\n {\n \"name\": \"Congo\",\n \"dial_code\": \"+242\",\n \"code\": \"CG\"\n },\n {\n \"name\": \"Congo, The Democratic Republic of the Congo\",\n \"dial_code\": \"+243\",\n \"code\": \"CD\"\n },\n {\n \"name\": \"Cook Islands\",\n \"dial_code\": \"+682\",\n \"code\": \"CK\"\n },\n {\n \"name\": \"Costa Rica\",\n \"dial_code\": \"+506\",\n \"code\": \"CR\"\n },\n {\n \"name\": \"Cote d'Ivoire\",\n \"dial_code\": \"+225\",\n \"code\": \"CI\"\n },\n {\n \"name\": \"Croatia\",\n \"dial_code\": \"+385\",\n \"code\": \"HR\"\n },\n {\n \"name\": \"Cuba\",\n \"dial_code\": \"+53\",\n \"code\": \"CU\"\n },\n {\n \"name\": \"Cyprus\",\n \"dial_code\": \"+357\",\n \"code\": \"CY\"\n },\n {\n \"name\": \"Czech Republic\",\n \"dial_code\": \"+420\",\n \"code\": \"CZ\"\n },\n {\n \"name\": \"Djibouti\",\n \"dial_code\": \"+253\",\n \"code\": \"DJ\"\n },\n {\n \"name\": \"Dominica\",\n \"dial_code\": \"+1767\",\n \"code\": \"DM\"\n },\n {\n \"name\": \"Dominican Republic\",\n \"dial_code\": \"+1849\",\n \"code\": \"DO\"\n },\n {\n \"name\": \"Ecuador\",\n \"dial_code\": \"+593\",\n \"code\": \"EC\"\n },\n {\n \"name\": \"Egypt\",\n \"dial_code\": \"+20\",\n \"code\": \"EG\"\n },\n {\n \"name\": \"El Salvador\",\n \"dial_code\": \"+503\",\n \"code\": \"SV\"\n },\n {\n \"name\": \"Equatorial Guinea\",\n \"dial_code\": \"+240\",\n \"code\": \"GQ\"\n },\n {\n \"name\": \"Eritrea\",\n \"dial_code\": \"+291\",\n \"code\": \"ER\"\n },\n {\n \"name\": \"Estonia\",\n \"dial_code\": \"+372\",\n \"code\": \"EE\"\n },\n {\n \"name\": \"Ethiopia\",\n \"dial_code\": \"+251\",\n \"code\": \"ET\"\n },\n {\n \"name\": \"Falkland Islands (Malvinas)\",\n \"dial_code\": \"+500\",\n \"code\": \"FK\"\n },\n {\n \"name\": \"Faroe Islands\",\n \"dial_code\": \"+298\",\n \"code\": \"FO\"\n },\n {\n \"name\": \"Fiji\",\n \"dial_code\": \"+679\",\n \"code\": \"FJ\"\n },\n {\n \"name\": \"French Guiana\",\n \"dial_code\": \"+594\",\n \"code\": \"GF\"\n },\n {\n \"name\": \"French Polynesia\",\n \"dial_code\": \"+689\",\n \"code\": \"PF\"\n },\n {\n \"name\": \"Gabon\",\n \"dial_code\": \"+241\",\n \"code\": \"GA\"\n },\n {\n \"name\": \"Gambia\",\n \"dial_code\": \"+220\",\n \"code\": \"GM\"\n },\n {\n \"name\": \"Georgia\",\n \"dial_code\": \"+995\",\n \"code\": \"GE\"\n },\n {\n \"name\": \"Ghana\",\n \"dial_code\": \"+233\",\n \"code\": \"GH\"\n },\n {\n \"name\": \"Gibraltar\",\n \"dial_code\": \"+350\",\n \"code\": \"GI\"\n },\n {\n \"name\": \"Greece\",\n \"dial_code\": \"+30\",\n \"code\": \"GR\"\n },\n {\n \"name\": \"Greenland\",\n \"dial_code\": \"+299\",\n \"code\": \"GL\"\n },\n {\n \"name\": \"Grenada\",\n \"dial_code\": \"+1473\",\n \"code\": \"GD\"\n },\n {\n \"name\": \"Guadeloupe\",\n \"dial_code\": \"+590\",\n \"code\": \"GP\"\n },\n {\n \"name\": \"Guam\",\n \"dial_code\": \"+1671\",\n \"code\": \"GU\"\n },\n {\n \"name\": \"Guatemala\",\n \"dial_code\": \"+502\",\n \"code\": \"GT\"\n },\n {\n \"name\": \"Guernsey\",\n \"dial_code\": \"+44\",\n \"code\": \"GG\"\n },\n {\n \"name\": \"Guinea\",\n \"dial_code\": \"+224\",\n \"code\": \"GN\"\n },\n {\n \"name\": \"Guinea-Bissau\",\n \"dial_code\": \"+245\",\n \"code\": \"GW\"\n },\n {\n \"name\": \"Guyana\",\n \"dial_code\": \"+595\",\n \"code\": \"GY\"\n },\n {\n \"name\": \"Haiti\",\n \"dial_code\": \"+509\",\n \"code\": \"HT\"\n },\n {\n \"name\": \"Holy See (Vatican City State)\",\n \"dial_code\": \"+379\",\n \"code\": \"VA\"\n },\n {\n \"name\": \"Honduras\",\n \"dial_code\": \"+504\",\n \"code\": \"HN\"\n },\n {\n \"name\": \"Hong Kong\",\n \"dial_code\": \"+852\",\n \"code\": \"HK\"\n },\n {\n \"name\": \"Hungary\",\n \"dial_code\": \"+36\",\n \"code\": \"HU\"\n },\n {\n \"name\": \"Iceland\",\n \"dial_code\": \"+354\",\n \"code\": \"IS\"\n },\n {\n \"name\": \"India\",\n \"dial_code\": \"+91\",\n \"code\": \"IN\"\n },\n {\n \"name\": \"Indonesia\",\n \"dial_code\": \"+62\",\n \"code\": \"ID\"\n },\n {\n \"name\": \"Iran, Islamic Republic of Persian Gulf\",\n \"dial_code\": \"+98\",\n \"code\": \"IR\"\n },\n {\n \"name\": \"Iraq\",\n \"dial_code\": \"+964\",\n \"code\": \"IQ\"\n },\n {\n \"name\": \"Ireland\",\n \"dial_code\": \"+353\",\n \"code\": \"IE\"\n },\n {\n \"name\": \"Isle of Man\",\n \"dial_code\": \"+44\",\n \"code\": \"IM\"\n },\n {\n \"name\": \"Israel\",\n \"dial_code\": \"+972\",\n \"code\": \"IL\"\n },\n {\n \"name\": \"Jamaica\",\n \"dial_code\": \"+1876\",\n \"code\": \"JM\"\n },\n {\n \"name\": \"Japan\",\n \"dial_code\": \"+81\",\n \"code\": \"JP\"\n },\n {\n \"name\": \"Jersey\",\n \"dial_code\": \"+44\",\n \"code\": \"JE\"\n },\n {\n \"name\": \"Jordan\",\n \"dial_code\": \"+962\",\n \"code\": \"JO\"\n },\n {\n \"name\": \"Kazakhstan\",\n \"dial_code\": \"+77\",\n \"code\": \"KZ\"\n },\n {\n \"name\": \"Kenya\",\n \"dial_code\": \"+254\",\n \"code\": \"KE\"\n },\n {\n \"name\": \"Kiribati\",\n \"dial_code\": \"+686\",\n \"code\": \"KI\"\n },\n {\n \"name\": \"Korea, Democratic People's Republic of Korea\",\n \"dial_code\": \"+850\",\n \"code\": \"KP\"\n },\n {\n \"name\": \"Korea, Republic of South Korea\",\n \"dial_code\": \"+82\",\n \"code\": \"KR\"\n },\n {\n \"name\": \"Kuwait\",\n \"dial_code\": \"+965\",\n \"code\": \"KW\"\n },\n {\n \"name\": \"Kyrgyzstan\",\n \"dial_code\": \"+996\",\n \"code\": \"KG\"\n },\n {\n \"name\": \"Laos\",\n \"dial_code\": \"+856\",\n \"code\": \"LA\"\n },\n {\n \"name\": \"Latvia\",\n \"dial_code\": \"+371\",\n \"code\": \"LV\"\n },\n {\n \"name\": \"Lebanon\",\n \"dial_code\": \"+961\",\n \"code\": \"LB\"\n },\n {\n \"name\": \"Lesotho\",\n \"dial_code\": \"+266\",\n \"code\": \"LS\"\n },\n {\n \"name\": \"Liberia\",\n \"dial_code\": \"+231\",\n \"code\": \"LR\"\n },\n {\n \"name\": \"Libyan Arab Jamahiriya\",\n \"dial_code\": \"+218\",\n \"code\": \"LY\"\n },\n {\n \"name\": \"Liechtenstein\",\n \"dial_code\": \"+423\",\n \"code\": \"LI\"\n },\n {\n \"name\": \"Lithuania\",\n \"dial_code\": \"+370\",\n \"code\": \"LT\"\n },\n {\n \"name\": \"Luxembourg\",\n \"dial_code\": \"+352\",\n \"code\": \"LU\"\n },\n {\n \"name\": \"Macao\",\n \"dial_code\": \"+853\",\n \"code\": \"MO\"\n },\n {\n \"name\": \"Macedonia\",\n \"dial_code\": \"+389\",\n \"code\": \"MK\"\n },\n {\n \"name\": \"Madagascar\",\n \"dial_code\": \"+261\",\n \"code\": \"MG\"\n },\n {\n \"name\": \"Malawi\",\n \"dial_code\": \"+265\",\n \"code\": \"MW\"\n },\n {\n \"name\": \"Malaysia\",\n \"dial_code\": \"+60\",\n \"code\": \"MY\"\n },\n {\n \"name\": \"Maldives\",\n \"dial_code\": \"+960\",\n \"code\": \"MV\"\n },\n {\n \"name\": \"Mali\",\n \"dial_code\": \"+223\",\n \"code\": \"ML\"\n },\n {\n \"name\": \"Malta\",\n \"dial_code\": \"+356\",\n \"code\": \"MT\"\n },\n {\n \"name\": \"Marshall Islands\",\n \"dial_code\": \"+692\",\n \"code\": \"MH\"\n },\n {\n \"name\": \"Martinique\",\n \"dial_code\": \"+596\",\n \"code\": \"MQ\"\n },\n {\n \"name\": \"Mauritania\",\n \"dial_code\": \"+222\",\n \"code\": \"MR\"\n },\n {\n \"name\": \"Mauritius\",\n \"dial_code\": \"+230\",\n \"code\": \"MU\"\n },\n {\n \"name\": \"Mayotte\",\n \"dial_code\": \"+262\",\n \"code\": \"YT\"\n },\n {\n \"name\": \"Mexico\",\n \"dial_code\": \"+52\",\n \"code\": \"MX\"\n },\n {\n \"name\": \"Micronesia, Federated States of Micronesia\",\n \"dial_code\": \"+691\",\n \"code\": \"FM\"\n },\n {\n \"name\": \"Moldova\",\n \"dial_code\": \"+373\",\n \"code\": \"MD\"\n },\n {\n \"name\": \"Monaco\",\n \"dial_code\": \"+377\",\n \"code\": \"MC\"\n },\n {\n \"name\": \"Mongolia\",\n \"dial_code\": \"+976\",\n \"code\": \"MN\"\n },\n {\n \"name\": \"Montenegro\",\n \"dial_code\": \"+382\",\n \"code\": \"ME\"\n },\n {\n \"name\": \"Montserrat\",\n \"dial_code\": \"+1664\",\n \"code\": \"MS\"\n },\n {\n \"name\": \"Morocco\",\n \"dial_code\": \"+212\",\n \"code\": \"MA\"\n },\n {\n \"name\": \"Mozambique\",\n \"dial_code\": \"+258\",\n \"code\": \"MZ\"\n },\n {\n \"name\": \"Myanmar\",\n \"dial_code\": \"+95\",\n \"code\": \"MM\"\n },\n {\n \"name\": \"Namibia\",\n \"dial_code\": \"+264\",\n \"code\": \"NA\"\n },\n {\n \"name\": \"Nauru\",\n \"dial_code\": \"+674\",\n \"code\": \"NR\"\n },\n {\n \"name\": \"Nepal\",\n \"dial_code\": \"+977\",\n \"code\": \"NP\"\n },\n {\n \"name\": \"Netherlands Antilles\",\n \"dial_code\": \"+599\",\n \"code\": \"AN\"\n },\n {\n \"name\": \"New Caledonia\",\n \"dial_code\": \"+687\",\n \"code\": \"NC\"\n },\n {\n \"name\": \"New Zealand\",\n \"dial_code\": \"+64\",\n \"code\": \"NZ\"\n },\n {\n \"name\": \"Nicaragua\",\n \"dial_code\": \"+505\",\n \"code\": \"NI\"\n },\n {\n \"name\": \"Niger\",\n \"dial_code\": \"+227\",\n \"code\": \"NE\"\n },\n {\n \"name\": \"Nigeria\",\n \"dial_code\": \"+234\",\n \"code\": \"NG\"\n },\n {\n \"name\": \"Niue\",\n \"dial_code\": \"+683\",\n \"code\": \"NU\"\n },\n {\n \"name\": \"Norfolk Island\",\n \"dial_code\": \"+672\",\n \"code\": \"NF\"\n },\n {\n \"name\": \"Northern Mariana Islands\",\n \"dial_code\": \"+1670\",\n \"code\": \"MP\"\n },\n {\n \"name\": \"Oman\",\n \"dial_code\": \"+968\",\n \"code\": \"OM\"\n },\n {\n \"name\": \"Pakistan\",\n \"dial_code\": \"+92\",\n \"code\": \"PK\"\n },\n {\n \"name\": \"Palau\",\n \"dial_code\": \"+680\",\n \"code\": \"PW\"\n },\n {\n \"name\": \"Palestinian Territory, Occupied\",\n \"dial_code\": \"+970\",\n \"code\": \"PS\"\n },\n {\n \"name\": \"Panama\",\n \"dial_code\": \"+507\",\n \"code\": \"PA\"\n },\n {\n \"name\": \"Papua New Guinea\",\n \"dial_code\": \"+675\",\n \"code\": \"PG\"\n },\n {\n \"name\": \"Paraguay\",\n \"dial_code\": \"+595\",\n \"code\": \"PY\"\n },\n {\n \"name\": \"Peru\",\n \"dial_code\": \"+51\",\n \"code\": \"PE\"\n },\n {\n \"name\": \"Philippines\",\n \"dial_code\": \"+63\",\n \"code\": \"PH\"\n },\n {\n \"name\": \"Pitcairn\",\n \"dial_code\": \"+872\",\n \"code\": \"PN\"\n },\n {\n \"name\": \"Poland\",\n \"dial_code\": \"+48\",\n \"code\": \"PL\"\n },\n {\n \"name\": \"Puerto Rico\",\n \"dial_code\": \"+1939\",\n \"code\": \"PR\"\n },\n {\n \"name\": \"Qatar\",\n \"dial_code\": \"+974\",\n \"code\": \"QA\"\n },\n {\n \"name\": \"Romania\",\n \"dial_code\": \"+40\",\n \"code\": \"RO\"\n },\n {\n \"name\": \"Russia\",\n \"dial_code\": \"+7\",\n \"code\": \"RU\"\n },\n {\n \"name\": \"Rwanda\",\n \"dial_code\": \"+250\",\n \"code\": \"RW\"\n },\n {\n \"name\": \"Reunion\",\n \"dial_code\": \"+262\",\n \"code\": \"RE\"\n },\n {\n \"name\": \"Saint Barthelemy\",\n \"dial_code\": \"+590\",\n \"code\": \"BL\"\n },\n {\n \"name\": \"Saint Helena, Ascension and Tristan Da Cunha\",\n \"dial_code\": \"+290\",\n \"code\": \"SH\"\n },\n {\n \"name\": \"Saint Kitts and Nevis\",\n \"dial_code\": \"+1869\",\n \"code\": \"KN\"\n },\n {\n \"name\": \"Saint Lucia\",\n \"dial_code\": \"+1758\",\n \"code\": \"LC\"\n },\n {\n \"name\": \"Saint Martin\",\n \"dial_code\": \"+590\",\n \"code\": \"MF\"\n },\n {\n \"name\": \"Saint Pierre and Miquelon\",\n \"dial_code\": \"+508\",\n \"code\": \"PM\"\n },\n {\n \"name\": \"Saint Vincent and the Grenadines\",\n \"dial_code\": \"+1784\",\n \"code\": \"VC\"\n },\n {\n \"name\": \"Samoa\",\n \"dial_code\": \"+685\",\n \"code\": \"WS\"\n },\n {\n \"name\": \"San Marino\",\n \"dial_code\": \"+378\",\n \"code\": \"SM\"\n },\n {\n \"name\": \"Sao Tome and Principe\",\n \"dial_code\": \"+239\",\n \"code\": \"ST\"\n },\n {\n \"name\": \"Saudi Arabia\",\n \"dial_code\": \"+966\",\n \"code\": \"SA\"\n },\n {\n \"name\": \"Senegal\",\n \"dial_code\": \"+221\",\n \"code\": \"SN\"\n },\n {\n \"name\": \"Serbia\",\n \"dial_code\": \"+381\",\n \"code\": \"RS\"\n },\n {\n \"name\": \"Seychelles\",\n \"dial_code\": \"+248\",\n \"code\": \"SC\"\n },\n {\n \"name\": \"Sierra Leone\",\n \"dial_code\": \"+232\",\n \"code\": \"SL\"\n },\n {\n \"name\": \"Singapore\",\n \"dial_code\": \"+65\",\n \"code\": \"SG\"\n },\n {\n \"name\": \"Slovakia\",\n \"dial_code\": \"+421\",\n \"code\": \"SK\"\n },\n {\n \"name\": \"Slovenia\",\n \"dial_code\": \"+386\",\n \"code\": \"SI\"\n },\n {\n \"name\": \"Solomon Islands\",\n \"dial_code\": \"+677\",\n \"code\": \"SB\"\n },\n {\n \"name\": \"Somalia\",\n \"dial_code\": \"+252\",\n \"code\": \"SO\"\n },\n {\n \"name\": \"South Africa\",\n \"dial_code\": \"+27\",\n \"code\": \"ZA\"\n },\n {\n \"name\": \"South Sudan\",\n \"dial_code\": \"+211\",\n \"code\": \"SS\"\n },\n {\n \"name\": \"South Georgia and the South Sandwich Islands\",\n \"dial_code\": \"+500\",\n \"code\": \"GS\"\n },\n {\n \"name\": \"Sri Lanka\",\n \"dial_code\": \"+94\",\n \"code\": \"LK\"\n },\n {\n \"name\": \"Sudan\",\n \"dial_code\": \"+249\",\n \"code\": \"SD\"\n },\n {\n \"name\": \"Suriname\",\n \"dial_code\": \"+597\",\n \"code\": \"SR\"\n },\n {\n \"name\": \"Svalbard and Jan Mayen\",\n \"dial_code\": \"+47\",\n \"code\": \"SJ\"\n },\n {\n \"name\": \"Swaziland\",\n \"dial_code\": \"+268\",\n \"code\": \"SZ\"\n },\n {\n \"name\": \"Syrian Arab Republic\",\n \"dial_code\": \"+963\",\n \"code\": \"SY\"\n },\n {\n \"name\": \"Taiwan\",\n \"dial_code\": \"+886\",\n \"code\": \"TW\"\n },\n {\n \"name\": \"Tajikistan\",\n \"dial_code\": \"+992\",\n \"code\": \"TJ\"\n },\n {\n \"name\": \"Tanzania, United Republic of Tanzania\",\n \"dial_code\": \"+255\",\n \"code\": \"TZ\"\n },\n {\n \"name\": \"Thailand\",\n \"dial_code\": \"+66\",\n \"code\": \"TH\"\n },\n {\n \"name\": \"Timor-Leste\",\n \"dial_code\": \"+670\",\n \"code\": \"TL\"\n },\n {\n \"name\": \"Togo\",\n \"dial_code\": \"+228\",\n \"code\": \"TG\"\n },\n {\n \"name\": \"Tokelau\",\n \"dial_code\": \"+690\",\n \"code\": \"TK\"\n },\n {\n \"name\": \"Tonga\",\n \"dial_code\": \"+676\",\n \"code\": \"TO\"\n },\n {\n \"name\": \"Trinidad and Tobago\",\n \"dial_code\": \"+1868\",\n \"code\": \"TT\"\n },\n {\n \"name\": \"Tunisia\",\n \"dial_code\": \"+216\",\n \"code\": \"TN\"\n },\n {\n \"name\": \"Turkey\",\n \"dial_code\": \"+90\",\n \"code\": \"TR\"\n },\n {\n \"name\": \"Turkmenistan\",\n \"dial_code\": \"+993\",\n \"code\": \"TM\"\n },\n {\n \"name\": \"Turks and Caicos Islands\",\n \"dial_code\": \"+1649\",\n \"code\": \"TC\"\n },\n {\n \"name\": \"Tuvalu\",\n \"dial_code\": \"+688\",\n \"code\": \"TV\"\n },\n {\n \"name\": \"Uganda\",\n \"dial_code\": \"+256\",\n \"code\": \"UG\"\n },\n {\n \"name\": \"Ukraine\",\n \"dial_code\": \"+380\",\n \"code\": \"UA\"\n },\n {\n \"name\": \"United Arab Emirates\",\n \"dial_code\": \"+971\",\n \"code\": \"AE\"\n },\n {\n \"name\": \"United States\",\n \"dial_code\": \"+1\",\n \"code\": \"US\"\n },\n {\n \"name\": \"Uruguay\",\n \"dial_code\": \"+598\",\n \"code\": \"UY\"\n },\n {\n \"name\": \"Uzbekistan\",\n \"dial_code\": \"+998\",\n \"code\": \"UZ\"\n },\n {\n \"name\": \"Vanuatu\",\n \"dial_code\": \"+678\",\n \"code\": \"VU\"\n },\n {\n \"name\": \"Venezuela, Bolivarian Republic of Venezuela\",\n \"dial_code\": \"+58\",\n \"code\": \"VE\"\n },\n {\n \"name\": \"Vietnam\",\n \"dial_code\": \"+84\",\n \"code\": \"VN\"\n },\n {\n \"name\": \"Virgin Islands, British\",\n \"dial_code\": \"+1284\",\n \"code\": \"VG\"\n },\n {\n \"name\": \"Virgin Islands, U.S.\",\n \"dial_code\": \"+1340\",\n \"code\": \"VI\"\n },\n {\n \"name\": \"Wallis and Futuna\",\n \"dial_code\": \"+681\",\n \"code\": \"WF\"\n },\n {\n \"name\": \"Yemen\",\n \"dial_code\": \"+967\",\n \"code\": \"YE\"\n },\n {\n \"name\": \"Zambia\",\n \"dial_code\": \"+260\",\n \"code\": \"ZM\"\n },\n {\n \"name\": \"Zimbabwe\",\n \"dial_code\": \"+263\",\n \"code\": \"ZW\"\n }\n];\n\nexport default class extends Controller {\n\n connect() {\n\n let selected = false;\n let select = document.getElementById(\"country\");\n let myCountry = document.getElementById(\"my-country\");\n if (select) {\n for (var key in countries) {\n var option = document.createElement(\"option\");\n option.text = key;\n option.value = countries[key];\n if ( option.value === 'ES' ){\n option.id = 'es';\n }\n if ( myCountry && myCountry.value === countries[key] ){\n option.selected = 'selected';\n selected = true;\n }\n select.appendChild(option);\n }\n /*if ( !selected ) {\n let spain = document.getElementById('es');\n spain.setAttribute('selected', 'selected');\n }*/\n }\n\n let select2 = document.getElementById(\"prefix\");\n if (select2) {\n selected = false;\n mobiles.forEach((prefix) => {\n let option = document.createElement(\"option\");\n option.text = prefix.dial_code + ' ' + prefix.name;\n option.value = prefix.dial_code;\n if ( prefix.code === 'ES' ){\n option.id = 'es2';\n }\n if ( myCountry && myCountry.value === prefix.code ) {\n option.selected = 'selected';\n selected = true;\n }\n select2.appendChild(option);\n });\n /*if ( !selected ) {\n let spain = document.getElementById('es2');\n spain.setAttribute('selected', 'selected');\n }*/\n }\n \n }\n\n}","import Dropzone from 'dropzone';\nimport { Controller } from 'stimulus';\nimport { DirectUpload } from '@rails/activestorage';\nimport {\n getMetaValue,\n findElement,\n removeElement,\n insertAfter\n} from 'helpers';\n\n/*\n * Dropzone controller\n * Let to create a dropzone zone to\n * upload and preview files.\n *\n */\n\nexport default class extends Controller {\n\n previewNode = null;\n\n static targets = [\n 'input',\n 'dropzone',\n 'dropzoneMsg',\n 'dropzoneError',\n 'dropzonePreview',\n 'dropzoneProgress'\n ];\n\n connect() {\n\n //\n // Getting the preview template and removing it from\n // DOM to hide it.\n //\n\n this.previewNode = document.querySelector('#previewTemplate');\n //let previewTemplate = previewNode.innerHTML;\n //this.previewNode.parentNode.removeChild(this.previewNode);\n\n this.dropZone = createDropZone(this, this.previewNode.innerHTML);\n this.hideFileInput();\n this.bindEvents();\n Dropzone.autoDiscover = false; // necessary quirk for Dropzone error in console\n\n //\n // Hiding error div\n //\n\n this.dropzoneErrorTarget.style.display = 'none';\n\n }\n\n hideFileInput() {\n this.inputTarget.disabled = true;\n this.inputTarget.style.display = 'none';\n }\n\n bindEvents() {\n\n this.dropZone.on('drop', file => {\n\n //\n // If maxFiles === 1 we replace the\n // already uploaded file if it exists.\n //\n\n if ( this.maxFiles === '1' && this.dropZone.getAcceptedFiles().length > 0 ) {\n this.dropZone.removeFile(this.dropZone.getAcceptedFiles()[0]);\n }\n\n //\n // We also check if there's an\n // avatar to edit. If so, we remove it.\n //\n\n let avatarToEdit = document.querySelector('.avatar-to-edit')\n\n if ( avatarToEdit ) avatarToEdit.remove();\n\n //\n // Removing previous error messages\n //\n\n // $('.dz-error-custom').hide();\n this.dropzoneErrorTarget.style.display = 'none';\n });\n\n this.dropZone.on('addedfile', file => {\n \n this.dropzoneMsgTarget.style.display = 'none';\n this.dropzoneErrorTarget.style.display = 'none';\n\n setTimeout(() => {\n file.accepted && createDirectUploadController(this, file).start();\n }, 500);\n });\n\n this.dropZone.on('removedfile', file => {\n file.controller && removeElement(file.controller.hiddenInput);\n //$('.dropzone').show();\n this.dropzoneTarget.style.display = 'block';\n\n //$('.dropzone-msg').show();\n this.dropzoneMsgTarget.style.display = 'block';\n });\n\n this.dropZone.on('queuecomplete', progress => {\n setTimeout(() => {\n // $('#previews .progress').addClass('animated fadeOut');\n let preview = document.querySelector('.dz-preview');\n \n if ( preview )\n preview.querySelector('.progress').style.display = 'none';\n\n }, 1000);\n });\n\n this.dropZone.on('canceled', file => {\n file.controller && file.controller.xhr.abort();\n });\n\n this.dropZone.on('error', (file, err) => {\n \n document.querySelector('.dz-preview').remove();\n\n this.dropzoneErrorTarget.innerHTML = err;\n this.dropzoneErrorTarget.style.display = 'block';\n //$('.dz-preview').remove();\n //$('.dz-error-custom').html(err);\n //$('.dz-error-custom').show();\n });\n }\n\n get headers() {\n return { 'X-CSRF-Token': getMetaValue('csrf-token') };\n }\n\n get url() {\n return this.inputTarget.getAttribute('data-direct-upload-url');\n }\n\n get maxFiles() {\n return this.data.get('maxFiles') || 1;\n }\n\n get maxFileSize() {\n return this.data.get('maxFileSize') || 256;\n }\n\n get acceptedFiles() {\n return this.data.get('acceptedFiles');\n }\n\n get addRemoveLinks() {\n return this.data.get('addRemoveLinks') || false;\n }\n}\n\nclass DirectUploadController {\n constructor(source, file) {\n this.directUpload = createDirectUpload(file, source.url, this);\n this.source = source;\n this.file = file;\n }\n\n start() {\n this.file.controller = this;\n this.hiddenInput = this.createHiddenInput();\n this.directUpload.create((error, attributes) => {\n if (error) {\n removeElement(this.hiddenInput);\n this.emitDropzoneError(error);\n } else {\n this.hiddenInput.value = attributes.signed_id;\n this.emitDropzoneSuccess();\n }\n });\n }\n\n createHiddenInput() {\n const input = document.createElement('input');\n input.type = 'hidden';\n input.name = this.source.inputTarget.name;\n insertAfter(input, this.source.inputTarget);\n return input;\n }\n\n directUploadWillStoreFileWithXHR(xhr) {\n this.bindProgressEvent(xhr);\n this.emitDropzoneUploading();\n }\n\n bindProgressEvent(xhr) {\n this.xhr = xhr;\n this.xhr.upload.addEventListener('progress', event =>\n this.uploadRequestDidProgress(event)\n );\n }\n\n uploadRequestDidProgress(event) {\n const progress = (event.loaded / event.total) * 100;\n this.source.dropzoneProgressTarget.firstElementChild.style.width = `${progress}%`;\n }\n\n emitDropzoneUploading() {\n this.file.status = Dropzone.UPLOADING;\n this.source.dropZone.emit('processing', this.file);\n }\n\n emitDropzoneError(error) {\n this.file.status = Dropzone.ERROR;\n this.source.dropZone.emit('error', this.file, error);\n this.source.dropZone.emit('complete', this.file);\n }\n\n emitDropzoneSuccess() {\n this.file.status = Dropzone.SUCCESS;\n this.source.dropZone.emit('success', this.file);\n this.source.dropZone.emit('complete', this.file);\n }\n}\n\nfunction createDirectUploadController(source, file) {\n return new DirectUploadController(source, file);\n}\n\nfunction createDirectUpload(file, url, controller) {\n return new DirectUpload(file, url, controller);\n}\n\nfunction createDropZone(controller, previewTemplate) {\n\n return new Dropzone(controller.element, {\n url: controller.url,\n headers: controller.headers,\n maxFiles: controller.maxFiles,\n maxFilesize: controller.maxFileSize,\n acceptedFiles: controller.acceptedFiles,\n addRemoveLinks: Boolean(controller.addRemoveLinks),\n autoQueue: false,\n previewTemplate: previewTemplate\n });\n}","import { Controller } from \"stimulus\"\nimport \"ace-builds/src-min-noconflict/ace.js\";\n\nexport default class extends Controller {\n\n htmlEditor = null;\n ckEditor = null;\n currentTab = 'rich';\n\n\tstatic targets = [\n 'modalPreview',\n 'modalPreviewContent',\n 'seoURL'\n ];\n\n static values = {\n lang: String\n };\n\n connect() {\n\n //\n // Loading ACE editor and initializing\n //\n\n this._loadAceEditor();\n\n //\n // CKEDITOR\n //\n\n this.ckEditor = CKEDITOR.instances['ckeditor_' + this.langValue];\n\n }\n\n /*\n * openPreview\n * Deploys a modal to preview the content\n *\n */\n\n openPreview () {\n\n let content_html = null;\n\n if ( this.currentTab === 'rich')\n content_html = this.ckEditor.getData();\n else\n content_html = this.htmlEditor.getValue();\n\n let modal = document.getElementById('modal_preview');\n let modalContent = document.getElementById('modal_preview_content');\n\n modalContent.innerHTML = content_html;\n modal.classList.remove('hidden');\n }\n\n /*\n * changeTab\n * Triggered when user changes between RICH TEXT and HTML\n * tabs. It updates the proper editor.\n */\n\n changeTab (event) {\n if ( this.currentTab === 'rich' ) {\n // Current state HTML\n this.htmlEditor.session.setValue(this.ckEditor.getData());\n this.currentTab = 'html';\n }\n else {\n // Current state RICH TEXT\n this.ckEditor.setData(this.htmlEditor.getValue());\n this.currentTab = 'rich';\n }\n }\n\n _loadAceEditor () {\n\n //\n // Content HTML editor\n //\n\n ace.config.set('basePath', '/js');\n ace.config.set('modePath', '/js');\n ace.config.set('themePath', '/js');\n ace.config.set('workerPath','/js');\n\n this.htmlEditor = ace.edit('editor-' + this.langValue);\n\n this.htmlEditor.session.setMode('ace/mode/html');\n this.htmlEditor.setTheme('ace/theme/nord_dark');\n this.htmlEditor.session.setUseWorker('ace/worker/html');\n\n document.getElementById('editor-' + this.langValue).style.fontSize = '15px';\n\n this.htmlEditor.session.on('change', (delta) => {\n //let content = document.getElementById('page_content_' + this.langValue);\n //content.value = this.htmlEditor.getValue();\n this.ckEditor.setData(this.ckEditor.getData());\n }).bind(this);\n }\n}\n","import { Controller } from \"stimulus\"\n\nexport default class extends Controller {\n\n connect() {\n }\n\n toggle(event) {\n let target = event.target;\n let parent = target.parentElement;\n if ( target.classList.contains('manager') ) {\n target.classList.toggle('rotate-0');\n target.classList.toggle('-rotate-180');\n }\n if ( parent.classList.contains('manager') ) {\n parent.classList.toggle('rotate-0');\n parent.classList.toggle('-rotate-180');\n }\n }\n}","import { Controller } from 'stimulus';\n\n/*\n * Admin Finder Field controller\n * Let users to search entities in dashboard.\n *\n */\n\nexport default class extends Controller {\n\n\tstatic targets = [\n\t\t'form',\n\t\t'input',\n\t\t'submit'\n\t];\n\n\t// To avoid concanated searches \n\tlastSearchValue = null;\n\n\n\tconnect () {\n\n\t\t//\n\t\t// When Turbo request starts\n\t\t//\n\n\t\tthis.formTarget.addEventListener('turbo:submit-start', () => {\n\t\t\tthis.submitTarget.disabled = true;\n\t\t\tthis.submitTarget.innerHTML = `\n\t\t\t\t\n\t \n\t \n\t \n\t\t\t`;\n\t\t});\n\n\n\t\t//\n\t\t// When Turbo request finishes\n\t\t//\n\n\t\tthis.formTarget.addEventListener('turbo:submit-end', () => {\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.submitTarget.disabled = false;\n\t\t\t\tthis.submitTarget.innerHTML = 'Search';\n\t\t\t}, 500);\n\t\t});\n\t}\n\n\n\t/*\n\t * update\n\t * Send string to backend on user's typing\n\t *\n\t */\n\n\tupdate (event) {\n\t\tif ( this.inputTarget.value.length > 3 || this.inputTarget.value.length === 0 ) {\n\t\t\tsetTimeout(() => {\t\t\t\t\n\t\t\t\tif ( this.lastSearchValue === this.inputTarget.value )\n\t\t\t\t\treturn;\n\t\t\t\telse {\n\t\t\t\t\tthis.lastSearchValue = this.inputTarget.value;\n\t\t\t\t\tthis.submitTarget.click();\n\t\t\t\t}\n\t\t\t}, 700);\n\t\t}\n\n\t}\n\n}","import { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n\n connect() {\n console.log('READY');\n }\n\n setToDate(event) {\n let from = new Date(event.target.value);\n let tmp = new Date(from);\n let to = document.getElementById(\"to\");\n let min = this.check_season(from);\n\n tmp.setDate(from.getDate() + min);\n tmp = tmp.toISOString().split(\"T\")[0];\n to.setAttribute(\"min\", tmp);\n if (!to.value || to.value < tmp) to.value = tmp;\n }\n\n check_season(date) {\n let summer_start = document.getElementById(\"season_from\");\n let summer_end = document.getElementById(\"season_to\");\n let min = 2;\n\n if (summer_start && summer_end) {\n summer_start = new Date(summer_start.value);\n summer_end = new Date(summer_end.value);\n if (date >= summer_start && date <= summer_end) min = 0;\n }\n return min;\n }\n\n}","import { Controller } from \"stimulus\";\nimport { Turbo } from \"@hotwired/turbo-rails\";\n\nconst countries = {\n Afghanistan: \"AF\",\n \"Aland Islands\": \"AX\",\n Albania: \"AL\",\n Algeria: \"DZ\",\n \"American Samoa\": \"AS\",\n Andorra: \"AD\",\n Angola: \"AO\",\n Anguilla: \"AI\",\n Antarctica: \"AQ\",\n \"Antigua and Barbuda\": \"AG\",\n Argentina: \"AR\",\n Armenia: \"AM\",\n Aruba: \"AW\",\n Australia: \"AU\",\n Austria: \"AT\",\n Azerbaijan: \"AZ\",\n Bahamas: \"BS\",\n Bahrain: \"BH\",\n Bangladesh: \"BD\",\n Barbados: \"BB\",\n Belarus: \"BY\",\n Belgium: \"BE\",\n Belize: \"BZ\",\n Benin: \"BJ\",\n Bermuda: \"BM\",\n Bhutan: \"BT\",\n Bolivia: \"BO\",\n \"Bonaire, Saint Eustatius and Saba\": \"BQ\",\n \"Bosnia and Herzegovina\": \"BA\",\n Botswana: \"BW\",\n \"Bouvet Island\": \"BV\",\n Brazil: \"BR\",\n \"British Indian Ocean Territory\": \"IO\",\n \"British Virgin Islands\": \"VG\",\n Brunei: \"BN\",\n Bulgaria: \"BG\",\n \"Burkina Faso\": \"BF\",\n Burundi: \"BI\",\n Cambodia: \"KH\",\n Cameroon: \"CM\",\n Canada: \"CA\",\n \"Cape Verde\": \"CV\",\n \"Cayman Islands\": \"KY\",\n \"Central African Republic\": \"CF\",\n Chad: \"TD\",\n Chile: \"CL\",\n China: \"CN\",\n \"Christmas Island\": \"CX\",\n \"Cocos Islands\": \"CC\",\n Colombia: \"CO\",\n Comoros: \"KM\",\n \"Cook Islands\": \"CK\",\n \"Costa Rica\": \"CR\",\n Croatia: \"HR\",\n Cuba: \"CU\",\n Curacao: \"CW\",\n Cyprus: \"CY\",\n \"Czech Republic\": \"CZ\",\n \"Democratic Republic of the Congo\": \"CD\",\n Denmark: \"DK\",\n Djibouti: \"DJ\",\n Dominica: \"DM\",\n \"Dominican Republic\": \"DO\",\n \"East Timor\": \"TL\",\n Ecuador: \"EC\",\n Egypt: \"EG\",\n \"El Salvador\": \"SV\",\n \"Equatorial Guinea\": \"GQ\",\n Eritrea: \"ER\",\n Estonia: \"EE\",\n Ethiopia: \"ET\",\n \"Falkland Islands\": \"FK\",\n \"Faroe Islands\": \"FO\",\n Fiji: \"FJ\",\n Finland: \"FI\",\n France: \"FR\",\n \"French Guiana\": \"GF\",\n \"French Polynesia\": \"PF\",\n \"French Southern Territories\": \"TF\",\n Gabon: \"GA\",\n Gambia: \"GM\",\n Georgia: \"GE\",\n Germany: \"DE\",\n Ghana: \"GH\",\n Gibraltar: \"GI\",\n Greece: \"GR\",\n Greenland: \"GL\",\n Grenada: \"GD\",\n Guadeloupe: \"GP\",\n Guam: \"GU\",\n Guatemala: \"GT\",\n Guernsey: \"GG\",\n Guinea: \"GN\",\n \"Guinea-Bissau\": \"GW\",\n Guyana: \"GY\",\n Haiti: \"HT\",\n \"Heard Island and McDonald Islands\": \"HM\",\n Honduras: \"HN\",\n \"Hong Kong\": \"HK\",\n Hungary: \"HU\",\n Iceland: \"IS\",\n India: \"IN\",\n Indonesia: \"ID\",\n Iran: \"IR\",\n Iraq: \"IQ\",\n Ireland: \"IE\",\n \"Isle of Man\": \"IM\",\n Israel: \"IL\",\n Italy: \"IT\",\n \"Ivory Coast\": \"CI\",\n Jamaica: \"JM\",\n Japan: \"JP\",\n Jersey: \"JE\",\n Jordan: \"JO\",\n Kazakhstan: \"KZ\",\n Kenya: \"KE\",\n Kiribati: \"KI\",\n Kosovo: \"XK\",\n Kuwait: \"KW\",\n Kyrgyzstan: \"KG\",\n Laos: \"LA\",\n Latvia: \"LV\",\n Lebanon: \"LB\",\n Lesotho: \"LS\",\n Liberia: \"LR\",\n Libya: \"LY\",\n Liechtenstein: \"LI\",\n Lithuania: \"LT\",\n Luxembourg: \"LU\",\n Macao: \"MO\",\n Macedonia: \"MK\",\n Madagascar: \"MG\",\n Malawi: \"MW\",\n Malaysia: \"MY\",\n Maldives: \"MV\",\n Mali: \"ML\",\n Malta: \"MT\",\n \"Marshall Islands\": \"MH\",\n Martinique: \"MQ\",\n Mauritania: \"MR\",\n Mauritius: \"MU\",\n Mayotte: \"YT\",\n Mexico: \"MX\",\n Micronesia: \"FM\",\n Moldova: \"MD\",\n Monaco: \"MC\",\n Mongolia: \"MN\",\n Montenegro: \"ME\",\n Montserrat: \"MS\",\n Morocco: \"MA\",\n Mozambique: \"MZ\",\n Myanmar: \"MM\",\n Namibia: \"NA\",\n Nauru: \"NR\",\n Nepal: \"NP\",\n Netherlands: \"NL\",\n \"New Caledonia\": \"NC\",\n \"New Zealand\": \"NZ\",\n Nicaragua: \"NI\",\n Niger: \"NE\",\n Nigeria: \"NG\",\n Niue: \"NU\",\n \"Norfolk Island\": \"NF\",\n \"North Korea\": \"KP\",\n \"Northern Mariana Islands\": \"MP\",\n Norway: \"NO\",\n Oman: \"OM\",\n Pakistan: \"PK\",\n Palau: \"PW\",\n \"Palestinian Territory\": \"PS\",\n Panama: \"PA\",\n \"Papua New Guinea\": \"PG\",\n Paraguay: \"PY\",\n Peru: \"PE\",\n Philippines: \"PH\",\n Pitcairn: \"PN\",\n Poland: \"PL\",\n Portugal: \"PT\",\n \"Puerto Rico\": \"PR\",\n Qatar: \"QA\",\n \"Republic of the Congo\": \"CG\",\n Reunion: \"RE\",\n Romania: \"RO\",\n Russia: \"RU\",\n Rwanda: \"RW\",\n \"Saint Barthelemy\": \"BL\",\n \"Saint Helena\": \"SH\",\n \"Saint Kitts and Nevis\": \"KN\",\n \"Saint Lucia\": \"LC\",\n \"Saint Martin\": \"MF\",\n \"Saint Pierre and Miquelon\": \"PM\",\n \"Saint Vincent and the Grenadines\": \"VC\",\n Samoa: \"WS\",\n \"San Marino\": \"SM\",\n \"Sao Tome and Principe\": \"ST\",\n \"Saudi Arabia\": \"SA\",\n Senegal: \"SN\",\n Serbia: \"RS\",\n Seychelles: \"SC\",\n \"Sierra Leone\": \"SL\",\n Singapore: \"SG\",\n \"Sint Maarten\": \"SX\",\n Slovakia: \"SK\",\n Slovenia: \"SI\",\n \"Solomon Islands\": \"SB\",\n Somalia: \"SO\",\n \"South Africa\": \"ZA\",\n \"South Georgia and the South Sandwich Islands\": \"GS\",\n \"South Korea\": \"KR\",\n \"South Sudan\": \"SS\",\n Spain: \"ES\",\n \"Sri Lanka\": \"LK\",\n Sudan: \"SD\",\n Suriname: \"SR\",\n \"Svalbard and Jan Mayen\": \"SJ\",\n Swaziland: \"SZ\",\n Sweden: \"SE\",\n Switzerland: \"CH\",\n Syria: \"SY\",\n Taiwan: \"TW\",\n Tajikistan: \"TJ\",\n Tanzania: \"TZ\",\n Thailand: \"TH\",\n Togo: \"TG\",\n Tokelau: \"TK\",\n Tonga: \"TO\",\n \"Trinidad and Tobago\": \"TT\",\n Tunisia: \"TN\",\n Turkey: \"TR\",\n Turkmenistan: \"TM\",\n \"Turks and Caicos Islands\": \"TC\",\n Tuvalu: \"TV\",\n \"U.S. Virgin Islands\": \"VI\",\n Uganda: \"UG\",\n Ukraine: \"UA\",\n \"United Arab Emirates\": \"AE\",\n \"United Kingdom\": \"GB\",\n \"United States\": \"US\",\n \"United States Minor Outlying Islands\": \"UM\",\n Uruguay: \"UY\",\n Uzbekistan: \"UZ\",\n Vanuatu: \"VU\",\n Vatican: \"VA\",\n Venezuela: \"VE\",\n Vietnam: \"VN\",\n \"Wallis and Futuna\": \"WF\",\n \"Western Sahara\": \"EH\",\n Yemen: \"YE\",\n Zambia: \"ZM\",\n Zimbabwe: \"ZW\",\n};\n\nexport default class extends Controller {\n static values = { agent: Boolean };\n\n connect() {\n let urlParams;\n (window.onpopstate = function () {\n var match,\n pl = /\\+/g, // Regex for replacing addition symbol with a space\n search = /([^&=]+)=?([^&]*)/g,\n decode = function (s) {\n return decodeURIComponent(s.replace(pl, \" \"));\n },\n query = window.location.search.substring(1);\n\n urlParams = {};\n while ((match = search.exec(query)))\n urlParams[decode(match[1])] = decode(match[2]);\n })();\n if (urlParams.basket === \"null\") sessionStorage.removeItem(\"basket\");\n else {\n this.updateBasket();\n }\n }\n\n basket(event) {\n let basket = sessionStorage.getItem(\"basket\");\n let isAgent = false;\n if (this.hasAgentValue) {\n isAgent = this.agentValue\n }\n\n if (basket) {\n let spinner = document.getElementById(\"spinner\");\n if (spinner) spinner.classList.remove(\"hidden\");\n let spinner_modal = document.getElementById(\"spinner_modal\");\n if (spinner_modal) spinner_modal.classList.remove(\"hidden\");\n if (!isAgent) {\n document.addEventListener(\"turbo:before-fetch-response\", function (e) {\n let selected = false;\n var interval = setInterval(function () {\n let select = document.getElementById(\"country\");\n if (select) {\n clearInterval(interval);\n for (var key in countries) {\n var option = document.createElement(\"option\");\n option.text = key;\n option.value = countries[key];\n if (option.value === \"ES\") {\n option.id = \"es\";\n }\n if (select.dataset.country === countries[key]) {\n option.selected = \"selected\";\n selected = true;\n }\n select.appendChild(option);\n }\n if (!selected) {\n let spain = document.getElementById(\"es\");\n spain.setAttribute(\"selected\", \"selected\");\n }\n }\n }, 100);\n });\n }\n }\n\n const lang = document.getElementById(\"locale\").value;\n const isle = document.getElementById(\"current-island\");\n let island = \"gran-canaria\";\n switch (isle.innerText) {\n case \"GRAN CANARIA\":\n island = \"gran-canaria\";\n break;\n case \"TENERIFE\":\n island = \"tenerife\";\n break;\n case \"LANZAROTE\":\n island = \"lanzarote\";\n break;\n default:\n island = \"gran-canaria\";\n }\n\n //window.location.href = `/${lang}/${island}/basket?basket=${basket}`;\n if (isAgent) {\n window.location.href = `/${lang}/${island}/agents/baskets`;\n } else {\n window.location.href = `/${lang}/${island}/basket?basket=${basket}`;\n }\n }\n\n updateBasket() {\n let basket = sessionStorage.getItem(\"basket\");\n let count = 0;\n if (basket) {\n const url = `/booking_process/get_basket/${basket}`;\n fetch(url)\n .then((response) => response.json())\n .then((data) => {\n if (data) {\n data.OrderPosition.forEach((element) => {\n if (element.prodType == \"R\" || element.prodType == \"T\") count++;\n });\n }\n });\n } else {\n let baskets = sessionStorage.getItem(\"baskets\");\n if (baskets) {\n count = JSON.parse(baskets).length;\n }\n }\n document.getElementById(\"cart1\").innerHTML = count;\n document.getElementById(\"cart2\").innerHTML = count;\n }\n}\n","import { Controller } from \"stimulus\"\n\nexport default class extends Controller {\n connect() {\n this.element.textContent = \"Hello World!\"\n }\n}\n","import { Controller } from \"stimulus\"\nimport Glide from '@glidejs/glide'\n\nexport default class extends Controller {\n\n connect() {\n \n let glide = new Glide('.glide', {\n type: 'slider',\n //autoplay: 4000,\n focusAt: 'center',\n startAt: 1,\n perView: 3\n });\n\n glide.mount();\n\n let interval = setInterval(function() {\n let button = document.getElementById(\"shops-link\");\n let island = document.getElementById(\"current-island\");\n let lang = document.getElementById(\"current-lang\");\n if (button) {\n clearInterval(interval);\n switch (island.innerText) {\n case 'GRAN CANARIA':\n island = 'gran-canaria';\n break;\n case 'TENERIFE':\n island = 'tenerife';\n break;\n case 'LANZAROTE':\n island = 'lanzarote';\n break;\n default:\n island = 'gran-canaria';\n }\n switch (lang.innerText) {\n case 'ENGLISH':\n lang = 'en';\n break;\n case 'ESPAÑOL':\n lang = 'es';\n break;\n case 'DEUTSCH':\n lang = 'de';\n break;\n default:\n lang = 'en';\n }\n button.href=`/${lang}/${island}/shops-service/shops`;\n }\n }, 100);\n\n }\n\n}","import { Controller } from \"stimulus\"\n//import { Turbo } from \"@hotwired/turbo-rails\";\n\nexport default class extends Controller {\n\n connect() {\n let query = window.location.pathname.split('/');\n let selector = document.getElementById('island');\n query.forEach(element => {\n switch (element) {\n case 'gran-canaria':\n selector.value = '1';\n break;\n case 'tenerife':\n selector.value = '2';\n break;\n case 'lanzarote':\n selector.value = '3';\n break;\n }\n });\n }\n\n toggleMain(event) {\n\n const item = event.target.id;\n\n let bikes = document.getElementById('bikes');\n let bikeType = document.getElementById('bike-type');\n let tours = document.getElementById('tours');\n let tourType = document.getElementById('tour-type');\n\n switch (item) {\n case 'bikes':\n bikes.classList.remove('border-white', 'selected');\n bikes.classList.add('bg-white', 'freemotion-border','freemotion-color', 'shadow', 'selected');\n tours.classList.remove('bg-white', 'freemotion-border','freemotion-color', 'shadow', 'selected');\n tours.classList.add('border-white');\n bikeType.classList.remove('hidden');\n tourType.classList.add('hidden');\n break;\n case 'tours':\n case 'default':\n tours.classList.remove('border-white');\n tours.classList.add('bg-white', 'freemotion-border','freemotion-color', 'shadow', 'selected');\n bikes.classList.remove('bg-white', 'freemotion-border','freemotion-color', 'shadow', 'selected');\n bikes.classList.add('border-white');\n bikeType.classList.add('hidden');\n tourType.classList.remove('hidden');\n break;\n }\n\n }\n\n start(event) {\n\n let selected = document.getElementsByClassName('selected')[0];\n\n let island = document.getElementById('island').value;\n let islandName = 'gran-canaria';\n switch (island) {\n case '1':\n islandName= 'gran-canaria';\n break;\n case '2':\n islandName= 'tenerife';\n break;\n case '3':\n islandName= 'lanzarote';\n break;\n }\n let lang = window.location.pathname.split('/')[1];\n if ( !lang || lang === '' ) {\n lang = 'en';\n }\n switch (selected.id) {\n case 'bikes':\n let bikeType = document.getElementById('bike-select').value;\n window.location.href = `/${lang}/${islandName}/bikes?model_type=${bikeType}&plocId=${island}`;\n break;\n case 'tours':\n let tourType = document.getElementById('tour-select').value;\n window.location.href = `/${lang}/${islandName}/tours?tour_type=${tourType}&plocId=${island}`;\n break;\n }\n }\n\n}","\nimport { Controller } from \"stimulus\"\n\nexport default class extends Controller {\n\n connect() {\n let query = window.location.pathname.split('/');\n query.forEach(element => {\n switch (element) {\n case 'gran-canaria':\n case 'tenerife':\n case 'lanzarote':\n sessionStorage.setItem('island', element);\n return;\n break;\n }\n });\n }\n\n}","import { Controller } from 'stimulus';\nimport \"ace-builds/src-min-noconflict/ace.js\";\n\n/*\n * Page CMS creation controller\n *\n */\n\nexport default class extends Controller {\n\n\tstatic targets = [\n 'hiddenSeoJSON',\n 'hiddenSeoJsonEN',\n 'hiddenSeoJsonDE',\n 'seoURL',\n 'language'\n ];\n\n static values = {\n host: String,\n action: String,\n url: String,\n };\n\n seoJSONEditor = null;\n seoJSONEditorEN = null;\n seoJSONEditorDE = null;\n\n\tconnect () {\n\n //\n // Load ACE editor for SEO\n //\n\n\n this._initAce();\n this._loadAceEditorForSEO();\n this._loadAceEditorForSeoEN();\n this._loadAceEditorForSeoDE();\n \n if ( this.actionValue === 'create' ) {\n this.seoURLTarget.innerHTML = `\n No available yet
\n Just type something on the spanish slug field\n `;\n }\n else {\n // Updating seo URL\n this.seoURLTarget.innerHTML = `${this.urlValue}`;\n }\n }\n\n /*\n * closePreview\n * Closes the preview modal\n *\n */\n\n closePreview () {\n let modal = document.getElementById('modal_preview');\n \n modal.classList.add('hidden');\n }\n\n\n updateSeoURL (event) {\n let baseUrl = null;\n\n if ( event.target.value ) {\n baseUrl = event.target.value ? `${this.hostValue}/${this._string_parameterize(event.target.value)}` : '';\n this.seoURLTarget.innerHTML = `${baseUrl}`;\n }\n else {\n this.seoURLTarget.innerHTML = `No available`;\n }\n }\n\n _string_parameterize (str) {\n return str.trim().toLowerCase().replace(/[^a-zA-Z0-9/ -]/, '').replace(/\\s/g, '-');\n };\n\n\n _initAce () {\n ace.config.set('basePath', '/js');\n ace.config.set('modePath', '/js');\n ace.config.set('themePath', '/js');\n ace.config.set('workerPath','/js');\n }\n\n _loadAceEditorForSEO () {\n\n //\n // JSON/LD editor ES\n //\n\n this.seoJSONEditor = ace.edit('editorSeoJSON');\n this.seoJSONEditor.session.setMode('ace/mode/json');\n this.seoJSONEditor.setTheme('ace/theme/nord_dark');\n this.seoJSONEditor.session.setUseWorker('ace/worker/json');\n this.seoJSONEditor.session.on('change', this.seoJSONEditorOnChange);\n\n document.getElementById('editorSeoJSON').style.fontSize = '15px';\n }\n\n _loadAceEditorForSeoEN () {\n\n //\n // JSON/LD editor EN\n //\n\n this.seoJSONEditorEN = ace.edit('editorSeoJsonEN');\n this.seoJSONEditorEN.session.setMode('ace/mode/json');\n this.seoJSONEditorEN.setTheme('ace/theme/nord_dark');\n this.seoJSONEditorEN.session.setUseWorker('ace/worker/json');\n this.seoJSONEditorEN.session.on('change', this.seoJSONEditorOnChangeEN);\n\n document.getElementById('editorSeoJsonEN').style.fontSize = '15px';\n }\n\n _loadAceEditorForSeoDE () {\n\n //\n // JSON/LD editor EN\n //\n\n this.seoJSONEditorDE = ace.edit('editorSeoJsonDE');\n this.seoJSONEditorDE.session.setMode('ace/mode/json');\n this.seoJSONEditorDE.setTheme('ace/theme/nord_dark');\n this.seoJSONEditorDE.session.setUseWorker('ace/worker/json');\n this.seoJSONEditorDE.session.on('change', this.seoJSONEditorOnChangeDE);\n\n document.getElementById('editorSeoJsonDE').style.fontSize = '15px';\n }\n\n\n //\n // Events Callbacks\n //\n\n seoJSONEditorOnChange () {\n this.hiddenSeoJSONTarget.value = this.seoJSONEditor.getValue();\n }\n\n seoJSONEditorOnChangeEN () {\n this.hiddenSeoJsonENTarget.value = this.seoJSONEditorEN.getValue();\n }\n\n seoJSONEditorOnChangeDE () {\n this.hiddenSeoJsonDETarget.value = this.seoJSONEditorDE.getValue();\n }\n\n preSubmit (event) {\n event.preventDefault();\n let rich = document.getElementsByClassName('richtext');\n rich.forEach(element => {\n element.click();\n });\n setTimeout(() => {\n event.target.form.requestSubmit()\n }, 100);\n }\n\n}","import { Controller } from 'stimulus'\nimport { randomString } from 'helpers'\n\nexport default class extends Controller {\n\n static targets = [ 'passwordInput', 'passwordEyeButton' ]\n\n connect() {}\n\n /*\n * generateRandomPassword\n * Generates a random password\n *\n */\n\n generateRandomPassword () {\n let password = randomString(8);\n this.passwordInputTarget.value = password;\n }\n\n\n /*\n * togglePassword\n * Show or hide the password inside the input\n *\n */\n\n togglePassword () {\n if ( this.passwordInputTarget.type === 'text' ) {\n this.passwordInputTarget.type = 'password';\n this.passwordEyeButtonTarget.innerHTML = `\n \n \n `;\n }\n else {\n this.passwordInputTarget.type = 'text';\n this.passwordEyeButtonTarget.innerHTML = `\n \n \n \n `;\n }\n }\n}\n","import { Controller } from \"stimulus\"\nimport Glide from '@glidejs/glide'\n\nexport default class extends Controller {\n\n connect() {\n \n let glide = new Glide('.glide', {\n type: 'carousel',\n //autoplay: 4000,\n focusAt: 'center',\n startAt: 1,\n perView: 3,\n breakpoints: {\n 767: {\n focusAt: \"center\",\n perView: 1,\n },\n }\n });\n\n glide.mount();\n\n }\n\n}","import { Controller } from \"stimulus\"\n\nexport default class extends Controller {\n\n connect() {\n }\n\n toggle(event) {\n let target = event.target;\n let parent = target.parentElement;\n if ( target.classList.contains('manager') ) {\n target.classList.toggle('rotate-0');\n target.classList.toggle('-rotate-180');\n }\n if ( parent.classList.contains('manager') ) {\n parent.classList.toggle('rotate-0');\n parent.classList.toggle('-rotate-180');\n }\n }\n}","import { Controller } from \"stimulus\"\nimport { Turbo } from \"@hotwired/turbo-rails\";\n\nexport default class extends Controller {\n connect() {}\n\n rate(event) {\n let rating = event.target.dataset.value;\n let tour_id = event.target.dataset.tour;\n let index = event.target.dataset.index;\n const url = `/tours_rating/rate?rating=${rating}&tour_id=${tour_id}&index=${index}`;\n\n Turbo.visit(url, { action: 'replace' });\n }\n\n}","import { Controller } from \"stimulus\";\n\nexport default class extends Controller {\n\n connect() {\n sessionStorage.removeItem('basket');\n }\n\n}","// app/javascript/helpers/index.js\nimport { Turbo } from \"@hotwired/turbo-rails\";\n\nexport function getMetaValue(name) {\n const element = findElement(document.head, `meta[name=\"${name}\"]`);\n if (element) {\n return element.getAttribute(\"content\");\n }\n}\n\nexport function findElement(root, selector) {\n if (typeof root == \"string\") {\n selector = root;\n root = document;\n }\n return root.querySelector(selector);\n}\n\nexport function toArray(value) {\n if (Array.isArray(value)) {\n return value;\n } else if (Array.from) {\n return Array.from(value);\n } else {\n return [].slice.call(value);\n }\n}\n\nexport function removeElement(el) {\n if (el && el.parentNode) {\n el.parentNode.removeChild(el);\n }\n}\n\nexport function insertAfter(el, referenceNode) {\n return referenceNode.parentNode.insertBefore(el, referenceNode.nextSibling);\n}\n\n\n/**\n * randomString\n * Generates a new random string according\n * to the length passed by param\n *\n * @param length {number} - Random string length\n */\n\nexport function randomString (length) {\n\n if ( typeof length !== 'number' ) {\n console.error('Length must be an integer');\n return;\n }\n\n let result = '';\n const chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';\n\n for (let i = length; i > 0; --i)\n result += chars[Math.floor(Math.random() * chars.length)];\n\n return result;\n}\n\n\n/**\n * turbo_fetch\n * Makes a fetch with turbo format\n *\n * @param url {string} - url for the fetch\n */\n\n/*export function turbo_fetch (url) {\n fetch(url, {\n headers: {\n Accept: \"text/vnd.turbo-stream.html\",\n },\n })\n .then(r => r.text())\n .then(html => Turbo.renderStreamMessage(html))\n .then(data => {\n const event = document.createEvent('Event');\n event.initEvent('framed', true, true);\n document.dispatchEvent(event);\n })\n}*/\n\nexport function turbo_fetch(url) {\n return fetch(url, {\n headers: {\n Accept: \"text/vnd.turbo-stream.html\",\n },\n })\n .then((response) => response.text())\n .then((html) => Turbo.renderStreamMessage(html))\n .then((data) => {\n const event = new Event(\"framed\", { bubbles: true, cancelable: true });\n document.dispatchEvent(event);\n return data;\n })\n .catch((error) => {\n console.error(\"Error during turbo_fetch:\", error);\n throw error;\n });\n}\n","import Rails from \"@rails/ujs\"\n\n/*\n * Implements a user-facing modal confirmation when link has a\n * \"data-confirm\" attribute using Tailwind. MIT license.\n * \n * AlpineJS is used to manage animations and displaying the modal itself.\n *\n * - ruben@21ninjas.es Tue Mar 11 12:28:15 CEST 2021\n */\n\n\n(() => {\n\n let defaults = {\n title: 'Are you sure?',\n commit: 'Confirm',\n commitClass: 'btn-danger',\n cancel: 'Cancel',\n cancelClass: 'btn-default',\n focus: 'commit'\n };\n\n\n /*\n * createModal\n * Creates the modal\n *\n */\n\n let createModal = (ele) => {\n\n let element = ele.target;\n\n let options = {\n title: element.dataset['title'],\n text: element.dataset['confirm'],\n commit: element.dataset['commit'],\n commitClass: element.dataset['commitclass'],\n cancel: element.dataset['cancel'],\n cancelClass: element.dataset['cancelclass'],\n method: element.dataset['method'],\n url: element.href\n };\n\n let modal = createModalElement(options);\n\n modal\n .querySelector('.commit')\n .addEventListener('click', () => {\n closeAndDestroyModal(modal);\n });\n\n modal\n .querySelector('.cancel')\n .addEventListener('click', () => {\n closeAndDestroyModal(modal);\n });\n\n modal\n .querySelector('.close')\n .addEventListener('click', () => {\n closeAndDestroyModal(modal);\n });\n\n return modal;\n };\n\n\n /* \n * closeAndDestroyModal\n * Closes modal firstly in order AlpineJS\n * animations to perfom and destroys modal\n * element afterwards\n *\n */\n\n let closeAndDestroyModal = (modalObj) => {\n \n // Applying animations\n let overlay = modalObj.querySelector('.overlay');\n overlay.classList.remove('ease-out', 'duration-300', 'translate-y-0', 'opacity-100', 'sm:translate-x-0', 'opacity-100');\n overlay.classList.add('transition', 'ease-in', 'duration-100', 'opacity-0');\n\n let modal = modalObj.querySelector('.modal');\n modal.classList.remove('ease-out', 'duration-300', 'translate-y-0', 'opacity-100', 'sm:translate-x-0');\n modal.classList.add('transition', 'ease-in', 'duration-100', 'opacity-0');\n\n setTimeout(() => {\n modalObj.remove();\n }, 200);\n };\n\n\n /*\n * createModalElement\n * Creates the modal element and set it up\n * according to the default or user's preferences\n *\n */\n\n let createModalElement = (options) => {\n\n let modal = document.createElement('div');\n\n modal.classList.add('fixed', 'z-10', 'inset-0', 'overflow-y-auto'); \n modal.innerHTML = `\n
\n\n
\n
\n
\n\n \n\n
\n
\n \n
\n
\n
\n \n \n \n \n
\n
\n

\n Are you sure?\n

\n
\n

\n Are you sure you want to perform this action?\n

\n
\n
\n
\n
\n \n Confirm\n \n \n
\n
\n
\n `;\n\n modal.querySelector('.commit').setAttribute('href', options.url);\n modal.querySelector('.commit').setAttribute('data-method', options.method);\n\n if ( options.title )\n modal.querySelector('.modal-title').innerHTML = options.title;\n\n if ( options.text )\n modal.querySelector('.modal-text').innerHTML = options.text;\n\n if ( options.commit )\n modal.querySelector('.commit').innerHTML = options.commit;\n\n if ( options.cancel )\n modal.querySelector('.cancel').innerHTML = options.cancel;\n\n if ( options.commitClass ) {\n modal.querySelector('.commit').classList.remove('btn-danger');\n modal.querySelector('.commit').classList.add(options.commitClass);\n }\n\n if ( options.cancelClass ) {\n modal.querySelector('.cancel').classList.remove('btn');\n modal.querySelector('.cancel').classList.add(options.cancelClass);\n }\n\n document.body.appendChild(modal);\n\n return modal;\n };\n\n\n if ( Rails ) {\n\n let elements = ['a[data-confirm]', 'button[data-confirm]', 'input[type=submit][data-confirm]'];\n\n Rails.delegate(document, elements.join(', '), 'confirm', (element) => {\n\n let modalObj = createModal(element);\n\n // Applying animations\n setTimeout(() => {\n let overlay = modalObj.querySelector('.overlay');\n overlay.classList.remove('translate-y-2', 'opacity-0', 'sm:translate-y-0', 'sm:translate-x-2');\n overlay.classList.add('translate-y-0', 'opacity-100', 'sm:translate-x-0');\n \n let modal = modalObj.querySelector('.modal');\n modal.classList.remove('translate-y-2', 'opacity-0', 'sm:translate-y-0', 'sm:translate-x-2');\n modal.classList.add('translate-y-0', 'opacity-100', 'sm:translate-x-0');\n }, 100);\n\n return false;\n\n });\n\n }\n})();","// Load all the controllers within this directory and all subdirectories. \n// Controller files must be named *_controller.js.\n\nimport { Application } from \"stimulus\"\nimport { definitionsFromContext } from \"stimulus/webpack-helpers\"\n\nconst application = Application.start()\nconst context = require.context(\"controllers\", true, /_controller\\.js$/)\napplication.load(definitionsFromContext(context))","// This file is automatically compiled by Webpack, along with any other files\n// present in this directory. You're encouraged to place your actual application logic in\n// a relevant structure within app/javascript and only use these pack files to reference\n// that code so it'll be compiled.\n\nimport Rails from \"@rails/ujs\"\nimport \"@hotwired/turbo-rails\"\nimport * as ActiveStorage from \"@rails/activestorage\"\nimport \"channels\"\n\nRails.start()\nActiveStorage.start()\n\nimport \"../stylesheets/application.scss\"\nimport \"../stylesheets/dropzone.scss\"\nimport \"../stylesheets/freemotion.scss\"\nimport \"../stylesheets/actiontext.scss\"\nimport 'alpine-turbo-drive-adapter'\nimport \"alpinejs\"\nimport \"../helpers/data-confirm-tailwind-modal\";\nimport 'tw-elements';\n\nimport \"controllers\";\n// import \"@rails/actiontext\";\nimport { AttachmentUpload } from \"@rails/actiontext/app/javascript/actiontext/attachment_upload\"\n\naddEventListener(\"trix-attachment-add\", event => {\n const { attachment, target } = event\n\n if (attachment.file) {\n const upload = new AttachmentUpload(attachment, target)\n upload.start()\n }\n})"],"sourceRoot":""}