a:6:{i:0;s:12601:"				<div class="h1"><h1>Palace On Wheel Tour</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.avashshergilltravel.in/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.avashshergilltravel.in/tour-packages.htm" title="Tour Packages">Tour Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>Palace On Wheel 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">Duration </td>
						<td class="p5px pl0px vat">
						7 Nights / 8 Days 
						</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Destination Covered </td>
						<td class="p5px pl0px vat">New Delhi, Bharatpur, Chittorgarh, Jaipur, Jaisalmer, Jodhpur, Sawai Madhopur, Udaipur, Agra</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.avashshergilltravel.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Palace On Wheel 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="41250"/>
						</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_12/357911/82447.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_12/357911/82447.jpg"  width="150" height="150"    alt="Palace On Wheel Tour" title="Palace On Wheel Tour" /></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> Report at New Delhi Safdarjung Railway Station: 1600 Hrs 
								</p>
								<p class="aj">Hearty welcome at railway station before boarding the Palace-on-Wheels for a week long tour of Rajasthan. The details of the journey will be available in the cabin for your reference.<br />
Train departs at 1800 hrs for Jaipur.<br />
Dinner and overnight onboard train.</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> Jaipur: Arrive 0200 Hrs - Departure 1930 Hrs 
								</p>
								<p class="aj">The first stop is at Jaipur, known as Pink City, most well planned cities of the world of its own time. The capital and largest city of Rajasthan - Jaipur was founded by Maharaja Sawai Jai Singh II, in 1727 A.D. After breakfast on board, you will be taken to Escorted tour to visit Amber Fort, Hawa Mahal (Palace of Winds), landmark of Jaipur. Lunch will be at 5* hotel. Also visit to City Palace, home of the erstwhile Royal family, Jantar Mantar (Observatory)-one of the five astronomical observatories built by Maharaja Jai Singh. Leisure time for shopping at Rajasthali – the only Rajasthan Govt. emporium selling handicrafts on fixed price. Ontime board the train to proceed further.<br />
Dinner and overnight onboard train.</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> Jaisalmer: Arrive 0815 Hrs - Departure 2300 Hrs 
								</p>
								<p class="aj">The second stop is at Jaisalmer which lies in the Thar Desert. Jaisalmer was founded by Rawal Jaisal in 1156 A.D. After breakfast, visit to the yellow city – due to the yellow sandstone fort of Fort Jaisal. Jaisalmer also known as Golden City, which has the thrilling sand dunes and adventurous camel safaris. The highlights of this city of Thar desert, Jaisal Fort, beautifully latticed Havelis with their grand facades giving a joy to the sight. The Nathmalji-ki-Haveli, Patwon-ki-haveli and Salim Singh-ki-Haveli are skills of the stone carver. Undoubtedly the city famous for Thar Desert, cobbled streets, ancient Jain Temples, havelis gives you good memories to take back home. Shop at Rajasthan Govt. emporium. Lunch on board train. In the late evening, Camel ride in the sand dunes to view the sunset, dinner and cultural program at hotel.<br />
Overnight onboard train.</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> Jodhpur: Arrive 0700 Hrs - Departure 1530 Hrs 
								</p>
								<p class="aj">Arrive Jodhpur, second largest city of Rajasthan, founded by Rao Jodha of the Rathore clan in 1459 A.D.The city with seven gates, The massive and well maintained fort of Mehrangarh is the main attraction with grand palaces of Sheesh Mahal, Moti Mahal, Phool Mahal, Sielh Khana and Daulat Khana. Next to the fort is Jaswant Thada-a royal cenotaph made up of white marble. The Umaid Bhawan Palace hotel with part of it used as residence and houses museum. It is one of the biggest private residence of an individual. Lunch at hotel. Evening time, shopping for the handicrafted articles.<br />
Dinner and overnight onboard train.</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> Sawai Madhopur – Chittaurgarh: Arrive 0400 Hrs - Departure 1030 Hrs 
								</p>
								<p class="aj">Next stop is with a different feel of the wilderness as the Palace on Wheels arrives Sawai Madhopur, founded by Maharaja Sawai Madho Singh I. The early visit to Ranthambore National Park where you will enjoy the jungle safari. Ranthambhore is one of the largest and widely visited National Parks in North India. It is a Wildlife Sanctuary has gained protection of “Project Tiger”. It is famous for Tiger spotting, also home to 300 species of birds.<br />
<br />
After the game drive return back to the train and proceed to Chittaurgarh. Lunch onboard train.<br />
<br />
Arrive 1600 Hrs<br />
Visit the city of valor Chittaurgarh. During 7th and 16th century it was the capital of Mewar. The city gives the memories of the heroism and sacrifice of Rajput men and women in those times. It witnessed the ravages of war. The city has retained its charm inspite of many attacks that it faced in the past. Dinner and overnight onboard train.</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> Chittorgarh - Udaipur: Departure 0530 Hrs Arrive 0730 Hrs 
								</p>
								<p class="aj">Arrive Udaipur, the lake city founded by Maharana Udai Singh of Mewar, in 1559 A.D. After breakfast onboard train, sightseeing tour of the city. Boat ride at Lake Pichola. You can see the Lake Palace and the Jag Mandir. Lunch at hotel. In the evening visit to Crystal gallery.<br />
Dinner and overnight onboard train.</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 7:</b> Bharaptur - Agra: Arrive 0630 Hrs - Departure 1145 Hrs. 
								</p>
								<p class="aj">The Palace on Wheels today arrives at Bharatpur. Bharatpur was once a fortified town of Mahara Suraj Mal, now ornithologist’s paradise. After breakfast on board train, visit to the famous bird sanctuary – Keoladeo Ghana National Park. This National Park is famous for the Siberian cranes, migratory water fowl and the varied avian species. Enjoy the cycle rickshaw ride in the park with a naturalist.<br />
<br />
Arrive 1430 Hrs - Departure 2300 Hrs.<br />
Depart for Agra, the city of Mughal architecture. Visit Fatehpur Sikri-the abandoned Mughal city built in red sandstone by Emperor Akbar dedicated to Sufi Saint, Shaikh Salim Chisti whose blessings the Emperor seeked for a son.<br />
<br />
Lunch at hotel. Visit to Agra Fort also called Red Fort and then the world famous Taj Mahal, one of the seven wonders of the world - wonder in white marble. It was built by Emperor Shah Jahan in memory of his queen Mumtaz Mahal. Agra is known for leather goods, jewelry and marble inlay work. Dinner and overnight onboard train.</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 8:</b> Delhi: Arrive 0600 Hrs. 
								</p>
								<p class="aj">The most memorable journey today terminates at Delhi – the capital of India and a city with people from all over the country. Breakfast on board train. Depart for your onward destination with the memories of Royal treatment on Palace on Wheels.</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.avashshergilltravel.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Palace On Wheel 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="41250"/>
						</form>
						</div>
						
						";i:1;s:59:"Book Palace On Wheel Tour - 7 Nights / 8 Days Tour Packages";i:2;s:191:"book palace on wheel tour - 7 nights / 8 days tour packages, heritage tour packages, new delhi, bharatpur, chittorgarh, jaipur, jaisalmer, jodhpur, sawai madhopur, udaipur, agra tour packages";i:3;s:229:"Avash Shergill Travel offers Palace On Wheel Tour - 7 Nights / 8 Days tour package, budget Heritage tour packages for New Delhi, Bharatpur, Chittorgarh, Jaipur, Jaisalmer, Jodhpur, Sawai Madhopur, Udaipur, Agra at exciting price.";i:4;s:484:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "New Delhi, Bharatpur, Chittorgarh, Jaipur, Jaisalmer, Jodhpur, Sawai Madhopur, Udaipur, Agra"        
		                 },
		      "description": "",
		      "name": "Palace On Wheel Tour",
		      "telephone": "+91-8699559635"
		    }
		    </script>
			";i:5;N;}