a:6:{i:0;s:13093:"				<div class="h1"><h1>Wonders Of Rajasthan 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>Wonders Of Rajasthan 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">
						6 Nights / 7 Days 
						</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Destination Covered </td>
						<td class="p5px pl0px vat">Jaipur, Jaisalmer, Jodhpur</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="Wonders Of Rajasthan 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="49580"/>
						</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/96876.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_12/357911/96876.jpg"  width="150" height="150"    alt="Wonders Of Rajasthan Tour." title="Wonders Of Rajasthan 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> Jaipur Airport / Railway Station - Hotel
								</p>
								<p class="aj">Meet & Greet on arrival at Jaipur Railway Station / Airport & transfer to hotel. Check-in to hotel. In the evening you can take an optional tour to visit Laxminarayan Temple (Birla Mandir) & Chokhi Dhani – An Ethnic Village Resort. Back to hotel. Overnight stay at Jaipur.<br />
<br />
Explore Jaipur<br />
<br />
<br />
Jaipur, India<br />
A city, which is moving with the fast developing world still has managed to hold its glorious past also known as the Pink City, was founded in 1727 AD by one of... more<br />
Top things to do<br />
Restaurants<br />
Hotels<br />
Shopping<br />
Travel Tips<br />
<br />
Laxmi Mandir<br />
Movie Hall<br />
It is one of the famous cinema hall , here most the people like to see movie in this theater because its best and show timings are 12: 15 pm , 3:15pm, 6:15pm and 9:15pm.<br />
Maximum Duration of Visit: 3:0 hrs<br />
<br />
Chokhi Dhani<br />
Restaurant<br />
Chokhi Dhani is one of the most popular places to sample traditional food, and of course, a slice of true Rajasthani culture.Chokhi Dhani it is a part of ambiance for a restaurant, over the years it ...<br />
Maximum Duration of Visit: 2:0 hrs</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 Local Sightseeing
								</p>
								<p class="aj">After breakfast start for full day local sightseeing in Jaipur. Visit Amber Fort & Palace, "Gaitore" Cenetophs (Front View), take a photo stop at Jal Mahal, City Palace & Museum, Jantar Mantar (Observatory) & take a photo stop at Hawa Mahal. Evening free for leisure. Overnight stay at Jaipur.<br />
<br />
<br />
Amber Fort<br />
Place to Visit<br />
It is an old fort, built in 1592 by Raja Man Singh. This fort is also very popularly known as the Amer Palace. The Amer Fort was built in red sandstone and marble and the Maotha Lake adds a certain ...<br />
Maximum Duration of Visit: 2:0 hrs<br />
<br />
Gaitore<br />
Monument<br />
Gaitore, one of the most prominent tourist attractions in Jaipur, is a royal cremation ground for the Kachhwaha Rajput kings and the members of the royal family. Gaitore is a cenotaphs that narrate ...<br />
Maximum Duration of Visit: 2:0 hrs<br />
<br />
City Palace<br />
Historic Place<br />
Upon visiting the magnificant City Palace,it's easy to see that the royal family of Jaipur was one of the richest in India.The huge complex of courtyards,gardens,and buildings blend both Rajasthani ...<br />
Maximum Duration of Visit: 2:0 hrs</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> Jaipur - Jodhpur (336 Km / 6 Hrs)
								</p>
								<p class="aj">After breakfast transfer to Jodhpur. On arrival check-in to your hotel. Overnight stay at Jodhpur.<br />
<br />
Explore Jodhpur<br />
<br />
<br />
Jodhpur, India<br />
Jodhpur is the second largest city in the Indian state of Rajasthan. Located on the foothill of a sandstone hillock, the city of Jodhpur seems like an oasis in ... more<br />
Top things to do<br />
Restaurants<br />
Hotels<br />
Shopping<br />
Travel Tips</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 Half Day Sightseeing - Jaisalmer (285 Km / 5 Hrs)
								</p>
								<p class="aj">After breakfast start for half day sightseeing covering Umaid Bhawan Palace, Mehrangarh Fort and Jaswant Thada. After that transfer to Jaisalmer - The Golden City. On arrival check-in to your hotel. Overnight stay at Jaisalmer.<br />
<br />
<br />
Umaid Bhawan Palace<br />
Place to Visit<br />
Umaid Bhawan Palace is clearly visible to the south of the city and completed only in 1944, this is the last great palace built in India. The Maharaja of Jodhpur lives here to this day, but half the ...<br />
Maximum Duration of Visit: 3:0 hrs<br />
<br />
Mehrangarh Fort<br />
Monument<br />
Mehrangarh Fort is one of the most imposing and largest forts not only in Jodhpur but in the whole India. It is a fort that oozes the charm and grandeur of a bygone era. It is situated five kilometres...<br />
Maximum Duration of Visit: 3:0 hrs<br />
<br />
Jaswant Thada<br />
Place to Visit<br />
Jaswant Thada , a royal memorial of the Rathore clan, is located around half a kilometre away from the Mehrangarh Fort. It was built in 1899 AD as a memorial for Maharajah Jaswant Singh II by his son...<br />
Maximum Duration of Visit: 3:0 hrs</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> Jaisalmer Sightseeing
								</p>
								<p class="aj">After breakfast visit the Jaisalmer Fort which is made by unique Golden Lime stone, that’s why its known as Golden Fort or Sonar Kella. After that visit Patwon-ki-haveli, Nathmal-ki-haveli. Salim singh-ki-Haveli. People still live in these ancient buildings dating from 12th to 15th century. Every house has exquisite carvings and filigreed work. After that also visit Gadishar Lake. In Evenin...more<br />
<br />
Explore Jaisalmer<br />
<br />
<br />
Jaisalmer, India<br />
Jaisalmer nicknamed "The Golden city", is a town in the Indian state of Rajasthan. Jaisalamer provides an opportunity for the tourists to discover the rich ... more<br />
Top things to do<br />
Restaurants<br />
Hotels<br />
Shopping<br />
Travel Tips<br />
<br />
Jaisalmer Fort<br />
Monument<br />
This famous fort carved in pale yellow sandstone was built in 1156 by the founder of the town, Rawal Jaisal. The fort stands glimmering on Meru Hill with its enormous 99 bastions inviting you to ...<br />
Maximum Duration of Visit: 3:0 hrs<br />
<br />
Patwon Ki Haveli<br />
Monument<br />
It is one of the largest and most elaborate houses in Jaisalmer. It is five storeys high, extensively carved. It is divided in to six apartments two owned by the Archaeological Survey of India, Two by...<br />
Maximum Duration of Visit: 3:0 hrs<br />
<br />
Nathmal-ki-Haveli<br />
Monument<br />
This Nathmal Ji ki haveli was commissioned to serve as the residence of Diwan Mohata Nathmal, the then Prime Minister of Jaisalmer. Maharawal Beri Sal commissioned the construction of this Haveli. ...<br />
Maximum Duration of Visit: 2:0 hrs<br />
<br />
Take a camel ride to the sand dunes<br />
Activity Place<br />
Just beyond the town you can go on an excursion to the Sam Sand Dunes, a vast area of undulating sands. You can take a jeep into the desert or opt to travel in the traditional style on camel back. ...<br />
Maximum Duration of Visit: 3:0 hrs</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> Jaisalmer - Jodhpur (285 Km / 5 Hrs)
								</p>
								<p class="aj">After breakfast transfer to Jodhpur. On arrival check-in to your hotel. Overnight stay at Jodhpur.</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> Hotel - Jodhpur Railway Station / Airport
								</p>
								<p class="aj"> After breakfast check out from hotel and transfer to Jodhpur Railway Station / Airport for your onward journey.</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="Wonders Of Rajasthan 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="49580"/>
						</form>
						</div>
						
						";i:1;s:65:"Book Wonders Of Rajasthan Tour. - 6 Nights / 7 Days Tour Packages";i:2;s:131:"book wonders of rajasthan tour. - 6 nights / 7 days tour packages, heritage tour packages, jaipur, jaisalmer, jodhpur tour packages";i:3;s:169:"Avash Shergill Travel offers Wonders Of Rajasthan Tour. - 6 Nights / 7 Days tour package, budget Heritage tour packages for Jaipur, Jaisalmer, Jodhpur at exciting price.";i:4;s:423:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Jaipur, Jaisalmer, Jodhpur"        
		                 },
		      "description": "",
		      "name": "Wonders Of Rajasthan Tour.",
		      "telephone": "91-8699559635"
		    }
		    </script>
			";i:5;N;}