a:6:{i:0;s:6088:"				<div class="h1"><h1>Darjeeling Tour</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.grihapraveshtravels.in/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.grihapraveshtravels.in/tour-packages.htm" title="Tour Packages">Tour Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>Darjeeling 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">
						1 Nights / 2 Days 
						</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Destination Covered </td>
						<td class="p5px pl0px vat">Darjeeling</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.grihapraveshtravels.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Darjeeling 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="97052"/>
						</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/423905/164174.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_15/423905/164174.jpg"  width="150" height="150"    alt="Darjeeling Tour" title="Darjeeling Tour" /></a></p></div></li>
															</ul>
						</div>
						</td>
											</tr>
					</table>
					</div>
					<br />
					
					Darjeeling, known as the queen of the Himalayas is situated in the Northern Part of the Indian state of West Bengal. The city is located in the Siwalik Range of the lesser Himalayas and is famous for its tea industry. The city is also famous for the Darjeeling Himalayan Railways which is one among the UNESCO World Heritage List. There are a large number of tourist destinations in Darjeeling making this place a wonderful holidaying experience. Tourist places in india.com offers you complete guidance on all that you want to know about Darjeeling. <br />
<br />
To the east, a dull orange sun emerged painting the sky with brilliant strokes of magenta, gold, orange and fuchsia. The snow capped Everest, Kabru, Kanchenjunga, Jannu and other peaks slowly emerge from slumber to start a new day. The sun worshippers gasp at the magnificent sight. As the fog lifts in the slowly penetrating sun, the town gradually comes alive. Amidst brewing of tea, the sing-song Gorkhali which is the local dialect, rises and falls like music.<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>~^#^~~^#^~<ul>
	<li>Average Mean Annual Temperature: Max 14.9&deg;C and Min 8.9&deg;C&gt;</li>
	<li>Rainfall : 3092 mm</li>
	<li>Clothing: light woolen in summer and heavy woolen in winters.</li>
</ul>

<p><strong>General Information</strong><br />
Area : 11.44 Sq. Km (4.4 Sq miles)<br />
Elevation : 7,000 ft. or 2,134 meters<br />
Telephone no :&nbsp;&nbsp;Country Code: 91 ::: City Code: 0354<br />
Climate :&nbsp;&nbsp;SUMMER:<br />
Min: 8.5 degrees C<br />
Max: 14.8 degrees C<br />
Annual Rainfall :&nbsp;&nbsp;320 cm (126 inches)<br />
Best Tourist Season:&nbsp;&nbsp;April to Mid-June Mid September to November<br />
Best Mountain Views :&nbsp;&nbsp;Mid Sept. - Mid Dec.<br />
Recommended Clothing :&nbsp;&nbsp;Light woolens and tropical in summer<br />
(umbrellas and raincoats are useful) and heavy woolen in winter.<br />
Languages Spoken :&nbsp;&nbsp;English, Bengali, Gorkha, Nepali and Tibetan												</div>
												
						<div class="ac mb10px">
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.grihapraveshtravels.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Darjeeling 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="97052"/>
						</form>
						</div>
						
						";i:1;s:54:"Book Darjeeling Tour - 1 Nights / 2 Days Tour Packages";i:2;s:102:"book darjeeling tour - 1 nights / 2 days tour packages, valley tour packages, darjeeling tour packages";i:3;s:154:"Book Darjeeling Tour - 1 Nights / 2 Days tour packages from Grihapravesh Travels - Get attractive 1 Nights / 2 Days Valley  tour packages for  Darjeeling.";i:4;s:1416:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Darjeeling"        
		                 },
		      "description": "Darjeeling, known as the queen of the Himalayas is situated in the Northern Part of the Indian state of West Bengal. The city is located in the Siwalik Range of the lesser Himalayas and is famous for its tea industry. The city is also famous for the Darjeeling Himalayan Railways which is one among the UNESCO World Heritage List. There are a large number of tourist destinations in Darjeeling making this place a wonderful holidaying experience. Tourist places in india.com offers you complete guidance on all that you want to know about Darjeeling. 

To the east, a dull orange sun emerged painting the sky with brilliant strokes of magenta, gold, orange and fuchsia. The snow capped Everest, Kabru, Kanchenjunga, Jannu and other peaks slowly emerge from slumber to start a new day. The sun worshippers gasp at the magnificent sight. As the fog lifts in the slowly penetrating sun, the town gradually comes alive. Amidst brewing of tea, the sing-song Gorkhali which is the local dialect, rises and falls like music.",
		      "name": "Darjeeling Tour",
		      "telephone": "+91-9800718321"
		    }
		    </script>
			";i:5;N;}