Help
RSS
API
Feed
Maltego
Contact
Domain > gotyourtrip.com
×
More information on this domain is in
AlienVault OTX
Is this malicious?
Yes
No
DNS Resolutions
Date
IP Address
2025-02-08
147.79.120.250
(
ClassC
)
2025-06-28
91.108.98.49
(
ClassC
)
2025-10-16
77.37.76.174
(
ClassC
)
Port 80
HTTP/1.1 301 Moved PermanentlyDate: Thu, 16 Oct 2025 23:33:48 GMTContent-Type: text/htmlContent-Length: 795Connection: keep-aliveLocation: https://gotyourtrip.com/platform: hostingerpanel: hpanelContent-Security-Policy: upgrade-insecure-requestsServer: hcdnalt-svc: h3:443; ma86400x-hcdn-request-id: b39ae874160b4c00844e121378a6218a-phx-edge5x-hcdn-cache-status: MISSx-hcdn-upstream-rt: 0.267 !DOCTYPE html>html styleheight:100%>head>meta nameviewport contentwidthdevice-width, initial-scale1, shrink-to-fitno />title> 301 Moved Permanently/title>style>@media (prefers-color-scheme:dark){body{background-color:#000!important}}/style>/head>body stylecolor: #444; margin:0;font: normal 14px/20px Arial, Helvetica, sans-serif; height:100%; background-color: #fff;>div styleheight:auto; min-height:100%; > div styletext-align: center; width:800px; margin-left: -400px; position:absolute; top: 30%; left:50%;> h1 stylemargin:0; font-size:150px; line-height:150px; font-weight:bold;>301/h1>h2 stylemargin-top:20px;font-size: 30px;>Moved Permanently/h2>p>The document has been permanently moved./p>/div>/div>/body>/html>
Port 443
HTTP/1.1 200 OKDate: Thu, 16 Oct 2025 23:33:48 GMTContent-Type: text/html; charsetUTF-8Transfer-Encoding: chunkedConnection: keep-aliveVary: Accept-EncodingX-Powered-By: PHP/8.3.15platform: hostingerpanel: hpanelContent-Security-Policy: upgrade-insecure-requestsServer: hcdnalt-svc: h3:443; ma86400x-hcdn-request-id: 2cc0be96f8e1163d04c5632af49aa1a1-phx-edge7x-hcdn-cache-status: DYNAMICx-hcdn-upstream-rt: 0.540 !DOCTYPE html>html langen>head> !-- Meta Tags --> meta charsetutf-8> meta nameviewport contentwidthdevice-width, initial-scale1.0> title>Plan Your Dubai Vacation | Got Your Trip/title> meta namedescription contentPlan your Dubai vacation with GotYourTrip.com. Explore the best travel and tours packages with Got your Trip. Plan your next adventure with expert guides and unforgettable experiences.> meta namekeywords contentDubai Trip, travel, tours, trip, Dubai, UAE, desert, Dubai Visa, Dubai Holiday,got your trip,Desert safari, Dune Bashing, Burj Khalifa, gotyourtrip, burjKhalifa, mall, sheikh, bin, zayed, adventure, destinations, vacation, holiday> meta namerobots contentindex, follow> meta nameauthor contentGot Your Trip> meta namelanguage contentEnglish> meta namerating contentGeneral> meta http-equivX-UA-Compatible contentieedge> link relicon typeimage/x-icon hrefassets/img/favicon.png> link relcanonical hrefhttps://gotyourtrip.com/ /> !-- Apple Touch Icon --> link relapple-touch-icon sizes180x180 hrefassets/img/apple-touch-icon.png> !-- Favicon --> link relicon hrefassets/img/favicon.png typeimage/x-icon> link relshortcut icon hrefassets/img/favicon.png typeimage/x-icon> !-- Theme Settings Js --> script srcassets/js/theme-script.js typetext/javascript >/script> link relstylesheet hrefassets/css/animate.css> link relstylesheet hrefassets/css/bootstrap.min.css> !-- Main.css --> link relstylesheet hrefassets/css/meanmenu.css> !-- Tabler Icon CSS --> link relstylesheet hrefassets/plugins/tabler-icons/tabler-icons.css> !-- Fontawesome Icon CSS --> link relstylesheet hrefassets/plugins/fontawesome/css/fontawesome.min.css> link relstylesheet hrefassets/plugins/fontawesome/css/all.min.css> !-- Fancybox CSS --> link relstylesheet hrefassets/plugins/fancybox/jquery.fancybox.min.css> !-- Owlcarousel CSS --> link relstylesheet hrefassets/plugins/owlcarousel/owl.carousel.min.css> !-- Iconsax CSS --> link relstylesheet hrefassets/css/iconsax.css> !-- Datepicker CSS --> link relstylesheet hrefassets/css/bootstrap-datetimepicker.min.css> link relstylesheet hrefassets/plugins/intltelinput/css/intlTelInput.css> !-- Style CSS --> link relstylesheet hrefassets/css/style.css?v32> style> .hero-sec-six { background: url(assets/img/banner/museumOfTheFuture.jpg); background-size: cover; background-position: center; background-attachment: fixed; padding: 100px 0; position: relative; z-index: 1; } /style>/head>body>link relstylesheet hrefassets/plugins/intltelinput/css/intlTelInput.css>script srchttps://accounts.google.com/gsi/client async defer>/script>div idg_id_onload data-client_id249399397989-h6f0fdt1v3u9eualh5fuch1o5ers18n8.apps.googleusercontent.com data-callbackhandleGoogleCallback data-auto_promptfalse>/div>!-- div classg_id_signin data-typestandard data-sizelarge data-themeoutline data-textsign_in_with data-shaperectangular data-logo_alignmentleft>/div> -->!-- Loader --> div idpreloader-active> div classpreloader d-flex align-items-center justify-content-center> div classpreloader-inner position-relative> div classpreloader-circle>/div> div classpreloader-img pere-text> img srcassets/img/logo/favicon.png altGot Your Trip Logo> /div> /div> /div> /div> !-- /Loader --> div classmain-header d-print-none> !-- Header Topbar--> div classheader-topbar text-center bg-transparent> div classcontainer> div classd-flex align-items-center justify-content-between flex-wrap> p classd-flex align-items-center fw-medium fs-14 mb-2>/p> div classd-flex align-items-center> p classmb-2 me-3 d-flex align-items-center fw-medium fs-14>/p> div classdropdown flag-dropdown mb-2 me-3> a hrefjavascript:void(0); classdropdown-toggle d-inline-flex align-items-center data-bs-toggledropdown aria-expandedfalse> img srcassets/img/flags/us-flag.svg classme-2 altflag>ENG /a> ul classdropdown-menu p-2 mt-2 language> li> a classdropdown-item rounded d-flex align-items-center hrefjavascript:void(0);> img srcassets/img/flags/us-flag.svg classme-2 altflag>ENG /a> /li> li> a classdropdown-item rounded d-flex align-items-center hrefjavascript:void(0);> img srcassets/img/flags/arab-flag.svg classme-2 altflag>ARA /a> /li> li> a classdropdown-item d-flex align-items-center hrefjavascript:void(0);> img srcassets/img/flags/india-flag.svg classme-2 altflag>HINDI /a> /li> /ul> /div> div classdropdown mb-2 me-3> a hrefjavascript:void(0); classdropdown-toggle data-bs-toggledropdown aria-expandedfalse> AED /a> ul classdropdown-menu p-2 mt-2 currency> li>a classdropdown-item rounded hrefjavascript:void(0);>AED/a>/li> li>a classdropdown-item rounded hrefjavascript:void(0);>INR ₹/a>/li> li>a classdropdown-item rounded hrefjavascript:void(0);>USD $/a>/li> /ul> /div> div classfav-dropdown mb-2> a hrefcart classposition-relative> i classisax isax-shopping-cart>/i>span classcount-icon bg-secondary cart-counter>0/span> /a> /div> /div> /div> /div> /div> !-- /Header Topbar--> !-- Header --> header> div classcontainer> div classoffcanvas-info> div classoffcanvas-wrap> div classoffcanvas-detail> div classoffcanvas-head> div classd-flex justify-content-between align-items-center mb-3> a hrefindex classblack-logo-responsive> img srcassets/img/logo.svg width50% altlogo-img> /a> a hrefindex classwhite-logo-responsive> img srcassets/img/logo.svg width50% altlogo-img> /a> div classoffcanvas-close> i classti ti-x>/i> /div> /div> div classwishlist-info d-flex justify-content-between align-items-center> h6 classfs-16 fw-medium>Cart/h6> div classd-flex align-items-center> div classfav-dropdown> a hrefcart classposition-relative> i classisax isax-heart>/i>span classcount-icon bg-secondary text-gray-9>0/span> /a> /div> /div> /div> /div> div classmobile-menu fix mb-3>/div> div classoffcanvas__contact> div classmt-4> div classheader-dropdown d-flex flex-fill> div classw-100> div classdropdown flag-dropdown mb-2> a hrefjavascript:void(0); classdropdown-toggle bg-white border d-flex align-items-center data-bs-toggledropdown aria-expandedfalse> img srcassets/img/flags/us-flag.svg classme-2 altflag>ENG /a> ul classdropdown-menu p-2 language> li> a classdropdown-item rounded d-flex align-items-center hrefjavascript:void(0);> img srcassets/img/flags/us-flag.svg classme-2 altflag>ENG /a> /li> li> a classdropdown-item rounded d-flex align-items-center hrefjavascript:void(0);> img srcassets/img/flags/arab-flag.svg classme-2 altflag>ARA /a> /li> li> a classdropdown-item rounded d-flex align-items-center hrefjavascript:void(0);> img srcassets/img/flags/india-flag.svg classme-2 altflag>HINDI /a> /li> /ul> /div> div classdropdown> a hrefjavascript:void(0); classdropdown-toggle bg-white border d-block data-bs-toggledropdown aria-expandedfalse> AED /a> ul classdropdown-menu p-2 currency> li>a classdropdown-item rounded hrefjavascript:void(0);>AED/a>/li> li>a classdropdown-item rounded hrefjavascript:void(0);>INR ₹/a>/li> li>a classdropdown-item rounded hrefjavascript:void(0);>USD $/a>/li> /ul> /div> /div> /div> div classsignin_modal> a hrefjavascript:void(0); classtext-white btn btn-dark w-100 mb-3 data-bs-togglemodal data-bs-target#login-modal>Sign In/a> a hrefregister_supplier classbtn btn-primary w-100>Become Supplier/a> /div> /div> /div> /div> /div> /div> div classoffcanvas-overlay>/div> div classheader-nav> div classmain-menu-wrapper> div classnavbar-logo> a classlogo-white header-logo hrefindex> img srcassets/img/logo.svg width50% classlogo altLogo> /a> a classlogo-dark header-logo hrefindex> img srcassets/img/logo.svg width50% classlogo altLogo> /a> /div> div classheader-btn d-flex align-items-center> div classme-3> a hrefjavascript:void(0); iddark-mode-toggle classtheme-toggle> i classisax isax-moon>/i> /a> a hrefjavascript:void(0); idlight-mode-toggle classtheme-toggle> i classisax isax-sun-1>/i> /a> /div> div classsignin_modal> a hrefjavascript:void(0); classbtn btn-white me-3 data-bs-togglemodal data-bs-target#login-modal>Sign In/a> a hrefregister_supplier classbtn btn-primary me-0>Become Supplier/a> /div> div classheader__hamburger d-xl-none my-auto> div classsidebar-menu> i classisax isax-menu5>/i> /div> /div> /div> /div> /div> /div> /header> !-- /Header --> /div> !-- Hero Section --> section classhero-sec-six> div classcontainer> div classhero-content> div classrow text-center> div classcol-md-12> div classrow> div classcol-md-12> div classbanner-form-tab-six> ul classnav justify-content-center text-center> li> a hrefjavascript:void(0); classnav-link active data-bs-toggletab data-bs-target#flight> i classisax isax-airplane5 me-2>/i>Flights /a> /li> li> a hrefjavascript:void(0); classnav-link data-bs-toggletab data-bs-target#Activities> i classisax isax-search-favorite5 me-2>/i>Activities /a> /li> li> a hrefjavascript:void(0); classnav-link data-bs-toggletab data-bs-target#Cruise> i classisax isax-ship5 me-2>/i>Cruise /a> /li> li> a hrefjavascript:void(0); classnav-link data-bs-toggletab data-bs-target#Holiday> i classisax isax-camera5 me-2>/i>Holiday /a> /li> li> a hrefjavascript:void(0); classnav-link data-bs-toggletab data-bs-target#Umrah> i classisax isax-buildings5 me-2>/i>Umrah /a> /li> /ul> /div> /div> /div> div classbanner-form card mb-0> div classcard-body> div> div classtab-content> div classtab-pane active show fade idflight > form actionflights> div classd-flex align-items-center justify-content-between flex-wrap mb-2> div classd-flex align-items-center flex-wrap> div classform-check d-flex align-items-center me-3 mb-2> input classform-check-input trip-radio mt-0 typeradio nametrip idoneway value1 checked> label classform-check-label fs-14 ms-2 foroneway> Oneway /label> /div> div classform-check d-flex align-items-center me-3 mb-2> input classform-check-input trip-radio mt-0 typeradio nametrip idroundtrip value2> label classform-check-label fs-14 ms-2 forroundtrip> Round Trip /label> /div> !-- div classform-check d-flex align-items-center me-3 mb-2> input classform-check-input mt-0 typeradio nametrip idmultiway valuemultiway_trip> label classform-check-label fs-14 ms-2 formultiway> Multi Trip /label> /div> --> /div> h6 classfw-medium fs-16 mb-2>Affordable Flights in just One simple search/h6> /div> div classnormal-trip> div classd-lg-flex> div classd-flex form-info> div classform-item dropdown> div data-bs-toggledropdown data-bs-auto-closeoutside aria-expandedfalse rolemenu> label classform-label fs-14 text-default mb-1>From/label> input typehidden nameorigin idorigin_iata_code valueDXB> input typetext readonly classform-control idorigin_city valueDubai> p classfs-16 mb-0 idorigin_airport>Dubai International Airport/p> /div> div classdropdown-menu dropdown-md p-0 idorigin_dropdown> div classinput-search p-3 border-bottom> div classinput-group> input typetext idorigin classform-control search_airport placeholderSearch Location> span classinput-group-text px-2 border-start-0>i classisax isax-search-normal>/i>/span> /div> /div> ul idorigin_airport_list> li classborder-bottom> a classdropdown-item port hrefjavascript:void(0); data-idorigin data-city_nameDubai data-airportDubai International Airport data-iata_codeDXB> div classrow> div classcol-md-2> i classfas fa-plane-departure text-dark>/i> /div> div classcol-md-8> h6 classfs-16 fw-medium>Dubai/h6> p>Dubai International Airport/p> /div> div classcol-md-2 fw-bold > DXB /div> /div> /a> /li> li classborder-bottom> a classdropdown-item port hrefjavascript:void(0); data-idorigin data-city_nameLucknow data-airportChaudhary Charan Singh International Airport data-iata_codeLKO> div classrow> div classcol-md-2> i classfas fa-plane-departure text-dark>/i> /div> div classcol-md-8> h6 classfs-16 fw-medium>Lucknow/h6> p> Chaudhary Charan Singh International Airport/p> /div> div classcol-md-2 fw-bold > LKO /div> /div> /a> /li> li classborder-bottom> a classdropdown-item port hrefjavascript:void(0); data-idorigin data-city_nameHarare data-airportRobert Mugabe International Airport data-iata_codeHRE> div classrow> div classcol-md-2> i classfas fa-plane-departure text-dark>/i> /div> div classcol-md-8> h6 classfs-16 fw-medium>Harare/h6> p>Robert Mugabe International Airport/p> /div> div classcol-md-2 fw-bold > HRE /div> /div> /a> /li> /ul> /div> /div> div classform-item dropdown ps-2 ps-sm-3> div data-bs-toggledropdown data-bs-auto-closeoutside aria-expandedfalse rolemenu> label classform-label fs-14 text-default mb-1>To/label> input typetext readonly classform-control iddestination_city valueNew Delhi> input typehidden namedestination iddestination_iata_code valueDEL> p classfs-16 mb-0 iddestination_airport>New Delhi, (India)/p> span classway-icon badge badge-primary rounded-pill translate-middle> i classfa-solid fa-arrow-right-arrow-left>/i> /span> /div> div classdropdown-menu dropdown-md p-0 iddestination_dropdown> div classinput-search p-3 border-bottom> div classinput-group> input typetext iddestination class search_airport form-control placeholderSearch Location> span classinput-group-text px-2 border-start-0>i classisax isax-search-normal>/i>/span> /div> /div> ul iddestination_airport_list> li classborder-bottom> a classdropdown-item port hrefjavascript:void(0); data-iddestination data-city_nameDubai data-airportDubai International Airport data-iata_codeDXB> div classrow> div classcol-md-2> i classfas fa-plane-departure text-dark>/i> /div> div classcol-md-8> h6 classfs-16 fw-medium>Dubai/h6> p>Dubai International Airport/p> /div> div classcol-md-2 fw-bold > DXB /div> /div> /a> /li> li classborder-bottom> a classdropdown-item port hrefjavascript:void(0); data-iddestination data-city_nameLucknow data-airportChaudhary Charan Singh International Airport data-iata_codeLKO> div classrow> div classcol-md-2> i classfas fa-plane-departure text-dark>/i> /div> div classcol-md-8> h6 classfs-16 fw-medium>Lucknow/h6> p> Chaudhary Charan Singh International Airport/p> /div> div classcol-md-2 fw-bold > LKO /div> /div> /a> /li> li classborder-bottom> a classdropdown-item port hrefjavascript:void(0); data-iddestination data-city_nameHarare data-airportRobert Mugabe International Airport data-iata_codeHRE> div classrow> div classcol-md-2> i classfas fa-plane-departure text-dark>/i> /div> div classcol-md-8> h6 classfs-16 fw-medium>Harare/h6> p>Robert Mugabe International Airport/p> /div> div classcol-md-2 fw-bold > HRE /div> /div> /a> /li> /ul> /div> /div> div classform-item> label classform-label fs-14 text-default mb-1>Departure/label> input typetext classform-control datetimepicker tour-date iddepartureDate namedeparture_date value16-10-2025> p classfs-16 mb-0>Thursday /p> /div> div classform-item round-drip> label classform-label fs-14 text-default mb-1>Return/label> input typetext classform-control datetimepicker tour-date idreturnDate namereturn_date value16-10-2025> p classfs-16 mb-0>Thursday/p> /div> div classform-item dropdown> div data-bs-toggledropdown data-bs-auto-closeoutside aria-expandedfalse rolemenu> label classform-label fs-16 text-default mb-1>Travellers and cabin class/label> h5>span classfw-normal fs-14>Persons/span>/h5> p classfs-16 mb-0 cabin-pax>1 Adult, Economy/p> /div> div classdropdown-menu dropdown-menu-end dropdown-xl cabin-pax-select> !-- h5 classmb-3>Select Travelers & Class/h5> --> div classmb-2 border br-10 info-item pb-1> h6 classfs-16 fw-medium mb-2>Travellers/h6> div classrow> div classcol-md-4> div classmb-3> label classform-label text-gray-9 mb-2>Adults span classtext-default fw-normal>( 12+ Yrs )/span>/label> div classcustom-increment> div classinput-group> span classinput-group-btn float-start> button typebutton classquantity-left-minus btn btn-light btn-number data-typeminus data-field> span>i classisax isax-minus>/i>/span> /button> /span> input typetext nameadults class input-number max9 value1> span classinput-group-btn float-end> button typebutton classquantity-right-plus btn btn-light btn-number data-typeplus data-field> span>i classisax isax-add>/i>/span> /button> /span> /div> /div> /div> /div> div classcol-md-4> div classmb-3> label classform-label text-gray-9 mb-2>Childrens span classtext-default fw-normal>( 2-12 Yrs )/span>/label> div classcustom-increment> div classinput-group> span classinput-group-btn float-start> button typebutton classquantity-left-minus btn btn-light btn-number data-typeminus data-field> span>i classisax isax-minus>/i>/span> /button> /span> input typetext namechildren class input-number max9 value0> span classinput-group-btn float-end> button typebutton classquantity-right-plus btn btn-light btn-number data-typeplus data-field> span>i classisax isax-add>/i>/span> /button> /span> /div> /div> /div> /div> div classcol-md-4> div classmb-3> label classform-label text-gray-9 mb-2>Infantsspan classtext-default fw-normal>( 0-12 Yrs )/span>/label> div classcustom-increment> div classinput-group> span classinput-group-btn float-start> button typebutton classquantity-left-minus btn btn-light btn-number data-typeminus data-field> span>i classisax isax-minus>/i>/span> /button> /span> input typetext nameinfants class input-number max9 value0> span classinput-group-btn float-end> button typebutton classquantity-right-plus btn btn-light btn-number data-typeplus data-field> span>i classisax isax-add>/i>/span> /button> /span> /div> /div> /div> /div> /div> /div> div classmb-2 border br-10 info-item pb-1> h6 classfs-16 fw-medium mb-2>Travellers/h6> div classd-flex align-items-center flex-wrap> div classform-check me-3 mb-3> input classform-check-input typeradio valueY namecabin_class ideconomy checked> label classform-check-label fs-14 foreconomy> Economy /label> /div> div classform-check me-3 mb-3> input classform-check-input typeradio valueW namecabin_class idpremium-economy> label classform-check-label forpremium-economy> Premium Economy /label> /div> div classform-check me-3 mb-3> input classform-check-input typeradio valueC namecabin_class idbusiness> label classform-check-label forbusiness> Business /label> /div> div classform-check mb-3> input classform-check-input typeradio valueF namecabin_class idfirst-class> label classform-check-label forfirst-class> First Class /label> /div> /div> /div> div classd-flex justify-content-end> a hrefjavascript:void(0); classbtn btn-light btn-sm me-2>Cancel/a> button typebutton classbtn btn-primary apply-travellers btn-sm>Apply/button> /div> /div> /div> /div> button typesubmit classbtn btn-primary search-btn rounded>Search/button> /div> /div> /form> /div> div classtab-pane fade idActivities> form actionactivities> div classd-flex align-items-center justify-content-between flex-wrap mb-2> h6 classfw-medium fs-16 mb-2>Activities and Things to do/h6> /div> div classd-lg-flex> div classd-flex form-info> div classform-item dropdown> div data-bs-toggledropdown data-bs-auto-closeoutside aria-expandedfalse rolemenu> label classform-label fs-14 text-default mb-1>Destination/label> input typetext classform-control city_name namecity valueDubai> input typehidden nameid classcity_id value1> p classfs-12 mb-0 classcountry_name>UAE/p> /div> div classdropdown-menu dropdown-md p-0 city_dropdown> ul classcity_list> li classborder-bottom> a classdropdown-item hrefjavascript:void(0);> h6 classfs-16 fw-medium>Dubai/h6> p classcountry_name>UAE/p> /a> /li> /ul> /div> /div> div classform-item> label classform-label fs-14 text-default mb-1> Event Date/label> input typetext classform-control datetimepicker tour-date idactivityDate namedate value16-10-2025> p classfs-12 mb-0>Monday/p> /div> div classform-item dropdown> div data-bs-toggledropdown data-bs-auto-closeoutside aria-expandedfalse rolemenu> label classform-label fs-14 text-default mb-1>Pax /label> h5> span classfw-normal fs-14>Pax/span>/h5> p classfs-12 mb-0>1 Adult, 0 Children/p> /div> div classdropdown-menu dropdown-menu-end dropdown-xl> h5 classmb-3>Select Pax/h5> div classmb-3 border br-10 info-item pb-1> h6 classfs-16 fw-medium mb-2>Pax/h6> div classrow> div classcol-md-4> div classmb-3> label classform-label text-gray-9 mb-2>Adults span classtext-default fw-normal>( 12+ Yrs )/span>/label> div classcustom-increment> div classinput-group> span classinput-group-btn float-start> button typebutton classquantity-left-minus btn btn-light btn-number data-typeminus data-field> span>i classisax isax-minus>/i>/span> /button> /span> input typetext nameadults class input-number value1> span classinput-group-btn float-end> button typebutton classquantity-right-plus btn btn-light btn-number data-typeplus data-field> span>i classisax isax-add>/i>/span> /button> /span> /div> /div> /div> /div> div classcol-md-4> div classmb-3> label classform-label text-gray-9 mb-2>Childrens span classtext-default fw-normal>( 2-12 Yrs )/span>/label> div classcustom-increment> div classinput-group> span classinput-group-btn float-start> button typebutton classquantity-left-minus btn btn-light btn-number data-typeminus data-field> span>i classisax isax-minus>/i>/span> /button> /span> input typetext namechidren class input-number value1> span classinput-group-btn float-end> button typebutton classquantity-right-plus btn btn-light btn-number data-typeplus data-field> span>i classisax isax-add>/i>/span> /button> /span> /div> /div> /div> /div> div classcol-md-4> div classmb-3> label classform-label text-gray-9 mb-2>Infants span classtext-default fw-normal>( 0-12 Yrs )/span>/label> div classcustom-increment> div classinput-group> span classinput-group-btn float-start> button typebutton classquantity-left-minus btn btn-light btn-number data-typeminus data-field> span>i classisax isax-minus>/i>/span> /button> /span> input typetext nameinfants class input-number value1> span classinput-group-btn float-end> button typebutton classquantity-right-plus btn btn-light btn-number data-typeplus data-field> span>i classisax isax-add>/i>/span> /button> /span> /div> /div> /div> /div> /div> /div> div classd-flex justify-content-end> a hrefjavascript:void(0); classbtn btn-light btn-sm me-2>Cancel/a> button typesubmit classbtn btn-primary btn-sm>Apply/button> /div> /div> /div> /div> button typesubmit classbtn btn-primary search-btn rounded>Search/button> /div> /form> /div> div classtab-pane fade idCruise> form actioncruise.php> div classd-flex align-items-center justify-content-between flex-wrap mb-2> h6 classfw-medium fs-16 mb-2>Search For Cruise/h6> /div> div classd-lg-flex> div classd-flex form-info> div classform-item dropdown> div data-bs-toggledropdown data-bs-auto-closeoutside aria-expandedfalse rolemenu> label classform-label fs-14 text-default mb-1>Destination/label> input typetext classform-control city_name valueDubai> input typehidden namecity_id classcity_id value1> p classfs-12 mb-0 classcountry_name>UAE/p> /div> div classdropdown-menu dropdown-md p-0 city_dropdown> ul classcity_list> li classborder-bottom> a classdropdown-item hrefjavascript:void(0);> h6 classfs-16 fw-medium>Dubai/h6> p classcountry_name>UAE/p> /a> /li> /ul> /div> /div> div classform-item> label classform-label fs-14 text-default mb-1> Event Date/label> input typetext classform-control datetimepicker tour-date idactivityDate namedate value16-10-2025> p classfs-12 mb-0>Monday/p> /div> div classform-item dropdown> div data-bs-toggledropdown data-bs-auto-closeoutside aria-expandedfalse rolemenu> label classform-label fs-14 text-default mb-1>Pax /label> h5> span classfw-normal fs-14>Pax/span>/h5> p classfs-12 mb-0>1 Adult, 0 Children/p> /div> div classdropdown-menu dropdown-menu-end dropdown-xl> h5 classmb-3>Select Pax/h5> div classmb-3 border br-10 info-item pb-1> h6 classfs-16 fw-medium mb-2>Pax/h6> div classrow> div classcol-md-4> div classmb-3> label classform-label text-gray-9 mb-2>Adults span classtext-default fw-normal>( 12+ Yrs )/span>/label> div classcustom-increment> div classinput-group> span classinput-group-btn float-start> button typebutton classquantity-left-minus btn btn-light btn-number data-typeminus data-field> span>i classisax isax-minus>/i>/span> /button> /span> input typetext nameadults class input-number value1> span classinput-group-btn float-end> button typebutton classquantity-right-plus btn btn-light btn-number data-typeplus data-field> span>i classisax isax-add>/i>/span> /button> /span> /div> /div> /div> /div> div classcol-md-4> div classmb-3> label classform-label text-gray-9 mb-2>Childrens span classtext-default fw-normal>( 2-12 Yrs )/span>/label> div classcustom-increment> div classinput-group> span classinput-group-btn float-start> button typebutton classquantity-left-minus btn btn-light btn-number data-typeminus data-field> span>i classisax isax-minus>/i>/span> /button> /span> input typetext namechidren class input-number value1> span classinput-group-btn float-end> button typebutton classquantity-right-plus btn btn-light btn-number data-typeplus data-field> span>i classisax isax-add>/i>/span> /button> /span> /div> /div> /div> /div> div classcol-md-4> div classmb-3> label classform-label text-gray-9 mb-2>Infants span classtext-default fw-normal>( 0-12 Yrs )/span>/label> div classcustom-increment> div classinput-group> span classinput-group-btn float-start> button typebutton classquantity-left-minus btn btn-light btn-number data-typeminus data-field> span>i classisax isax-minus>/i>/span> /button> /span> input typetext nameinfants class input-number value1> span classinput-group-btn float-end> button typebutton classquantity-right-plus btn btn-light btn-number data-typeplus data-field> span>i classisax isax-add>/i>/span> /button> /span> /div> /div> /div> /div> /div> /div> div classd-flex justify-content-end> a hrefjavascript:void(0); classbtn btn-light btn-sm me-2>Cancel/a> button typesubmit classbtn btn-primary btn-sm>Apply/button> /div> /div> /div> /div> button typesubmit classbtn btn-primary search-btn rounded>Search/button> /div> /form> /div> div classtab-pane fade idHoliday> form actionholidays.php> div classd-flex align-items-center justify-content-between flex-wrap mb-2> h6 classfw-medium fs-16 mb-2>Search holiday packages & trips/h6> /div> div classd-lg-flex> div classd-flex form-info> div classform-item dropdown> div data-bs-toggledropdown data-bs-auto-closeoutside aria-expandedfalse rolemenu> label classform-label fs-14 text-default mb-1>Destination/label> input typetext classform-control city_name valueDubai> input typehidden namecity_id classcity_id value1> p classfs-12 mb-0 classcountry_name>UAE/p> /div> div classdropdown-menu dropdown-md p-0 city_dropdown> ul classcity_list> li classborder-bottom> a classdropdown-item hrefjavascript:void(0);> h6 classfs-16 fw-medium>Dubai/h6> p classcountry_name>UAE/p> /a> /li> /ul> /div> /div> div classform-item> label classform-label fs-14 text-default mb-1> Event Date/label> input typetext classform-control datetimepicker tour-date idactivityDate namedate value16-10-2025> p classfs-12 mb-0>Monday/p> /div> div classform-item dropdown> div data-bs-toggledropdown data-bs-auto-closeoutside aria-expandedfalse rolemenu> label classform-label fs-14 text-default mb-1>Pax /label> h5> span classfw-normal fs-14>Pax/span>/h5> p classfs-12 mb-0>1 Adult, 0 Children/p> /div> div classdropdown-menu dropdown-menu-end dropdown-xl> h5 classmb-3>Select Pax/h5> div classmb-3 border br-10 info-item pb-1> h6 classfs-16 fw-medium mb-2>Pax/h6> div classrow> div classcol-md-4> div classmb-3> label classform-label text-gray-9 mb-2>Adults span classtext-default fw-normal>( 12+ Yrs )/span>/label> div classcustom-increment> div classinput-group> span classinput-group-btn float-start> button typebutton classquantity-left-minus btn btn-light btn-number data-typeminus data-field> span>i classisax isax-minus>/i>/span> /button> /span> input typetext nameadults class input-number value1> span classinput-group-btn float-end> button typebutton classquantity-right-plus btn btn-light btn-number data-typeplus data-field> span>i classisax isax-add>/i>/span> /button> /span> /div> /div> /div> /div> div classcol-md-4> div classmb-3> label classform-label text-gray-9 mb-2>Childrens span classtext-default fw-normal>( 2-12 Yrs )/span>/label> div classcustom-increment> div classinput-group> span classinput-group-btn float-start> button typebutton classquantity-left-minus btn btn-light btn-number data-typeminus data-field> span>i classisax isax-minus>/i>/span> /button> /span> input typetext namechidren class input-number value1> span classinput-group-btn float-end> button typebutton classquantity-right-plus btn btn-light btn-number data-typeplus data-field> span>i classisax isax-add>/i>/span> /button> /span> /div> /div> /div> /div> div classcol-md-4> div classmb-3> label classform-label text-gray-9 mb-2>Infants span classtext-default fw-normal>( 0-12 Yrs )/span>/label> div classcustom-increment> div classinput-group> span classinput-group-btn float-start> button typebutton classquantity-left-minus btn btn-light btn-number data-typeminus data-field> span>i classisax isax-minus>/i>/span> /button> /span> input typetext nameinfants class input-number value1> span classinput-group-btn float-end> button typebutton classquantity-right-plus btn btn-light btn-number data-typeplus data-field> span>i classisax isax-add>/i>/span> /button> /span> /div> /div> /div> /div> /div> /div> div classd-flex justify-content-end> a hrefjavascript:void(0); classbtn btn-light btn-sm me-2>Cancel/a> button typesubmit classbtn btn-primary btn-sm>Apply/button> /div> /div> /div> /div> button typesubmit classbtn btn-primary search-btn rounded>Search/button> /div> /form> /div> div classtab-pane fade idUmrah> form actionumrah.php> div classd-flex align-items-center justify-content-between flex-wrap mb-2> h6 classfw-medium fs-16 mb-2>Select Travel Date/h6> /div> div classd-lg-flex> div classd-flex form-info> div classform-item> label classform-label fs-14 text-default mb-1> Travel Date/label> input typetext classform-control datetimepicker tour-date idumrahDate namedate value16-10-2025> p classfs-12 mb-0>Monday/p> /div> div classform-item dropdown> div data-bs-toggledropdown data-bs-auto-closeoutside aria-expandedfalse rolemenu> label classform-label fs-14 text-default mb-1>Pax /label> h5> span classfw-normal fs-14>Pax/span>/h5> p classfs-12 mb-0>1 Adult, 0 Children/p> /div> div classdropdown-menu dropdown-menu-end dropdown-xl> h5 classmb-3>Select Pax/h5> div classmb-3 border br-10 info-item pb-1> h6 classfs-16 fw-medium mb-2>Pax/h6> div classrow> div classcol-md-4> div classmb-3> label classform-label text-gray-9 mb-2>Adults span classtext-default fw-normal>( 12+ Yrs )/span>/label> div classcustom-increment> div classinput-group> span classinput-group-btn float-start> button typebutton classquantity-left-minus btn btn-light btn-number data-typeminus data-field> span>i classisax isax-minus>/i>/span> /button> /span> input typetext nameadults class input-number value1> span classinput-group-btn float-end> button typebutton classquantity-right-plus btn btn-light btn-number data-typeplus data-field> span>i classisax isax-add>/i>/span> /button> /span> /div> /div> /div> /div> div classcol-md-4> div classmb-3> label classform-label text-gray-9 mb-2>Childrens span classtext-default fw-normal>( 2-12 Yrs )/span>/label> div classcustom-increment> div classinput-group> span classinput-group-btn float-start> button typebutton classquantity-left-minus btn btn-light btn-number data-typeminus data-field> span>i classisax isax-minus>/i>/span> /button> /span> input typetext namechidren class input-number value1> span classinput-group-btn float-end> button typebutton classquantity-right-plus btn btn-light btn-number data-typeplus data-field> span>i classisax isax-add>/i>/span> /button> /span> /div> /div> /div> /div> div classcol-md-4> div classmb-3> label classform-label text-gray-9 mb-2>Infants span classtext-default fw-normal>( 0-12 Yrs )/span>/label> div classcustom-increment> div classinput-group> span classinput-group-btn float-start> button typebutton classquantity-left-minus btn btn-light btn-number data-typeminus data-field> span>i classisax isax-minus>/i>/span> /button> /span> input typetext nameinfants class input-number value1> span classinput-group-btn float-end> button typebutton classquantity-right-plus btn btn-light btn-number data-typeplus data-field> span>i classisax isax-add>/i>/span> /button> /span> /div> /div> /div> /div> /div> /div> div classd-flex justify-content-end> a hrefjavascript:void(0); classbtn btn-light btn-sm me-2>Cancel/a> button typesubmit classbtn btn-primary btn-sm>Apply/button> /div> /div> /div> /div> button typesubmit classbtn btn-primary search-btn rounded>Search/button> /div> /form> /div> /div> /div> /div> /div> /div> /div> /div> /div> /section> !-- /Hero Section --> !-- Place Section --> section classsection place-section bg-white> div classcontainer> !-- div classrow justify-content-center> div classcol-xl-6 col-lg-10 text-center wow fadeInUp data-wow-delay0.2s> div classsection-header mb-4 text-center> h2 classmb-2>Most span classtext-primary text-decoration-underline>Trending/span> /h2> p classsub-title>Famous tourist places in the UAE that are known for their historical significance, natural beauty, or cultural impact/p> /div> /div> /div> --> div classplace-nav> ul classnav justify-content-center> li> a hrefjavascript:void(0); classnav-link active data-bs-toggletab data-bs-target#Activities-list> Activites /a> /li> li> a hrefjavascript:void(0); classnav-link data-bs-toggletab data-bs-target#Cruise-list> Cruise /a> /li> li> a hrefjavascript:void(0); classnav-link data-bs-toggletab data-bs-target#Holiday-list> Holiday /a> /li> /ul> /div> div classtab-content> !-- Flight List --> div classtab-pane fade idflight-list> div classowl-carousel place-slider nav-center> /div> /div> !-- /Flight List --> !-- Cars List --> div classtab-pane fade active show idActivities-list> div classowl-carousel place-slider nav-center> /div> /div> !-- /Cars List --> !-- Cruise List --> div classtab-pane fade idCruise-list> div classowl-carousel place-slider nav-center> /div> /div> !-- /Cruise List --> !-- Tour List --> div classtab-pane fade idHoliday-list> div classowl-carousel place-slider nav-center> /div> /div> !-- /Tour List --> /div> div classtext-center view-all wow fadeInUp> a hrefactivities classbtn btn-dark d-inline-flex align-items-center>View All Activitiesi classisax isax-arrow-right-3 ms-2>/i>/a> /div> /div> /section> !-- /Place Section --> !-- Video Section --> div classvideo-wrap> a classvideo-btn video-effect data-fancybox hrefhttps://youtu.be/jA3UYosshGM?t112>i classisax isax-play5>/i>/a> /div> !-- /Video Section --> !-- Benefit Section --> section classsection benefit-section bg-light-300> div classcontainer> div classrow justify-content-center> div classcol-lg-6 text-center wow fadeInUp data-wow-delay0.2s> div classsection-header text-center> h2 classmb-2>Our span classtext-primary text-decoration-underline>Benefits/span> & Key Advantages/h2> p classsub-title>Got Your Trip, a tour operator specializing in dream destinations, offers a variety of benefits for travelers./p> /div> /div> /div> div classrow g-4> div classcol-sm-6 col-lg-3 d-flex> div classcard benefit-card mb-0 flex-fill wow fadeInUp data-wow-delay0.2s> div classcard-body text-center> div classbenefit-icon mb-2 bg-secondary text-gray-9 mx-auto> i classisax isax-lock-1>/i> /div> h5 classmb-2>VIP Packages/h5> p classmb-0>Include private premium seating, meet-and-greet experiences, customised tours./p> span classicon-view text-secondary>i classisax isax-lock-1>/i>/span> /div> /div> /div> div classcol-sm-6 col-lg-3 d-flex> div classcard benefit-card mb-0 flex-fill wow fadeInUp data-wow-delay0.2s> div classcard-body text-center> div classbenefit-icon mb-2 bg-orange text-white mx-auto> i classisax isax-magicpen>/i> /div> h5 classmb-2>Concert Tickets/h5> p classmb-0>A centralized place to buy tickets for various dates of the tour/p> span classicon-view text-orange>i classisax isax-magicpen>/i>/span> /div> /div> /div> div classcol-sm-6 col-lg-3 d-flex> div classcard benefit-card mb-0 flex-fill wow fadeInUp data-wow-delay0.2s> div classcard-body text-center> div classbenefit-icon mb-2 bg-purple text-white mx-auto> i classisax isax-receipt-add>/i> /div> h5 classmb-2>Travel Packages/h5> p classmb-0>Bundles that include travel tickets, activities, accommodations/p> span classicon-view text-purple>i classisax isax-receipt-add>/i>/span> /div> /div> /div> div classcol-sm-6 col-lg-3 d-flex> div classcard benefit-card mb-0 flex-fill wow fadeInUp data-wow-delay0.2s> div classcard-body text-center> div classbenefit-icon mb-2 bg-teal text-white mx-auto> i classisax isax-location-tick>/i> /div> h5 classmb-2>Best Price Guarantee/h5> p classmb-0>Our prices are guaranteed to be the best in the market/p> span classicon-view text-teal>i classisax isax-location-tick>/i>/span> /div> /div> /div> /div> /div> /section> !-- /Benefit Section --> !-- Ad section --> section classsection testimonial-section> div classcontainer> div classrow> div classcol-md-12> !-- Owl Carousel Wrapper --> div classowl-carousel owl-theme sponsor-slider> div classitem> a hrefhttps://www.raynatours.com/abu-dhabi-cruises/christmas-at-sea-3n-uae-cruise-on-msc-euribia-60 target_blank> img srcassets/img/rayna.jpg classimg-fluid img-thumbnail altRayna Tours Banner 1> /a> /div> div classitem> a hrefhttps://www.raynatours.com/jeddah-cruises/3-night-aroya-cruise-jeddah-to-jabal-al-sabaya-to-jeddah-298 target_blank> img srcassets/img/rayna2.jpg classimg-fluid img-thumbnail altRayna Tours Banner 2> /a> /div> /div> /div> /div> /div> /section> !--End Ad section --> !-- Update Section --> section classsection testimonial-section> div classcontainer> div classrow> div classcol-md-12> div classupdate-sec> div classsection-header text-center> h2 classmb-1>Stay Updated/h2> p classsub-title>Signup for New Offers & Updates from Got Your Trip /p> /div> div classinput-group justify-content-center mx-auto> span classinput-group-text px-1>i classisax isax-message-favorite5>/i>/span> input typeemail classform-control idsub_email placeholderEnter Email Address> button typesubmit idsub_submit classbtn btn-primary>Subscribe/button> /div> div classupdate-bg> img srcassets/img/bg/update-bg.png altimg> /div> /div> /div> /div> /div> div classtestimonial-bg> img srcassets/img/bg/testimonial-bg-01.svg altimg> /div> /section> !-- /Update Section --> div classbg-info br-10 p-3 pb-2 mb-4 idsignin_prompt styledisplay: none;> div classd-flex align-items-center justify-content-between flex-wrap> p classfs-14 fw-medium mb-2 d-inline-flex align-items-center>i classisax isax-info-circle me-2>/i>Save an average of 15% on hundreds of activities when youre signed in./p> a hrefjavascript:void(0); data-bs-togglemodal data-bs-target#login-modal classbtn btn-white btn-sm mb-2>Sign In/a> /div> /div> !-- FAQ Section --> section classfaq-section > div classcontainer> div classfaq-sec> div classrow justify-content-center> div classcol-xl-6 col-lg-10 text-center wow fadeInUp data-wow-delay0.2s> div classsection-header text-center> h2 classmb-2>Frequently Asked span classtext-primary text-decoration-underline>Questions/span>/h2> p classsub-title>Got Your Trip, Adventure Awaits./p> /div> /div> /div> div classrow> div classcol-lg-8 mx-auto> div classaccordion accordion-flush idaccordionFaq> /div> /div> /div> /div> /div> /section> !-- /FAQ Section --> !-- Blog Section --> section classsection blog-section pt-0> div classcontainer> div classrow justify-content-center> div classcol-xl-6 col-lg-10 text-center wow fadeInUp data-wow-delay0.2s> div classsection-header text-center> h2 classmb-2>Recent span classtext-primary text-decoration-underline>Articles/span>/h2> p classsub-title>Got Your Trip offers various blog resources that cater to travel enthusiasts, with a focus on adventure, tourism reviews, and travel tips./p> /div> /div> /div> div classrow justify-content-center> /div> /div> /section> !-- /Blog Section --> !-- Footer --> !-- Support Section --> section classsupport-section bg-primary> div classhorizontal-slide d-flex data-directionleft data-speedslow> div classslide-list d-flex> div classsupport-item> h5>Personalized Itineraries/h5> /div> div classsupport-item> h5>Dubai Activites/h5> /div> div classsupport-item> h5>Visa Applications/h5> /div> div classsupport-item> h5>Local Experience/h5> /div> div classsupport-item> h5>Desert Safari /h5> /div> div classsupport-item> h5>Flight Booking/h5> /div> div classsupport-item> h5>Hotel Reservation/h5> /div> /div> /div> /section> !-- /Support Section --> footer> div classcontainer> div classfooter-top> div classrow row-cols-lg-5 row-cols-md-3 row-cols-sm-2 row-cols-1> div classcol> div classfooter-widget> h5>Company/h5> ul classfooter-menu> li> a hrefabout>About Us/a> /li> li> a hrefjavascript:void(0);>Careers/a> /li> li> a hrefblog>Blog/a> /li> !-- li> a hrefjavascript:void(0);>Our Partners/a> /li> --> li> a hrefprivacy-policy>Privacy Policy/a> /li> li> a hrefterms-conditions>Terms and Conditions/a> /li> /ul> /div> /div> div classcol> div classfooter-widget> h5>Destinations/h5> ul classfooter-menu iddestinations> li> a hrefjavascript:void(0);>Dubai/a> /li> /ul> /div> /div> div classcol> div classfooter-widget> h5>Services/h5> ul classfooter-menu> !-- li> a hrefhotels>Hotel/a> /li> --> li> a hrefactivities>Activities/a> /li> li> a hrefflights>Flights/a> /li> !-- li> a hrefvisa>Visa/a> /li> --> li> a hrefholidays>Holiday Packages/a> /li> li> a hrefumrah>Umrah/a> /li> /ul> /div> /div> div classcol> div classfooter-widget> h5>Powered By/h5> div classpmt-wrap pe-4> a hrefhttps://www.desertlionstourism.com target_blank> img srcassets/img/desertlion.webp classimg-fluid width80% altdesert_lion_logo> /a> /div> /div> /div> /div> div classfooter-wrap bg-white> div classrow align-items-center> div classcol-lg-6 col-xl-3 col-xxl-3> div classmb-3 text-center text-xl-start> a hrefindex classd-block footer-logo-light> img srcassets/img/logo.svg width50% altlogo> /a> a hrefindex classfooter-logo-dark> img srcassets/img/logo.svg width50% altlogo> /a> /div> /div> div classcol-lg-6 col-xl-4 col-xxl-4> div classd-flex align-items-center justify-content-center flex-wrap> h6 classfs-14 fw-medium me-2 mb-2>Available on : /h6> a hrefhttps://play.google.com/store/apps/details?idcom.gotyourtrip.gyt target_blank classd-block mb-3 me-2> img srcassets/img/icons/googleplay.svg altlogo> /a> a hrefhttps://apps.apple.com/app/got-your-trip/id6741680530 target_blank classd-block mb-3> img srcassets/img/icons/appstore.svg altlogo> /a> /div> /div> div classcol-lg-12 col-xl-5 col-xxl-5> div classd-sm-flex align-items-center justify-content-center justify-content-xl-end> div classd-flex align-items-center justify-content-center justify-content-sm-start me-0 pe-0 me-sm-3 pe-sm-3 border-end mb-3> span classavatar avatar-lg bg-primary rounded-circle flex-shrink-0> i classti ti-headphones-filled fs-24>/i> /span> div classms-2> p classmb-1>Customer Support/p> p classfw-medium text-dark>+971 4396 3222/p> /div> /div> div classd-flex align-items-center justify-content-center justify-content-sm-start mb-3> span classavatar avatar-lg bg-secondary rounded-circle flex-shrink-0> i classti ti-message fs-24 text-gray-9>/i> /span> div classms-2> p classmb-1>Drop Us an Email/p> p classfw-medium text-dark>a hrefmailto:info@gotyourtrip.com>info@gotyourtrip.com/a>/p> /div> /div> /div> /div> /div> /div> div classfooter-img> img srcassets/img/bg/footer.svg classimg-fluid altimg> /div> /div> /div> !-- Footer Bottom --> div classfooter-bottom> div classcontainer> div classrow> div classcol-md-12> div classd-flex align-items-center justify-content-between flex-wrap> p classfs-14>Copyright © 2023 - 2025. All Rights Reserved, a hrefhttps://gotyourtrip.com classtext-primary fw-medium>Got Your Trip Tourism LLC/a>/p> div classd-flex align-items-center> ul classsocial-icon> li> a target_blank hrefhttps://facebook.com/gotyourtrip>i classfa-brands fa-facebook>/i>/a> /li> li> a target_blank hrefhttps://twitter.com/GotYtrip>i classfa-brands fa-x-twitter>/i>/a> /li> li> a target_blank hrefhttps://www.instagram.com/got_your_trip/>i classfa-brands fa-instagram>/i>/a> /li> li> a target_blank hrefhttps://www.linkedin.com/company/got-your-trip-tourism-llc>i classfa-brands fa-linkedin>/i>/a> /li> /ul> /div> ul classcard-links> li> a hrefjavascript:void(0);> img srcassets/img/icons/card-01.svg altimg> /a> /li> li> a hrefjavascript:void(0);> img srcassets/img/icons/card-04.svg altimg> /a> /li> li> a hrefjavascript:void(0);> img srcassets/img/icons/card-05.svg altimg> /a> /li> li> a hrefjavascript:void(0);> img srcassets/img/icons/card-06.svg altimg> /a> /li> /ul> /div> /div> /div> /div> /div> !-- /Footer Bottom --> /footer> !-- Login Modal --> div classmodal fade idlogin-modal> div classmodal-dialog modal-dialog-centered> div classmodal-content> div classmodal-header d-flex align-items-center justify-content-end pb-0 border-0> a hrefjavascript:void(0); data-bs-dismissmodal aria-labelClose>i classti ti-x fs-20>/i>/a> /div> div classmodal-body p-4 pt-0> form actionjavascript:void(0);> div classtext-center mb-3> h5 classmb-1>Sign In/h5> p>Sign in to Enjoy Discounts and Special Offers/p> /div> div classmb-2> label classform-label>Email/label> div classinput-icon> span classinput-icon-addon> i classisax isax-message>/i> /span> input typeemail namelogin_email idlogin_email autocompleteemail classform-control form-control-lg placeholderEnter Email> /div> /div> div classmb-2> label classform-label>Password/label> div classinput-icon> span classinput-icon-addon> i classisax isax-lock>/i> /span> input typepassword classform-control form-control-lg pass-input autocompletepassword idlogin_password namelogin_password placeholderEnter Password> span classinput-icon-addon toggle-password> i classisax isax-eye-slash>/i> /span> /div> /div> div classmt-3 mb-3> div classd-flex align-items-center justify-content-between flex-wrap row-gap-2> div classform-check d-flex align-items-center mb-2> input classform-check-input mt-0 typecheckbox value idremembers_me> label classform-check-label ms-2 text-gray-9 fs-14 forremembers_me> Remember Me /label> /div> a hrefforgot-password classlink-primary fw-medium fs-14 mb-2 >Forgot Password?/a> /div> /div> div classmb-3> a hrefjavascript:void(0); idlogin_submit classbtn btn-xl btn-primary login_submit d-flex align-items-center justify-content-center w-100>Logini classisax isax-arrow-right-3 ms-2>/i>/a> /div> /form> div classlogin-or mb-3> span classspan-or>Or/span> /div> div classd-flex align-items-center mb-3> a hrefjavascript:void(0); classbtn btn-light flex-fill d-flex align-items-center justify-content-center me-2 idgoogleSignIn> img srcassets/img/icons/google-icon.svg classme-2 altImg>Google /a> !-- a hrefjavascript:void(0); classbtn btn-light flex-fill d-flex align-items-center justify-content-center> img srcassets/img/icons/fb-icon.svg classme-2 altImg>Facebook /a> --> /div> div classd-flex justify-content-center> p classfs-14>Dont you have an account? a hrefjavascript:void(0); classlink-primary fw-medium data-bs-togglemodal data-bs-target#register-modal>Sign up/a>/p> /div> /div> /div> /div> /div> !-- /Login Modal --> !-- Register Modal --> div classmodal fade idregister-modal> div classmodal-dialog modal-dialog-centered> div classmodal-content> div classmodal-header d-flex align-items-center justify-content-end pb-0 border-0> a hrefjavascript:void(0); data-bs-dismissmodal aria-labelClose>i classti ti-x fs-20>/i>/a> /div> div classmodal-body p-4 pt-0> form actionjavascript:void(0); idregister_form> div classtext-center border-bottom mb-3> h5 classmb-1>Sign Up/h5> p classmb-3>Create your Got Your Trip Account/p> /div> div classmb-2> label classform-label>Name/label> div classinput-icon> span classinput-icon-addon> i classisax isax-user>/i> /span> input typetext namefullname idfullname classform-control form-control-lg placeholderEnter Full Name> /div> /div> div classmb-2> label classform-label>Email/label> div classinput-icon> span classinput-icon-addon> i classisax isax-message>/i> /span> input typeemail nameemail idemail autocompleteemail classform-control form-control-lg placeholderEnter Email> /div> /div> div classmb-2> label classform-label>Phone/label> div classinput-icon> span classinput-icon-addon> i classisax isax-call>/i> /span> input typetel namephone idphone autocompletetel classform-control form-control-lg placeholder+971 *** *** ***> /div> /div> div classmb-2> label classform-label>Password/label> div classinput-icon> span classinput-icon-addon> i classisax isax-lock>/i> /span> input typepassword idpassword namepassword autocompletepassword classform-control form-control-lg pass-input placeholderEnter Password> span classinput-icon-addon toggle-password> i classisax isax-eye-slash>/i> /span> /div> /div> div classmb-2> label classform-label>Confirm Password/label> div classinput-icon> span classinput-icon-addon> i classisax isax-lock>/i> /span> input typepassword idcpassword namecpassword autocompletepassword classform-control form-control-lg pass-input placeholderEnter Password> span classinput-icon-addon toggle-password> i classisax isax-eye-slash>/i> /span> /div> /div> div classmt-3 mb-3> div classd-flex> div classform-check d-flex align-items-center mb-2> input classform-check-input mt-0 typecheckbox idagree> label classform-check-label ms-2 text-gray-9 fs-14 foragree> I agree with the a hrefjavascript:void(0); classlink-primary fw-medium>Terms Of Service./a> /label> /div> /div> /div> div classmb-3> button typesubmit idreg_submit classbtn btn-xl btn-primary d-flex align-items-center justify-content-center w-100>Registeri classisax isax-arrow-right-3 ms-2>/i>/button> /div> div classlogin-or mb-3> span classspan-or>Or/span> /div> div classd-flex align-items-center mb-3> a hrefgoogle_login classbtn btn-light flex-fill d-flex align-items-center justify-content-center me-2> img srcassets/img/icons/google-icon.svg classme-2 altImg>Google /a> /div> div classd-flex justify-content-center> p classfs-14>Already have an account? a hrefjavascript:void(0); classlink-primary fw-medium data-bs-togglemodal data-bs-target#login-modal>Sign In/a>/p> /div> /form> /div> /div> /div> /div> !-- /Register Modal --> !-- Cursor --> div classxb-cursor tx-js-cursor> div classxb-cursor-wrapper> div classxb-cursor--follower xb-js-follower>/div> /div> /div> !-- /Cursor --> input classchat-menu hidden idoffchat-menu typecheckbox/> div classsticky-button idsticky-button> label foroffchat-menu> svg height50 viewBox0 0 24 24 width50 xmlnshttp://www.w3.org/2000/svg>path dM12.036 5.339c-3.635 0-6.591 2.956-6.593 6.589-.001 1.483.434 2.594 1.164 3.756l-.666 2.432 2.494-.654c1.117.663 2.184 1.061 3.595 1.061 3.632 0 6.591-2.956 6.592-6.59.003-3.641-2.942-6.593-6.586-6.594zm3.876 9.423c-.165.463-.957.885-1.337.942-.341.051-.773.072-1.248-.078-.288-.091-.657-.213-1.129-.417-1.987-.858-3.285-2.859-3.384-2.991-.099-.132-.809-1.074-.809-2.049 0-.975.512-1.454.693-1.653.182-.2.396-.25.528-.25l.38.007c.122.006.285-.046.446.34.165.397.561 1.372.611 1.471.049.099.083.215.016.347-.066.132-.099.215-.198.33l-.297.347c-.099.099-.202.206-.087.404.116.198.513.847 1.102 1.372.757.675 1.395.884 1.593.983.198.099.314.083.429-.05.116-.132.495-.578.627-.777s.264-.165.446-.099 1.156.545 1.354.645c.198.099.33.149.38.231.049.085.049.482-.116.945zm3.088-14.762h-14c-2.761 0-5 2.239-5 5v14c0 2.761 2.239 5 5 5h14c2.762 0 5-2.239 5-5v-14c0-2.761-2.238-5-5-5zm-6.967 19.862c-1.327 0-2.634-.333-3.792-.965l-4.203 1.103 1.125-4.108c-.694-1.202-1.059-2.566-1.058-3.964.002-4.372 3.558-7.928 7.928-7.928 2.121.001 4.112.827 5.609 2.325s2.321 3.491 2.32 5.609c-.002 4.372-3.559 7.928-7.929 7.928z>/path>/svg> /label> /div> div classsticky-chat> div classchat-content> div classchat-header> svg viewbox0 0 32 32>path dM24,22a1,1,0,0,1-.64-.23L18.84,18H17A8,8,0,0,1,17,2h6a8,8,0,0,1,2,15.74V21a1,1,0,0,1-.58.91A1,1,0,0,1,24,22ZM17,4a6,6,0,0,0,0,12h2.2a1,1,0,0,1,.64.23L23,18.86V16.92a1,1,0,0,1,.86-1A6,6,0,0,0,23,4Z>/path>rect height2 width2 x19 y9>/rect>rect height2 width2 x14 y9>/rect>rect height2 width2 x24 y9>/rect>path dM8,30a1,1,0,0,1-.42-.09A1,1,0,0,1,7,29V25.74a8,8,0,0,1-1.28-15,1,1,0,1,1,.82,1.82,6,6,0,0,0,1.6,11.4,1,1,0,0,1,.86,1v1.94l3.16-2.63A1,1,0,0,1,12.8,24H15a5.94,5.94,0,0,0,4.29-1.82,1,1,0,0,1,1.44,1.4A8,8,0,0,1,15,26H13.16L8.64,29.77A1,1,0,0,1,8,30Z>/path>/svg> div classtitle> Got Your Trip span>Sales Team/span>/div> /div> div classchat-text> span>Hello, How Can We Help You?/span> span classtyping>svg viewbox0 0 512 512>circle cx256 cy256 r48>/circle>circle cx416 cy256 r48>/circle>circle cx96 cy256 r48>/circle>/svg>/span> /div> /div> a classchat-button hrefhttps://api.whatsapp.com/send/?phone971585976230&textHi,%20I%20need%20to%20know%20more%20about%20these%20activities%20on%20your%20website relnofollow noreferrer target_blank> span>Start Chat.../span> svg viewBox0 0 32 32>path classcls-1 dM19.47,31a2,2,0,0,1-1.8-1.09l-4-7.57a1,1,0,0,1,1.77-.93l4,7.57L29,3.06,3,12.49l9.8,5.26,8.32-8.32a1,1,0,0,1,1.42,1.42l-8.85,8.84a1,1,0,0,1-1.17.18L2.09,14.33a2,2,0,0,1,.25-3.72L28.25,1.13a2,2,0,0,1,2.62,2.62L21.39,29.66A2,2,0,0,1,19.61,31Z>/path>/svg> /a> /div> !-- /Footer --> div classback-to-top> a classback-to-top-icon align-items-center justify-content-center d-flex href#top>i classfa-solid fa-arrow-up>/i>/a> /div> !-- Jquery JS --> script data-cfasyncfalse srcassets/js/email-decode.min.js>/script> script srcassets/js/jquery-3.7.1.min.js >/script> !-- Bootstrap JS --> script srcassets/js/bootstrap.bundle.min.js>/script> !-- Wow JS --> script srcassets/js/wow.min.js >/script> !-- MeanMenu Js --> script srcassets/js/jquery.meanmenu.min.js >/script> !-- script srcassets/js/rocket-loader.min.js >/script> --> script srcassets/js/rocket-loader.min.js data-cf-settings99a01fc64ab9e181668a595a-|49 defer>/script> !-- Swiper Js --> script srcassets/plugins/owlcarousel/owl.carousel.min.js >/script> !-- Fancybox JS --> script srcassets/plugins/fancybox/jquery.fancybox.min.js >/script> !-- Counter JS --> script srcassets/js/jquery.counterup.min.js >/script> script srcassets/js/jquery.waypoints.min.js >/script> !-- intltelinput JS --> script srcassets/plugins/intltelinput/js/intlTelInput.js>/script> !-- Select2 JS --> script srcassets/plugins/select2/js/select2.min.js >/script> !-- Datepicker Core JS --> script srcassets/plugins/moment/moment.js >/script> script srcassets/js/bootstrap-datetimepicker.min.js >/script> !-- Date Range Picker --> script srcassets/plugins/daterangepicker/daterangepicker.js typetext/javascript>/script> !-- cursor JS --> script srcassets/js/cursor.js >/script> script srcassets/plugins/theia-sticky-sidebar/theia-sticky-sidebar.js typetext/javascript>/script> script srcassets/plugins/theia-sticky-sidebar/ResizeSensor.js typetext/javascript>/script> !-- sweetalert JS --> script srcassets/js/sweetalert2.js >/script> script srcassets/plugins/slick/slick.min.js>/script> !-- Script JS --> script srcassets/js/script.js >/script> script srcassets/js/lz-string.min.js >/script> script async srchttps://www.googletagmanager.com/gtag/js?idG-0HMM01JH2S>/script> script> window.dataLayer window.dataLayer || ; function gtag(){dataLayer.push(arguments);} gtag(js, new Date()); gtag(config, G-0HMM01JH2S); /script>script> let currency localStorage.getItem(currency); if (!currency) { fetch(http://ip-api.com/json/) .then(response > response.json()) .then(data > { let currency USD; if (data.countryCode AE) { currency AED; } else if (data.countryCode IN) { currency INR; } localStorage.setItem(currency, currency); window.location.reload(); }) .catch(err > console.error(Error:, err)); } let currencyRate localStorage.getItem(currency_rate) || 1; let admin_rate localStorage.getItem(admin_rate) || 0; let token localStorage.getItem(access_token); const api_cnxn https://gyt.gotyourtrip.com/api/; const website_address https://gyt.gotyourtrip.com/; let lang localStorage.getItem(lang); if (!lang) { localStorage.setItem(lang, ENG); } // Set loading state function setLoading(isLoading) { const spinner document.getElementById(spinner); const buttonText document.getElementById(button-text); const submitButton document.getElementById(submit-payment); if (isLoading) { spinner.classList.remove(hidden); buttonText.classList.add(hidden); submitButton.disabled true; } else { spinner.classList.add(hidden); buttonText.classList.remove(hidden); submitButton.disabled false; } } $(document).on(submit, #send_enquiry, function (e) { e.preventDefault(); const name $(#name).val(); const email $(#enquiry_email).val(); const phone $(#enquiry_phone).val(); const message $(#message).val(); const $button $(#send_enquiry_btn); const act_name $(#activity_name).text(); if (!name || !email || !phone || !message || !act_name) { Swal.fire({ icon: error, title: Oops..., text: Please fill in all required fields!, }); return; } // Disable the button and show loading text $button.prop(disabled, true); $button.text(Sending...); $.ajax({ url: api_cnxn + product-enquiry/ + $(#activity_id).val(), type: POST, contentType: application/json, data: JSON.stringify({ name: name, email: email, phone: phone,act_name: act_name, message: message }), success: function (response) { if (response.success) { Swal.fire({ icon: success, title: Message Sent!, text: Your message has been sent successfully., }); } else { Swal.fire({ icon: info, title: Message, text: response.message || Something went wrong. Please try again., }); } // Re-enable the button and show the original text $button.prop(disabled, false); $(#send_enquiry).hide(); $button.text(Send Message); } }); }); $(#sub_submit).on(click, function () { const email $(#sub_email).val(); const $button $(#sub_submit); $button.prop(disabled, true).text(Loading...); if (!email) { Swal.fire({ icon: error, title: Oops..., text: Please enter a valid email address!, }); $button.prop(disabled, false).text(Subscribe); return; } $.ajax({ url: api_cnxn +subscribe, type: POST, contentType: application/json, data: JSON.stringify({ email: email }), success: function (response) { if (response.success) { Swal.fire({ icon: success, title: Subscribed!, text: You have successfully subscribed., }); // Clear the textbox and reset the placeholder $(#sub_email).val(); // Clear the value $(#sub_email).attr(placeholder, Enter Email Address); // Reset placeholder } else { Swal.fire({ icon: info, title: Mesasge, text: response.message || Something went wrong. Please try again., }); } }, error: function (xhr) { // Extract error message from the server response let errorMessage Failed to connect to the server. Please try again later.; if (xhr.responseJSON && xhr.responseJSON.error) { errorMessage xhr.responseJSON.error; // Use the error field from the API response } Swal.fire({ icon: error, title: Error, text: errorMessage, }); }, complete: function () { // Re-enable the button and reset its text $button.prop(disabled, false).text(Subscribe); }, }); }); $(#reg_submit).on(click, function () { const $button $(#reg_submit); const fname $(#fullname).val(); const email $(#email).val(); const phone $(#phone).val(); const password $(#password).val(); const cpassword $(#cpassword).val(); const agree $(#agree).is(:checked); if (!agree) { Swal.fire({ icon: error, title: Oops..., text: phone + Please agree to the terms and conditions!, }); return; } if (!email || !fname || !phone || !password || !cpassword) { Swal.fire({ icon: error, title: Oops..., text: Please fill in all required fields!, }); return; } const phoneRegex /^\+\d{12}$/; if (!phoneRegex.test(phone)) { Swal.fire({ icon: error, title: Oops..., text: Please enter a valid phone number including international code!, }); return; } const emailRegex /^a-zA-Z0-9._-+@a-zA-Z0-9.-+\.a-zA-Z{2,4}$/; if (!emailRegex.test(email)) { Swal.fire({ icon: error, title: Oops..., text: Please enter a valid email address!, }); return; } if (password ! cpassword) { Swal.fire({ icon: error, title: Oops..., text: Passwords do not match!, }); return; } $.ajax({ url: api_cnxn +reg_user, type: POST, contentType: application/json, data: JSON.stringify({ fullname: fname, email: email, phone: phone, password: password }), success: function (response) { if (response.message User registered successfully. Check your email to verify your account.) { Swal.fire({ icon: success, title: Registered!, text: You have successfully registered. Check your email to verify your account., }).then(function () { window.location.href index.php; }); } else { Swal.fire({ icon: info, title: Mesasge, text: response.message || Something went wrong. Please try again., }); } }, error: function (xhr) { // Extract error message from the server response let errorMessage Failed to connect to the server. Please try again later.; if (xhr.responseJSON && xhr.responseJSON.error) { errorMessage xhr.responseJSON.error; // Use the error field from the API response } Swal.fire({ icon: error, title: Error, text: errorMessage, }); }, complete: function () { // Re-enable the button and reset its text $button.prop(disabled, false).text(Register); }, }); }); $(#login_submit).on(click, function () { const email $(#login_email).val(); const password $(#login_password).val(); const $button $(#login_submit); // Cache the button element if (!email || !password) { Swal.fire({ icon: error, title: Oops..., text: Please enter both email and password!, }); return; } // Disable the button and show loading text $button.prop(disabled, true).text(Logging in...); // AJAX request $.ajax({ url: api_cnxn +login, type: POST, contentType: application/json, data: JSON.stringify({ email: email, password: password }), success: function (response) { // Store the token in localStorage localStorage.setItem(access_token, response.access_token); get_user_data(); $(#login-modal).modal(hide); $(#login-modal).on(hidden.bs.modal, function () { $(#login_password).val(); $(#login_email).val(); }); const Toast Swal.mixin({ toast: true, position: top-end, showConfirmButton: false, timer: 1500, timerProgressBar: true, didOpen: (toast) > { toast.onmouseenter Swal.stopTimer; toast.onmouseleave Swal.resumeTimer; } }); Toast.fire({ icon: success, title: Signed in successfully }).then(function () { location.reload(); }); }, error: function (xhr) { // Handle errors let errorMessage Failed to connect to the server. Please try again later.; if (xhr.status 401) { errorMessage Invalid credentials. Please try again.; } else if (xhr.status 403) { errorMessage xhr.responseJSON.message || Account is not active.; } Swal.fire({ icon: error, title: Login Failed, text: errorMessage, }); }, complete: function () { // Re-enable the button and reset its text $button.prop(disabled, false).text(Login); }, }); }); function currency_rates(currencies AED, USD, INR) { let baseCurrency INR; if (localStorage.getItem(currency)) { baseCurrency localStorage.getItem(currency).split( )0; } $.ajax({ url: api_cnxn +get_currency_rates/ + baseCurrency, type: POST, contentType: application/json, dataType: json, data: JSON.stringify(currencies), success: function (response) { localStorage.setItem(currency_rates, JSON.stringify(response)); const ratesData localStorage.getItem(currency_rates); if (ratesData) { const rates JSON.parse(ratesData); localStorage.setItem(admin_rate, rates.code?.high ?? ); const conversions rates.conversions || {}; const selectedRate conversionsbaseCurrency; if (selectedRate ! undefined) { localStorage.setItem(currency_rate, selectedRate); } } }, error: function (xhr) { let errorMessage Failed to connect to the server. Please try again later.; if (xhr.responseJSON?.error) { errorMessage xhr.responseJSON.error; } Swal.fire({ icon: error, title: Error, text: errorMessage, }); } }); } // Logout function function logout() { localStorage.clear(); // Clear all stored data const logged $(.signin_modal); logged.empty(); logged.append(`a hrefjavascript:void(0); classbtn btn-white me-3 data-bs-togglemodal data-bs-target#login-modal>Sign In/a>`); window.location.href index.php; }// Attach logout function to a button $(#logout_button).on(click, logout); function get_user_data(){ const logged $(.signin_modal); if (token) { $.ajax({ url: api_cnxn +user-data, type: GET, headers: { Authorization: `Bearer ${token}` }, success: function (response) { $(.customer_id).val(response.c_id); $(.customer_email).val(response.c_email); $(.customer_name).text(response.c_name); $(.customer_since).text(response.c_created); localStorage.setItem(user_id, response.c_id); localStorage.setItem(user_email, response.c_email); localStorage.setItem(user_name, response.c_name); localStorage.setItem(user_lastname, response.c_lastname); localStorage.setItem(user_address, response.c_address); localStorage.setItem(user_country, response.c_country); localStorage.setItem(user_city, response.c_town); localStorage.setItem(user_phone, response.c_mobile); localStorage.setItem(user_picture, response.c_prof_pic); localStorage.setItem(joined, response.c_created); logged.empty(); logged.append(` div classdropdown profile-dropdown> a hrefjavascript:void(0); classd-flex align-items-center data-bs-toggledropdown> span classavatar avatar-md> img src${response.c_prof_pic} altImg classimg-fluid rounded-circle border border-white customer_picture border-4> /span> /a> ul classdropdown-menu dropdown-menu-end p-3> li> a classdropdown-item d-inline-flex align-items-center rounded fw-medium p-2 hrefmy-bookings>My Booking/a> /li> li> a classdropdown-item d-inline-flex align-items-center rounded fw-medium p-2 hrefmy-profile>My Profile/a> /li> li> a classdropdown-item d-inline-flex align-items-center rounded fw-medium p-2 hrefmy-flights>My Flights/a> /li> li> a classdropdown-item d-inline-flex align-items-center rounded fw-medium p-2 hrefwallet>My Wallet/a> /li> li> hr classdropdown-divider my-2> /li> li> a classdropdown-item d-inline-flex align-items-center rounded fw-medium p-2 hrefjavascript:void(0); onclicklogout()> Logout/a> /li> /ul> /div>`); }, error: function (xhr) { let errorMessage Failed to connect to the server. Please try again later.; if (xhr.responseJSON && xhr.responseJSON.error) { errorMessage xhr.responseJSON.error; // Use the error field from the API response } Swal.fire({ icon: error, title: Error, text: errorMessage, }); } }); }else{ $(#signin_prompt).show(); } } $(document).on(keyup, #search_query, function() { var search_query $(this).val(); search_activities(4,search_query); }); $(document).on(keyup, #cruise_query, function() { var search_query $(this).val(); search_activities(5,search_query); }); $(document).on(keyup, #holiday_query, function() { var search_query $(this).val(); search_activities(2,search_query); }); function search_activities(activity,search_query){ if(search_query.length>2){ $.ajax({ url: api_cnxn +search/+activity+/activities/+search_query, type: GET, contentType: application/json, data: JSON.stringify({ search_query: search_query, currency: currency, lang: lang }), success: function (response) { let data response.data; let activityList $(.result_list); activityList.empty(); response.forEach(function(value) { let activity ` li classborder-bottom d-flex align-items-center> a classdropdown-item d-flex align-items-center w-100 hrefactivity/${value.act_slug}> !-- Image on the left --> img src${value.act_image} classimg-fluid me-3 alt${value.act_name} loadinglazy stylewidth: 50px; height: 50px; object-fit: cover; border-radius: 5px;> div> h6 classfs-16 fw-medium mb-0>${value.act_name}/h6> /div> /a> /li> `; activityList.append(activity); })} }); } } let relatedActivitiesData ; function viewActivity(slug){ if(slug.length>3){ $.ajax({ url: api_cnxn +activity/ + slug + ?currency + currency + &lang + lang, type: GET, contentType: application/json, success: function (response) { localStorage.setItem(activity, JSON.stringify(response)); $(.activity-name).text(response.act_name); $(.activity-name).val(response.act_name); $(.activity-summary).val(response.act_summary); $(.activity-type).val(response.act_service_type); $(.activity_id).val(response.act_id); $(.activity-price).text(currency+ + (response.act_adult_price).toFixed(2)); $(#adult_price).val((response.act_adult_price).toFixed(2)); $(#kid_price).val((response.act_kids_price).toFixed(2)); $(.activity-category).text(response.category_name); $(#currency).val(response.currency||currency); $(.activity-description).html(response.act_description); $(.activity-highlights).html(response.act_highlights); $(.review-rate).text(response.reviews.average_rating) $(.reviews).text(response.reviews.total_reviews) $(.city-name).text(response.city_name); $(.view-btn).attr(href, response.act_image); $(.activity-image).attr(src, response.act_image); $(.1-star).text(response.reviews.rating_breakdown.one_star); $(.2-star).text(response.reviews.rating_breakdown.two_star); $(.3-star).text(response.reviews.rating_breakdown.three_star); $(.4-star).text(response.reviews.rating_breakdown.four_star); $(.5-star).text(response.reviews.rating_breakdown.five_star); if(response.act_service_type8){ $(h2.breadcrumb-title.mb-2).text(Umrah Details); }else if(response.act_service_type2){ $(h2.breadcrumb-title.mb-2).text(Holiday Details); }else if(response.act_service_type4){ $(h2.breadcrumb-title.mb-2).text(Activity Details); }else if(response.act_service_type5){ $(h2.breadcrumb-title.mb-2).text(Cruise Details); }else if(response.act_service_type7){ $(h2.breadcrumb-title.mb-2).text(Visa Application); } if(response.related_activities && response.related_activities.length > 0) { storeRelatedActivities(response.related_activities); $(#related_activities).removeClass(d-none); // Clear existing content $(#related_activities .card-body).empty(); // Set the heading $(#related_activities h5).text(Related Activities Price & Offers); // Create a more responsive layout let activitiesHTML ` div classactivity-options price_card> div classtable-responsive> table classtable table-hover table-striped border-bottom> thead classbg-light> tr> th stylewidth: 40%>Tour Option/th> th stylewidth: 30%>Transfer Option/th> th stylewidth: 30%>Tour Date/th> /tr> /thead> tbody> `; // Loop through each activity and create rows response.related_activities.forEach(function(activity) { const minAdults activity.r_min_pax > 0 ? activity.r_min_pax : 1; activitiesHTML + ` tr classactivity-row data-adult-price${(activity.r_adult_price).toFixed(2)} data-kid-price${(activity.r_kids_price).toFixed(2)}> td> div classd-flex align-items-start> input typecheckbox classme-2 mt-1 activity-select data-id${activity.r_id} data-min-adults${minAdults}> div> div>${activity.r_name}/div> a hrefjavascript:void(0); classtext-primary small more-info data-id${activity.r_id}>More Info/a> /div> /div> /td> td> select classform-select form-select-sm transfer-option ${activity.r_transfers.length 0 ? disabled : }> option value data-amount0>Select transfer Option/option> ${activity.r_transfers.length > 0 ? activity.r_transfers.map(transfer > `option value${transfer.tr_id} data-amount${transfer.tr_amount}>${transfer.tr_name}/option>` ).join() : option>Select transfer/option> } /select> /td> td> input typedate classform-control form-control-sm tour-date value${new Date().toISOString().split(T)0}> /td> /tr> tr classactivity-details data-id${activity.r_id}> td colspan3 classborder-0 pt-0> div classd-flex justify-content-between align-items-center mb-3> div classd-flex gap-2> div classinput-group input-group-sm stylewidth: 120px;> span classinput-group-text>Adult/span> select classform-select adult-count data-min${minAdults}> ${Array.from({ length: 10 }, (_, i) > { const value i + 1; return `option value${value} ${value minAdults ? disabled : } ${value minAdults ? selected : }>${value}/option>`; }).join()} /select> /div> div classinput-group input-group-sm stylewidth: 120px;> span classinput-group-text>Child/span> select classform-select child-count> ${Array.from({length: 10}, (_, i) > `option value${i}>${i}/option>`).join()} /select> /div> div classinput-group input-group-sm stylewidth: 120px;> span classinput-group-text>Infant/span> select classform-select infant-count> ${Array.from({length: 10}, (_, i) > `option value${i}>${i}/option>`).join()} /select> /div> /div> div classtext-end> div classoriginal-price text-decoration-line-through text-muted> ${currency} ${(parseFloat(activity.r_adult_price) * 1.5).toFixed(2)}/div> div classdiscounted-price fw-bold> ${currency} ${(activity.r_adult_price).toFixed(2)}/div> div classsavings text-success>Save ${(parseFloat(activity.r_adult_price) * 0.5).toFixed(2)}/div> /div> /div> /div> /td> /tr> `; }); activitiesHTML + ` /tbody> /table> /div> div classtext-end mt-3> button idadd-to-cart-btn classbtn btn-primary>Add to Cart/button> /div> /div> `; if(parseInt((response.act_adult_price))0){ $(.price_card).hide(); } // Add the HTML to the card body $(#related_activities .card-body).html(activitiesHTML); // Add event listener for More Info links $(.more-info).on(click, function() { const activityId $(this).data(id); const activity response.related_activities.find(a > a.r_id activityId); // Create and show modal with activity details let modalHTML ` div classmodal fade idactivityModal tabindex-1 aria-hiddentrue> div classmodal-dialog modal-dialog-centered> div classmodal-content> div classmodal-header> h5 classmodal-title>${activity.r_name}/h5> button typebutton classbtn-close data-bs-dismissmodal aria-labelClose>/button> /div> div classmodal-body> div classactivity-summary> ${activity.r_summary} /div> div classmt-3> strong>Price:/strong> Adult: ${currency} ${activity.r_adult_price} | Child: ${currency} ${activity.r_kids_price} /div> ${activity.r_timings.length > 0 ? ` div classmt-2> strong>Timings:/strong> ${activity.r_timings.map(t > `${t.ts_start} - ${t.ts_end}`).join(, )} /div> ` : } ${activity.r_min_pax ? ` div classmt-2> strong>Minimum Participants:/strong> ${activity.r_min_pax} /div> ` : } /div> div classmodal-footer> button typebutton classbtn btn-secondary data-bs-dismissmodal>Close/button> button typebutton classbtn btn-primary select-activity data-id${activity.r_id}>Select/button> /div> /div> /div> /div> `; // Remove any existing modal $(#activityModal).remove(); // Add new modal to body and show it $(body).append(modalHTML); $(#activityModal).modal(show); // Handle select button click $(.select-activity).on(click, function() { const selectedId $(this).data(id); $(`.activity-selectdata-id${selectedId}`).prop(checked, true); $(#activityModal).modal(hide); }); }); // Add CSS for better mobile experience $(style>) .text(` @media (max-width: 767px) { .activity-options .input-group { width: 100% !important; margin-bottom: 5px; } .activity-details .d-flex { flex-direction: column; align-items: flex-start !important; } .activity-details .text-end { text-align: left !important; margin-top: 10px; } } `) .appendTo(head); // Enforce minimum adults based on r_min_pax $(.adult-count).on(change, function() { const minAdults parseInt($(this).data(min)); const selectedValue parseInt($(this).val()); if (selectedValue minAdults) { $(this).val(minAdults); alert(`This activity requires a minimum of ${minAdults} adults.`); } }); } if(response.act_itinerary && Array.isArray(response.act_itinerary) && response.act_itinerary.length > 0 && response.act_itinerary.some(item > item ! null)) { $(#itinerary).removeClass(d-none); // Clear any existing content $(.activity-itinerary).empty(); // Loop through each itinerary item and create the HTML response.act_itinerary.forEach((item, index) > { // Format the day number with leading zero if needed const dayNum (index + 1).toString().padStart(2, 0); // Create the HTML for each itinerary item const itineraryHTML ` div classd-flex align-items-center flows-step> span classflow-step>${dayNum}/span> div classflow-content> div classd-flex align-items-center justify-content-between mb-2> div> h6 classfw-medium mb-1>${item.title}/h6> /div> ${item.activity ? `span classavatar avatar-lg avatar-rounded flex-shrink-0>img src${item.image} altImg>/span>` : } /div> p>${item.details}/p> /div> /div> `; // Append to the container $(.activity-itinerary).append(itineraryHTML); }); } if(response.transfers.length >0){ $(#transferDiv).removeClass(d-none); let transferSelect $(#transfer); transferSelect.empty(); transferSelect.append(`option data-amount0 value>Select Transfer (Optional)/option>`); response.transfers.forEach(function(transfer) { transferSelect.append(`option data-amount${transfer.tr_amount} value${transfer.tr_id}>${transfer.tr_name} - ${currency} ${transfer.tr_amount}/option>`); }); } if(response.timeslots.length >0){ $(#timeslotDiv).removeClass(d-none); let timeslotSelect $(#timeslot); timeslotSelect.empty(); timeslotSelect.append(`option data-amount0 value>Select Time Slot/option>`); response.timeslots.forEach(function(timeslot) { timeslotSelect.append(`option data-start${timeslot.ts_start} data-end${timeslot.ts_end} value${timeslot.ts_id}>${timeslot.ts_start}- ${timeslot.ts_end}/option>`); }); } if(response.act_imgs.length){ let act_imgs response.act_imgs; let imageSet false; for (let i 0; i response.act_imgs.length; i++) { if (response.act_imgsi) { $(#imgurl).val(response.act_imgsi); imageSet true; break; } } let activity_imgs $(#large-img); let galleryContainer $(.owl-stage-outer); let activity_imgs_nav $(#small-img); activity_imgs.empty(); activity_imgs_nav.empty(); galleryContainer.empty(); displayImagesDirectly(response); } // reviews come here // Populate reviews let reviewsContainer $(#reviews-post); reviewsContainer.empty(); response.reviews.reviews.forEach((review) > { reviewsContainer.append(` div classcard review-item shadow-none mb-3> div classcard-body p-3> div classreview-info> div classd-flex align-items-center justify-content-between flex-wrap> div classd-flex align-items-center mb-2> span classavatar avatar-lg me-2 flex-shrink-0> img src${review.c_picture} classrounded-circle altimg> /span> div> h6 classfs-16 fw-medium mb-1>${review.c_name}/h6> div classd-flex align-items-center flex-wrap date-info> p classfs-14 mb-0>${new Date(review.rvw_date).toLocaleDateString()}/p> p classfs-14 d-inline-flex align-items-center mb-0>span classbadge badge-warning badge-xs text-gray-9 fs-13 fw-medium me-2>${review.rvw_rating}/span>/p> /div> /div> /div> /div> p classmb-2>${review.rvw_details}/p> /div> /div> /div> `); }); // Store related activities data when received function storeRelatedActivities(activities) { relatedActivitiesData activities; } // Add event listeners for all relevant changes $(document).on(change, .transfer-option, .adult-count, .child-count, function() { const activityRow $(this).closest(tr).hasClass(activity-details) ? $(this).closest(tr).prev() : $(this).closest(tr); updateActivityPrice(activityRow); }); // Update star ratings const totalReviews response.reviews.total_reviews; const ratingBreakdown response.reviews.rating_breakdown; // Helper function to calculate percentage function calculatePercentage(count, total) { return total > 0 ? (count / total) * 100 : 0; } // Add this after your table generation code function updateActivityPrice(activityRow) { const detailsRow activityRow.next(.activity-details); const activityId activityRow.find(.activity-select).data(id); const activity relatedActivitiesData.find(a > a.r_id activityId); if (!activity) return; // Get quantities const adultCount parseInt(detailsRow.find(.adult-count).val()) || 0; const childCount parseInt(detailsRow.find(.child-count).val()) || 0; // Get transfer amount const transferOption activityRow.find(.transfer-option); const transferAmount parseFloat(transferOption.find(option:selected).data(amount) || 0); // Calculate base prices const baseAdultPrice parseFloat(activity.r_adult_price); const baseKidPrice parseFloat(activity.r_kids_price); // Calculate totals const adultTotal baseAdultPrice * adultCount; const childTotal baseKidPrice * childCount; const transferTotal transferAmount * (adultCount + childCount); // Calculate final prices const totalPriceWithTransfer adultTotal + childTotal + transferTotal; const originalPrice ((baseAdultPrice * 1.5) * adultCount) + ((baseKidPrice * 1.5) * childCount) + transferTotal; const savings originalPrice - totalPriceWithTransfer; // Update price display const priceContainer detailsRow.find(.text-end); priceContainer.html(` div classoriginal-price text-decoration-line-through text-muted>${currency} ${originalPrice.toFixed(2)}/div> div classdiscounted-price fw-bold>${currency} ${totalPriceWithTransfer.toFixed(2)}/div> div classsavings text-success>Save ${currency} ${savings.toFixed(2)}/div> ${transferAmount > 0 ? `div classtransfer-info small text-muted>Includes transfer: ${currency} ${transferTotal.toFixed(2)}/div>` : } div classprice-breakdown small text-muted> ${adultCount > 0 ? `Adults: ${currency} ${adultTotal.toFixed(2)}` : } ${childCount > 0 ? `${adultCount > 0 ? | : }Children: ${currency} ${childTotal.toFixed(2)}` : } /div> `); } // Update each star rating const starRatings { star: 5, count: ratingBreakdownfive_star }, { star: 4, count: ratingBreakdownfour_star }, { star: 3, count: ratingBreakdownthree_star }, { star: 2, count: ratingBreakdowntwo_star }, { star: 1, count: ratingBreakdownone_star }, ; starRatings.forEach((rating) > { const percentage calculatePercentage(rating.count, totalReviews); $(`.${rating.star}-star`).text(rating.count); // Update count $(`.${rating.star}-star`) .prev(.progress) .find(.progress-bar) .css(width, `${percentage}%`) // Update progress bar width .attr(aria-valuenow, percentage); // Update progress bar value }); // Update star display const averageRating response.reviews.average_rating; // Use the actual average rating const starContainer $(.d-inline-flex.align-items-center.justify-content-center.mb-3); starContainer.empty(); // Clear existing stars // Add stars based on the average rating for (let i 1; i 5; i++) { if (i Math.floor(averageRating)) { // Full star for whole numbers starContainer.append(i classti ti-star-filled text-primary me-1>/i>); } else if (i - averageRating 1 && i - averageRating > 0) { // Half star for fractional part starContainer.append(i classti ti-star-half-filled text-primary me-1>/i>); } else { // Empty star for the rest starContainer.append(i classti ti-star-filled text-mute me-1>/i>); } } } }); } } function displayImagesDirectly(response) { if (!response || !response.act_imgs || !response.act_imgs.length) { console.error(No images found in the API response); return; } // Find the slider containers parent const sliderWrap $(.slider-wrap.vertical-slider); const galleryImages $(.owl-stage-outer); if (sliderWrap.length 0) { console.error(Slider wrap container not found); return; } // Replace the entire slider structure with a simple custom implementation sliderWrap.empty().html(` div classcustom-image-viewer> div classmain-image-container> img idmain-display-image src${response.act_imgs0} alt${response.act_name} stylemax-width: 100%; height: auto; display: block; margin: 0 auto;> /div> div classthumbnail-container styledisplay: flex; flex-wrap: wrap; gap: 10px; margin-top: 15px; justify-content: center;> ${response.act_imgs.map((src, i) > ` div classthumb-item data-index${i} stylecursor: pointer; border: ${i 0 ? 2px solid #007bff : 1px solid #ddd}; padding: 3px;> img src${src} altThumbnail ${i+1} stylewidth: 80px; height: 60px; object-fit: cover;> /div> `).join()} /div> a href${response.act_imgs0} data-fancyboxgallery classbtn btn-white btn-xs view-btn stylemargin-top: 15px;> i classisax isax-image me-1>/i>See All /a> /div> `); galleryImages.empty().html(` ${response.act_imgs.map((src, i) > `div classowl-item active stylewidth: 129.333px; margin-right: 8px;> a classgalley-wrap data-fancyboxgallery href${src}> img src${src} alt${response.act_name}-${i}>/a> /div> `).join()} `); // Set up click handlers for thumbnails $(.thumb-item).on(click, function() { const index $(this).data(index); const imgSrc response.act_imgsindex; // Update main image $(#main-display-image).attr(src, imgSrc); // Update See All link $(adata-fancyboxgallery).attr(href, imgSrc); // Update thumbnail selection styling $(.thumb-item).css(border, 1px solid #ddd); $(this).css(border, 2px solid #007bff); }); // Set up FancyBox gallery for all images if ($.fancybox) { // Create hidden links for all images in the gallery const galleryLinks response.act_imgs.map((src, i) > `a href${src} data-fancyboxgallery styledisplay: none; idgallery-link-${i}> /a>` ).join(); $(body).append(galleryLinks); } } function loadMyWallet() { const userId localStorage.getItem(user_id); const token localStorage.getItem(access_token); if (userId && token) { $.ajax({ url: api_cnxn +wallet-balance/ + userId, method: GET, headers: { Authorization: `Bearer ${token}`, }, // data: JSON.stringify({ currency: currency, lang: lang }), success: function (wallet) { if(wallet.w_balance){ const balance wallet.w_balance || 0; const currencySymbol AED; // Update the wallet balance on the page const walletBalanceElement $(#walletBalance); walletBalanceElement.text(`AED ${balance}`); $(.wallet-balance).val(balance); } }, error: function (xhr, status, error) { const balance 0; const walletBalanceElement $(#walletBalance); walletBalanceElement.text(`AED ${balance}`); $(.wallet-balance).val(balance); } }); } } function load_destinations() { $.ajax({ url: api_cnxn +cities, method: GET, dataType: json, data: JSON.stringify({ currency: currency, lang: lang }), success: function(data) { // Destroy existing owl carousel $(.destination-slider).trigger(destroy.owl.carousel); // Clear existing content $(.destination-slider).empty(); $(#destinations).empty(); // Add new items let cityList $(.city_list); cityList.empty(); data.forEach(function(value) { let destination ` div classdestination-item mb-4 wow fadeInUp data-wow-delay0.2s> img src${value.ct_picture} alt${value.ct_name}> div classdestination-info text-center> div classdestination-content> h5 classmb-1 text-white>${value.ct_name}/h5> div classd-flex align-items-center justify-content-center> div classrating d-flex align-items-center me-2> i classfa-solid fa-star filled me-1>/i> i classfa-solid fa-star filled me-1>/i> i classfa-solid fa-star filled me-1>/i> i classfa-solid fa-star filled me-1>/i> i classfa-solid fa-star filled>/i> /div> p classfs-14 text-white>452 Reviews/p> /div> /div> div classdestination-overlay bg-white mt-2> div classd-flex> div classcol border-end> div classcount-info text-center> span classd-block mb-1 text-indigo> i classisax isax-search-favorite5 me-2>/i> /span> h6 classfs-13 fw-medium>${value.activities_count} Activities/h6> /div> /div> div classcol border-end> div classcount-info text-center> span classd-block mb-1 text-cyan> i classisax isax-buildings>/i> /span> h6 classfs-13 fw-medium>${value.hotels_count} Hotels/h6> /div> /div> div classcol> div classcount-info text-center> span classd-block mb-1 text-success> i classisax isax-ship>/i> /span> h6 classfs-13 fw-medium>${value.holidays_count} Holidays/h6> /div> /div> /div> /div> /div> a hrefactivities.php?city${value.ct_name}&id${value.ct_id} classoverlay-circle-link> i classisax isax-arrow-right-1>/i> /a> /div> `; let destination_li `li> a hrefjavascript:void(0);>${value.ct_name}/a> /li>`; let city_result ` li classborder-bottom> a classdropdown-item city hrefjavascript:void(0); data-id${value.ct_id} data-city_name${value.ct_name} data-country_name${value.ct_country}> h6 classfs-16 fw-medium>${value.ct_name}/h6> p>${value.ct_country}/p> /a> /li> `; cityList.append(city_result); $(.destination-slider).append(destination); $(#destinations).append(destination_li); }); // Reinitialize owl carousel with your desired options $(.destination-slider).owlCarousel({ loop: true, margin: 24, nav: true, navText: i classfa-solid fa-chevron-left>/i>, i classfa-solid fa-chevron-right>/i> , dots: false, responsive: { 0: { items: 1 }, 768: { items: 2 }, 992: { items: 3 }, 1200: { items: 4 } } }); }, error: function(xhr, status, error) { console.error(Error loading destinations:, error); } }); } function loadAllCruise(page 1){ $.ajax({ url: api_cnxn + `cruise?`+currency+currency+&lang+lang, method: GET, data: { page: page}, success: function(data) { const activityPage $(#activities_grid); activityPage.empty(); // Render activities data.data.forEach(activity > { const activityItem ` div classcol-xxl-3 col-md-3 d-flex> a hrefactivity/${activity.act_slug}> div classplace-item mb-4 flex-fill> div classplace-img> div classimg-slider image-slide owl-carouse nav-center> div classslide-images> img src${activity.act_image} classimg-fluid alt${activity.act_name}-1> /div> /div> div classfav-item> span classbadge bg-info d-inline-flex align-items-center>i classisax isax-ranking me-1>/i>${activity.category_name}/span> /div> /div> div classplace-content> div classd-flex align-items-center justify-content-between mb-1> div classd-flex flex-wrap align-items-center> span classme-1>i classti ti-receipt text-primary>/i>/span> p classfs-14 fw-medium text-primary me-9>${currency} ${(activity.act_price).toFixed(2)}/p> /div> span classd-inline-block border vertical-splits> span classbglight text-light d-flex align-items-center justify-content-center>/span> /span> div classd-flex align-items-center flex-wrap> span classbadge badge-warning badge-xs text-gray-9 fs-13 fw-medium me-1>${ parseFloat(activity.average_rating).toFixed(2) }/span> p classfs-14>(${activity.reviews_count} Reviews)/p> /div> /div> h5 classmb-1 fs-16 text-truncate>${activity.act_name}/h5> /div> /div> /a> /div> `; activityPage.append(activityItem); }); // Render pagination controls const pagination $(#pagination); pagination.empty(); for (let i 1; i data.last_page; i++) { const pageItem `li classpage-item ${i data.current_page ? active : }>a classpage-link hrefjavascript:void(0); onclickloadAllCruise(${i})>${i}/a>/li>`; pagination.append(pageItem); } }, error: function(xhr, status, error) { console.error(Error loading activities:, error); $(#Activities-list .place-slider).html( div classalert alert-danger>Failed to load activities. Please try again later./div> ); } }); } function loadActivitiesPage(page1){ $.ajax({ url: api_cnxn + `paginate_activities`, method: GET, data: { page: page, currency: currency, lang: lang }, success: function(data) { const activityPage $(#activities_grid); activityPage.empty(); // Render activities data.data.forEach(activity > { const activityItem ` div classcol-xxl-3 col-md-3 d-flex> a hrefactivity/${activity.act_slug}> div classplace-item mb-4 flex-fill> div classplace-img> div classimg-slider image-slide owl-carouse nav-center> div classslide-images> img src${activity.act_image} classimg-fluid alt${activity.act_name}-1> /div> /div> div classfav-item> span classbadge bg-info d-inline-flex align-items-center>i classisax isax-ranking me-1>/i>${activity.category_name}/span> /div> /div> div classplace-content> div classd-flex align-items-center justify-content-between mb-1> div classd-flex flex-wrap align-items-center> span classme-1>i classti ti-receipt text-primary>/i>/span> p classfs-14 fw-medium text-primary me-9>${currency} ${(activity.act_price).toFixed(2)}/p> /div> span classd-inline-block border vertical-splits> span classbglight text-light d-flex align-items-center justify-content-center>/span> /span> div classd-flex align-items-center flex-wrap> span classbadge badge-warning badge-xs text-gray-9 fs-13 fw-medium me-1>${ parseFloat(activity.average_rating).toFixed(2) }/span> p classfs-14>(${activity.reviews_count} Reviews)/p> /div> /div> h5 classmb-1 fs-16 text-truncate>${activity.act_name}/h5> /div> /div> /a> /div> `; activityPage.append(activityItem); }); // Render pagination controls const pagination $(#pagination); pagination.empty(); for (let i 1; i data.last_page; i++) { const pageItem `li classpage-item ${i data.current_page ? active : }>a classpage-link hrefjavascript:void(0); onclickloadActivitiesPage(${i})>${i}/a>/li>`; pagination.append(pageItem); } }, error: function(xhr, status, error) { console.error(Error loading activities:, error); $(#Activities-list .place-slider).html( div classalert alert-danger>Failed to load activities. Please try again later./div> ); } }); } function loadVisasPage(page1){ $.ajax({ url: api_cnxn + `visas_web`, method: GET, data: { page: page, currency: currency, lang: lang }, success: function(data) { const activityPage $(#activities_grid); activityPage.empty(); data data.data; // Render activities data.forEach(activity > { const activityItem ` div classcol-xxl-3 col-md-3 d-flex> a hrefvisa_application/${activity.act_slug}> div classplace-item mb-4 flex-fill> div classplace-img> div classimg-slider image-slide owl-carouse nav-center> div classslide-images> img src${activity.act_image} classimg-fluid alt${activity.act_name}-1> /div> /div> div classfav-item> span classbadge bg-info d-inline-flex align-items-center>i classisax isax-ranking me-1>/i>${activity.category_name}/span> /div> /div> div classplace-content> div classd-flex align-items-center justify-content-between mb-1> div classd-flex flex-wrap align-items-center> span classme-1>i classti ti-receipt text-primary>/i>/span> p classfs-14 fw-medium text-primary me-9>${currency} ${(activity.act_price).toFixed(2)}/p> /div> span classd-inline-block border vertical-splits> span classbglight text-light d-flex align-items-center justify-content-center>/span> /span> div classd-flex align-items-center flex-wrap> span classbadge badge-warning badge-xs text-gray-9 fs-13 fw-medium me-1>${ parseFloat(activity.average_rating).toFixed(2) }/span> p classfs-14>(${activity.reviews_count} Reviews)/p> /div> /div> h5 classmb-1 fs-16 text-truncate>${activity.act_name}/h5> /div> /div> /a> /div> `; activityPage.append(activityItem); }); // Render pagination controls const pagination $(#pagination); pagination.empty(); for (let i 1; i data.last_page; i++) { const pageItem `li classpage-item ${i data.current_page ? active : }>a classpage-link hrefjavascript:void(0); onclickloadVisasPage(${i})>${i}/a>/li>`; pagination.append(pageItem); } }, error: function(xhr, status, error) { console.error(Error loading Visas:, error); $(#Activities-list .place-slider).html( div classalert alert-danger>Failed to load activities. Please try again later./div> ); } }); } function loadHolidaysPage(page1){ $.ajax({ url: api_cnxn + `holidays`, method: GET, data: { page: page, currency: currency, lang: lang }, success: function(data) { const activityPage $(#activities_grid); activityPage.empty(); // Render activities data.forEach(activity > { const activityItem ` div classcol-xxl-3 col-md-3 d-flex> a hrefactivity/${activity.act_slug}> div classplace-item mb-4 flex-fill> div classplace-img> div classimg-slider image-slide owl-carouse nav-center> div classslide-images> img src${activity.act_image} classimg-fluid alt${activity.act_name}-1> /div> /div> div classfav-item> span classbadge bg-info d-inline-flex align-items-center>i classisax isax-ranking me-1>/i>${activity.category_name}/span> /div> /div> div classplace-content> div classd-flex align-items-center justify-content-between mb-1> div classd-flex flex-wrap align-items-center> span classme-1>i classti ti-receipt text-primary>/i>/span> p classfs-14 fw-medium text-primary me-9>${currency} ${(activity.act_price).toFixed(2)}/p> /div> span classd-inline-block border vertical-splits> span classbglight text-light d-flex align-items-center justify-content-center>/span> /span> div classd-flex align-items-center flex-wrap> span classbadge badge-warning badge-xs text-gray-9 fs-13 fw-medium me-1>${ parseFloat(activity.average_rating).toFixed(2) }/span> p classfs-14>(${activity.reviews_count} Reviews)/p> /div> /div> h5 classmb-1 fs-16 text-truncate>${activity.act_name}/h5> /div> /div> /a> /div> `; activityPage.append(activityItem); }); // Render pagination controls const pagination $(#pagination); pagination.empty(); for (let i 1; i data.last_page; i++) { const pageItem `li classpage-item ${i data.current_page ? active : }>a classpage-link hrefjavascript:void(0); onclickloadHolidaysPage(${i})>${i}/a>/li>`; pagination.append(pageItem); } }, error: function(xhr, status, error) { console.error(Error loading activities:, error); $(#Activities-list .place-slider).html( div classalert alert-danger>Failed to load activities. Please try again later./div> ); } }); } function loadCategories() { $.ajax({ url: api_cnxn + `categories`, method: GET, data: JSON.stringify({ currency: currency, lang: lang }), success: function(data) { const categoryPage $(#categories_grid); categoryPage.empty(); data.forEach(category > { const categoryItem ` div classcol-xxl-2 col-lg-3 col-md-4 col-sm-6> div classd-flex align-items-center hotel-type-item mb-3> a hrefactivities.php?category${category.name}&id${category.id} classavatar avatar-lg> img src${category.image} classrounded-circle altimg> /a> div classms-2> h6 classfs-16 fw-medium>a hrefactivities.php?category${category.name}&id${category.id}>${category.name}/a>/h6> p classfs-14>${category.activity_count} Activities/p> /div> /div> /div> `; categoryPage.append(categoryItem); }); }, error: function(xhr, status, error) { console.error(Error loading activities:, error); $(#Activities-list .place-slider).html( div classalert alert-danger>Failed to load activities. Please try again later./div> ); } }); } // Function to load hotels function loadHotels() { $.ajax({ url: api_cnxn +popular_hotels, method: GET, data: JSON.stringify({ currency: currency, lang: lang }), success: function(data) { const hotelSlider $(#Hotels-list .place-slider); hotelSlider.trigger(destroy.owl.carousel); hotelSlider.empty(); data.forEach(hotel > { const hotelItem ` div classplace-item mb-4 flex-fill> div classplace-img> img src${hotel.act_image} classimg-fluid alt${hotel.act_name}> div classfav-item> a hrefjavascript:void(0); classfav-icon> i classisax isax-heart5>/i> /a> span classbadge bg-info d-inline-flex align-items-center> i classisax isax-ranking me-1>/i>Trending /span> /div> /div> div classplace-content> div classd-flex align-items-center justify-content-between mb-1> div classd-flex flex-wrap align-items-center> span classbadge badge-secondary fs-10 fw-medium me-1>${hotel.ct_name}/span> /div> /div> h5 classmb-1 text-truncate> a hrefhotel-details.html>${hotel.act_name}/a> /h5> div classd-flex align-items-center mb-3> div classrating d-flex align-items-center me-2> ${Array(hotel.act_rating).fill(i classfa-solid fa-star filled me-1>/i>).join()} /div> p classfs-14>(${hotel.act_rating}.0)/p> /div> div classd-flex align-items-center justify-content-between border-top pt-3> a hrefhotel-details.php?sajgbks${hotel.act_id} classbtn btn-primary btn-sm> Book Now /a> /div> /div> /div> `; hotelSlider.append(hotelItem); }); // Reinitialize owl carousel hotelSlider.owlCarousel({ loop: true, margin: 24, nav: true, dots: false, navText: i classfa-solid fa-chevron-left>/i>, i classfa-solid fa-chevron-right>/i> , responsive: { 0: { items: 1 }, 768: { items: 2 }, 992: { items: 3 }, 1200: { items: 4 } } }); }, error: function(xhr, status, error) { console.error(Error loading Hotels:, error); $(#Hotels-list .place-slider).html( div classalert alert-danger>Failed to load Hotels. Please try again later./div> ); } }); } // Function to load activities function loadActivities() { $.ajax({ url: api_cnxn +popular_activities?currency+currency+&lang+lang, method: GET, success: function(data) { const activitySlider $(#Activities-list .place-slider); activitySlider.trigger(destroy.owl.carousel); activitySlider.empty(); data.forEach(activity > { const activityItem ` div classplace-item mb-4 flex-fill> div classplace-img> img src${activity.act_image} classimg-fluid alt${activity.act_name}> div classfav-item> a hrefjavascript:void(0); classfav-icon> i classisax isax-heart5>/i> /a> span classbadge bg-info d-inline-flex align-items-center> i classisax isax-ranking me-1>/i>Trending /span> /div> /div> div classplace-content> div classd-flex align-items-center justify-content-between mb-1> div classd-flex flex-wrap align-items-center> span classbadge badge-secondary fs-10 fw-medium me-1>${activity.act_cat_name}/span> /div> /div> h5 classmb-1 text-truncate> a hrefactivity/${activity.act_slug}>${activity.act_name}/a> /h5> div classd-flex align-items-center mb-3> div classrating d-flex align-items-center me-2> ${Array(activity.act_rating).fill(i classfa-solid fa-star filled me-1>/i>).join()} /div> p classfs-14>(${activity.act_rating}.0)/p> /div> div classd-flex align-items-center justify-content-between border-top pt-3> h5 classtext-dark>From ${currency} ${(activity.act_price).toFixed(2)}/h5> a hrefactivity/${activity.act_slug} classbtn btn-primary btn-sm> Book Now /a> /div> /div> /div> `; activitySlider.append(activityItem); }); // Reinitialize owl carousel activitySlider.owlCarousel({ loop: true, margin: 24, nav: true, dots: false, navText: i classfa-solid fa-chevron-left>/i>, i classfa-solid fa-chevron-right>/i> , responsive: { 0: { items: 1 }, 768: { items: 2 }, 992: { items: 3 }, 1200: { items: 4 } } }); }, error: function(xhr, status, error) { console.error(Error loading activities:, error); $(#Activities-list .place-slider).html( div classalert alert-danger>Failed to load activities. Please try again later./div> ); } }); } // Function to load activities by city function loadActivitiesByCity(city) { $.ajax({ url: api_cnxn +activities/city/+city+ ?currency + currency + &lang + lang, method: GET, data: JSON.stringify({ currency: currency, lang: lang }), success: function(data) { const activityPage $(#activities_grid); activityPage.empty(); data.forEach(activity > { const activityItem ` div classcol-xxl-3 col-md-3 d-flex> a hrefactivity/${activity.act_slug}> div classplace-item mb-4 flex-fill> div classplace-img> div classimg-slider image-slide owl-carouse nav-center> div classslide-images> img src${activity.act_image} classimg-fluid alt${activity.act_name}-1> /div> /div> div classfav-item> span classbadge bg-info d-inline-flex align-items-center>i classisax isax-ranking me-1>/i>${activity.category_name}/span> /div> /div> div classplace-content> div classd-flex align-items-center justify-content-between mb-1> div classd-flex flex-wrap align-items-center> span classme-1>i classti ti-receipt text-primary>/i>/span> p classfs-14 fw-medium text-primary me-9>${currency} ${(activity.act_price).toFixed(2)}/p> /div> span classd-inline-block border vertical-splits> span classbglight text-light d-flex align-items-center justify-content-center>/span> /span> div classd-flex align-items-center flex-wrap> span classbadge badge-warning badge-xs text-gray-9 fs-13 fw-medium me-1>${ parseFloat(activity.average_rating).toFixed(2) }/span> p classfs-14>(${activity.reviews_count} Reviews)/p> /div> /div> h5 classmb-1 fs-16 text-truncate>${activity.act_name}/h5> /div> /div> /a> /div> `; activityPage.append(activityItem); }); // Reinitialize owl carousel // activitySlider.owlCarousel({ // loop: true, // margin: 24, // nav: true, // dots: false, // navText: // i classfa-solid fa-chevron-left>/i>, // i classfa-solid fa-chevron-right>/i> // , // responsive: { // 0: { items: 1 }, // 768: { items: 2 }, // 992: { items: 3 }, // 1200: { items: 4 } // } // }); }, error: function(xhr, status, error) { console.error(Error loading activities:, error); $(#Activities-list .place-slider).html( div classalert alert-danger>Failed to load activities. Please try again later./div> ); } }); } // Function to load activities by category function loadActivitiesByCategory(category) { $.ajax({ url: api_cnxn +activities/category/+category + ?currency + currency + &lang + lang, method: GET, success: function(data) { const activityPage $(#activities_grid); activityPage.empty(); data.forEach(activity > { const activityItem ` div classcol-xxl-3 col-md-3 d-flex> a hrefactivity/${activity.act_slug}> div classplace-item mb-4 flex-fill> div classplace-img> div classimg-slider image-slide owl-carouse nav-center> div classslide-images> img src${activity.act_image} classimg-fluid alt${activity.act_name}-1> /div> /div> div classfav-item> span classbadge bg-info d-inline-flex align-items-center>i classisax isax-ranking me-1>/i>${activity.category_name}/span> /div> /div> div classplace-content> div classd-flex align-items-center justify-content-between mb-1> div classd-flex flex-wrap align-items-center> span classme-1>i classti ti-receipt text-primary>/i>/span> p classfs-14 fw-medium text-primary me-9>${currency} ${(activity.act_price).toFixed(2)}/p> /div> span classd-inline-block border vertical-splits> span classbglight text-light d-flex align-items-center justify-content-center>/span> /span> div classd-flex align-items-center flex-wrap> span classbadge badge-warning badge-xs text-gray-9 fs-13 fw-medium me-1>${ parseFloat(activity.average_rating).toFixed(2) }/span> p classfs-14>(${activity.reviews_count} Reviews)/p> /div> /div> h5 classmb-1 fs-16 text-truncate>${activity.act_name}/h5> /div> /div> /a> /div> `; activityPage.append(activityItem); }); // Reinitialize owl carousel // activitySlider.owlCarousel({ // loop: true, // margin: 24, // nav: true, // dots: false, // navText: // i classfa-solid fa-chevron-left>/i>, // i classfa-solid fa-chevron-right>/i> // , // responsive: { // 0: { items: 1 }, // 768: { items: 2 }, // 992: { items: 3 }, // 1200: { items: 4 } // } // }); }, error: function(xhr, status, error) { console.error(Error loading activities:, error); $(#Activities-list .place-slider).html( div classalert alert-danger>Failed to load activities. Please try again later./div> ); } }); } // Function to load cruise function loadCruise() { $.ajax({ url: api_cnxn +popular_cruise?currency+currency+&lang+lang, method: GET, data: JSON.stringify({ currency: currency, lang: lang }), success: function(data) { const cruiseSlider $(#Cruise-list .place-slider); cruiseSlider.trigger(destroy.owl.carousel); cruiseSlider.empty(); data.forEach(cruise > { const cruiseItem ` div classplace-item mb-4 flex-fill> div classplace-img> img src${cruise.act_image} classimg-fluid alt${cruise.act_name}> div classfav-item> a hrefjavascript:void(0); classfav-icon> i classisax isax-heart5>/i> /a> span classbadge bg-info d-inline-flex align-items-center> i classisax isax-ranking me-1>/i>Trending /span> /div> /div> div classplace-content> div classd-flex align-items-center justify-content-between mb-1> div classd-flex flex-wrap align-items-center> span classbadge badge-secondary fs-10 fw-medium me-1>${cruise.act_cat_name}/span> /div> /div> h5 classmb-1 text-truncate> a hrefactivity/${cruise.act_slug}>${cruise.act_name}/a> /h5> div classd-flex align-items-center mb-3> div classrating d-flex align-items-center me-2> ${Array(cruise.act_rating).fill(i classfa-solid fa-star filled me-1>/i>).join()} /div> p classfs-14>(${cruise.act_rating}.0)/p> /div> div classd-flex align-items-center justify-content-between border-top pt-3> h5 classtext-dark>From ${currency} ${cruise.act_price}/h5> a hrefactivity/${cruise.act_slug} classbtn btn-primary btn-sm> Book Now /a> /div> /div> /div> `; cruiseSlider.append(cruiseItem); }); // Reinitialize owl carousel cruiseSlider.owlCarousel({ loop: true, margin: 24, nav: true, dots: false, navText: i classfa-solid fa-chevron-left>/i>, i classfa-solid fa-chevron-right>/i> , responsive: { 0: { items: 1 }, 768: { items: 2 }, 992: { items: 3 }, 1200: { items: 4 } } }); }, error: function(xhr, status, error) { console.error(Error loading Cruise:, error); $(#Cruise-list .place-slider).html( div classalert alert-danger>Failed to load Cruise. Please try again later./div> ); } }); } // Function to load Umrah function loadUmrah(page1){ $.ajax({ url: api_cnxn + `umrahs?currency${currency}&lang${lang}&page${page}`, method: GET, data: { page: page, currency: currency, lang: lang }, success: function(data) { const activityPage $(#activities_grid); activityPage.empty(); // Render activities data.data.forEach(activity > { const activityItem ` div classcol-xxl-3 col-md-3 d-flex> a hrefactivity/${activity.act_slug}> div classplace-item mb-4 flex-fill> div classplace-img> div classimg-slider image-slide owl-carouse nav-center> div classslide-images> img src${activity.act_image} classimg-fluid alt${activity.act_name}-1> /div> /div> div classfav-item> span classbadge bg-info d-inline-flex align-items-center>i classisax isax-ranking me-1>/i>${activity.category_name}/span> /div> /div> div classplace-content> div classd-flex align-items-center justify-content-between mb-1> div classd-flex flex-wrap align-items-center> span classme-1>i classti ti-receipt text-primary>/i>/span> p classfs-14 fw-medium text-primary me-9>${currency} ${parseFloat(activity.act_price || 0).toFixed(2)}/p> /div> span classd-inline-block border vertical-splits> span classbglight text-light d-flex align-items-center justify-content-center>/span> /span> div classd-flex align-items-center flex-wrap> span classbadge badge-warning badge-xs text-gray-9 fs-13 fw-medium me-1>${ parseFloat(activity.average_rating).toFixed(2) }/span> p classfs-14>(${activity.reviews_count} Reviews)/p> /div> /div> h5 classmb-1 fs-16 text-truncate>${activity.act_name}/h5> /div> /div> /a> /div> `; activityPage.append(activityItem); }); // Render pagination controls const pagination $(#pagination); pagination.empty(); for (let i 1; i data.last_page; i++) { const pageItem `li classpage-item ${i data.current_page ? active : }>a classpage-link hrefjavascript:void(0); onclickloadUmrah(${i})>${i}/a>/li>`; pagination.append(pageItem); } }, error: function(xhr, status, error) { console.error(Error loading Umrah:, error); $(#Activities-list .place-slider).html( div classalert alert-danger>Failed to load Umrah Packages. Please try again later./div> ); } }); } // Function to load holidays function loadHolidays() { $.ajax({ url: api_cnxn +popular_holidays?currency+currency+&lang+lang, method: GET, success: function(data) { const holidaySlider $(#Holiday-list .place-slider); holidaySlider.trigger(destroy.owl.carousel); holidaySlider.empty(); data.forEach(holiday > { const holidayItem ` div classplace-item mb-4 flex-fill> div classplace-img> img src${holiday.act_image} classimg-fluid alt${holiday.act_name}> div classfav-item> a hrefjavascript:void(0); classfav-icon> i classisax isax-heart5>/i> /a> span classbadge bg-info d-inline-flex align-items-center> i classisax isax-ranking me-1>/i>Trending /span> /div> /div> div classplace-content> div classd-flex align-items-center justify-content-between mb-1> div classd-flex flex-wrap align-items-center> span classbadge badge-secondary fs-10 fw-medium me-1>${holiday.ct_name}/span> /div> /div> h5 classmb-1 text-truncate> a hrefactivity/${holiday.act_slug}>${holiday.act_name}/a> /h5> div classd-flex align-items-center mb-3> div classrating d-flex align-items-center me-2> ${Array(holiday.average_rating).fill(i classfa-solid fa-star filled me-1>/i>).join()} /div> p classfs-14>(${holiday.average_rating}.0)/p> /div> div classmb-3 p-2 border rounded> div classd-flex justify-content-between> div> p classtext-dark fs-14 mb-0>Adult Price:${currency} ${holiday.act_price}/p> p classtext-dark fs-14 mb-0>Kids Price:${currency} ${holiday.act_kids_rate}/p> /div> /div> /div> div classd-flex align-items-center justify-content-between border-top pt-3> h5 classtext-dark>From ${currency} ${holiday.act_price}/h5> a hrefactivity/${holiday.act_slug} classbtn btn-primary btn-sm> Book Now /a> /div> /div> /div> `; holidaySlider.append(holidayItem); }); // Reinitialize owl carousel holidaySlider.owlCarousel({ loop: true, margin: 24, nav: true, dots: false, navText: i classfa-solid fa-chevron-left>/i>, i classfa-solid fa-chevron-right>/i> , responsive: { 0: { items: 1 }, 768: { items: 2 }, 992: { items: 3 }, 1200: { items: 4 } } }); }, error: function(xhr, status, error) { console.error(Error loading holiday:, error); $(#Holiday-list .place-slider).html( div classalert alert-danger>Failed to load holiday. Please try again later./div> ); } }); } function loadFAQs() { $.ajax({ url: api_cnxn +faq, method: GET, data: JSON.stringify({ currency: currency, lang: lang }), success: function(data) { const accordionContainer $(#accordionFaq); accordionContainer.empty(); // Clear existing FAQs // Loop through FAQ items data.forEach((faq, index) > { const isFirst index 0; // Check if its the first item const delayTime 0.2 * (index + 1); // Calculate delay time for animation const faqItem ` div classaccordion-item ${isFirst ? show : } mb-3 pb-3 wow fadeInUp data-wow-delay${delayTime}s> h2 classaccordion-header> button classaccordion-button ${!isFirst ? collapsed : } typebutton data-bs-togglecollapse data-bs-target#faq-collapse${index} aria-expanded${isFirst ? true : false} aria-controlsfaq-collapse${index}> ${faq.f_title} /button> /h2> div idfaq-collapse${index} classaccordion-collapse collapse ${isFirst ? show : } data-bs-parent#accordionFaq> div classaccordion-body> p classmb-0>${faq.f_detail}/p> /div> /div> /div> `; accordionContainer.append(faqItem); }); // Reinitialize WOW.js animations if needed if (typeof WOW ! undefined) { new WOW().init(); } }, error: function(xhr, status, error) { console.error(Error loading FAQs:, error); // Optionally show an error message to the user $(#accordionFaq).html(div classalert alert-danger>Failed to load FAQ items. Please try again later./div>); } }); } function loadBlogs() { $.ajax({ url: api_cnxn +blog, method: GET, data: JSON.stringify({ currency: currency, lang: lang }), success: function(data) { const blogContainer $(.blog-section .row.justify-content-center).eq(1); blogContainer.empty(); data.forEach((blog, index) > { const delayTime 0.2 * (index + 1); // Format the post date const blogDate new Date(blog.bl_post_date).toLocaleDateString(en-US, { day: numeric, month: short, year: numeric }); // Create excerpt from bl_intro by removing HTML tags and limiting length const introText blog.bl_intro.replace(/^>*>/g, ).substring(0, 150) + ...; // Format image URL const imageUrl blog.bl_image.startsWith(http) ? blog.bl_image : `https://www.gotyourtrip.com/${blog.bl_image}`; const blogItem ` div classcol-lg-4 col-md-6> div classblog-item mb-4 wow fadeInUp data-wow-delay${delayTime}s> a hrefblog-details/${blog.bl_slug} classblog-img> img src${imageUrl} alt${blog.bl_title} classimg-fluid> /a> span classbadge bg-primary fs-13 fw-medium>${blog.bl_tag || Travel}/span> div classblog-info text-center> div classd-inline-flex align-items-center justify-content-center> div classd-inline-flex align-items-center border-end pe-3 me-3 mb-2> a hrefjavascript:void(0); classd-flex align-items-center> span classavatar avatar-sm flex-shrink-0 me-2> img srcassets/img/users/default-user.jpg classrounded-circle border border-white altauthor> /span> p>${blog.user.u_firstname || Travel}/p> /a> /div> p classd-inline-flex align-items-center text-white mb-2> i classisax isax-calendar-2 me-2>/i>${blogDate} /p> /div> h5> a hrefblog-details/${blog.bl_slug}> ${blog.bl_title} /a> /h5> p classtext-white-50 small>${introText}/p> /div> /div> /div> `; blogContainer.append(blogItem); }); // Add View All button if there are blogs if (data.length > 3) { const viewAllButton ` div classtext-center view-all wow fadeInUp> a hrefblog classbtn btn-dark d-inline-flex align-items-center> View All Articlesi classisax isax-arrow-right-3 ms-2>/i> /a> /div> `; blogContainer.after(viewAllButton); } // Reinitialize WOW.js animations if (typeof WOW ! undefined) { new WOW().init(); } }, error: function(xhr, status, error) { console.error(Error loading blogs:, error); const blogContainer $(.blog-section .row.justify-content-center).eq(1); blogContainer.html( div classcol-12 text-center> + div classalert alert-danger>Failed to load blog posts. Please try again later./div> + /div> ); } }); } function loadBlogsPage(page1){ $.ajax({ url: api_cnxn + `all-blogs`, method: GET, data: { page: page, currency: currency, lang: lang }, success: function(data) { const blogContainer $(#blog-grid); blogContainer.empty(); data data.data; data.forEach((blog, index) > { const delayTime 0.2 * (index + 1); // Format the post date const blogDate new Date(blog.bl_post_date).toLocaleDateString(en-US, { day: numeric, month: short, year: numeric }); // Create excerpt from bl_intro by removing HTML tags and limiting length const introText blog.bl_intro.replace(/^>*>/g, ).substring(0, 150) + ...; // Format image URL const imageUrl blog.bl_image.startsWith(http) ? blog.bl_image : `https://www.gotyourtrip.com/${blog.bl_image}`; const blogItem ` div classcol-lg-4 col-md-6> div classblog-item mb-4 wow fadeInUp data-wow-delay${delayTime}s> a hrefblog-details/${blog.bl_slug} classblog-img> img src${imageUrl} alt${blog.bl_title} classimg-fluid> /a> span classbadge bg-primary fs-13 fw-medium>${blog.bl_tag || Travel}/span> div classblog-info text-center> div classd-inline-flex align-items-center justify-content-center> div classd-inline-flex align-items-center border-end pe-3 me-3 mb-2> a hrefjavascript:void(0); classd-flex align-items-center> span classavatar avatar-sm flex-shrink-0 me-2> img srcassets/img/users/default-user.jpg classrounded-circle border border-white altauthor> /span> p>${blog.user.u_firstname || Travel}/p> /a> /div> p classd-inline-flex align-items-center text-white mb-2> i classisax isax-calendar-2 me-2>/i>${blogDate} /p> /div> h5> a hrefblog-details/${blog.bl_slug}> ${blog.bl_title} /a> /h5> p classtext-white-50 small>${introText}/p> /div> /div> /div> `; blogContainer.append(blogItem); }); // Add View All button if there are blogs // Render pagination controls const pagination $(#pagination); pagination.empty(); for (let i 1; i data.last_page; i++) { const pageItem `li classpage-item ${i data.current_page ? active : }>a classpage-link hrefjavascript:void(0); onclickloadBlogsPage(${i})>${i}/a>/li>`; pagination.append(pageItem); } // Reinitialize WOW.js animations if (typeof WOW ! undefined) { new WOW().init(); } }, error: function(xhr, status, error) { console.error(Error loading blogs:, error); const blogContainer $(.blog-section .row.justify-content-center).eq(1); blogContainer.html( div classcol-12 text-center> + div classalert alert-danger>Failed to load blog posts. Please try again later./div> + /div> ); } }); } function loadBlogDetails() { // Extract the slug from the URL const currentUrl window.location.href; const urlParts currentUrl.split(/); const slug urlPartsurlParts.length - 1; // Fetch blog details from API $.ajax({ url: api_cnxn + `blog/${slug}`, type: GET, dataType: json, data: JSON.stringify({ currency: currency, lang: lang }), success: function(response) { const blogData response.data || response; // Update page title document.title blogData.bl_title + | Got Your Trip; // Update breadcrumb title $(.breadcrumb-title).text(Blog Details); // Update blog image const imageUrl blogData.bl_image.startsWith(http) ? blogData.bl_image : `https://www.gotyourtrip.com/${blogData.bl_image}`; $(.blog-image img).attr(src, imageUrl); // Update blog author $(.blog-content .d-flex.align-items-center.flex-wrap.row-gap-2 a).html( `img srcassets/img/users/default-user.jpg altImg classimg-fluid avatar avatar-sm rounded-circle me-2> ${blogData.user.u_firstname}` ); // Format and update date const date new Date(blogData.bl_post_date); const months January, February, March, April, May, June, July, August, September, October, November, December; const formattedDate `${date.getDate()} ${monthsdate.getMonth()} ${date.getFullYear()}`; $(.blog-content .d-flex.align-items-center.flex-wrap.row-gap-2 .pe-3.border-end.me-3 span).html( `i classisax isax-calendar-2 me-1>/i>${formattedDate}` ); // Update tag $(.blog-content .d-flex.align-items-center.flex-wrap.row-gap-2 div:last span).text(blogData.bl_tag); // Update blog title $(.blog-content h2).text(blogData.bl_title); // Get the position of the title element const titleElement $(.blog-content h2).parent(); // Remove all content after the title until the comments section const commentsHeading $(.blog-content h6:contains(Comments)); titleElement.nextUntil(commentsHeading).remove(); // Create content container const $contentContainer $(div classblog-post-content>/div>); $contentContainer.append(blogData.bl_intro, blogData.bl_body, blogData.bl_conclusion); // Update tags and sharing section const $sharingSection $(` div classmt-3 pb-3 border-bottom d-flex flex-wrap align-items-center justify-content-between> div classd-flex align-items-center> p classfs-16 text-gray-9 mb-0 me-2>Tags :/p> a hrefjavascript:void(0); classbadge badge-sm badge-secondary me-2>${blogData.bl_tag}/a> a hrefjavascript:void(0); classbadge badge-sm badge-secondary me-2>Dubai/a> a hrefjavascript:void(0); classbadge badge-sm badge-secondary>Adventure/a> /div> div classd-flex align-items-center> p classfs-16 text-gray-9 mb-0 me-2>Share On :/p> a hrefjavascript:void(0); classme-2>img srcassets/img/icons/facebook.svg altimage classimg-fluid>/a> a hrefjavascript:void(0); classme-2>img srcassets/img/icons/insta.svg altimage classimg-fluid>/a> a hrefjavascript:void(0); classme-2>img srcassets/img/icons/twitter.svg altimage classimg-fluid>/a> a hrefjavascript:void(0);>img srcassets/img/icons/whatsapp.svg altimage classimg-fluid>/a> /div> /div> `); // Add author bio const $authorBio $(` div classmy-3> div classborder border-light br-10 p-3 d-md-flex align-items-center> div classblog-user-image me-md-3 mb-3 mb-md-0 flex-shrink-0> img srcassets/img/users/default-user.jpg altimage classimg-fluid rounded> /div> div classflex-grow-1> h6 classfs-14 text-primary mb-1>About Author/h6> p classfs-16 text-gray-6>Hi, Im ${blogData.user.u_firstname}, an enthusiastic travel writer passionate about sharing incredible adventures around the world, especially in Dubai and the UAE region./p> /div> /div> /div> `); // Insert the new content after the title titleElement.after($contentContainer); $contentContainer.after($sharingSection); $sharingSection.after($authorBio); }, error: function(xhr, status, error) { console.error(Error fetching blog details:, error); // Display error message on the page $(.blog-content).html(div classalert alert-danger>Unable to load blog content. Please try again later./div>); } }); } function loadMyBookings() { const user localStorage.getItem(user_id); if(user) { $.ajax({ url: api_cnxn +my-bookings/+user, method: POST, headers: { Authorization: `Bearer ${token}` }, data: JSON.stringify({ currency: currency, lang: lang }), success: function(data) { // Clear existing table rows except header $(.datatable tbody).empty(); storeBookingsData(data); // Check if data exists and is an array $(.total-bookings).text(No. of Bookings : + data.length) if(data && Array.isArray(data)) { // Loop through the bookings data data.forEach(function(booking) { // Format the date const bookingDate new Date(booking.date); const formattedDate bookingDate.toLocaleDateString(en-US, { day: numeric, month: short, year: numeric }); // Determine status class for badge let statusClass getStatusClass(booking.status); // Create row with booking data let row ` tr> td>a hrefjavascript:void(0); classlink-primary fw-medium data-bs-togglemodal data-bs-target#booking_modal data-booking${booking.reference}>${booking.reference}/a>/td> td>${booking.currency} ${parseFloat(booking.amount).toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2})}/td> td>${formattedDate}/td> td> span classbadge badge-${statusClass} rounded-pill d-inline-flex align-items-center fs-10>i classfa-solid fa-circle fs-5 me-1>/i>${booking.status}/span> /td> td> div classd-flex align-items-center> a hrefjavascript:void(0); data-bs-togglemodal data-bs-target#booking_modal data-booking${booking.reference}>i classisax isax-eye>/i>/a> /div> /td> /tr> `; // Append the row to the table $(.datatable tbody).append(row); }); } else { // Display a message if no bookings found $(.datatable tbody).append(` tr> td colspan9 classtext-center>No bookings found/td> /tr> `); } setupBookingClickHandlers(); }, error: function(xhr, status, error) { console.error(Error loading bookings:, error); // Display error message in table $(.datatable tbody).html(` tr> td colspan9 classtext-center text-danger>Failed to load bookings. Please try again later./td> /tr> `); } }); } else { // No user ID found, redirect to login or show message $(.datatable tbody).html(` tr> td colspan9 classtext-center>Please login to view your bookings/td> /tr> `); } } function loadMyFlights() { const user localStorage.getItem(user_id); if(user) { $.ajax({ url: api_cnxn +flights/my-flights/+user, method: POST, headers: { Authorization: `Bearer ${token}` }, data: JSON.stringify({ currency: currency, lang: lang }), success: function(data) { // Clear existing table rows except header $(.datatable tbody).empty(); storeBookingsData(data); // Check if data exists and is an array $(.total-bookings).text(No. of Bookings : + data.length) if (data && Array.isArray(data)) { data.forEach(function(booking) { const bookingDate new Date(booking.ft_created_at); const formattedDate bookingDate.toLocaleDateString(en-US, { day: numeric, month: short, year: numeric }); const flightDate new Date(booking.ft_depature_date); const formattedFlightDate flightDate.toLocaleDateString(en-US, { day: numeric, month: short, year: numeric }); // ✅ Cancel check using o_cancelled_date const isCancelled !!booking.order?.o_cancelled_date || null; const isModified !!booking.order?.o_change_id || null; let rowClass isCancelled ? text-decoration-line-through text-muted : ; rowClass + isModified ? fw-bold : ; const paidCurrency booking.order?.o_paid_currency ? booking.order.o_paid_currency.toUpperCase() : N/A; let row ` tr class${rowClass}> td>a hrefjavascript:void(0); classlink-primary fw-medium data-bs-togglemodal data-bs-target#booking_modal data-booking${booking.ft_number}>${booking.ft_number}/a>/td> td class${rowClass}>${booking.order?.o_owner ? booking.order.o_owner : ****}/td> td class${rowClass}>${paidCurrency} ${parseFloat(booking.order?.o_paid_amount).toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2})}/td> td class${rowClass}>${booking.order?.o_booking_ref}/td> td>${formattedDate}/td> td>${booking.ft_origin} - ${booking.ft_destination}/td> td>${formattedFlightDate}/td> td> div classd-flex align-items-center> a hrefjavascript:void(0); classview-order data-bs-toggletooltip data-bs-placementtop titleView Order data-owner${booking.order?.o_owner} data-channel${booking.order?.o_channel} data-order${booking.order?.o_booking_ref}> i classisax isax-eye>/i> /a> /div> /td> /tr> `; $(.datatable tbody).append(row); }); } else { // Display a message if no bookings found $(.datatable tbody).append(` tr> td colspan9 classtext-center>No bookings found/td> /tr> `); } setupBookingClickHandlers(); }, error: function(xhr, status, error) { console.error(Error loading bookings:, error); // Display error message in table $(.datatable tbody).html(` tr> td colspan9 classtext-center text-danger>Failed to load bookings. Please try again later./td> /tr> `); } }); } else { // No user ID found, redirect to login or show message $(.datatable tbody).html(` tr> td colspan9 classtext-center>Please login to view your bookings/td> /tr> `); } } $(document).on(click, .view-order, function() { const orderId $(this).data(order); const owner $(this).data(owner); const channel $(this).data(channel); if(orderId && owner && channel) { const queryParams { Query: { Filters: { OrderID: { Owner: owner, Channel: channel, value: orderId } } } }; localStorage.setItem(order_query, JSON.stringify(queryParams)); window.location.href view-order; }else{ swal.fire({ icon: error, title: Error, text: Failed to load order details. Please try again later. }) } }); $(document).on(keyup, .search_airport, function() { let keyword $(this).val(); let airport $(this).attr(id); console.log(airport); var stated ; if (keyword.length > 3) { $.ajax({ url: api_cnxn +airports/search/+keyword, method: GET, dataType: json, data: { keyword: keyword }, success: function(response) { let data response.data; let airportList $(# + airport+_airport_list); airportList.empty(); data.forEach(function(value) { if(airport origin) { stated departure; } if(airport departure) { stated arrival; } let airport_result ` li classborder-bottom> a classdropdown-item port hrefjavascript:void(0); data-id${airport} data-city_name${value.city_name} data-airport${value.name} data-iata_code${value.iata_code}> div classrow> div classcol-md-2> i classfas fa-plane-${stated} text-dark>/i> /div> div classcol-md-8> h6 classfs-16 fw-medium>${value.city_name}/h6> p>${value.name}/p> /div> div classcol-md-2 fw-bold > ${value.iata_code} /div> /div> /a> /li> `; airportList.append(airport_result); }) } }); } }); // Helper function to determine badge class based on status function getStatusClass(status) { switch(status.toLowerCase()) { case confirmed: return success; case paid: return success; case pending: return warning; case unpaid: return warning; case cancelled: return danger; default: return secondary; } } // Function to set up click handlers for booking rows function setupBookingClickHandlers() { // Add click event to all booking links in the table $(.datatable).on(click, adata-bs-target#booking_modal, function(e) { // Get the booking ID from the link const bookingId $(this).attr(data-booking); // Load booking details loadBookingDetails(bookingId); }); } // Function to load booking details when modal is triggered function loadBookingDetails(bookingId) { // Update the modal title with the booking ID $(#booking_modal .modal-header h5 span).text(bookingId); // First, find the booking in our already loaded data const bookingRow findBookingByReference(bookingId); if (bookingRow) { // Format the date for display const bookingDate new Date(bookingRow.date); const formattedDate bookingDate.toLocaleDateString(en-US, { day: numeric, month: short, year: numeric }); // Update basic booking info in the modal updateBasicBookingInfo(bookingRow, formattedDate); // Get booking activities from the API $.ajax({ url: api_cnxn + `booking-activities/${bookingRow.id}`, method: GET, headers: { Authorization: `Bearer ${token}` }, data: JSON.stringify({ currency: currency, lang: lang }), success: function(activities) { // Update the activities section in the modal updateActivitiesSection(activities); // Calculate and display totals updateOrderInfo(bookingRow, activities); }, error: function(xhr, status, error) { console.error(Error loading booking activities:, error); // Display simple error message in activities section $(.upcoming-details:nth-child(4)).html(` h6 classmb-2>Activities/h6> div classalert alert-danger> Unable to load activities. Please try again later. /div> `); } }); } else { // If booking not found in currently loaded data, show error showBookingNotFoundError(); } } // Find a booking by its reference ID in the currently loaded data function findBookingByReference(reference) { // Assuming we have a global variable or a way to access the current data const bookings window.currentBookings || ; return bookings.find(booking > booking.reference reference); } // Update the basic booking information in the modal function updateBasicBookingInfo(booking, formattedDate) { // Update status badge const statusClass getStatusClass(booking.status); $(#booking_modal .upcoming-title .badge) .removeClass(badge-info badge-success badge-warning badge-danger) .addClass(`badge-${statusClass}`) .html(`i classfa-solid fa-circle fs-5 me-1>/i>${booking.status}`); // Update booking info section $(.upcoming-details:nth-child(2) .row).html(` div classcol-lg-3> h6 classfs-14>Booking ID/h6> p classtext-gray-6 fs-16>${booking.reference}/p> /div> div classcol-lg-3> h6 classfs-14>Amount/h6> p classtext-gray-6 fs-16> ${localStorage.getItem(currency)} ${parseFloat(booking.amount).toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2})}/p> /div> div classcol-lg-3> h6 classfs-14>Booked On/h6> p classtext-gray-6 fs-16>${formattedDate}/p> /div> div classcol-lg-3> h6 classfs-14>Status/h6> p classtext-gray-6 fs-16>${booking.status}/p> /div> `); // Update the modal footer based on booking status updateModalFooter(booking.status); } // Update the activities section in the modal function updateActivitiesSection(activities) { if (activities && activities.length > 0) { let activityHtml ; activities.forEach(activity > { const activityDate new Date(activity.date); const formattedActivityDate activityDate.toLocaleDateString(en-US, { day: numeric, month: short, year: numeric }); activityHtml + ` div classbg-light rounded p-3 mb-2> div classrow> div classcol-lg-5> h6 classfs-14 mb-1>${activity.detail}/h6> p classtext-gray-6 fs-14 mb-0>Date: ${formattedActivityDate}/p> /div> div classcol-lg-4> p classtext-gray-6 fs-14 mb-0> ${activity.pax.adults} Adult${activity.pax.adults ! 1 ? s : } ${activity.pax.children > 0 ? `, ${activity.pax.children} Child${activity.pax.children ! 1 ? ren : }` : } /p> /div> div classcol-lg-3 text-end> p classtext-gray-6 fs-14 mb-0>${localStorage.getItem(currency)} ${parseFloat(activity.amount).toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2})}/p> /div> /div> /div> `; }); $(.upcoming-details:nth-child(4)).html(` h6 classmb-2>Activities/h6> ${activityHtml} `); } else { $(.upcoming-details:nth-child(4)).html(` h6 classmb-2>Activities/h6> div classtext-center p-3 bg-light rounded> p classmb-0>No activities found for this booking./p> /div> `); } } // Update the order information section function updateOrderInfo(booking, activities) { // Calculate total from activities let totalActivitiesAmount 0; if (activities && activities.length > 0) { activities.forEach(activity > { totalActivitiesAmount + parseFloat(activity.amount); }); } // Use the booking amount as the total if available, otherwise use calculated total const totalAmount booking.amount || totalActivitiesAmount.toFixed(2); $(.upcoming-details:last-child .row).html(` div classcol-lg-3> h6 classfs-14>Order Id/h6> p classtext-primary fs-16>${booking.id}/p> /div> div classcol-lg-3> h6 classfs-14>Payment Method/h6> p classtext-gray-6 fs-16>Credit Card/p> /div> div classcol-lg-3> h6 classfs-14>Payment Status/h6> p classtext-${booking.status.toLowerCase() paid || booking.status.toLowerCase() confirmed ? success : warning} fs-16>${booking.status}/p> /div> div classcol-lg-3> h6 classfs-14>Date of Payment/h6> p classtext-gray-6 fs-16>${new Date(booking.date).toLocaleDateString(en-US, { day: numeric, month: short, year: numeric, hour: 2-digit, minute: 2-digit })}/p> /div> div classcol-lg-3> h6 classfs-14>Total Paid/h6> p classtext-gray-6 fs-16>${localStorage.getItem(currency)} ${parseFloat(totalAmount).toLocaleString(undefined, {minimumFractionDigits: 2, maximumFractionDigits: 2})}/p> /div> `); } // Update the modal footer based on booking status function updateModalFooter(status) { const footer $(#booking_modal .modal-footer); if (status.toLowerCase() pending || status.toLowerCase() confirmed) { footer.html(` a hrefjavascript:void(0); classbtn btn-md btn-warning make-payment>Pay Booking/a> a hrefjavascript:void(0); classbtn btn-md btn-primary data-bs-togglemodal data-bs-target#cancel-booking>Cancel Booking/a> `); } else if (status.toLowerCase() cancelled) { footer.html(` span classtext-danger>This booking has been cancelled/span> `); } else if (status.toLowerCase() paid) { footer.html(` a hrefjavascript:void(0); classbtn btn-md btn-success>Download Receipt/a> a hrefjavascript:void(0); classbtn btn-md btn-outline-primary data-bs-togglemodal data-bs-target#cancel-booking>Cancel Booking/a> `); } } $(.apply-travellers).on(click, function() { let adults $(#flight inputnameadults).val(); let children $(#flight inputnamechildren).val(); let infants $(#flight inputnameinfants).val(); let cabin $(#flight inputnamecabin_class:checked).attr(id).replace(/\b\w/g, c > c.toUpperCase()); let det adults > 1 ? `${adults} Adults` : adults 1 ? 1 Adult : , children > 1 ? `${children} Children` : children 1 ? 1 Child : , infants > 1 ? `${infants} Infants` : infants 1 ? 1 Infant : , cabin ? cabin : Economy .filter(Boolean).join(, ); $(.cabin-pax).text(det); $(.cabin-pax-select).removeClass(show); }); $(.return_apply-travellers).on(click, function() { let adults $(#flight inputnameadults).val(); let children $(#flight inputnamechildren).val(); let infants $(#flight inputnameinfants).val(); let cabin $(#flight inputnamereturn_cabin_class:checked).attr(data-id).replace(/\b\w/g, c > c.toUpperCase()); let det adults > 1 ? `${adults} Adults` : adults 1 ? 1 Adult : , children > 1 ? `${children} Children` : children 1 ? 1 Child : , infants > 1 ? `${infants} Infants` : infants 1 ? 1 Infant : , cabin ? cabin : Economy .filter(Boolean).join(, ); $(.return-cabin-pax).text(det); $(.return_cabin-pax-select).removeClass(show); }); const observer new MutationObserver((mutations) > { mutations.forEach((mutation) > { if (mutation.attributeName class) { const el mutation.target; if (!el.classList.contains(show)) { let adults $(#flight inputnameadults).val(); let children $(#flight inputnamechildren).val(); let infants $(#flight inputnameinfants).val(); let cabin $(#flight inputnamecabin_class:checked).attr(id).replace(/\b\w/g, c > c.toUpperCase()); let det adults > 1 ? `${adults} Adults` : adults 1 ? 1 Adult : , children > 1 ? `${children} Children` : children 1 ? 1 Child : , infants > 1 ? `${infants} Infants` : infants 1 ? 1 Infant : , cabin ? cabin : Economy .filter(Boolean).join(, ); $(.cabin-pax).text(det); $(.cabin-pax-select).removeClass(show); } } }); }); const robserver new MutationObserver((mutations) > { mutations.forEach((mutation) > { if (mutation.attributeName class) { const el mutation.target; if (!el.classList.contains(show)) { let adults $(#flight inputnameadults).val(); let children $(#flight inputnamechildren).val(); let infants $(#flight inputnameinfants).val(); let cabin $(#flight inputnamereturn_cabin_class:checked).attr(id).replace(/\b\w/g, c > c.toUpperCase()); let det adults > 1 ? `${adults} Adults` : adults 1 ? 1 Adult : , children > 1 ? `${children} Children` : children 1 ? 1 Child : , infants > 1 ? `${infants} Infants` : infants 1 ? 1 Infant : , cabin ? cabin : Economy .filter(Boolean).join(, ); $(.return_cabin-pax).text(det); $(.return_cabin-pax-select).removeClass(show); } } }); }); const ob_target document.querySelector(.cabin-pax-select); if (ob_target) { observer.observe(ob_target, { attributes: true }); } const cob_target document.querySelector(.return_cabin-pax-select); if (cob_target) { robserver.observe(cob_target, { attributes: true }); } // Show error if booking not found function showBookingNotFoundError() { $(.upcoming-content).html(` div classalert alert-danger> h5>Booking Not Found/h5> p>We couldnt find the details for this booking. Please try again or contact support if the problem persists./p> /div> `); $(#booking_modal .modal-footer).html(); } // Store loaded bookings globally to access them later function storeBookingsData(bookings) { window.currentBookings bookings; } $(document).ready(function() { let cartItems JSON.parse(localStorage.getItem(cart)) || ; $(.cart-counter).text(cartItems.length); if (cartItems.length0) { $(.checkout-btn).hide(); $(.cart-counter).hide(); }else{ $(.checkout-btn).show(); $(.cart-counter).show(); } load_destinations(); get_user_data(); // Load saved language and currency from localStorage let savedLanguage localStorage.getItem(lang); let savedFlag localStorage.getItem(selectedFlag); let savedCurrency localStorage.getItem(currency); if (savedLanguage && savedFlag) { $(.flag-dropdown a.dropdown-toggle).html(`img src${savedFlag} classme-2 altflag>${savedLanguage}`); } if (savedCurrency) { $(.dropdown:not(.flag-dropdown) a.dropdown-toggle).text(savedCurrency); } // Event listeners for language selection $(.language li).click(function () { let selectedLang $(this).text().trim(); let selectedFlag $(this).find(img).attr(src); updateLanguage(selectedLang, selectedFlag); }); // Event listeners for currency selection $(.currency li).click(function () { if (window.location.href.includes(checkout.php) || window.location.href.includes(cart)) { swal.fire({ icon: warning, title: Warning, text: You cannot change currency from this page., }); return; } let selectedCurrency $(this).text().trim(); updateCurrency(selectedCurrency); location.reload(); }); }); // Function to update the selected language function updateLanguage(lang, flagSrc) { localStorage.setItem(lang, lang); localStorage.setItem(selectedFlag, flagSrc); location.reload(); } // Function to update the selected currency function updateCurrency(currency) { localStorage.setItem(currency, currency); const choiceCurrency currency.split( )0; let ratesData localStorage.getItem(currency_rates); if (ratesData) { let rates JSON.parse(ratesData); let conversions rates.conversions || {}; // currency_rates(); // Get the selected rate let selectedRate conversionschoiceCurrency; if (selectedRate ! undefined) { // console.log(Selected currency:, currency, Rate:, selectedRate); localStorage.setItem(currency_rate, selectedRate); } } // location.reload(); } $(document).on(submit, #profile-form, function(e) { e.preventDefault(); var customer_name $(.customer_nameUpdate).val(); var customer_lastname $(.customer_lastname).val(); var customer_phone $(.customer_phone).val(); var customer_address $(.customer_address).val(); var customer_country $(.customer_country).val(); var customer_city $(.customer_city).val(); var formData new FormData(); formData.append(user, localStorage.getItem(user_id)); formData.append(name, customer_name); formData.append(surname, customer_lastname); formData.append(phone, customer_phone); formData.append(address, customer_address); formData.append(country, customer_country); formData.append(c_town, customer_city); Swal.fire({ title: Updating..., html: , didOpen: () > { Swal.showLoading() } }); $.ajax({ url: api_cnxn +user_update, type: POST, data: formData, dataType: json, contentType: false, cache: false, processData: false, success: function(response) { if (response.status success) { window.location.href my-profile.php; } else { // console.log(response.message); } }, error: function(xhr, status, error) { console.log(error); }, complete: function() { Swal.close(); } }); }); $(#password-form).on(submit, function (e) { e.preventDefault(); let newPassword $(#new_password).val().trim(); let confirmPassword $(#confirm_new_password).val().trim(); let userId localStorage.getItem(user_id); // Replace with actual ID from session or hidden input if (newPassword || confirmPassword ) { Swal.fire({ icon: info, title: Oops..., text: Please fill in both password fields., }) return; } if (newPassword ! confirmPassword) { Swal.fire({ icon: error, title: Oops..., text: Passwords do not match!, }); return; } if(userId null || userId undefined || userId || userId 0){ Swal.fire({ icon: error, title: Oops..., text: User ID not found., }); return; } Swal.fire({ title: Updating..., html: , didOpen: () > { Swal.showLoading() } }); $(.password-update).html(span classspinner-border spinner-border-sm mr-2 rolestatus aria-hiddentrue>/span>Loading...).prop(disabled, true); $.ajax({ url: api_cnxn +change-password, // Adjust endpoint if needed type: POST, data: { password: newPassword, user: userId }, headers: { X-CSRF-TOKEN: $(metanamecsrf-token).attr(content), Authorization: `Bearer ${token}` }, success: function (response) { Swal.close(); swal.fire({ icon: success, text: response.message }); $(#new_password, #confirm_new_password).val(); // clear fields $(.password-update).html(Change).prop(disabled, false); }, error: function (xhr) { swal.fire({ icon: error, title: xhr.responseJSON.message }) } }); }); $(#profile_fileUpload).on(change, function () { let fileInput this; let userId localStorage.getItem(user_id); // Replace with actual user ID dynamically if (fileInput.files && fileInput.files0) { let formData new FormData(); formData.append(profile_picture, fileInput.files0); formData.append(user, userId); $.ajax({ url: api_cnxn +user_profile_picture, // Laravel route method: POST, data: formData, processData: false, contentType: false, headers: { X-CSRF-TOKEN: $(metanamecsrf-token).attr(content), // if needed Authorization: `Bearer ${token}` }, success: function (response) { if (response.status) { let picUrl response.profile_picture_url; if (!/^https?:\/\//i.test(picUrl)) { picUrl website_address + picUrl; } $(.customer_picture).attr(src, picUrl); Swal.fire({ icon: success, title: Success, text: response.message }); } else { Swal.fire({ icon: error, title: Error, text: response.message }); } }, error: function (xhr) { let message xhr.responseJSON?.message || An error occurred while uploading the profile picture.; Swal.fire({ icon: error, title: Success, text: message }); } }); } }); /////////////////////////////////////////////////// this is on click of add to cart from a table of related elements \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ // Handle add to cart from table $(document).on(click , #add-to-cart-btn, function() { const selectedActivities ; // Get all checked activities $(.activity-select:checked).each(function() { const row $(this).closest(tr); const detailsRow row.next(.activity-details); const activityId $(this).data(id); // Find the corresponding activity data const activity relatedActivitiesData.find(a > a.r_id activityId); if (!activity) return; // Get selected values const transferOption row.find(.transfer-option).val(); const transferAmount parseFloat(row.find(.transfer-option option:selected).data(amount) || 0); const selectedDate row.find(.tour-date).val(); const adultCount parseInt(detailsRow.find(.adult-count).val()) || 0; const childCount parseInt(detailsRow.find(.child-count).val()) || 0; const infantCount parseInt(detailsRow.find(.infant-count).val()) || 0; // Validate selections if (!validateSelection(activity, adultCount, selectedDate)) { return; } // Calculate total price const totalPrice calculateTotalPrice(activity, adultCount, childCount, transferAmount); // Create cart item const cartItem { productId: activity.r_id, productName: activity.r_name, productType: activity.r_type, imgurl: activity.r_image, selectedDate: selectedDate, adultQuantity: adultCount.toString(), kidsQuantity: childCount.toString(), infants: infantCount.toString(), adult_price: activity.r_adult_price, kid_price: activity.r_kids_price, totalPrice: totalPrice.toFixed(2), transferOption: transferOption, transfer_amount: transferAmount, timeslot: activity.r_timings.length > 0 ? `${activity.r_timings0.ts_start}-${activity.r_timings0.ts_end}` : , currency: currency }; if(adultCount0 && childCount0 && infantCount0){ swal.fire({ icon: warning, title: No Selection, text: Please select at least one person for this activity }); return; } selectedActivities.push(cartItem); }); if (selectedActivities.length 0) { swal.fire({ icon: warning, title: No Selection, text: Please select at least one activity }); return; } // Add selected activities to cart addSelectedActivitiesToCart(selectedActivities); }); // Validate selection function validateSelection(activity, adultCount, selectedDate) { if (!selectedDate) { swal.fire({ icon: error, title: Date Required, text: Please select a date for all activities }); return false; } const minAdults activity.r_min_pax > 0 ? activity.r_min_pax : 0; if (adultCount minAdults) { swal.fire({ icon: error, title: Minimum Adults Required, text: `${activity.r_name} requires minimum ${minAdults} adults` }); return false; } return true; } // Calculate total price function calculateTotalPrice(activity, adultCount, childCount, transferAmount) { const adultTotal parseFloat(activity.r_adult_price) * adultCount; const childTotal parseFloat(activity.r_kids_price) * childCount; const transferTotal parseFloat(transferAmount); ; return adultTotal + childTotal + transferTotal; } // Add selected activities to cart function addSelectedActivitiesToCart(selectedActivities) { let cart JSON.parse(localStorage.getItem(cart)) || ; let addedItems 0; let updatedItems 0; selectedActivities.forEach(newItem > { const validation validateCartItem(cart, newItem); if (!validation.isValid) { swal.fire({ icon: error, title: Time Conflict, text: validation.message }); return; } if (validation.isDuplicate) { updateExistingItem(cart, newItem); updatedItems++; } else { cart.push(newItem); addedItems++; } }); // Update cart in localStorage localStorage.setItem(cart, JSON.stringify(cart)); // Update cart counter if (addedItems > 0) { let cartCounter JSON.parse(localStorage.getItem(cartCounter)) || 0; cartCounter + addedItems; localStorage.setItem(cartCounter, cartCounter); $(.cart-counter).text(cartCounter); } // Show success message showTableSelectionSuccess(addedItems, updatedItems); } // Show success message for table selection function showTableSelectionSuccess(addedItems, updatedItems) { let message ; if (addedItems > 0 && updatedItems > 0) { message `${addedItems} items added and ${updatedItems} items updated in your cart`; } else if (addedItems > 0) { message `${addedItems} items added to your cart`; } else if (updatedItems > 0) { message `${updatedItems} items updated in your cart`; } swal.fire({ icon: success, title: Cart Updated, text: message, showCancelButton: true, confirmButtonText: View Cart, cancelButtonText: Continue Shopping }).then((result) > { if (result.isConfirmed) { window.location.href cart.php; } else if (result.dismiss Swal.DismissReason.cancel) { window.location.href activities.php; } }); } function validateCartItem(cart, cartItem) { let isDuplicate false; for (let item of cart) { // Check for duplicate items if (item.productId cartItem.productId && item.selectedDate cartItem.selectedDate) { isDuplicate true; } // Check for time conflicts if (hasTimeConflict(item, cartItem)) { return { isValid: false, message: `Time conflict with ${item.productName} in your cart on the same date.` }; } } return { isValid: true, isDuplicate }; } // Function to check for time conflicts function hasTimeConflict(item1, item2) { if (item1.selectedDate ! item2.selectedDate || !item1.timeslot || !item2.timeslot || item1.timeslot || item2.timeslot ) { return false; } const newStart, newEnd item2.timeslot.split(-); const existingStart, existingEnd item1.timeslot.split(-); if (!newStart || !newEnd || !existingStart || !existingEnd) { return false; } const timeToMinutes (timeStr) > { const hours, minutes timeStr.split(:).map(Number); return hours * 60 + minutes; }; const newStartMin timeToMinutes(newStart); const newEndMin timeToMinutes(newEnd); const existingStartMin timeToMinutes(existingStart); const existingEndMin timeToMinutes(existingEnd); return (newStartMin > existingStartMin && newStartMin existingEndMin) || (newEndMin > existingStartMin && newEndMin existingEndMin) || (newStartMin existingStartMin && newEndMin > existingEndMin); } // Function to update existing cart item function updateExistingItem(cart, newItem) { const existingItem cart.find(item > item.productId newItem.productId && item.selectedDate newItem.selectedDate ); if (existingItem) { existingItem.adultQuantity (parseInt(existingItem.adultQuantity || 0) + parseInt(newItem.adultQuantity || 0)).toString(); existingItem.kidsQuantity (parseInt(existingItem.kidsQuantity || 0) + parseInt(newItem.kidsQuantity || 0)).toString(); existingItem.totalPrice ( parseFloat(existingItem.adult_price) * parseInt(existingItem.adultQuantity) + parseFloat(existingItem.kid_price) * parseInt(existingItem.kidsQuantity) ).toFixed(2); } } // Function to apply coupon function applyCoupon() { const couponCode $(#coupon-input).val().trim(); if (!couponCode) return; // Show loading state $(#apply-coupon).prop(disabled, true).html(span classspinner-border spinner-border-sm>/span> Applying...); // Get cart data const cartItems JSON.parse(localStorage.getItem(cart) || ); const userId localStorage.getItem(user_id) || ; // API call to validate coupon $.ajax({ url: api_cnxn +apply-coupon, method: POST, contentType: application/json, data: JSON.stringify({ coupon_code: couponCode, user_id: userId, subtotal: subtotal, items: cartItems, currency: currency, lang: lang }), success: function(response) { if (parseInt(response.discount_amount)>0) { $(.coupoun-list).removeClass(d-none); $(.coupoun-list-two).addClass(d-none); $(#coupon-info).text(`${couponCode} ( ${currency} ${response.discount_amount})`); // Store coupon info coupon couponCode; discountAmount parseFloat(response.discount_amount); // Apply discount to totals applyDiscount(discountAmount); // Save to localStorage localStorage.setItem(active_coupon, JSON.stringify({ code: couponCode, discount: discountAmount })); } else { $(.coupoun-list).addClass(d-none); $(.coupoun-list-two).removeClass(d-none); } }, error: function() { $(.coupoun-list).addClass(d-none); $(.coupoun-list-two).removeClass(d-none); }, complete: function() { $(#apply-coupon).prop(disabled, false).text(Apply Coupon); } }); } /////////////////////////////////////////////////// this is on click of add to cart from a table of related elements \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\// *****************************************************************google sign in start*********************************************************************************************//// Google Sign-In Button Handler// $(#googleSignIn).on(click, function(e) {// e.preventDefault();// initiateGoogleAuth();// }); $(#googleSignIn).on(click, function(e) { e.preventDefault(); // Trigger Google One Tap google.accounts.id.prompt(); }); function initiateGoogleAuth() { const $button $(#googleSignIn); $button.prop(disabled, true).text(Connecting to Google...); $.ajax({ url: api_cnxn +google/get-auth-url, type: POST, success: function(response) { if (response.status success && response.auth_url) { // Store the current URL to redirect back after authentication localStorage.setItem(auth_redirect, window.location.href); window.location.href response.auth_url; } else { throw new Error(Invalid response from server); } }, error: function(xhr) { $button.prop(disabled, false).text(Sign in with Google); Swal.fire({ icon: error, title: Error, text: Failed to initialize Google Sign-In. Please try again., }); } }); } // Callback function to be called from the popup window function handleGoogleCallback(googleUser) { const $button $(#googleSignIn); if ($button.length) { $button.prop(disabled, true).text(Processing...); } $.ajax({ url: api_cnxn +google/callback, type: POST, contentType: application/json, data: JSON.stringify({ credential: googleUser.credential }), success: function(response) { // Store the token in localStorage localStorage.setItem(access_token, response.access_token); localStorage.setItem(user_id, response.user.id); localStorage.setItem(user_email, response.user.email); localStorage.setItem(user_name, response.user.name); localStorage.setItem(user_picture, response.user.picture); localStorage.setItem(user_phone, response.user.phone); localStorage.setItem(joined, response.user.joined); // Close the login modal if it exists $(#login-modal).modal(hide); $(#login-modal).on(hidden.bs.modal, function() { $(#login_password).val(); $(#login_email).val(); }); // Get user data get_user_data(); // Show success message const Toast Swal.mixin({ toast: true, position: top-end, showConfirmButton: false, timer: 1500, timerProgressBar: true, didOpen: (toast) > { toast.onmouseenter Swal.stopTimer; toast.onmouseleave Swal.resumeTimer; } }); Toast.fire({ icon: success, title: Signed in successfully with Google }).then(function() { // Redirect to the stored URL or reload const redirectUrl localStorage.getItem(auth_redirect); if (redirectUrl) { localStorage.removeItem(auth_redirect); window.location.href redirectUrl; } else { location.reload(); } }); }, error: function(xhr) { let errorMessage Failed to connect to the server. Please try again later.; if (xhr.status 401) { errorMessage Google authentication failed. Please try again.; } else if (xhr.responseJSON && xhr.responseJSON.message) { errorMessage xhr.responseJSON.message; } Swal.fire({ icon: error, title: Login Failed, text: errorMessage, }); } }); }// *****************************************************************google sign in end*********************************************************************************************// // Initialize the departure date picker $(#departureDate).datetimepicker({ format: DD-MM-YYYY, minDate: moment().startOf(day), // This sets minimum date to start of current day maxDate: moment().add(1, years), useCurrent: false, keepOpen: false, debug: true, // Add this temporarily to debug icons: { time: far fa-clock, date: far fa-calendar, up: fas fa-chevron-up, down: fas fa-chevron-down, previous: fas fa-chevron-left, next: fas fa-chevron-right, today: fas fa-calendar-check, clear: far fa-trash-alt, close: fas fa-times } }).on(dp.show, function() { // Reapply minDate when picker opens $(this).data(DateTimePicker).minDate(moment().startOf(day)); }); // For tour dates $(.tour-date).each(function() { const $this $(this); const minDate $this.data(min-date) ? moment($this.data(min-date)) : moment().startOf(day); $this.datetimepicker({ format: DD-MM-YYYY, minDate: minDate, useCurrent: false, keepOpen: false, debug: true, // Add this temporarily to debug icons: { time: far fa-clock, date: far fa-calendar, up: fas fa-chevron-up, down: fas fa-chevron-down, previous: fas fa-chevron-left, next: fas fa-chevron-right, today: fas fa-calendar-check, clear: far fa-trash-alt, close: fas fa-times } }).on(dp.show, function() { // Reapply minDate when picker opens $(this).data(DateTimePicker).minDate(minDate); }); });/script>script >$(document).on(keyup, .search_airport, function() { let keyword $(this).val(); let airport $(this).attr(id); var stated ; if (keyword.length > 3) { $.ajax({ url: api_cnxn + airports/search/+keyword, method: GET, dataType: json, data: { keyword: keyword }, success: function(response) { let data response.data; let airportList $(# + airport+_airport_list); airportList.empty(); data.forEach(function(value) { if(airport origin) { stated departure; } else { stated arrival; } let airport_result ` li classborder-bottom> a classdropdown-item port hrefjavascript:void(0); data-id${airport} data-city_name${value.city_name} data-airport${value.name} data-iata_code${value.iata_code}> div classrow> div classcol-md-2> i classfas fa-plane-${stated} text-dark>/i> /div> div classcol-md-8> h6 classfs-16 fw-medium>${value.city_name}/h6> p>${value.name}/p> /div> div classcol-md-2 fw-bold > ${value.iata_code} /div> /div> /a> /li> `; airportList.append(airport_result); }) } }); } });$(document).on(click, .port, function() { let id $(this).data(id); let city_name $(this).data(city_name); let airport $(this).data(airport); let iata_code $(this).data(iata_code); $(#+id+_city).val(city_name); $(#+id+_airport).text(airport); $(#+id+_iata_code).val(iata_code); $(#+id+_dropdown).toggleClass(show);});// Function to load all trending datafunction loadTrendingData() { // Load data for each category // loadHotels(); loadActivities(); loadCruise(); loadHolidays();}$(document).ready(function() { load_destinations(); loadTrendingData(); loadFAQs(); loadBlogs(); get_user_data(); $(.sponsor-slider).owlCarousel({ loop: true, margin: 10, nav: false, dots: true, autoplay: true, autoplayTimeout: 4000, autoplayHoverPause: true, items: 1, responsive: { 0: { items: 1 }, 768: { items: 1 }, 1200: { items: 1 } } }); // Handle tab changes $(adata-bs-toggletab).on(shown.bs.tab, function (e) { const target $(e.target).attr(data-bs-target); $(target + .owl-carousel).trigger(refresh.owl.carousel); }); $(#departureDate).on(dp.change, function (e) { $(#returnDate).data(DateTimePicker).minDate(e.date); }) $(#returnDate).on(dp.change, function (e) { const selectedDate e.date; const departureDate $(#departureDate).data(DateTimePicker).date(); if (selectedDate && departureDate && selectedDate.isBefore(departureDate)) { // alert(Return date must be greater than the departure date.); $(this).data(DateTimePicker).date(departureDate); } }); // Optional: Update the day name below the input when the date changes $(.tour-date).on(dp.change, function (e) { const selectedDate e.date; // Get the selected date if (selectedDate) { const dayName selectedDate.format(dddd); // Get the day name $(this).siblings(p).text(dayName); // Update the day name display } }); // Optional: Set the initial day name based on the default value const initialDate moment($(#departureDate).val(), DD-MM-YYYY); if (initialDate.isValid()) { $(#departureDate).siblings(p).text(initialDate.format(dddd)); }});$(document).on(click, .city, function() { let id $(this).data(id); let city_name $(this).data(city_name); let country_name $(this).data(country_name); $(.city_name).val(city_name); $(.country_name).text(country_name); $(.city_id).val(id); $(.city_dropdown).toggleClass(show); });/script>/html>
View on OTX
|
View on ThreatMiner
Please enable JavaScript to view the
comments powered by Disqus.
Data with thanks to
AlienVault OTX
,
VirusTotal
,
Malwr
and
others
. [
Sitemap
]