a:6:{i:0;s:12023:"				<div class="h1"><h1>Majestic Dubai Package</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.bluedolphintravels.co.in/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.bluedolphintravels.co.in/tour-packages.htm" title="Tour Packages">Tour 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.bluedolphintravels.co.in/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="94454"/>
						</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_15/428110/161121.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_15/428110/161121.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.bluedolphintravels.co.in/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="94454"/>
						</form>
						</div>
						
						";i:1;s:61:"Book Majestic Dubai Package - 5 Nights / 6 Days Tour Packages";i:2;s:126:"book majestic dubai package - 5 nights / 6 days tour packages, forts and palaces tour packages, dubai, abu dhabi tour packages";i:3;s:163:"Blue Dolphin Travels offers Majestic Dubai Package - 5 Nights / 6 Days tour package, budget Forts and Palaces tour packages for Dubai, Abu Dhabi at exciting price.";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-9558888723"
		    }
		    </script>
			";i:5;N;}