a:6:{i:0;s:12385:"				<div class="h1"><h1>Khajjiar Chamba Tour Package</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.northindiatravel.in/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.northindiatravel.in/tour-packages.htm" title="Tour Packages">Tour Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>Khajjiar Chamba Tour Package</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">
						3 Nights / 4 Days 
						</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Destination Covered </td>
						<td class="p5px pl0px vat">Chamba, Dalhousie, Khajjiar, Pathankot</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.northindiatravel.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Khajjiar Chamba Tour Package - 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="39195"/>
						</form>
						</p>
						</td>
						</tr>
											</table>
					</td>
											<td class="p10px vat imgWidth150 w150px lh0">
						<div class="demo-wrap">
						<ul class="lsn m0px p0px" id="detailslider1">
															<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_11/307359/79061.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_11/307359/79061.jpg"  width="150" height="150"    alt="khajjiar" title="khajjiar" /></a></p></div></li>
																		<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_11/307359/79060.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_11/307359/79060.jpg"  width="150" height="150"    alt="Khajjiar Chamba Tour Package" title="Khajjiar Chamba Tour Package" /></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> Pathankot to Dalhousie
								</p>
								<p class="aj">Pick up Pathankot Railway Station see run way side seen to Move Dalhousie has been named after the British Governor - General of the l9th century, Lord Dalhousie. Surrounded by varied vegetation - pines, dodders, oaks and flowering rhododendron. Night Dalhousie.</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> Dalhousie to Khajjiar
								</p>
								<p class="aj">Morning After Breakfast See Run Way Side Seen To Move - KHAJJIAR: 23 kms from Dalhousie by road and 13 kms from Kalatop is the mini Switzerland of India at a height of 6400 ft. Hutchison writes, "Khajjiar is a forest glade of great beauty, 6400 feet above sea level".<br />
Khajjiar is often referred to as "Gulmarg of Himachal Pradesh".<br />
The lush green meadows are surrounded by thick pine and cedar forests. Grazing herds of sheep, goats and other milch cattle present a prefect pastoral scenery. There is a small lake in the center of the saucer shaped meadow which has in it a floating island. Much of the lake has degenerated into slush because of heavy silting during rains. Still the landscape of Khajjiar is picturesque and a photographer's delight. A little away from the lake is the temple of Khajji Nag belonging to 12th C. AD. In the mandapa of the temple one can see the images of the Pandavas and the defeated Kaurvas hanging from the roof of the circumambulatory path. The sanctum of the temple has been beautifully carved from wood. On 07-07-1992, Mr. Willy t. Blazer, Vice Counselor and Head of Chancery of Switzerland in India brought Khajjiar on the world tourism map by christening it "Mini Switzerlan". He also put a sign board of a yellow Swiss hiking footpath showing Khajjiar's distance from the Swiss capital Berne-6194 kms. Khajjiar is among the 160 locations in the world that bear topographical resemblance with Switzerland. The Counselor also took from Khajjiar a stone which will form part of a stone collage around the Swiss Parliament to remind the visitors of Khajjiar as Mini Switzerland of India.<br />
Night Dalhousie.</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> Dalhousie To Chamba
								</p>
								<p class="aj">Morning After Breakfast See Run Way Side Seen ,To Move Chamba Chamba, the land of antiquity, art and scenic beauty, is a wonder in itself for every visitor. Situated at the height of 996 m. above sea level on the south bank of the Ravi River, the ancient Pahari capital was founded in 920 A.D. by Raja Sahil Verma, who named it after his favourite daughter Champavati. Chamba valley is noted for the magnificence of it's scenery-touching the fringe of the Shivaliks and having three well-defined snowy ranges, the Dauladhar, constituting the outer Himalayas, the Pir Panjal or the mid Himalayas, and the Zanskar range or the inner Himalayas. Chamba's serene beauty makes it the ideal holiday retreat. The land of mystic serenity, enchanting vistas, refreshing air, lofty mountain passes and slopes, provides ample opportunities to nature lovers.<br />
Lakshmi Narayan IN Chamba<br />
Lakshmi Narayan Temple, Chamba Lakshmi Narayan Temple, which is the main temple of Chamba town, was built by Raja Sahil Verma in the 10th century AD. Built in Shikhara style, the temple consists of Bimana i.e. Shikhara and Garbh Griha with a small antralya. Lakshmi Narayana Temple has a mandapa like structure also. The wooden chhattries, the shell roof, atop the temple were in response to the local climatic conditions as a protection against snowfall. <br />
Bhuri Singh Museum: A veritable storehouse of exquisite paintings of the famous Kangra and Basholi schools, as well as a mass of epigraphical material on the history of Chamba. Also housed in the museum are woodcarvings, ancient manuscripts and murals from Rang Mahal. more.<br />
Chaugan, Chamba : This public promenade situated in the heart of the town is a grassy maidan less than one-kilometer in length and about seventy-five meters wide is a busy local trading center for villagers from the surrounding hills. Each year Chaugan is the site for the 'Minjar' procession, a fair that lasts a week and comprise of large number of sports and cultural activities. Church of Scotland, Chamba The Presbyterian Church and Mission House of the Church of Scotland lie opposite the Museum. Night Dalhousie.</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> Dalhousie Local Sightseeing to Pathankot
								</p>
								<p class="aj">St. Jonh's Church:<br />
The church is approximately 2 km from the main bus stand and it stands on the Gandhi chowk. Rev. John H. Pratt came to Dalhousie in 1863 and inspired the Christian community to build a permanent church building at this place.<br />
<br />
Panchpula:<br />
Panchpula is almost 3 km. there is a very beautiful monument erected at panchpula where several streams meet at one point. That is Samadhi monument was built in memory of great sardar Ajit Singh. <br />
<br />
Dainkund:<br />
Dainkund is only 10 km. one can enjoy the beautiful view of the hills, with the rivers Ravi, Beas and chenab threading through the distance. A Devi Temple is also situated on the hill.<br />
<br />
Kala Top Wildlife Sanctuary<br />
The wildlife reserves, provides shelter to various species of flora and fauna. Kala top is a pleasant getaway, only 5 km from Dalhousie, with a panoramic view and a forest rest house. Kala Top is situated at an altitude of 8000 ft and 10 km away from G.P.O jquare. It has a variety of wildlife such as Deer, Bears & Leopards. <br />
<br />
Bakrota Bakrota is famous in producing Tibetan carpets. From the Bakrota round also you can get a very good view of mountains. Round means a walking circuit around the hills, very popular among the residents. It is less than 5 km from the town center.<br />
<br />
Panchpula(3 km) <br />
This is picturesque spot where a stream feeds a series of pools. A monument has been built here in memory of the freedman fighter, Sardar Ajit Singh Subhash <br />
<br />
Baoli (1 km) <br />
It was at this enchaining spot surrounded by majestic trees, that Subhash Chandra Bose spent a lot of time in 1937, contemplating and mediating. <br />
<br />
Bara Pathar (4 km)<br />
There is a small temple amidst a thick forest. Kalatop(10 km) This wild life sanctuary is home to the 'ghoral' and Himalayan black bear.After This Visit See Run Way Side Seen, To Back Drop Pathankot.</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>
												</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.northindiatravel.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Khajjiar Chamba Tour Package - 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="39195"/>
						</form>
						</div>
						
						";i:1;s:67:"Book Khajjiar Chamba Tour Package - 3 Nights / 4 Days Tour Packages";i:2;s:143:"book khajjiar chamba tour package - 3 nights / 4 days tour packages, valley tour packages, chamba, dalhousie, khajjiar, pathankot tour packages";i:3;s:175:"MD Tour Travels offers Khajjiar Chamba Tour Package - 3 Nights / 4 Days tour package, budget Valley tour packages for Chamba, Dalhousie, Khajjiar, Pathankot at exciting price.";i:4;s:438:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Chamba, Dalhousie, Khajjiar, Pathankot"        
		                 },
		      "description": "",
		      "name": "Khajjiar Chamba Tour Package",
		      "telephone": "+91-9646469331"
		    }
		    </script>
			";i:5;N;}