a:6:{i:0;s:14588:"				<div class="h1"><h1>Delhi - Agra - Shimla - Kulu - Manali Tour</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.jstourstravels.com/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.jstourstravels.com/tour-packages.htm" title="Tour Packages">Tour Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>Delhi - Agra - Shimla - Kulu - Manali 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">Chandigarh City, New Delhi, Kullu, Manali, Shimla, Agra</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.jstourstravels.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Delhi - Agra - Shimla - Kulu - Manali 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="65607"/>
						</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/434756/120855.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_15/434756/120855.jpg"  width="150" height="150"    alt="Delhi - Agra - Shimla - Kulu - Manali Tour" title="Delhi - Agra - Shimla - Kulu - Manali 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> Arrive Delhi/ Agra (210 kms- 4.5hrs)
								</p>
								<p class="aj">Arrive Delhi airport and drive to Agra. Upon arrival transfer to the hotel. Later visit Emperor Akbar the Great commissioned the Agra Fort that is also sometimes called Red Fort of Agra. During the reign of emperor Jahangir, the capital was briefly shifted to Lahore but Agra became the seat of Mughal capital one again in the reign of Akbar. Akbar became emperor in 1556 and when he consolidated himself sufficiently, he started the construction of Agra Fort in the year 1665. The fort was completed in the year 1671.Agra Fort is among the finest examples of the fusion architecture that has dominated the Mogul period. The assimilation of these different styles has given the buildings within the fort a distinctive look. To name a few, for example, the Jahangir Palace built by Akbar is the most magnificent blend of Persian and local style whereas Divan-e-Aam mixes subtleness of Turkish exteriors with the complex pattern of Persian architecture. Later do shopping at local market. Overnight at 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> Agra / Delhi (210 kms- 4.5 hrs) Taj Mahal closed on every Friday
								</p>
								<p class="aj">Enjoy Sunrise at Taj Mahal - Seventh wonder of the world. Taj Mahal of India - "the epitome of love", "a monument of immeasurable beauty". The beauty of this magnificent monument is such that it is beyond the scope of words. The thoughts that come into the mind while watching the Taj Mahal of Agra is not just its phenomenal beauty, but the immense love which was the reason behind its construction. Mughal Emperor Shah Jahan got this monument constructed in the memory of his beloved wife Mumtaz Mahal, with whom he fell in love at the first sight. The very first sight of the Taj Mahal, the epitome of love and romance leaves one mesmerized. Later return back to hotel and take breakfast at the hotel. After breakfast, check-out from hotel and drive to Delhi. Upon arrival transfer to the hotel. Later drive to take a combined tour of Old Delhi and New Delhi. The Older part of Capital takes you to the Red Fort with its Pearl Mosque and exquisite audience halls, Jama Masjid Mosque, with its marble domes and slender minarets; Raj Ghat (where Mahatma Ghandhi cremated). The Modern area takes you on a drive along Rajpath, New Delhi's broadest avenue, and see The House of Parliament, the diplomatic enclave and the President's House - The Royale Residency of the former viceroys and now the President of India. Visit the India Gate and The Qutub Minar built in the 12th century. Evening drive back to Hotel. Overnight at 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> Delhi/ Shimla (390 kms- 8.5 hrs)
								</p>
								<p class="aj">After breakfast, check-out from hotel and drive to Shimla. Upon arrival transfer to the hotel. Rest of the day is free at leisure. Overnight at 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> Shimla
								</p>
								<p class="aj">After breakfast, and enjoy the city tour. Kufri -a tiny hill station. It is famous for its beautiful environs and the cool refreshing atmosphere that pervades it. In summers, travelers can enjoy the panoramic view of the surrounding verdant valleys and snow-capped peaks.Himalayan Aviary - Himalayan Aviary or the Himalayan Bird Park is a natural habitat of numerous species of birds found in Himachal such as Himalayan Monal, Pheasants, Peafowls and National Bird of India, the Peacock.Jhaku Temple - Dedicated to Lord Hanuman, this temple is at an altitude of 2,455m near the highest point of Shimla ridge. It offers a fine view over the surrounding valleys, out to the snowcapped peaks, and over the town itself. The temple is a 45-minute walk from the Mall. Jakhu is a vantage point for witnessing the changing skyline as the sun rises or sets. Sankat Mochan: On Shimla-Kalka road is the famous "Lord Hanuman" temple. Situated at an altitude of 1,975m, it commands an excellent view of Shimla town. Later return back to hotel. Overnight 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> Shimla / Manali (290 kms- 06 hrs)
								</p>
								<p class="aj">After breakfast, check-out from hotel and drive to Manali. Upon arrival transfer to the hotel. Rest of the day is free at leisure. Overnight at 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> Manali Rohtang Pass (Snow Point ) closed on every Tuesday
								</p>
								<p class="aj">After breakfast, visit Rohtang Pass (Snow Point) - Situated about 51 km from Manali town at an altitude of 4,111 meters (13,400 ft.) on the highway to Keylong, is Rohtang Pass. Here one sees the majesty of the mountains at its height and splendour. At the top of the Pass the air seems to glitter against the snow as you look down over herringboned ridges into the Lahaul Valley. There is a beautiful Doshohar Lake left to the pass, where pilgrims go every year on the auspicious day of 20th Bhadon. This is the only access to Lahaul valley. The pass is open from June to September each year although trekkers can across the pass a little earlier. Rohtang pass is the gateway to Lahaul valley just as Zojila pass in between Kashmir valley and Ladakh. Return back to the hotel.Take some rest and later visit:-Hadimba Temple - Built in 1553, this four-story wooden Hadimba or Dhungiri temple is famous for its exquisitely caved doorway. It is located in the middle of a forest called the Dhungiri Van Vihar.. Jagatsuhk - About 6 kms. from Manali is the famous Shiva Temple in "shikara" style. It houses temples dedicated to Lord Shiva and Sandhya Gayatri. Vashist Hot Water Springs and Temple (3 kms) - Across the Beas river is Vashist, a small village with natural sulphur springs. Modern bathhouses, with Turkish-style showers, have the hot water piped into them for the convenience of the visitors who come here to benefit from the medicinal properties. There is a pyramidal stone temple dedicated to Vashist Muni and another Temple of Lord Ram. Evening shop at the Mall Road.Return back to the hotel. Overnight 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 7:</b> Manali / Chandigarh (290 kms- 07 hrs)
								</p>
								<p class="aj">After breakfast, check-ouit from hotel and drive to Chandigarh, en-route visit Kullu:- Rafting has captured great interests of tourists visiting Manali & Kullu. For adventure enthusiasts rafting has a splashing promise to deliver. The mighty river Beas along with its tributaries offer irresistible excitement to adventure lovers. The fascinating rafting sites of Mohal, Raison & Katrain offer wonderful grades & fun.Later drive to Chandigarh. Upon arrival transfer to the hotel. Rest of the day is free at leisure. Overnight at 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 8:</b> Chandigarh / Delhi Depart (235 kms- 5.5 hrs)
								</p>
								<p class="aj">After breakfast, checkout from hotel and enjoy the city tour. You can visit: Rock Garden: Chandigarh rock garden is an epitome of creativity and innovation. It is a unique garden that consists of various art objects. But the best part about the rock garden is that each of its artwork has been made by using industrial & urban waste. It is located in Sector 1 between the Capitol Complex and Sukhna Lake. The credit for laying its foundation goes to Nek Chand, who was the then Road Inspector in the Engineering Department of Chandigarh Capital Project. Rose garden of Chandigarh, India is the largest of its kind in Asia. Named after India's former President, Zakir Hussain, this beautiful garden was set up in 1967 with the support of Chandigarh's first Chief Commissioner, late Dr M S Randhawa. Chandigarh rose garden contains more than 17,000 plants. There are nearly 1,600 varieties of roses over there. It is a spacious garden covering an area of 27 acres. Later drive to Delhi airport to board the flight for onwards the journey with fond memories of trip.<br />
<br />
Tour Ends. (All distances and timings are approx. )</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>
															</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.jstourstravels.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Delhi - Agra - Shimla - Kulu - Manali 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="65607"/>
						</form>
						</div>
						
						";i:1;s:81:"Book Delhi - Agra - Shimla - Kulu - Manali Tour - 7 Nights / 8 Days Tour Packages";i:2;s:174:"book delhi - agra - shimla - kulu - manali tour - 7 nights / 8 days tour packages, valley tour packages, chandigarh city, new delhi, kullu, manali, shimla, agra tour packages";i:3;s:226:"Book Delhi - Agra - Shimla - Kulu - Manali Tour - 7 Nights / 8 Days tour packages from JS Tours and Travels - Get attractive 7 Nights / 8 Days Valley  tour packages for  Chandigarh City, New Delhi, Kullu, Manali, Shimla, Agra.";i:4;s:469:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Chandigarh City, New Delhi, Kullu, Manali, Shimla, Agra"        
		                 },
		      "description": "",
		      "name": "Delhi - Agra - Shimla - Kulu - Manali Tour",
		      "telephone": "+91-9227522144"
		    }
		    </script>
			";i:5;N;}