a:6:{i:0;s:9973:"				<div class="h1"><h1>Heritage Tour of Orissa</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.shreetoursandtravels.in/" title="Home">Home</a> 
				
								
				<b class="ffv p2px">&rsaquo;</b>Heritage Tour of Orissa</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">
						5 Nights / 6 Days 
						</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Destination Covered </td>
						<td class="p5px pl0px vat">Bhubaneswar, Puri, Chandabali</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.shreetoursandtravels.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Heritage Tour of Orissa - 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="120221"/>
						</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/356221/194718.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_12/356221/194718.jpg"  width="150" height="150"    alt="Heritage Tour of Orissa" title="Heritage Tour of Orissa" /></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
								</p>
								<p class="aj">Meet on arrival at Bhubaneswar Airport / Railway Station and straight drive to Puri. On arrival at Puri check-in at hotel. Later excursion of Konark Sun Temple. In the evening visit to Jagannath Temple. Overnight stay at 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 2:</b> Puri - Chilka Lake
								</p>
								<p class="aj">After breakfast go for excursion of Chilika Lake - the Asia's largest brackish water lagoon which attract one million migrate birds. It is the largest wintering ground for migratory birds on the Indian sub-continent. The lake is home to a number of threatened species of plants and Animals. The Lake is an ecosystem with large fishery resources. It sustains more than 150,000 fisher - folk living in 132 villages on the shore and islands.<br />
After a trip of Satapada Island for the famous Irrawaddy Dolphin & other birds visit to Raghurajpur Artisan village where absolutely crafted handicrafts, pattachitra (Tussar paintings, palm leaf engravings, stone and wood carvings, wooden, cowdung and papiermache toys, and masks an art form dates back to 5BC) made of pure organic stuff are made in each family. Evening return to Puri. Overnight stay at 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 3:</b> Puri - Bhubaneswar
								</p>
								<p class="aj">After breakfast checkout from hotel and drive to Bhubaneswar, en-route visit the following places.<br />
<br />
Pipili Village: Pipili famous all over the world for its applique work. Pipili most well known for its handicraft is near to Puri. The usual appliqué patchwork items are Garden Umbrellas, Wallets, Wall Hanging, lampshades, Pouches & Bags.</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> Bhubaneswar - Ratnagiri
								</p>
								<p class="aj">After breakfast drive to Ratnagiri. On arrival at Ratnagiri check-in at hotel. Later proceed to visit Ratnagiri Museum - (FRIDAY CLOSED) The museum consists of four galleries with a long stepped corridor displaying art objects and antiquities, mainly related to Buddhism, ranging from 5th to 13th century AD. Majority of these antiquities specially the elegant stone and bronze sculptures belong to tantric Buddhist Vajrayana sect. Continue with the sightseeing & visit Ratnagiri - The place is the gem of the Buddhist complex. The magnificently carved door jambs of the Vihar and superbly finished Buddha images from perhaps the greatest concentration of Buddhist sculpture of the post-Gupta period.<br />
<br />
Udayagiri in district Jajpur of odisha, at a distance of 90 km from Bhubaneshwar and a significant part of well known diamond Buddhist triangle of Odisha and is famous for the largest Buddhist complexes. The Buddhist Monastic Complexes consists of the Monastery, Stupa and other structural and material remains.<br />
<br />
Lalitgiri is one of the earliest monasteries and the hills were occupied by buddhist from 1 century AD, is located in Jajpur in Orissa. Excavation reveal four monasteries in the hill. Archeological Department of Orissa excavated Lalitgiri, a site near Ratnagiri which was occupied by Buddhists from the first century AD to the 12th Century. Overnight stay at 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 5:</b> Ratnagiri - Bhitarkanika
								</p>
								<p class="aj">After breakfast drive to Bhitarkanika. On arrival check-in at hotel. Bhitarkanika is a hot-spot of biodiversity. It's home to largest population of giant salt water crocodile in India. Also home to more than 215 species of avifauna including amazing eight variety of Kingfishers. It is the second largest viable Mangrove Eco-System in India Harbours more than 70 species of Mangrove and its associates. Gahirmatha is known to be one of the largest rookery for Olive Ridley Sea Turtles. Overnight stay at 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 6:</b> Bhubaneswar Drop
								</p>
								<p class="aj">After breakfast transfer to Airport / Railway station on time to catch Flight / Train for your onward destination.<br />
<br />
Tour & services 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>
															</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.shreetoursandtravels.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Heritage Tour of Orissa - 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="120221"/>
						</form>
						</div>
						
						";i:1;s:62:"Book Heritage Tour of Orissa - 5 Nights / 6 Days Tour Packages";i:2;s:131:"book heritage tour of orissa - 5 nights / 6 days tour packages, heritage tour packages, bhubaneswar, puri, chandabali tour packages";i:3;s:184:"Book Heritage Tour of Orissa - 5 Nights / 6 Days tour packages from Shree Tours & Travels - Get attractive 5 Nights / 6 Days Heritage  tour packages for  Bhubaneswar, Puri, Chandabali.";i:4;s:424:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Bhubaneswar, Puri, Chandabali"        
		                 },
		      "description": "",
		      "name": "Heritage Tour of Orissa",
		      "telephone": "+91-9871034578"
		    }
		    </script>
			";i:5;N;}