a:6:{i:0;s:11738:"				<div class="h1"><h1>Magical  Dubai Package</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.mytravoholidays.com/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.mytravoholidays.com/tour-packages.htm" title="Tour Packages">Tour Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>Magical  Dubai Package</p>
				<br />
				
								
						<script language="javascript"> 
							function topDestinationToggle(showHideDiv, switchTextDiv) {
							var ele = document.getElementById(showHideDiv);
							var text = document.getElementById(switchTextDiv);
							if(ele.style.display == "block") {
								ele.style.display = "none";
							  text.innerHTML = "View More &#9660;";
							}
							else {
							  ele.style.display = "block";
							  text.innerHTML = "View Less &#9650;";
							}
							}
		                </script>
											<script type="text/javascript">			
					(function($){	
					  $(function(){
						$('[id^=detailslider]').each(function(){
							$(this).DG_Slider({
								auto: true, mode:'fade', pager:true, pagerType:'short',controls:true
							});
						})
				
						$('a[rel=gall]').fancybox()
					  });	
					}(jQuery))
					</script>
					
					<br />
					<div class="data">
					<table class="w100 formTable bdr0 imgWidth">
					<tr>
					<td class="p10px">
					<table class="w100 packageForm">
											<tr>
						<td class="b p5px w125px vat">Duration </td>
						<td class="p5px pl0px vat">
						5 Nights / 6 Days 
						</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Destination Covered </td>
						<td class="p5px pl0px vat">Dubai</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Price (Starting From) </td>
						<td class="p5px pl0px vat"><span class="dif">On Request</span></td>
						</tr>
												<tr>
						<td></td>
						<td>
						<p>
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.mytravoholidays.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Magical  Dubai Package - Tour Package"/>
						<input type="hidden" name="allocate_type" value="tour"/>
						<a href="#" onclick="document.getElementById('frmpackagedetail').submit();" class="button p7px pl12px pr12px c5px b large dib mt10px">Book Your Tour</a>
						<input type="hidden" name="pkg_slno" value="116894"/>
						</form>
						</p>
						</td>
						</tr>
											</table>
					</td>
											<td class="p10px vat imgWidth150 w150px lh0">
						<div class="demo-wrap">
						<ul class="lsn m0px p0px" >
															<li class="bdr bw3px c5px p1px"><div class="dt"><p class="ac vam dtc w150px h150px"><a rel="gall" data-fancybox="showZoomImage" href="https://ttw.wlimg.com/package-images/photo-big/dir_10/286827/190066.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_10/286827/190066.jpg"  width="150" height="150"    alt="Magical  Dubai Package" title="Magical  Dubai Package" /></a></p></div></li>
															</ul>
						</div>
						</td>
											</tr>
					</table>
					</div>
					<br />
					
											<div class="headHr">
			            <p class="p7px b pl10px xlarge">Tour Itinerary</p>
			            </div>
			            
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 1:</b> Arrive Dubai
								</p>
								<p class="aj">Magical Dubai tour starts the moment you arrive in the Dubai International Airport. A local representative shall greet you with warm welcome. Get assistance for transfer and escort to one of our listed hotels in Dubai. Check-in at the hotel. Enjoy the lavish comforts of your room and hotel. Day is free for leisure. Get ready to be dazzled by the exciting metropolis. The charm of Dubai shall definitely take your breath away. Overnight stay in Dubai.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 2:</b> Dubai – Yas Water Park & Ferrari World Amusement Park
								</p>
								<p class="aj">Start you day with a delicious breakfast. Next, proceed for Yas Water Park and enjoy unlimited water rides. The thrilling water park is a fun getaway. Later in the afternoon visit the Ferrari World Amusement Park. The Park hosts more than 20 unique rides and attraction for visitors of all ages and interests. Every visitor in the park will find their own pleasure. Get spellbound by the speed thrill rides, the world's most advanced simulators and family friendly attractions. Apart from the spectacular delights, there is a wide variety to Italian restaurants, unique shopping experience and entertainment. After having a dose of wonderful fun return to hotel for overnight stay.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 3:</b> Dubai - Aquaventure Water Park & Visit to Lost Chambers Aquarium
								</p>
								<p class="aj">Start the morning with a hearty breakfast. After your meal, proceed for Aquaventure Dubai. This enjoyment park is set in 42 acres teeming with fun rides. The thrilling choices in the amusement part include Master Blasters, speed slide, rivers, rapids, Splashes children, play area, lush tropical landscapes and a private beach. The experience is quite wonderful and some of the most fun memories in Dubai. Next you proceed to a place that is surely hard to believe. Imagine exploring the enigmatic ruins of Atlantis, lost in time, buried deep beneath the sea. Created on the theme of the mythical Atlantis, the Lost Chambers Aquarium looks up to see 65000 marine animals swimming in calm cerulean waters. Visitors can enjoy the experience of their own Atlantean adventure. The exquisite inhabitants of the underwater world, the maze of underwater halls and tunnels are a rare feat only available in Dubai. Return for overnight stay in the hotel.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 4:</b> Dubai – Wild Wadi Park & Burj Khalifa Tour
								</p>
								<p class="aj">Start the day with a scrumptious meal at the hotel. Following breakfast, avail pick up from your hotel and proceed to the Wild Wadi Water Park. The exception amusement park offers an unforgettable adventure. Experience the delight of being the most advanced water theme park. Located between Burj Al Arab and Jumeirah Beach Hotel, get you mind blown with spectacular range of adventures. Experience the Tunnel of Doom, Tantrum Alley, Burj Surj, Wipe-out and Riptide Flow riders, Breakers' Bay, Juha Journey and others. There are thrilling rides that takes you twisting and turning through underground tunnels. Do not miss on the exhilaration of weightlessness on the 'Jumeirah Sceirah'. The speed slide hurtles down an incredible 100 feet into valley below. Later in the evening visit the majestic and unbelievable achievement of Dubai, the Burj Khalifa. The World tallest tower is incredible. The views from top of the tower is absolutely awe-inspiring. Visit the top of Burj Khalifa and walk into the sky. Experience first-hand this modern architectural and engineering marvel. The surroundings as far as you can see seem puny and inconsequential from such a lofty height. After a memorable day, return to hotel for overnight stay.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 5:</b> Dubai – Desert Safari Tour
								</p>
								<p class="aj">Morning is at your leisure. Chose to relax, enjoy hotel facilities or to pursue independent activities. Relish the mouthwatering breakfast or avail the luxurious amenities of your hotel.<br />
<br />
Later in the day, avail the pick-up from your hotel to enjoy a safari in the desert. The desert safari tour includes a BBQ dinner & Belly Dance program in evening at end of the tour. The desert safari tour begins with an unforgettable roller coaster drive in the desert gliding over the magnificent Sand Dunes. Amid all the fun and action, do not forget to stop for pictures.<br />
<br />
Next you head towards Ali's camel farm for a short visit. After which proceed towards the desert camp with a stop en route to experience a memorable desert sunset. A traditional welcome awaits guests. Savor the exquisite palate of Arabic coffee and tea and dates. The traditional charcoal oven is lit in preparation for the delicious evening dinner. Relax in the Arabic tents furnished with carpets and pillows for your comfort. The campfire is also a good place to create wonderful memories of Dubai. Get a henna tattoo or experience an unforgettable camel ride. The highlight of the evening includes the Tannoura dance show and an exotic belly performance to the rhythmic beat of Arabia. The desert safari evening ends with a delicious three course barbeque meal with a variety of meats and salads served beneath the starlit skies, accompanied by authentic Arabic music. Recover from the magical experience in the comfort of your room during your overnight stay.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 6:</b> Depart Dubai
								</p>
								<p class="aj">Today morning have a hearty breakfast. After this pack your bags and check-out. You will be transferred to Dubai International Airport for your flight back home. Return home with cherished memories of the breathtaking Dubai.</p>
								</td>
								</tr>
								</table>					
								</div>						<br />
												 <p class="headHr p7px b pl10px xlarge">Tour Detail</p>
			             <div class="data p15px aj">
										
						<p class="large b mb5px dif">Inclusions :</p>
						<ul>
															<li>Hotel</li>
															</ul>
						<br />
											
						<p class="large b mb5px dif">Terms &amp; Conditions :</p>* Some Advance Percentage of total booking amount 
* Airfare/Transport fare to be paid full at one time in advance.~^#^~* Upon cancellation, refund will be made after deducting the Retention Amount. 
* Retention Amount varies as per the number of days left before your package start date. ~^#^~												</div>
												
						<div class="ac mb10px">
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.mytravoholidays.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Magical  Dubai Package - Tour Package"/>
						<input type="hidden" name="allocate_type" value="tour"/>
						<a href="#" onclick="document.getElementById('frmpackagedetail').submit();" class="button p7px pl12px pr12px c5px b large dib mt10px">Book Your Tour</a>
						<input type="hidden" name="pkg_slno" value="116894"/>
						</form>
						</div>
						
						";i:1;s:61:"Book Magical  Dubai Package - 5 Nights / 6 Days Tour Packages";i:2;s:115:"book magical  dubai package - 5 nights / 6 days tour packages, forts and palaces tour packages, dubai tour packages";i:3;s:155:"My Travo Tours Solution offers Magical  Dubai Package - 5 Nights / 6 Days tour package, budget Forts and Palaces tour packages for Dubai at exciting price.";i:4;s:399:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Dubai"        
		                 },
		      "description": "",
		      "name": "Magical  Dubai Package",
		      "telephone": "+91-9717748667"
		    }
		    </script>
			";i:5;N;}