a:6:{i:0;s:10796:"				<div class="h1"><h1>Wonders of Wayanad Tour</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.holidayss.in/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.holidayss.in/packages.htm" title="Packages">Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>Wonders of Wayanad 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">
						5 Nights / 6 Days 
						</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Destination Covered </td>
						<td class="p5px pl0px vat">Wayanad, Kodagu, Calicut</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.holidayss.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Wonders of Wayanad 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="103233"/>
						</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_17/492417/172669.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_17/492417/172669.jpg"  width="150" height="150"    alt="Wonders of Wayanad Tour" title="Wonders of Wayanad 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> Calicut-Wayanad
								</p>
								<p class="aj">We will meet you at the Calicut Railways station or airport and drive you through winding roads to Wayanad hill station. on the way you can visit the Ghat road view point Wayanad is at Lakkidy around 700 Mtrs. height from sea level 60 from Kozhikode and 18 kilometer Kalpetta and 40 kilometer Sulthan Bathery. There are 9 hairpin curves within a distance of 16 Kms. From here you get great view of steep, misty mountains and a glance of distant horizon in the Arabian Sea. you will be check in from the hotel and after visit the Banasura Sagar Dam The beautiful extra ordinary dam located the north west of Kalpetta. It is considered to be the second largest earth dam in Asia and the first India. The specialty of the dam is filled with crystal clear waters. Uninterrupted and engulfed amidst the hills, Bansura Sagar Dam has ban unconditional beauty to be explored.After visiting the dam you can drive to POOKODE LAKE, Nested amidst the picturesques evergreen forests and mountainous terrain is a fresh water lake- The Pookode Lake Amazing scenic beauty, intanst refreshment and mindcalming view of the lake with its surrounding addint ot its appearance make the Pookode lake a favorite destination visiting and return over night stay 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 2:</b> Wayanad - Wayanad
								</p>
								<p class="aj">Today after breakfast explore the wild Wayanad as you can visit Edakkal caves which is situated on the top of Ambukkuthimala with a view of three states as well as the spot has many carvings of stone age and one should truck and climb the hill to reach the cave. . After lunch visit Phantom Rock Wayanad human shaped rock , a magnum opus of Nature one of the major spots in Wayanad as a typical natural Rock where you can drive to Sulthan Bathery jain temple holds a lot of significance both in terms of religion and the strong presence of Jains during the period of Sulthan. Though the temple remains in ruins today it makes for a major attraction amongst tourist. Considered of high importance, the temple holds a lot of monumental importance.to Jain Temple, .on the way you can visit MUTHANGA WILDLIFE SANCTUARY WAYANAD. The sanctuary invites nature enthusiasts to visit its wide variety of wild animals. Indian Bison, Deer, Elephant and Tigers are the primary occupants of the sanctuary. Overnight stay 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 3:</b> Wayanad Site Seeing
								</p>
								<p class="aj">Today your .time for full day sightseeing of Wayanad visiting the Kuruvadweep Wayanad (Kuruva Island) is a 950-acre (3.8 km2) around 17 km to the east of Mananthavady protected river situated on the tributaries of the river Kabini. After visiting kuruva islad we can drive to Pazhassi Raja tomb, The name Pazhassi Raja is quite famous in southern India Pazhassi Raja was the scion of the royal family who decide to revolt against the British ruling in the southern part of India. The Scion had to take refuge in the Wayand forests and made use of Guerilla warfare techniques to outbeat the English troops.The tomb is only a memorial but its the story about the king that makes the place a worth while visit. After vising the tomb we can drive to HERITAGE MUSEUM, The environment and surroundings in Wayanad make for refreshing attraction and of the few but interesting attraction is the Wayanad heritage museum. And Over night stay 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> wayanad - Coorge
								</p>
								<p class="aj">After break Fast check out from the hotel And Drive to coorg On the way you can visit Referred to as the Kashi of South the Thirunelli temple(Optional as per your wish) holds a significant importance to Hindus who believe that this legendary temple was Lord Brahmas dedication to propitiate its preserver Lord Vishnu. Then visiting Drive To Coorg It is also globally known as Scotland of east, throughout the journey enjoy beautiful slopes carpeted by coffee plantations all over Coorg. On arrival at Coorg, check in to the Hotel. And Over night Stay 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 5:</b> Coorge Site Seeing
								</p>
								<p class="aj">You will start your sightseeing tour after breakfast,visiting Harangi Dam - Dam built across the tributary of river Kaveri near Kushalnagar, Iruppu Falls- A water fall with picturesque surroundings, Dubare - Elephant training camp and Nagarhole National Park - Tiger reserve and Tibetan Temple. Over-night will be stay 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> Coorge - Calicut Departure
								</p>
								<p class="aj">After break fast check out from th hotel . We will take you to the Calicut railway station / airport for your return journey.</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.holidayss.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Wonders of Wayanad 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="103233"/>
						</form>
						</div>
						
						";i:1;s:62:"Book Wonders of Wayanad Tour - 5 Nights / 6 Days Tour Packages";i:2;s:124:"book wonders of wayanad tour - 5 nights / 6 days tour packages, valley tour packages, wayanad, kodagu, calicut tour packages";i:3;s:169:"Book Wonders of Wayanad Tour - 5 Nights / 6 Days tour packages from The Holidayss - Get attractive 5 Nights / 6 Days Valley  tour packages for  Wayanad, Kodagu, Calicut.";i:4;s:419:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Wayanad, Kodagu, Calicut"        
		                 },
		      "description": "",
		      "name": "Wonders of Wayanad Tour",
		      "telephone": "+91-7010402069"
		    }
		    </script>
			";i:5;N;}