a:6:{i:0;s:10885:"				<div class="h1"><h1>Dazzling Dubai 4N/5D Package</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.emplanetourandtravels.co.in/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.emplanetourandtravels.co.in/tour-packages.htm" title="Tour Packages">Tour Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>Dazzling Dubai 4N/5D 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">
						4 Nights / 5 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.emplanetourandtravels.co.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Dazzling Dubai 4N/5D 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="120519"/>
						</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_17/508950/195189.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_17/508950/195189.jpg"  width="150" height="150"    alt="Dazzling Dubai 4N/5D Package" title="Dazzling Dubai 4N/5D 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">Welcome to Dubai, one of the most unique, and vibrant destinations in the world! In a single day, you can experience everything from rugged mountains and awe-inspiring sand dunes to sandy beaches and lush green parks, from dusty villages to luxurious residential districts and from ancient houses with wind towers to ultra-modern shopping malls.<br />
<br />
On arrival in Dubai, you will be met and transferred to your hotel. In the afternoon you will do the Desert Safari which is full of fun, adventure and exciting where you experience the thrill of a roller coaster ride on the sand dunes. We stop on the highest sand dune to view the beautiful sunset for some breath-taking photographs and refresh your selves with mineral water. We then continue our journey to our Bedouin Campsite located in the heart of the Desert, where soft drink, water, tea or coffee is available for you to choose from. Camel rides waits for you. Trial of local smoking called Shisha or Hubbly Bubbly on different flavours. While you relax and recline in the tents or tables with carpet and pillows a delicious BBQ is being prepared under the starlit sky. Adding to the atmosphere of the night, an enchanting belly dancer shows a fascinating dance to a rhythm of an Arabic music, thereafter BBQ buffet dinner will be served. 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
								</p>
								<p class="aj">Today post breakfast you will be taken on a tour to visit the Tropical Rainforest - Green Planet. Discover The Wonders of The Tropical Forest. The Green Planet is a bio-dome inviting visitors to explore our planet’s fascinating flora and fauna through an immersive expedition into the tropics. Designed as an enclosed ecosystem, The Green Planet recreates the enchanting world of the tropical forest with over 3,000 plants and animals and the world’s largest indoor man-made and life-sustaining tree. The educational and recreational facility is set to raise awareness for the delicate balance of nature and the preciousness of one of our world’s oldest living ecosystems, making it the ideal educational destination for the entire family.<br />
<br />
In the afternoon get ready to explore the city as you will be taken on a Day & Night City tour of Dubai. Highlights of the tour being Sheikh’s Palace, Palm Jumeirah / Atlantis Hotel, Kite Beach / Burj Al Arab Photo stop, One hour cruising in Marina, Dubai Museum (entrance fee included), Free time for shopping at Meena Bazaar (45 mins – 1 hr. approx.), Dinner at Indian Restaurant in Meena Bazaar. 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 3:</b> Dubai
								</p>
								<p class="aj">Today enjoy Ski Dubai located in the Mall of Emirates Discover which is the first & ultimate indoor ski resort in the Middle East! With an amazing mountain-themed wintery setting, enjoy skiing, snowboarding, tobogganing, or just playing in the snow. Plus you can now meet and play with Ski Dubai's newest residents; the Snow Penguins! Join us by rolling down in the Giant Ball run, jumping a 10ft. ramp; turning down the tube slides, sightseeing in the chairlift, or just relaxing over a hot chocolate at minus 4 degrees. Enjoy a voucher of fabulously fresh Italian gelato of highest quality at MOE. 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 4:</b> Dubai
								</p>
								<p class="aj">Today enjoy the newest attraction of Dubai - IMG Worlds of Adventure. IMG Worlds of Adventure is Dubai’s first mega themed entertainment destination promising visitors from around the world the excitement of four epic adventure zones in one location. Two of the four zones represent renowned global brands Cartoon Network and MARVEL, while IMG Boulevard and the Lost Valley – Dinosaur Adventure zones are original concepts created by the IMG Group. IMG Worlds of Adventure is the largest temperature controlled indoor themed entertainment destination in the world, covering an area in excess of 1.5 million square feet. With the capacity to welcome more than 20,000 guests a day, the destination is featuring a unique array of adrenaline-pumping roller coasters, thrill rides, and spine-tingling attractions based on popular Cartoon Network characters, iconic MARVEL Super Heroes and hair-raising dinosaurs. Additionally, the destination is the home to a number of world-firsts, a variety of themed retail stores, exclusive dining venues, and a 12-screen state-of-the-art cinema. 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 5:</b> Departure From Dubai to India
								</p>
								<p class="aj">Wake up to a lazy breakfast this morning. Today enjoy the various amenities available at your hotel or catch up with some last minute shopping. Later it’s time for you to be transferred to the Airport in order for you to catch your flight back home or you could take any of the truly exciting optional add-ons that we have to offer you!!</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>
																		<li>Sightseeing</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.emplanetourandtravels.co.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Dazzling Dubai 4N/5D 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="120519"/>
						</form>
						</div>
						
						";i:1;s:67:"Book Dazzling Dubai 4N/5D Package - 4 Nights / 5 Days Tour Packages";i:2;s:121:"book dazzling dubai 4n/5d package - 4 nights / 5 days tour packages, forts and palaces tour packages, dubai tour packages";i:3;s:163:"Emplane Tours and Travels offers Dazzling Dubai 4N/5D Package - 4 Nights / 5 Days tour package, budget Forts and Palaces tour packages for Dubai at exciting price.";i:4;s:405:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Dubai"        
		                 },
		      "description": "",
		      "name": "Dazzling Dubai 4N/5D Package",
		      "telephone": "+91-8005957779"
		    }
		    </script>
			";i:5;N;}