a:6:{i:0;s:12046:"				<div class="h1"><h1>Majestic Dubai Package</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.decenttravelenterprises.com/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.decenttravelenterprises.com/holiday-packages.htm" title="Holiday Packages">Holiday Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>Majestic 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, Abu Dhabi</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.decenttravelenterprises.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Majestic 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="106728"/>
						</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_16/469503/176955.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_16/469503/176955.jpg"  width="150" height="150"    alt="Majestic Dubai Package" title="Majestic 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> Arrival in Dubai - Abu Dhabi
								</p>
								<p class="aj">As you will arrive in Dubai, you will be received by our tour representative and further escorted to the city of Abu Dhabi. Upon reaching Abu Dhabi, guests would be transferred to one of our listed hotels. Relax in your cozy rooms as the rest of the day is at leisure. If you wish to explore the nearby surroundings and market, make sure you do that in the evening.<br />
<br />
Overnight in Abu Dhabi.</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> Abu Dhabi- City Tour and Ferrari World
								</p>
								<p class="aj">Right after the morning breakfast, guests would be embarked on a city tour of Abu Dhabi. This will include visit to the Grand Mosque. Rightfully named as the Sheikh Zayed Grand Mosque, the spectacular site is considered to be the most sacred in the country. Post this visit, you would be heading for a tour of the Ferrari World.<br />
<br />
Claimed to be world's largest Indoor theme park, the Ferrai world is located on the Yas Island in Abu Dhabi. The theme park is renowned for its unique rides that count to more than 20. From thrilling speed rides, stimulating rides to family friendly attractions, the indoor park suits tourists of all ages and tastes. Moreover, the theme park is also packed with a variety of Italian restaurants, international retail shops and entertainment joints.<br />
<br />
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> Abu Dhabi- Dubai- Dhow Cruise
								</p>
								<p class="aj">Post breakfast, you would be transferred from Abu Dhabi to a hotel in Dubai. Rest of the day is to be spent at leisure, while the evenings are meant for a Dhow cruise ride along the beautiful Dubai Creek. As you would be gently cruising on the traditional wooden Dhow; wining and dining, spectacular views along the creek would be bound to pass by, making it a magical experience.<br />
<br />
The wooden Dhow would be cruising along the magnificently lit attractions of the city which include places like the National Bank of Dubai and the Chamber of Commerce Building. Guests would be served a sumptuous international buffet dinner. Post this cruise ride, return back to the hotel.<br />
<br />
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- City tour- Desert Safari tour
								</p>
								<p class="aj">After being done with the morning breakfast, guests would be picked up by our tour representative for a half day city tour of Dubai. Now it is your chance to discover the traditional side of modern Dubai. The tour will start with the visit to Palm Jumeirah, which is also famed as the eighth wonder of the world. While on your drive, make a halt for a quick photo session at the Atlantis hotel. Post that, continue on your course to the mosque. Built in the year 1979 in the style of Fatimi mosques of Egypt, the Palm Jumeirah is amongst the prominent structures of the city. As you would be done with the visit to the mosque, proceed towards the famous Sheikh Zayed Road to admire the tallest building in the world; Burj Khalifa tower from a long distance.<br />
<br />
Drive to the old parts of the city will pass through majestic palaces of the ruling family of Dubai. Next on the journey would be the visit to Al Fahidi fort and Dubai Museum. Al Fahidi fort is a prominent historic structure that is highly reminiscent of Dubai's illustrious past. Next in the itinerary would be the renowned gold and spice souk. Following it would be the visit to the souvenir shop. Here you can buy a lot of antiques, souvenirs and art & craft items. The city tour of Dubai will end with the final stoppage at the Burj Al Arab hotel.<br />
<br />
In the second half of the day, guests would be picked up to enjoy a desert safari that includes a BBQ dinner and an Arabic Belly Dance program for the evening. You would be starting first with a thumping ride in the desert right over the sand dunes. Amidst this roller coaster ride, you can stop for clicking pictures. Post this, you would be moving for a short visit to Ali's Camel Farm. Later on, you would be arriving at the pre-booked desert camp. Do catch the sight of the beautiful desert sunset. Guests would be given a traditional welcome with Arabic tea, coffee and dates, as they will make their arrival at the desert camp. Feel free to relax in the specially furnished Arabic tents while the traditional oven is lit in preparation of the dinner. You can even get a henna tattoo done or simply embark on a camel ride as the arrangements of the evening dance show and performance get fully done.<br />
<br />
To make it an unforgettable evening, the highlights will include a Tannoura dance show and a belly dance performance to the beats and rhythm of Arabia. On the other hand, the evening cuisines will comprise a sumptuous three course barbeque meal teamed up with a variety of salad and meat. Post dinner, you would be driven back to the city hotel for an 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- Snow Park Ski Dubai
								</p>
								<p class="aj">Post breakfast, guests would be leaving for skiing at the world's largest indoor snow park known as Ski Dubai. The park is built over a sprawling area of 3000 sq meters. Fully covered with snow, the park offers an ultimate family fun time. Get in your snow boots and enjoy the Tobogganing hills, the Twin Track Bobsled runs and the snow cavern. The snow park also offers a Giant Ball ride, for that you have to go to the top of the upgrade station. This point also offers a perfect bird's eye view of the whole snow park. Post all the fun, return to the comforts of your hotel.<br />
<br />
Overnight 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 6:</b> Depart Dubai
								</p>
								<p class="aj">This brings the end of our amazing Dubai tour. Enjoy your breakfast at the hotel after which you would be transferred to the Dubai International Airport for your onward journey back home. The tour ends here.</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.decenttravelenterprises.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Majestic 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="106728"/>
						</form>
						</div>
						
						";i:1;s:61:"Book Majestic Dubai Package - 5 Nights / 6 Days Tour Packages";i:2;s:115:"book majestic dubai package - 5 nights / 6 days tour packages, valley tour packages, dubai, abu dhabi tour packages";i:3;s:172:"Book Majestic Dubai Package - 5 Nights / 6 Days tour packages from Decent Travel Enterprises - Get attractive 5 Nights / 6 Days Valley  tour packages for  Dubai, Abu Dhabi.";i:4;s:410:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Dubai, Abu Dhabi"        
		                 },
		      "description": "",
		      "name": "Majestic Dubai Package",
		      "telephone": "+91-9494675564"
		    }
		    </script>
			";i:5;N;}