a:6:{i:0;s:11541:"				<div class="h1"><h1>Splendors of Gujarat Tour</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.thearyanholidays.co.in/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.thearyanholidays.co.in/tour-packages.htm" title="Tour Packages">Tour Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>Splendors of Gujarat 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">
						3 Nights / 4 Days 
						</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Destination Covered </td>
						<td class="p5px pl0px vat">Ahmedabad, Modhera, Patan</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.thearyanholidays.co.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Splendors of Gujarat 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="62730"/>
						</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_10/286333/117065.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_10/286333/117065.jpg"  width="150" height="150"    alt="Splendors of Gujarat Tour" title="Splendors of Gujarat 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 in Ahmedabad
								</p>
								<p class="aj">On reaching Ahmedabad, head towards the hotel. Take some rest and then leave for sightseeing. Begin with a visit to the well-known Sabarmati Ashram, located on the banks of the Sabarmati River. The ashram was the center of India’s freedom movement which was started off by Mahatma Gandhi in the year 1917. The place houses Hridaya Kunj, a small cottage where Gandhi Ji lived during his freedom struggle. Today, the ashram is a popular tourist attraction. It also has a museum which is known as Gandhi Smarak Sangrahalaya. The museum houses a number of photographs, manuscripts and books on Gandhian philosophies. Belongings of Gandhi, like his writing desk, khadi kurta and charkha, are also kept in the museum.<br />
<br />
Later, leave for Hutheesing Jain Temple, a beautiful temple dedicated to Dharamnath- the fifteenth Tirthankar of Jains. The temple is considered one of the finest examples of Jain architecture. The star attraction of the temple is Mahavir Stambha, located in the outer courtyard of the temple.<br />
<br />
Thereafter, proceed towards the Sidi Sayed Mosque. Built back in the year 1973, the mosque is one of the most renowned religious buildings in the city of Ahmedabad. The mosque was established by Sidi Sayed, a slave of Sultan Ahmed Shah during the Mughal reign. It was the last prominent mosque that was built in Ahmedabad during the rule of the Mughals. Return to the hotel after sightseeing and stay overnight.</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> Ahmedabad to Lothal (Sightseeing in Lothal) Lothal to Ahmedabad
								</p>
								<p class="aj">This morning, freshen up and leave for Lothal – a significant historic site of Gujarat. On reaching Lothal, start your sightseeing tour of the city. One of the most important cities from the Indus Valley Civilization, Lothal dates back to 3700 BCE. The port of the city is considered the oldest in the world. Lothal is a major tourist attraction among history buffs and wanderers. The place still holds a lot of history which has not yet been discovered.<br />
<br />
Begin your excursion with a visit to the famous Lothal Dockyard, the oldest one across the globe. During the time of the Harappan Civilization, Lothal was the most important import and export centre. The place is considered one of the finest examples of the scientific and Hydraulic knowledge that was possessed by the Harappan people.<br />
<br />
Thereafter, leave for a tour to the historical cemeteries of Lothal. Lothal is dotted with a number of cemeteries that were built by the Dravidians in the ancient time. Lothal offers a chance to explore the Harappan civilization.<br />
<br />
In an excavation, it was found that many dead bodies were buried here along with ancient potteries. Today, all these potteries are kept inside different museums to make people learn about their ancient civilizations. Later, move towards the museums of Lothal that are known for housing a number of artifacts that are related to the history of Lothal. The most popular of all the museums is the Archaeological Museum that displays animal shells, pottery and other figures from the Harappan Civilization.<br />
<br />
After enjoying your sightseeing tour of Lothal, leave back for towards the city of Ahmedabad. As soon as you arrive in Ahmedabad, take you conveyance to reach your hotel. Stay overnight.</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> Ahmedabad to Patan and Modhera (Sightseeing in Patan and Modhera) Patan and Modhera to Ahmedabad
								</p>
								<p class="aj">Get ready early in the morning and then leave for Patan. Patan is an ancient fortified town which dates back to the 8th century. The town was established by Vanraj Chavda, a loved and praised king of the Chavda Kingdom. Today, the town is known for displaying Gujarati culture and history. Also, it is famous for items like weaving crafts, widely-exported Patola silk sarees.<br />
<br />
Start your sightseeing tour of Patan by visiting Rani ki Vav, one of the oldest and biggest step wells in Gujarat. The step well was constructed during the rule of the Solanki dynasty. It was found in an intact condition when excavated by the Archaeological Survey of India (ASI). A UNESCO World Heritage Site, Rani ki Vav showcases some of the finest architectural techniques and beautiful carvings.<br />
<br />
After visiting Rani ki Vav, pay a visit to Sahastralinga Talav. Sahastralinga Talav is a medieval-era water tank which was commissioned during the rule of the Solankis. The place has been declared a protected monument by the ASI. The place not only speaks about the architecture of those times but also about Hinduism.<br />
<br />
After sightseeing in Patan, leave for your next destination- Modhera – a site of religious and historical significance. The village is known for its scenic beauty and several important and religious buildings. One of the major tourist attractions of Modhera is the Sun Temple which is based on the archaeological concept of the Konark Sun temple of Odisha. Built during 11th century, Modhera Sun Temple is believed to be an architectural masterpiece. The temple preserves the culture and tradition of Modhera. A dance festival is organized every year in the temple which attracts tourists from all over.<br />
<br />
Later, visit Maatangi Modheshwari Temple, a beautiful temple dedicated to Goddess Modheshwari – the patron goddess of the local Modh community. After completing your sightseeing tour of Patan and Modhera, head back to Ahmedabad. Stay overnight at the hotel.</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 from Ahmedabad
								</p>
								<p class="aj">This is the last day of the tour. Complete check-out formalities at the hotel and then leave for the transport terminal and then depart to home. Tour Ends.</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>
																		<li>Transport</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.thearyanholidays.co.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Splendors of Gujarat 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="62730"/>
						</form>
						</div>
						
						";i:1;s:64:"Book Splendors of Gujarat Tour - 3 Nights / 4 Days Tour Packages";i:2;s:129:"book splendors of gujarat tour - 3 nights / 4 days tour packages, heritage tour packages, ahmedabad, modhera, patan tour packages";i:3;s:164:"The Aryan Holidays offers Splendors of Gujarat Tour - 3 Nights / 4 Days tour package, budget Heritage tour packages for Ahmedabad, Modhera, Patan at exciting price.";i:4;s:422:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Ahmedabad, Modhera, Patan"        
		                 },
		      "description": "",
		      "name": "Splendors of Gujarat Tour",
		      "telephone": "+91-7737030090"
		    }
		    </script>
			";i:5;N;}