a:6:{i:0;s:14217:"				<div class="h1"><h1>Golden Chariot Pride of the South Tour</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.indianwanderlusttravels.com/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.indianwanderlusttravels.com/holiday-packages.htm" title="Holiday Packages">Holiday Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>Golden Chariot Pride of the South 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">
						7 Nights / 8 Days 
						</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Destination Covered </td>
						<td class="p5px pl0px vat">Bangalore, Hassan, Mysore, Hampi, Goa City, Chamarajanagar, Kabini, Mandya</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.indianwanderlusttravels.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Golden Chariot Pride of the South 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="113540"/>
						</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/481497/185749.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_17/481497/185749.jpg"  width="150" height="150"    alt="Golden Chariot Pride of the South Tour" title="Golden Chariot Pride of the South 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> Bangalore (Monday)
								</p>
								<p class="aj">The journey "Pride of The South" starts with the pride of south and the capital of Karnataka. This third largest city of India is, needless to say, ever-bustling and is bestowed with the Victorian architectural marvels and an all-year-round pleasant weather.<br />
<br />
After you reach Bangalore, check- in at Taj West End by 1600 hours. Enjoy a relaxing strolling in the gardens of the Taj. 1700 hours Hi-Tea is scheduled in the hotel lawns. At 1730 hours, the Golden Chariot representatives will present detailed brief of the tour.A graceful cultural dance session will be presented at 1800 hours.A visit to ISKCON is arrangednext. At 2015 hours, Golden Chariot staff will welcome in the Yeshwanthpur railway station. Check in to your coaches and relax. At 2100 hours the train leaves for Mysore.</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> Kabini – Bandipur (Tuesday)
								</p>
								<p class="aj">On day 2, enjoy the breakfast served at 0800 hours at 1000 hours leave for the Amba Villas Mysore Palace. Explore the enticing palace. At 1115 hours board the coach that awaits you to take you to Kabini.Leave for a wildlife safari at Kabini/Bandipur. By 1315 hours, you reach Bandipur National Park, have lunch at a jungle lodge. The former hunting grounds of the Maharaja of Mysore, this is one of the most popular wildlife reserves of the Southern region of the country. Later, at 1545 hours, embark on a jungle safari spotting around 200 avifauna species along with animal species such as Indian elephants, tigers,gaurs, sloth bears, four-horned antelopes, Indian rock pythons, dholes and muggers. By 1945 hours you will be back. Settled down for the screening of awildlife movie. Dinner will be served and camp fire will be set as you will have an overnight stay at the lodge.</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> Mysore (Wednesday)
								</p>
								<p class="aj">On day 3, start the day at 0600 hours for a scenic boat ride on Kabini River, a retreat for bird watchers. Get mesmerized d melodious symphony of birds. At 0800 hours assemble for a scrumptiousbreakfast will be served at the Lodge. At 0930 hours check out and proceed towards your luxury ride. At 1130 hours, board the Golden Chariot. The coach leaves for Mysore.<br />
<br />
Savor a delicious lunch on the train served at 1300 hours. By 1530 hours you embark on thesightseeing and shopping in and around Srirangapatnam. Explore the Tipu museum, Dariya Daulat and fort. Go for a shopping tour in CIE. Cure your exhaustion with graceful cultural dance at 1900 hoursat 5 stars Palace Hotel. A scrumptious dinner awaits after the cultural program. At 2200 hours return back to the Golden Chariot.</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> Hassan (Thursday)
								</p>
								<p class="aj">On day 4 of the tour, the train leaves from Mysorefor Hassan at 0500 hours. Breakfast will be served as 0730 hours in the luxury train. On arrival in Hassan, at 0900 hours leave for visiting the renowned Jain pilgrimage site of Shravanabelagola. Shravanabelagola is also known as one of the Seven Wonders of India. The site also contains world's largest monolithic statue- a statue of Gommateshvara Bahubali that dates back to 978-993 AD. There will be 700 steps to be climbed in order to reach the architectural gem, those who are willing can join and others can stay at the Golden Chariot and rejuvenate in spa, gym or restaurants.<br />
<br />
Lunch will be served at 1300 hours. Return to the Golden Chariot for the meal. At 1445 hours, proceed towards the temple sites of Halebid and Belur. The magnificent temple complexes were erected during the 16th century.These temples are the finest example of Hoyasala architecture with beautiful intricate carvings.<br />
<br />
At 1915 hours return back to the Golden Chariot. Enjoy the lavish amenities of your ride.Dinner will be served at 2100 hours.The train leaves for Hospet as you are done with dining.Delight in a relaxing night.</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> Hospet (Friday)
								</p>
								<p class="aj">On day 5, start the day with a hearty breakfast aboard the train served at 0700 hours.De-board the Golden Chariot to explore the prime attractions of Hampi. The architectural marvel awaits you in Hospet and Hampi. Hampi is magical. The beautiful landscaped colored with a tinge of beige and rocks strewn in the scenery grasps you in its spell. Start the tour with alluring attractions of Hemakuta hill and Virupaksha templewhich made its way to the list of World Heritage sites. Othersightseeing includesthe Royal Enclosure, a fortified campus now in ruins. The Hazara Rama Temple is dedicated to Lord Vishnu with beautiful 15th century artworks on their walls.<br />
<br />
At 1300 hours get back to the train for lunch and some leisure time. Later, proceed to the last visit of the day. Explore the magnificence ofthe Vittala temple. The 16th century wonderful structure, dedicated to Lord Vittala.The treasured Stone Chariot which inspired the luxury train, the Golden Chariot.The sunset view from the banks of Tungabhadra River is enchanting and rejuvenating, after this you will hop aboard and have dinner.<br />
<br />
Leave for Hospet railway station at 1800 hours. Board the train and indulge in its lavish facilities. DinnerI served at 2000 hours. Enjoy the 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 6:</b> Badami (Saturday)
								</p>
								<p class="aj">On the day 6, Golden Chariot moves towards Badami. At 0730 hours enjoy a scrumptious breakfast. De-board for sightseeing at Badami.As its name says, Badami gets is name from the color of Badaam (Almond).The Red-stoned edifices and cliffs, totally sets the scene to make the name Badami aptly suitable. In today's sightseeing, visit Pattdakal and Badami caves. Badami's popular attractions are beautiful carved temples dating to 6th to 8th centuries.These caves are the finest example of Badami Chalukya Architecture.Pattadakal is a World Heritage Site, containing several temples and other monuments. Experience the centuries of history lingering in the ambiance.<br />
<br />
After this, hop aboard as the lunch is served and the train leaves for Goa. While on-board, indulge yourself in various available facilities in the Golden Chariot.Dinner and night stay aboard the train.</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> Goa (Sunday)
								</p>
								<p class="aj">Have breakfast served at 08000 hours. Leave for exploring Goa by 1000 hours. The blessed environs of Sun, Sand and Sea is tantalizing. The sightseeing of Goa includes the famous churches of Old Goa. Start with a visit toBasicila of Bom Jesus and Sola Souto Maior- an Old Portuguese house. Later, shop for souvenirs at the markets at the local emporium. At 1400 hours proceed to luxury resort for a sumptuous lunch. There are options to enjoy swimming or an Ayurvedic massage session at the resort. By 1730 hours, leave from the resort for the Golden Chariot. Dinner on-board at 2000 hours as the train proceed towards Bangalore.</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 (Monday - Return)
								</p>
								<p class="aj">As you amassed different moments of the journey to create a fairytale of your own, you will receive warm farewell from the Golden Chariot team in Bangalore.<br />
<br />
Have breakfast on-board the train. Arrive at Bangalore's Yeshwantpur Railway Station at around. 1100 hours. Complete the farewell formalities and de-board the train.</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.indianwanderlusttravels.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Golden Chariot Pride of the South 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="113540"/>
						</form>
						</div>
						
						";i:1;s:77:"Book Golden Chariot Pride of the South Tour - 7 Nights / 8 Days Tour Packages";i:2;s:189:"book golden chariot pride of the south tour - 7 nights / 8 days tour packages, valley tour packages, bangalore, hassan, mysore, hampi, goa city, chamarajanagar, kabini, mandya tour packages";i:3;s:231:"Indian Wanderlust Travels offers Golden Chariot Pride of the South Tour - 7 Nights / 8 Days tour package, budget Valley tour packages for Bangalore, Hassan, Mysore, Hampi, Goa City, Chamarajanagar, Kabini, Mandya at exciting price.";i:4;s:484:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Bangalore, Hassan, Mysore, Hampi, Goa City, Chamarajanagar, Kabini, Mandya"        
		                 },
		      "description": "",
		      "name": "Golden Chariot Pride of the South Tour",
		      "telephone": "+91-9910202783"
		    }
		    </script>
			";i:5;N;}