a:6:{i:0;s:12207:"				<div class="h1"><h1>Temple City Tour</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.odishatourandtravels.com/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.odishatourandtravels.com/tour-packages.htm" title="Tour Packages">Tour Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>Temple City 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">Tour Code </td>
						<td class="p5px pl0px vat">0446</td>
						</tr>
												<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">Bhubaneswar, Konark, Puri</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Price (Starting From) </td>
						<td class="p5px pl0px vat">
						INR 9000 Per Person						</td>
						</tr>
												<tr>
						<td></td>
						<td>
						<p>
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.odishatourandtravels.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Temple City 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="58833"/>
						</form>
						</p>
						</td>
						</tr>
											</table>
					</td>
											<td class="p10px vat imgWidth150 w150px lh0">
						<div class="demo-wrap">
						<ul class="lsn m0px p0px" id="detailslider1">
															<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/373054/111228.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_13/373054/111228.jpg"  width="150" height="150"    alt="Temple City Tour" title="Temple City Tour" /></a></p></div></li>
																		<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/373054/111229.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_13/373054/111229.jpg"  width="150" height="150"    alt="Temple City Tour" title="Temple City Tour" /></a></p></div></li>
																		<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/373054/111230.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_13/373054/111230.jpg"  width="150" height="150"    alt="Temple City Tour" title="Temple City Tour" /></a></p></div></li>
																		<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/373054/111231.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_13/373054/111231.jpg"  width="150" height="150"    alt="Temple City Tour" title="Temple City Tour" /></a></p></div></li>
															</ul>
						</div>
						</td>
											</tr>
					</table>
					</div>
					<br />
					
					<b>Puri</b><br />
The city of temples, Puri is located 60 km south of state capital Bhubaneswar, on the shores of the Bay of Bengal. It has been deemed one of Hinduism' s holiest cities since the 9th century when Adi Shankara established one of his four ' math' or learning centers here. The others are in Sringeri in Karnataka, Dwarka in Gujarat and Jyotirmath in the Uttarakhand Himalayas. Subsequently several other Hindu math were established in Puri over the centuries including the famous Emar Math founded by the Tamil Vaishnav Saint Ramanujacharya in the 12th century. Along with Dwaraka, Badrinath and Rameswaram, it is also one of the original Char Dham pilgrim sites for Hindus. This ancient city has been variously referred through the centuries as Srikshetra, Neelachala, Purusottama Dhama and Jagannath Puri. The last name has come about because Puri is considered the abode of Lord Jagannath.4.35% Government service tax extra.<br />
Any Kind of Personal Expenses or Optional Tours / Extra Meals Ordered.<br />
Monument & Museum Entrance Fees for the sights mentioned in the Itinerary.<br />
Anything not specifically mentioned under the head "Prices included".<br />
Tips, Insurance, Laundry, Phone Calls.<br />
The Services of Vehicle is not included on leisure days & after finishing the sightseeing tour as per the Itinerary.<br />
Any Kind of Drinks (Alcoholic, Mineral, Aerated).<br />
Camera fee, Soft or Hard drinks, Starters.<br />
Medical & Travel insurance30-0431-08<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 Bhubaneswar Railway Station/ Airport to Puri
								</p>
								<p class="aj">Upon arrival at Bhubaneshwar Airport/ Railway Station, proceed to Puri. In the evening, visit Lord Jagannath Temple. Stay overnight at the hotel, in Puri</p>					
									<p><b>Meals : </b> only breakfast</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 Sightseeing
								</p>
								<p class="aj">After Breakfast, visit Konark Sun Temple, Chandrabhaga Beach, Dhauli, Lingaraj Temple, Udayagiri and Khandagiri. In the evening, stroll around and enjoy shopping for souvenirs on the sea side. Stay overnight at the hotel, in Puri.</p>					
									<p><b>Meals : </b> breakfast only</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> Excursion to Chilika Lake (50 kms/ 2 hours)
								</p>
								<p class="aj">After breakfast, proceed for an excursion to Chilika Lake. Enjoy boating on Satapada and visit the lagoon where the lake meets with Bay of Bengal. In the evening, return to Puri and stay overnight at the hotel, in Puri.</p>					
									<p><b>Meals : </b> breakfast only</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> Puri to Bhubaneswar Railway Station/ Airport Drop
								</p>
								<p class="aj">After breakfast, proceed to Bhubaneshwar airport/ railway station for your onward journey.</p>					
									<p><b>Meals : </b> breakfast only</p>
								</td>
								</tr>
								</table>					
								</div>						<br />
													<div class="headHr">
				            <p class="p7px b pl10px xlarge">Hotel Detail : </p>
				            </div>
															<div class="data lh13em p20px aj mb7px">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px"><p class="fr lh0">
								
																	<img class="vam" src="https://static.tourtravelworld.com/images/star_ratings_on.png" alt=""/>
																		<img class="vam" src="https://static.tourtravelworld.com/images/star_ratings_on.png" alt=""/>
																		<img class="vam" src="https://static.tourtravelworld.com/images/star_ratings_off.png" alt=""/>
																		<img class="vam" src="https://static.tourtravelworld.com/images/star_ratings_off.png" alt=""/>
																		<img class="vam" src="https://static.tourtravelworld.com/images/star_ratings_off.png" alt=""/>
																		<img class="vam" src="https://static.tourtravelworld.com/images/star_ratings_off.png" alt=""/>
																		<img class="vam" src="https://static.tourtravelworld.com/images/star_ratings_off.png" alt=""/>
																	
								</p>
								<div class="mb5px">
								<h2 class="dif b xxlarge">2 Star</h2>
								</div>
								<p class="cb"></p>
								<p><b>Address :</b> Bhubaneswar, Odisha, India</p>
								<p><b>Facility :</b> Airport Transfer, Car Rental / Hire, Cyber Cafe, Laundry Services, Parking, STD / ISD Facility, Security Guard</p>
								<div class="mt7px">any time</div>
								</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">Exclusions :</p> <ul><li>4.35% Government service tax extra.</li><li>
Any Kind of Personal Expenses or Optional Tours / Extra Meals Ordered.</li><li>
Monument & Museum Entrance Fees for the sights mentioned in the Itinerary.</li><li>
Anything not specifically mentioned under the head "Prices included".</li><li>
Tips, Insurance, Laundry, Phone Calls.</li><li>
The Services of Vehicle is not included on leisure days & after finishing the sightseeing tour as per the Itinerary.</li><li>
Any Kind of Drinks (Alcoholic, Mineral, Aerated).</li><li>
Camera fee, Soft or Hard drinks, Starters.</li><li>
Medical & Travel insurance</li></ul><br />
												<p class="large b mb5px dif">Specific Departure Dates :</p>any time<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.odishatourandtravels.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Temple City 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="58833"/>
						</form>
						</div>
						
						";i:1;s:55:"Book Temple City Tour - 3 Nights / 4 Days Tour Packages";i:2;s:134:"book temple city tour - 3 nights / 4 days tour packages, religious & pilgrimage tour packages, bhubaneswar, konark, puri tour packages";i:3;s:177:"Book Temple City Tour - 3 Nights / 4 Days tour packages from Sai Darshan - Get attractive 3 Nights / 4 Days Religious & Pilgrimage  tour packages for  Bhubaneswar, Konark, Puri.";i:4;s:1860:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Bhubaneswar, Konark, Puri"        
		                 },
		      "description": "<b>Puri</b>
The city of temples, Puri is located 60 km south of state capital Bhubaneswar, on the shores of the Bay of Bengal. It has been deemed one of Hinduism' s holiest cities since the 9th century when Adi Shankara established one of his four ' math' or learning centers here. The others are in Sringeri in Karnataka, Dwarka in Gujarat and Jyotirmath in the Uttarakhand Himalayas. Subsequently several other Hindu math were established in Puri over the centuries including the famous Emar Math founded by the Tamil Vaishnav Saint Ramanujacharya in the 12th century. Along with Dwaraka, Badrinath and Rameswaram, it is also one of the original Char Dham pilgrim sites for Hindus. This ancient city has been variously referred through the centuries as Srikshetra, Neelachala, Purusottama Dhama and Jagannath Puri. The last name has come about because Puri is considered the abode of Lord Jagannath.4.35% Government service tax extra.
Any Kind of Personal Expenses or Optional Tours / Extra Meals Ordered.
Monument & Museum Entrance Fees for the sights mentioned in the Itinerary.
Anything not specifically mentioned under the head "Prices included".
Tips, Insurance, Laundry, Phone Calls.
The Services of Vehicle is not included on leisure days & after finishing the sightseeing tour as per the Itinerary.
Any Kind of Drinks (Alcoholic, Mineral, Aerated).
Camera fee, Soft or Hard drinks, Starters.
Medical & Travel insurance30-0431-08",
		      "name": "Temple City Tour",
		      "telephone": "+91-9178191841"
		    }
		    </script>
			";i:5;N;}