a:6:{i:0;s:11860:"				<div class="h1"><h1>Sri Lanka Tour</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.bluedolphintravels.co.in/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.bluedolphintravels.co.in/tour-packages.htm" title="Tour Packages">Tour Packages</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.bluedolphintravels.co.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="89672"/>
						</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_15/428110/155425.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_15/428110/155425.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 in Colombo - Kandy (3 hours)
								</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.<br />
<br />
Stay overnight stay in Kandy</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 (2.5 hours)
								</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 (5.5 hours)
								</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 (2 hours)
								</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>
												</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.bluedolphintravels.co.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="89672"/>
						</form>
						</div>
						
						";i:1;s:53:"Book Sri Lanka Tour - 4 Nights / 5 Days Tour Packages";i:2;s:139:"book sri lanka tour - 4 nights / 5 days tour packages, beach and islands tour packages, colombo, kandy, nuwara eliya, bentota tour packages";i:3;s:191:"Book Sri Lanka Tour - 4 Nights / 5 Days tour packages from Blue Dolphin Travels - Get attractive 4 Nights / 5 Days Beach and Islands  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-9558888723"
		    }
		    </script>
			";i:5;N;}