a:6:{i:0;s:11652:"				<div class="h1"><h1>Sri Lanka Tour</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.sharmatravel.in/" title="Home">Home</a> 
				
								
				<b class="ffv p2px">&rsaquo;</b>Sri Lanka 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">
						4 Nights / 5 Days 
						</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Destination Covered </td>
						<td class="p5px pl0px vat">Colombo, Kandy, Nuwara Eliya, Bentota</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.sharmatravel.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Sri Lanka 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="122300"/>
						</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_18/513007/197443.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_18/513007/197443.jpg"  width="150" height="150"    alt="Sri Lanka Tour" title="Sri Lanka 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
								</p>
								<p class="aj">As you arrive at the Colombo Bandaranayake International Airport, our tour representative escorts you to the assigned vehicle so that you can get transferred to Kandy. On the way, take a halt to visit the Pinnawela Elephant Orphanage. A shelter home for abandoned, injured and orphaned elephants that are taken care of by caretakers and volunteers. Watch then bathing, feeding and assisting elephants. Walk with a herd of elephants up to the river nearby to watch them play and bathe. Later, continue towards Kandy, the last capital of ancient Sri Lankan kings. Placed amid hills, Kandy is the country's second largest city and is also one of its 7 World Heritage sites that has blessed with abundant natural beauty. This lovely city boasts of lush grasslands, splendid lake, Sri Lanka's longest river and mist-clad mountains. This place has a lot to offer to its visitors. On arrival, complete the check-in.<br />
<br />
Check-in is followed by sightseeing in Kandy. The first visit of the day is to Temple of tooth Relic, locally known as Sri Dalada Maligawa. This temple is a UNESCO World Heritage Site, which is also one of the most revered Buddhist sites in the world. Next in line is the visit to the Peradeniya Botanical Gardens, a heaven for nature enthusiasts. Spread in a verdant space of 147 acres of land, this garden is visited by over 1.2 million people every year. It houses around 300 varied varieties of orchids, medicinal plants, palm trees and spices too. Later, explore the amazing Gem Museum, producing world's finest quality gems and semi-precious stones including glistening sapphires in different shades like green, white, red, blue and even more. Evening is scheduled for attending a traditional cultural dance show.</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> Kandy – Nuwara Eliya
								</p>
								<p class="aj">Post breakfast on day 2 at the hotel, get ready to leave for Nuwara Eliya, fondly referred to as the City of Lights. Encircled by lush tea plantations and hills, this lovely city has been blessed with a pleasant weather, colorful meadows, green ambiance and superb views of the mountains and valleys. This place is also called 'Little England', a favorite hill town of the British who founded it as a typical English hamlet. A country house like hill club with trophies and hunting pictures, formal dinner cloth, a bricked post office, a horse race course and an 18 hole golf course are ample proofs of the same. On reaching, check-in at the hotel.<br />
<br />
Explore the popular attractions of Nuwara Eliya including Victoria Park, the golf course and the trout streams. Later, you can enjoy boat riding and fishing at Lake Gregory. Your next visit can be to a tea factory where you can see the production of the finest Orange Pekoe tea in the world from the slow-growing tea bushes of this highland region. Some of the other attractions that you may also visit include Haggala Gardens and Seetha Eliya. While the latter one is a temple from the great Hindu epic Ramayana, the former one is a temperate hill-country garden where one can spot leisurely low-country lotus and water lily floating in pristine environs.<br />
<br />
Overnight stay in Nuwara Eliya.</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> Nuwara Eliya – Bentota
								</p>
								<p class="aj">After breakfast, the day is scheduled for sightseeing in Nuwara Eliya. Visit the lovely coastal town of Bentota that is known for offering memorable experiences. Also known as the 'City of Golden Beaches', Bentota is an ideal place to relax and spend some memorable moments with the loved ones. This place boasts of water sports opportunities, several historical sights and coral reef exploration on glass boats. After completing the check-in, your day is scheduled for city tour and fun activities. Visit the popular beaches to simply relax and soak-in the sun. Go for a leisure walk while savoring the serenity and scenic beauty.<br />
<br />
During the city tour, enjoy boating in River Madhu where you treat your eyes to the wonderful scenery and lush mangroves covering several islets. If you want, you can also visit the Turtle Hatchery here. Opened in 1981 by the Wildlife Protection Society in 1981, this hatchery is the main turtle nesting site. You can spot large tanks that contain new born turtles. Once these turtle babies are fed and they are 2 to 4 days old, they are released in the sea, generally during dark hours when it is safe.</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> Bentota – Colombo
								</p>
								<p class="aj">After having breakfast on the 4th day of the tour, get ready to go back to Colombo, the commercial capital of Sri Lanka and the largest city too. Placed on the west coast, this bustling colorful city is a mix of colonial and modern touches. The city is dotted with several architectural marvels, colonial buildings with British, Portuguese and Dutech influences along with Hindu, Buddhist, Islamic, Contemporary and Indian structures. It is also a popular tourist shopping destination. Once you are done with the check-in formalities, you can partake in the city tour of Colombo.<br />
<br />
The list of tourist attractions in Colombo that are worth-visiting include the Viharamahadevi Park, Galle Face Green, Fort district, National Museum, Old Parliament Building, Twin World Trade Center towers and Independence Hall at Independence Square. The city is also dotted with places of worship of different religion like Buddhist, Hindu, Islam and Christianity. Evening can be spent indulged in shopping at the popular markets of Colombo such as Odel, House of Fashion, Beverly Street, Majestic City and Noritake.<br />
<br />
Overnight stay in Colombo.</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> Departure from Colombo
								</p>
								<p class="aj">After breakfast on the last day of the tour, you have some free time. Later get transferred to the airport to board the flight for your onward destination.</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.sharmatravel.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Sri Lanka 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="122300"/>
						</form>
						</div>
						
						";i:1;s:53:"Book Sri Lanka Tour - 4 Nights / 5 Days Tour Packages";i:2;s:128:"book sri lanka tour - 4 nights / 5 days tour packages, valley tour packages, colombo, kandy, nuwara eliya, bentota tour packages";i:3;s:173:"Book Sri Lanka Tour - 4 Nights / 5 Days tour packages from Sharma Travel - Get attractive 4 Nights / 5 Days Valley  tour packages for  Colombo, Kandy, Nuwara Eliya, Bentota.";i:4;s:423:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Colombo, Kandy, Nuwara Eliya, Bentota"        
		                 },
		      "description": "",
		      "name": "Sri Lanka Tour",
		      "telephone": "+91-9643567755"
		    }
		    </script>
			";i:5;N;}