a:6:{i:0;s:14465:"				<div class="h1"><h1>Kulu Manali Delhi Special 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>Kulu Manali Delhi Special 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">New Delhi, Kullu</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="Kulu Manali Delhi Special 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="68427"/>
						</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/124577.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_15/434756/124577.jpg"  width="150" height="150"    alt="Kulu Manali Delhi Special Tour" title="Kulu Manali Delhi Special 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.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="Kulu Manali Delhi Special 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="68427"/>
						</form>
						</div>
						
						";i:1;s:69:"Book Kulu Manali Delhi Special Tour - 7 Nights / 8 Days Tour Packages";i:2;s:123:"book kulu manali delhi special tour - 7 nights / 8 days tour packages, valley tour packages, new delhi, kullu tour packages";i:3;s:160:"Js Tours and Travels offers Kulu Manali Delhi Special Tour - 7 Nights / 8 Days tour package, budget Valley tour packages for New Delhi, Kullu at exciting price.";i:4;s:418:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "New Delhi, Kullu"        
		                 },
		      "description": "",
		      "name": "Kulu Manali Delhi Special Tour",
		      "telephone": "+91-9227522144"
		    }
		    </script>
			";i:5;N;}