a:6:{i:0;s:14159:"				<div class="h1"><h1>Dubai Fixed Departure with Plan Journeys Tour</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.planjourneysindia.in/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.planjourneysindia.in/tour-packages.htm" title="Tour Packages">Tour Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>Dubai Fixed Departure with Plan Journeys Tour</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">Tour Code </td>
						<td class="p5px pl0px vat">Dubai Fixed Departur</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Duration </td>
						<td class="p5px pl0px vat">
						3 Nights / 4 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">
						INR 33000 Per Person						</td>
						</tr>
												<tr>
						<td class="b p5px dif w125px vat">Special Offer </td>
						<td class="p5px pl0px dif vat">Regular price of INR 36000 per person, book now to book @ INR 33000 per person.</td>
						</tr>
												<tr>
						<td></td>
						<td>
						<p>
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.planjourneysindia.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Dubai Fixed Departure with Plan Journeys Tour - 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="165421"/>
						</form>
						</p>
						</td>
						</tr>
											</table>
					</td>
											<td class="p10px vat imgWidth150 w150px lh0">
						<div class="demo-wrap">
						<ul class="lsn m0px p0px" id="detailslider1">
															<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/425396/251222.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_15/425396/251222.jpg"  width="150" height="74"    alt="Dubai Fixed departure from Plan Journeys" title="Dubai Fixed departure from Plan Journeys" /></a></p></div></li>
																		<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/425396/251223.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_15/425396/251223.jpg"  width="150" height="84"    alt="Dubai Fixed tour from Plan Journeys" title="Dubai Fixed tour from Plan Journeys" /></a></p></div></li>
																		<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/425396/251224.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_15/425396/251224.jpg"  height="150" width="84"   alt="Dubai group tour with Plan Journeys" title="Dubai group tour with Plan Journeys" /></a></p></div></li>
																		<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/425396/251225.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_15/425396/251225.jpg"  width="150" height="100"    alt="fixed departure to Dubai" title="fixed departure to Dubai" /></a></p></div></li>
																		<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/425396/251226.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_15/425396/251226.jpg"  width="150" height="150"    alt="Dubai Group tour" title="Dubai Group tour" /></a></p></div></li>
															</ul>
						</div>
						</td>
											</tr>
					</table>
					</div>
					<br />
					
					Fixed departure to Dubai at an amazing deal of INR 33000 per person, departing on 222nd November 2018 with tour escort from India. Our expertise in operating regular group tour to Dubai, will allow your family to relax during the trip and enjoy your Dubai holiday trip at the max.Regular price of INR 36000 per person, book now to book @ INR 33000 per person.Tourism Dirham charges..<br />
Meals which are not included in your itinerary..<br />
Optional tours..<br />
Personal expenses on the trip..14-1016-11<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> Welcome to Dubai, Evening Dhow Cruise with Live Entertainment & Dinner On Board
								</p>
								<p class="aj">Board your flight to UAE, from India. On arrival at the airport, Plan Journeys local representative/tour manager will assist you to proceed to the coach after the custom clearance and baggage collection. Board your coach and transfer to your hotel in Dubai, check in and relax. In the evening, we will take you witness the beauty of illuminated city of Dubai – on a dhow cruise. Enjoy a 2 hours cruise around the Dubai creek, with air conditioned lower deck and open air upper deck. You will be served with international buffet dinner with lovely music in the background. Later you will see the traditional Tanoura dance show on board, which is an amazing combination of lighting on the dress and balance of the professional dancer, during the performance. Later come back to your hotel.</p>					
									<p><b>Meals : </b> Dinner</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> Relax in the Morning, Desert Safari During the Day
								</p>
								<p class="aj">Today after breakfast, relax in your hotel or just stroll around your city centre hotel for some time before the pick-up time for Desert Safari in Dubai. Today, we will take you to the great deserts of Dubai to enjoy an adventurous day, starting from the famous dune bashing on a four wheel drive vehicle, followed by barbeque dinner in the desert camp and belly dance performance by an expert performer, you can also do the camel ride and henna painting during your visit here. More adventurous can do Quad biking tour as well ( by paying extra cost). After an exciting day, come back to your hotel in Dubai for an overnight stay.</p>					
									<p><b>Meals : </b> Breakfast & Dinner</p>
								</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 <? echo $p_class; ?>"><a rel="gall" data-fancybox="showZoomImage" href="https://ttw.wlimg.com/package-images/photo-big/dir_15/425396/251222.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_15/425396/251222.jpg"  width="150" height="74"    alt="Dubai Fixed departure from Plan Journeys" title="Dubai Fixed departure from Plan Journeys" /></a></p></div></li>
									</ul>
									</div>
									</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> Free Day in Dubai
								</p>
								<p class="aj">Breakfast in your hotel and relax. The day is free for the individual activities; you have the option to go for various tours available in the city. You can check out with our tour manager for things to do in Dubai for this day. Or the most recommended activity is to visit the capital city of Abu Dhabi with its wonderful theme park – Ferrari World and spend some quality time here by riding on some of the world’s best rides and watching some amazing live shows here. Later in the night, come back to the city of Dubai for an overnight stay in your hotel</p>					
									<p><b>Meals : </b> Breakfast</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> Departure Day with Extended Sightseeing Tour of Dubai
								</p>
								<p class="aj">Today after breakfast in your hotel, check out of your hotel and board your private coach for the sightseeing tour of Dubai. We will visit the famous Gold Souk, Meena Bazzar, followed by a photo stop at the picturesque tower of Burj Al Arab hotel and a panoramic ride to Palm Jumeriah, etc. later we will transfer you to the airport for your return flight to India, come back with happy memories of your trip and share your kind feedback with team Plan Journeys.</p>					
									<p><b>Meals : </b> Breakfast</p>
								</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 <? echo $p_class; ?>"><a rel="gall" data-fancybox="showZoomImage" href="https://ttw.wlimg.com/package-images/photo-big/dir_15/425396/251223.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_15/425396/251223.jpg"  width="150" height="84"    alt="Dubai Fixed tour from Plan Journeys" title="Dubai Fixed tour from Plan Journeys" /></a></p></div></li>
									</ul>
									</div>
									</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>3 Star Hotel</li>
																		<li>Flights</li>
																		<li>Meals</li>
																		<li>Sightseeing</li>
																		<li>Transport</li>
																		<li>Transfers</li>
																		<li>Airport Pickup-Drop</li>
																		<li>Private Guides</li>
																		<li>Bus Transfer</li>
																		<li>Stay Included</li>
																		<li>Veg & Non Veg Meals</li>
																		<li>Pickup-Drop</li>
																<li>Return airfare to UAE – Ex India..</li><li>
Airport taxes..</li><li>
03 nights accommodation in city centre hotel in Dubai..</li><li>
Breakfast in hotel..</li><li>
Desert Safari with Dune bashing, live entertainment and barbeque dinner..</li><li>
Dhow cruise with dinner on board with live entertainment..</li><li>
Extended city tour of Dubai with more opportunity to shop in last minute..</li><li>
UAE Visa charges..</li><li>
Dubai Vat..</li>
													</ul>
						<br />
												<p class="large b mb5px dif">Exclusions :</p> <ul><li>Tourism Dirham charges..</li><li>
Meals which are not included in your itinerary..</li><li>
Optional tours..</li><li>
Personal expenses on the trip..</li></ul><br />
												<p class="large b mb5px dif">Specific Departure Dates :</p>22nd Nov - 25nd Nov, 2018<br />
												<p class="large b mb5px dif">Departure Cities with rates :</p>Ex Delhi
Ex Mumbai<br /><br />
											
						<p class="large b mb5px dif">Terms &amp; Conditions :</p><p>INR 10000/- or USD 250 in advance and balance in next 15 days.~^#^~~^#^~<ul class="lipoint">
	<li>Check out the availablity of seats on the departures..</li>
	<li>Rate of Exchange taken 1 USD = INR 70, Subject to change. Current ROE will be taken on the day of making final payments.</li>
	<li>Check the dates of operation for the next group to Dubai..</li>
</ul>												</div>
												
						<div class="ac mb10px">
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.planjourneysindia.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Dubai Fixed Departure with Plan Journeys Tour - 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="165421"/>
						</form>
						</div>
						
						";i:1;s:84:"Book Dubai Fixed Departure with Plan Journeys Tour - 3 Nights / 4 Days Tour Packages";i:2;s:138:"book dubai fixed departure with plan journeys tour - 3 nights / 4 days tour packages, beach and islands tour packages, dubai tour packages";i:3;s:185:"Plan Journeys Private Limited. offers Dubai Fixed Departure with Plan Journeys Tour - 3 Nights / 4 Days tour package, budget Beach and Islands tour packages for Dubai at exciting price.";i:4;s:915:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Dubai"        
		                 },
		      "description": "Fixed departure to Dubai at an amazing deal of INR 33000 per person, departing on 222nd November 2018 with tour escort from India. Our expertise in operating regular group tour to Dubai, will allow your family to relax during the trip and enjoy your Dubai holiday trip at the max.Regular price of INR 36000 per person, book now to book @ INR 33000 per person.Tourism Dirham charges..
Meals which are not included in your itinerary..
Optional tours..
Personal expenses on the trip..14-1016-11",
		      "name": "Dubai Fixed Departure with Plan Journeys Tour",
		      "telephone": "91-9899892292"
		    }
		    </script>
			";i:5;N;}