a:6:{i:0;s:11716:"				<div class="h1"><h1>Royal Rajasthan 3* Tour</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.rajastravels.com/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.rajastravels.com/tour-packages.htm" title="Tour Packages">Tour Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>Royal Rajasthan 3* 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, Jodhpur, Pushkar, Udaipur</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.rajastravels.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Royal Rajasthan 3* 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="66223"/>
						</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_13/370602/121566.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_13/370602/121566.jpg"  height="150"  width="150"    alt="Royal Rajasthan 3* Tour" title="Royal Rajasthan 3* 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> Arrival at Jaipur
								</p>
								<p class="aj">Upon your arrival at the airport, meet our representative awaiting just outside the arrival hall, past the customs area & currency shops. Later set on a journey to your destination, the Pink City of Jaipur. On arrival in Jaipur you will be escorted to a hotel where you will stay for the night after which you will commence your sightseeing tour of the region.<br />
In the afternoon, tour the old walled city of Jaipur. Visit the unique Jantar Mantar Observatory- an assortment of architectural astronomical instruments. Built by Maharaja Jai Singh II it consists of fourteen major geometric devices for measuring time and predicting eclipses etc. Stunning City Palace will be the next destination on this city tour. City Palace is a complex of various palaces in Jaipur which is an erstwhile seat of Maharaja of the region. Also visit Chandra Mahal and Shri Govind Deo Temple before you return to your hotel in Jaipur for nights 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 2:</b> Jaipur
								</p>
								<p class="aj">Enjoy a hearty breakfast at the hotel and leave for a half-day sightseeing tour to the hilltop fortress of Amber. A small trek up the hill will be covered while riding an elephant in the royal manner. The fort was built in 1592 under the reign of Raja Man Singh and was later modified by successive rulers for next 150 years. Today the structure stands with its beautifully carved ceilings, intricate patterns and stunning designs. In the afternoon take a stroll amid colorful bazaars of Jaipur and also visit a factory to see the famous block printing work. Evening in Jaipur will bring a drive to the fabulous white marble edifice of famous Laxmi Narayan Mandir</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
								</p>
								<p class="aj">This morning leave for Jodhpur. The city painted in blue, Jodhpur is the renowned Blue City of Rajasthan. Featuring various forts, palaces and temples in the middle of stark landscape of Thar Desert, Jodhpur paints the region in the<br />
Package cost 3 Star<br />
Per Person(min 2 pax required) 17063.0<br />
Extra Adult 6510.0<br />
Per Person(min 4 pax required) 13073.0<br />
Per Person(min 6 pax required) 11305.0<br />
Child With Bed(5-12 yrs) 6510.0color of royalty. Visit the Mehrangarh Fort, which literally means "Majestic Fort", located at the very centre of the city. Close to the fort complex lies this white marble cenotaph, built in 1899, in commemoration of Maharaja Jaswant Singh II. At the foot of the fort, lies the "Jaswanth Thada", a richly carved white marble cenotaph. You also stroll down the markets of Jodhpur. O/N in 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 4:</b> Jodhpur - Ranakpur - Udaipur
								</p>
								<p class="aj">Today set out on drive to Udaipur in the morning and en-route pay a visit to the famous Jain Temple of Ranakpur. This temple is unique as it has 200 pillars, each one carved differently and 29 halls adorned with beautiful carving and sculptures. Resume the drive thereafter and on arrival in Udaipur check-in a hotel for 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> Udaipur
								</p>
								<p class="aj">The breathtaking beauty of the lakes - Pichola & Fateh Sagar & the magnificent structures built around them, impress every visitor to Udaipur. The city has been voted the best tourist destination in the world in multiple traveller surveys.<br />
Wander through the opulent City Palace grounds and the museum. Overlooking Lake Pichola, City Palace complex has several beauteous structures showcasing a blend of Rajasthani and Mughal architectures. Visit the Jagdish temple on the shores of Lake Pichola a large Hindu temple dedicated to Lord Shiva. The temple situated on a raised terrain was built in 1651 and forms a beautiful pyramidal shape. A visit to the temple will not only be of religious experience, but will also impress you with the architectural brilliance of the age of royalty. Also explore other fascinating sites such as Gulab Bagh and Pratap Memorial before you retire to your room in the hotel late in the evening</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> Udaipur - Pushkar
								</p>
								<p class="aj">Leave for Pushkar. Pushkar is a sacred town for the Hindu and is situated about 11kms northwest of Ajmer. Visit Dargah Sharif at Ajmer on the way to Pushkar. The prime attractions are Brahma Temple which is the sole temple dedicated to Lord Brahma in the world, Pushkar Lake, Savitri Temple etc. Take a brief moment to explore Pushkar, one of the five sacred dhams (pilgrimage sites) of Hindus. Perched on the banks of River Pushkar it is one of the oldest cities of India and is laced with various temples. Take a holy dip in the Pushkar Lake and visit its 52 bathing Ghats and more than 500 temples, each having its own legends of miraculous powers and powers of healing and displaying variety of architectural styles. The cattle festival of Pushkar is one of its kinds which have made the city a renowned tourist destination in India. You can also visit the Rose Garden too in the evening. Explore the city and then check in your hotel for 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 7:</b> Pushkar - Jaipur
								</p>
								<p class="aj">Today take up a drive back to Jaipur. Later in the evening you will be transferred to International Airport to catch onward flight back home</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.rajastravels.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Royal Rajasthan 3* 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="66223"/>
						</form>
						</div>
						
						";i:1;s:62:"Book Royal Rajasthan 3* Tour - 6 Nights / 7 Days Tour Packages";i:2;s:135:"book royal rajasthan 3* tour - 6 nights / 7 days tour packages, heritage tour packages, jaipur, jodhpur, pushkar, udaipur tour packages";i:3;s:180:"Book Royal Rajasthan 3* Tour - 6 Nights / 7 Days tour packages from RAJAS TRAVELS - Get attractive 6 Nights / 7 Days Heritage  tour packages for  Jaipur, Jodhpur, Pushkar, Udaipur.";i:4;s:428:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Jaipur, Jodhpur, Pushkar, Udaipur"        
		                 },
		      "description": "",
		      "name": "Royal Rajasthan 3* Tour",
		      "telephone": "+91-9820123553"
		    }
		    </script>
			";i:5;N;}