a:6:{i:0;s:14384:"				<div class="h1"><h1>Mysore Ooty & Coorg Tour</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.travelect.co.in/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.travelect.co.in/tour-packages.htm" title="Tour Packages">Tour Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>Mysore Ooty & Coorg 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">
						8 Nights / 9 Days 
						</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Destination Covered </td>
						<td class="p5px pl0px vat">Mysore, Srirangapatna, Ooty, Kodagu</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.travelect.co.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Mysore Ooty & Coorg 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="58157"/>
						</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/333350/110196.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_12/333350/110196.jpg"  height="150"  width="150"    alt="Mysore Ooty & Coorg Tour" title="Mysore Ooty & Coorg 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> Mysore
								</p>
								<p class="aj">Mysore (or Mysuru) was the capital of the Kingdom of Mysore from 1399-1947. In its center is opulent Mysore Palace, former seat of the ruling Wodeyar dynasty. The palace blends Hindu, Islamic, Gothic and Rajput styles, and is dramatically lit at night. Mysore is also home to the centuries-old Devaraja Market, filled with spices, silk and sandalwood<br />
<br />
Proceed for Sightseeing. Visit Chamundi Hills to pay your obeisance to Goddess Chamundeshwari. On the way back to city you will see Statue of Mahishasura and Nandi. Pay a visit to Lalith Mahal Palace Hotel. And later visit Jaganmohan Palace Art Gallery. After lunch you will visit Mysore Palace, one of the largest palaces in the country and the beautiful St.Philomena's Church - the most majestic churches in India. Later drive to Brindavan Gardens a show garden that has botanical park with fountains as well as a musical fountain. 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 2:</b> Mysore
								</p>
								<p class="aj">After breakfast, visit and the Mysore Zoo, one of the oldest and well maintained zoo in India. And also visit Karanji Lake, a picturesque lake located at the footsteps of Chamundi Hills. Later drive to Srirangapatna were you will visit Ranganathittu Bird Sanctuary, Sri Ranganatha Swamy Temple, Tipu's Summer Palace, fort, Gumbuz and Nimishamba Temple. Overnight Stay.</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> Ooty
								</p>
								<p class="aj">Ootacamund or Ooty, the popular hill station located in the Nilgiri Hills. Located in the Blue Mountains of the Western Ghats, Ooty greets a tourist with lofty mountains, great lakes, dense forests, sprawling grasslands, miles of tea gardens and eucalyptus trees. The hill station itself is a land of picturesque picnic spots. It used to be popular summer and weekend getaway for the British. Arrive in Ooty and check in to Hotel. Evening sightseeing of Ooty covering Botanical Garden & Boat ride in Ooty Lake (direct payment). Ootyâ€™s Botanical Gardens, established in 1848, are living showcase of the natural flora of Nilgiris including the 20 million years old fossilized tree trunks. Ooty is a great place to shop for home-made chocolates and essential oils. Overnight in Ooty.</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> Ooty sightseeing
								</p>
								<p class="aj">Early morning after breakfast, go for Ooty sightseeing. See the highest viewpoint of the Nilgiris, Doddabetta Peak (2633 m); St. Stephenâ€™s Church â€“ the 1829 Church is perched above the town and has noticeable stained glass, huge beams hauled by elephants from the palace of Tipu Sultan and the slabs & plaques donated by churchgoers; Rose garden, one of the largest in India and; the Wax Museum that houses life-size wax statues of Indian personalities; Thread Garden â€“ where around 150 species of plants from around the world are recreated with hand-woven thread. Keep in mind, Ooty is a great place to stock up on home-made chocolates and essential oils. Overnight in Ooty.</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> Coonoor
								</p>
								<p class="aj">Coonoor :  Situated at an altitude of 200 ft above the seal level and 17 Km froms Udhagamandalam, is the first of the popular Hill Stations. Coonoor is a small town with an equitable climate that has made it popular as a hill resort in its own right. The main attraction is the Sims Park, a small well-maintained Botanical Garden that houses several varieties of plants found missing in the other Hill Stations. View points and picnic spots around Coonoor include Lambs Rock, Lady Cannings Seat, Dolphins Nose, St.Catherine Falls, Lawâ€™s Falls, Ralliah Dam and Droog.<br />
Full day excursion to Coonoor (25 kms) visit tea plantations, Catherine falls, Dolphin's Nose, Sim's park, and various other viewpoints. Overnight Stay at Ooty.</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> Coorg
								</p>
								<p class="aj">Coorg or Kodagu is a district in Karnataka and Madikeri is the district headquarters. At an altitude of 1525 meters on Western Ghats, it is also known as the Scotland of India. Coorg is the most famous hill station in Karnataka. According to Puranas, Kodava is the redefined name of Krodhadesa meaning Land of Anger, said to have been inhabited by the Kodava tribe. Some historians believe that it is named after the River Cauvery. Coorg was under the Gangas rule during 9th and 10th centuries and Cholas in the 11th century followed by Hoysalas. Later Coorg was relatively independent under Haleri Rajas until British occupied the region in 1834. Coorg was a separate state before its merger with Karnataka in the year 1956.<br />
Coorg is the largest producer of Coffee in India. Also, it is one of the places with highest rainfall in India. The Kodagu district comprises different communities like Kodava, Tulu, Gowda and Moplah out of which the largest is the Kodava community, both economically and politically. The economy depends on agriculture, coffee plantations, forestry and tourism.<br />
<br />
Later proceed to visit Abbey falls-Tucked away between private coffee and spice estates, Abbey Falls offers a splendid backdrop for picnics. Madikeri Fort - The 19th century Madikeri fort with its stone ramparts now houses the prison, a temple, a chapel, a small museum, and assorted government offices, Omkareshwara Temple-Just a stone's throw away from the Madikeri Fort is the Omakareshwara Temple, built in 1820 and featuring a blend of red-tile roofed Kerela architecture and Islamic-style domes. Evening visit Raja Seat- is an enchanting picnic spot with a swathing in the nature's lap. A visitor to this spot is sure to enjoy the marvelous sight of Sun set and gorgeous valley and mountain ranges. Musical fountain has been attracting a large number of visitors to the garden. Return to hotel and overnight.</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 7:</b> Coorg
								</p>
								<p class="aj">Early breakfast proceed to Dubare elephant camp (to reach the place before 09.00Hrs) offer the 3 hour experience with Elephants consisting of elephant Grooming, feeding, elephant Ride & Coracle Ride,  later visit Cauvery Nisargadhama - is an island formed by river Cauvery and is used as a picnic spot island, with lush foliage of thick bamboo groves, sandalwood and teak trees and surrounded by the Cauvery river. The island is accessible through a hanging rope bridge. Lunch at Kushalnagar and later visit Bylakuppe - largest Tibetan settlement in South India. A beautiful Monastery with three large and imposing Golden Buddha statues and in a serene setting beckons you. The temple has 62 feet Buddha statues covered with gold plates is a wonderful sight anytime. Back to Hotel. Overnight Stay.</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 8:</b> Bangalore
								</p>
								<p class="aj">Bangalore, the capital city of Karnataka, founded in 1537 by a local Chieftain Kempe Gowda. Bangalore is special in every respect - a Salubrious Climate, Beautiful parks, Avenues, Old and New Buildings, Museum, Theatre, above all the Cultured People - a standing testimony for Secular INDIA.<br />
Proceed for half day city tour, visit Lalbagh - This expanse of greenery is one of India`s most beautiful botanical gardens. Bull temple - The gigantic image of the celestial bull, Nandi, which stands at 4.57 meters. in height, is a classic example of Dravidian architecture. Return to hotel and overnight Stay.</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 9:</b> Departure
								</p>
								<p class="aj">Drop At: Bangalore Railway Station.</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.travelect.co.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Mysore Ooty & Coorg 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="58157"/>
						</form>
						</div>
						
						";i:1;s:63:"Book Mysore Ooty & Coorg Tour - 8 Nights / 9 Days Tour Packages";i:2;s:136:"book mysore ooty & coorg tour - 8 nights / 9 days tour packages, valley tour packages, mysore, srirangapatna, ooty, kodagu tour packages";i:3;s:192:"Book Mysore Ooty & Coorg Tour - 8 Nights / 9 Days tour packages from El Travel Elect Pvt. Ltd - Get attractive 8 Nights / 9 Days Valley  tour packages for  Mysore, Srirangapatna, Ooty, Kodagu.";i:4;s:431:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Mysore, Srirangapatna, Ooty, Kodagu"        
		                 },
		      "description": "",
		      "name": "Mysore Ooty & Coorg Tour",
		      "telephone": "+91-9225503370"
		    }
		    </script>
			";i:5;N;}