{"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","changeDriver","bprid","nameInput","surnameInput","emailInput","phonelInput","firstname","email","mobil","log","message","closeDriver","saveDriver","phoneInput","elem","user","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","bikesData","bikes","removeEventListener","itemsData","session","innerText","Controller","targets","values","String","step3","url2","Turbo","action","payBooking","terms","basketsString","baskets","comment","ref","closeBaskets","Array","isArray","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","brands","filterTags","brand","bikes_limit","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","single_basket","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","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","row","down","up","table","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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AM,MAER,CACEqM,KAAM,SACNC,UAAW,MACXtM,KAAM,MAER,CACEqM,KAAM,UACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,cACNC,UAAW,MACXtM,KAAM,MAER,CACEqM,KAAM,UACNC,UAAW,MACXtM,KAAM,MAER,CACEqM,KAAM,UACNC,UAAW,MACXtM,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,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,CACEqM,KAAM,SACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,UACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,uBACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,gBACNC,UAAW,KACXtM,KAAM,MAER,CACEqM,KAAM,UACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,aACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,UACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,8CACNC,UAAW,MACXtM,KAAM,MAER,CACEqM,KAAM,UACNC,UAAW,MACXtM,KAAM,MAER,CACEqM,KAAM,0BACNC,UAAW,QACXtM,KAAM,MAER,CACEqM,KAAM,uBACNC,UAAW,QACXtM,KAAM,MAER,CACEqM,KAAM,oBACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,QACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,SACNC,UAAW,OACXtM,KAAM,MAER,CACEqM,KAAM,WACNC,UAAW,OACXtM,KAAM,O,0LAQR4a,KAAA,WACE1G,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","file":"js/application-762ca4fa0b781e442ce8.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.pricePerUnit < 0 )\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`\n );\n let wrapper = document.getElementById(\n `discount-wrapper`\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 = parseFloat(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 changeDriver(event) {\n let path = event.path || (event.composedPath && event.composedPath());\n path.forEach((element) => {\n if (element.dataset && element.dataset.bprid) {\n let nameInput = document.getElementById(\"name\");\n let surnameInput = document.getElementById(\"surname\");\n let emailInput = document.getElementById(\"email\");\n let phonelInput = document.getElementById(\"phone\");\n let saveDriver = document.getElementById(\"save-driver\");\n saveDriver.dataset.bprid = element.dataset.bprid;\n const url = `/agents/get_customer?bprId=${element.dataset.bprid}`;\n document.getElementById('spinner').classList.remove('hidden');\n fetch(url)\n .then((response) => response.json())\n .then((data) => {\n nameInput.value = data.firstname;\n surnameInput.value = data.name;\n emailInput.value = data.email;\n phonelInput.value = data.mobil;\n document.getElementById('spinner').classList.add('hidden');\n document.getElementById('driver-modal').classList.remove('hidden');\n })\n .catch(function (error) {\n document.getElementById('spinner').classList.add('hidden');\n console.log(\"Hubo un problema con la petición:\" + error.message);\n });;\n }\n });\n }\n\n closeDriver() {\n document.getElementById('driver-modal').classList.add('hidden');\n let nameInput = document.getElementById(\"name\");\n let surnameInput = document.getElementById(\"surname\");\n let saveDriver = document.getElementById(\"save-driver\");\n nameInput.value = '';\n surnameInput.value = '';\n saveDriver.dataset.bprid = '';\n }\n\n saveDriver(event) {\n const nameInput = document.getElementById(\"name\").value;\n const surnameInput = document.getElementById(\"surname\").value;\n const emailInput = document.getElementById(\"email\").value;\n const phoneInput = document.getElementById(\"phone\").value;\n const url = `/agents/change_driver?bprId=${event.target.dataset.bprid}&name=${nameInput}&surname=${surnameInput}&email=${emailInput}&phone=${phoneInput}`;\n document.getElementById('spinner').classList.remove('hidden');\n document.getElementById('driver-modal').classList.add('hidden');\n fetch(url).then((data) => {\n window.location.reload();\n });\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 ( !Array.isArray(baskets) )\n baskets = [baskets]\n if (terms.checked) {\n document.getElementById(\"spinner\").classList.remove(\"hidden\");\n baskets.forEach((basket) => {\n if (document.getElementById(`comment-${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\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 ( !Array.isArray(basketArray) )\n basketArray = [basketArray]\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 bikes_limit = 5;\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 > bikes_limit) {\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 let brands = document.querySelectorAll(\".brand:checked\");\n let availability = document.getElementById(\"availability\");\n let filterTags = document.getElementById(\"filterTags\");\n let filterTagsMobile = document.getElementById(\"filterTagsMobile\");\n let brand = [];\n\n setTimeout(() => {\n if (brands.length > 0) {\n for (let i = 0; i < brands.length; i++) {\n brand.push(brands[i].value);\n }\n } else brand = \"\";\n\n let checks = document.querySelectorAll(\".model:checked\");\n let modelsNumber = document.querySelectorAll(\".model\").length;\n\n if (modelsNumber < (bikes_limit + 1) && 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 === bikes_limit)\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 let single_basket;\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 let single_basket = data.basket;\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(single_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 toggle(event) {\n let row;\n let path = event.path || (event.composedPath && event.composedPath());\n path.forEach((el) => {\n if (el.dataset && el.dataset.row) {\n row = el.dataset.row;\n }\n });\n if ( row ) {\n let down = document.getElementById(`chevron-down-${row}`);\n let up = document.getElementById(`chevron-up-${row}`);\n let table = document.getElementById(`table-${row}`);\n down.classList.toggle('hidden');\n up.classList.toggle('hidden');\n table.classList.toggle('hidden');\n }\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":""}