a:6:{i:0;s:18385:"				<div class="h1"><h1>Delhi Kullu Manali Dharamshala Tour</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.majestickullumanali.com/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.majestickullumanali.com/tour-packages.htm" title="Tour Packages">Tour Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>Delhi Kullu Manali Dharamshala 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">Tour Code </td>
						<td class="p5px pl0px vat">HIMP1041</td>
						</tr>
												<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">Kullu, Manali, Dharamshala</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Price (Starting From) </td>
						<td class="p5px pl0px vat">
						INR 9999 Per Person						</td>
						</tr>
												<tr>
						<td></td>
						<td>
						<p>
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.majestickullumanali.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Delhi Kullu Manali Dharamshala 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="24459"/>
						</form>
						</p>
						</td>
						</tr>
											</table>
					</td>
										</tr>
					</table>
					</div>
					<br />
					
					Personal expenses<br />
Train/Air fare<br />
Govt Service Tax 3.09%<br />
Guide<br />
Entry Charges01-0431-03<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>Transport</li>
															</ul>
						<br />
												<p class="large b mb5px dif">Exclusions :</p> <ul><li>Personal expenses</li><li>
Train/Air fare</li><li>
Govt Service Tax 3.09%</li><li>
Guide</li><li>
Entry Charges</li></ul><br />
											
						<p class="large b mb5px dif">Terms &amp; Conditions :</p>~^#^~~^#^~<p>The word &ldquo;Agency&rdquo; used in terms &amp; conditions means Majestic Kullu Manali&rdquo;All information given in this brochure is based on the information available at the time of publication. We reserve the right to change any brochure information before or after your booking the tour due to any events beyond our control. In case if we are aware of any changes sufficiently in advance we will notify you at the time of booking, otherwise our Tour Manager or Local representative will inform you of the changes. Major road works may necessitate route changes in the itineraries, the restaurants may close or change management and all of these may cause us to make changes in the itineraries. Where we may know of these sufficiently in advance, we will notify you, otherwise our Tour Managers or local representative will inform you of the changes on the spot. We are travel and holiday organizers only.We neither control nor operate any airline, nor do we own or control any shipping agency, coach or coach agency, hotel, transport or any other facility or service mentioned in this brochure. We take care in selecting all the ingredients in your holiday; but because we only select and inspect them and have no control in running of them,we cannot be responsible for mechanical fault or any injury, death, loss or damage, which is caused by the act or fault of the management or employees of any hoteliers, airlines, shipping company, coach owner/ transport operator who are the agency` s independent contractors arising outside our normal selection and inspection process. There is no Contract between the Agency and the client until the Agency has received the initial deposit amount per person as specified for each tour package. The full payment must be received in accordance with procedures laid down under Payments Terms.If not paid in that time,the agency reserves the right to cancel the booking with consequent loss of deposit and apply scale of cancellation charges as mentioned in the cancellation policy hereunder. And the agency reserves the right to terminate the Contract after acceptance of the deposit but prior to the Commencement of Tour without assigning any reason whatsoever.In the event, the Agency terminates the Contract; the Agency shall refund the initial deposit amount without payment of any interest. To amend, alter, vary or withdraw any tour, holiday, excursion or facility it has advertised or published or to substitute an Independent Contractor of similar class if it is deemed advisable or necessary. In either case, the Agency shall not be liable for any damage, additional expense, or consequential loss suffered by the Clients or for any compensation claims made. It is clear understanding between either parties that any loss arising on account of cancellation of flight / train / bus tickets booked by the Clients; either through the Agency or on his/her own or through a third party; the Agency shall not be liable for such losses or additional expense, or consequential loss suffered by the Clients. No person other than the Agency, in writing, has the authority to vary, add, amplify or waive any stipulation, representation, term or condition in this brochure. In the event of the Agency exercising its rights to amend or alter any of the services as mentioned in the itinerary, after such tour or holiday has been booked, the Client shall have the right: To continue with the tour or holiday as amended or altered. To accept any alternative tour or holiday which the agency may offer. In either of these above cases the Client shall not be entitled to, or the Agency shall not be liable to the Client for any damage. Additional expense, consequential loss suffered by him or to pay any amount as refund.

<p>&nbsp;

<p><strong>HEALTH &amp; SAFETY</strong> The Agency shall in no circumstances what so ever will be liable to the Client or any person for :- Any death, personal injury, sickness, accident, loss, delay, discomfort, increased expenses, consequential loss and / or damage or any misadventure howsoever caused Any act, omission, fault or Independent Contractor or other person or be any servant or agent, employed by them who may be engaged or concerned in the provision of accommodation, refreshment, carriage facilities or service for the Client or for any person travelling with him howsoever caused. The temporary or permanent loss of or damage to baggage or personal effects howsoever caused In this condition the expression &ldquo;Howsoever caused&rdquo; includes negligence on the part of any person. No liability on the part of the Agency arising in any way out of this Contract in respect of any tour, holiday, excursion facility shall exceed the total amount paid or agreed to be paid for the tour holiday, and shall in no case include any consequential loss or additional expense whatsoever. If the Client has any complaint in respect of the services provided by any of the Independent Contractors, the Client shall immediately notify the same in writing to the Independent Contractor and a copy there of should be handed over to the Tour Manager of the Agency in order to enable the Agency to take up the matter with the Independent Contractor so that in future other Clients do not face the same difficulty. Any claim or complaint by the Client must be notified to the Agency in writing within 7 days of the end of this holiday tour. No claim notified to this Agency beyond this period will be entertained and the Agency shall incur no liability whatsoever in respect thereof. It is hereby declared that the immunities provided under this Contract shall be available to the Agency` s managers, including Tour managers, employees, servants and agents but not to the Independent Contractors selected by the Agency. Each of this condition shall be severable from the other end if any provision be invalid, illegal or unenforceable. The remaining provisions shall nevertheless have full force and effect.

<p><strong>INSURANCE</strong> The tour cost does not include the costs towards the insurance premium. Hence, it is advisable that the clients get insurance cover at their own costs. However, please note that the Client has to deal directly with the insurance providing company in case of settlement of any claims what so ever. (We don&rsquo;t have any insurance policy scheme hence if the guest required the insurance policy they have to directly deal with insurance Company at their own.)

<p>&nbsp;

<p><strong>FORCE MAJORED </strong>Acts of god (including exceptional adverse weather conditions), earthquake, fire , war (declared or undeclared), invasion, rebellion, revolt, riot, civil commotion, civil war, nuclear fission, strike, act(s) of omission/commission by any concerned government(s), or government agencies, judicial or quasi judicial authorities, occurrence of any event can force the Company to change or extended. Hence any additional expenditure occurred due to the above reasons the same will be borne by the passengers.

<p>&nbsp;

<p><strong>MEALS MENU</strong> The menus are pre-set menus provided for breakfast/lunch/dinner on the tour as mentioned under each Tour itinerary as printed in our brochure. We cannot process a special meal nor do we guarantee the special diet to the customer. We however reserve the right to change the meal arrangement if circumstances make it necessary to do so. In the event that a tour participant wakes up late and misses the breakfast offered to him and in the event that the tour participant is out on his own and reaches late and misses lunch/ dinner, then no claim can be made for the meal which he has missed and not utilized.

<p>&nbsp;

<p><strong>ITINERARY CHANGES</strong> For the comfort and convenience of our passengers, we will sometimes reverse the direction, or slightly amend the itinerary. We will try to advise you of these amendments, prior to the start of the tour or on tour. In the event that a tour participant misses on any part of the sightseeing tour or any such tour due to delay on his part, he will not be entitled to claim refund of the same.

<p>&nbsp;

<p><strong>HOTELS</strong> We have mentioned the names of the Hotels for each tour, we reserve the right to change the same due to unavoidable circumstances. In that case we may provide alternative, similar accommodation for which we are not liable to pay any refund. We will not be responsible or liable in case of loss of property or life at the Hotel. Similarly any damages caused to the hotel rooms during your stay, shall be payable by the Clients and the agency will not be liable for the same.

<p>&nbsp;

<p><strong>TRANSPORT / COACH /SITTING</strong> We use Deluxe 2 X 2 Luxury Coaches or vehicles such as Tempo Traveller,Tata Winger,Chevrolet Tavera,Mahindra Scorpio,Toyota Qualis,Tata Sumo as per the availability of vehicles and actual size of the group. In case of Coach / Mini coach / Tempo Traveller,the seat numbers are allocated on a first come first serve basis, as per the booking date and the same will remain same throughout the tour. Our tour manager / local representative will take reasonable care of your luggage but if you are carrying any high value items on the coach, we advise you not to leave them behind when you leave the coach. We will not be responsible or liable in case of theft or robbery of the said items from the coach. All baggage and personal effects are at all times and under all circumstances your responsibility. Any damages caused to the hotel rooms / coach during your stay, shall be payable by the Clients and the Agency will not be liable for the same. The drivers of the vehicles are bound by specific rules like maximum driving hours within a day / during a week, rest period per day / week, etc. Clients will have to strictly adhere to the prescribed timetable for the day so that the driver can complete the travel. In case, any of the sightseeing schedules is missed due to delays caused by the client, the same will not be refunded to the client under any circumstances. Vehicle will be provided as per group size.

<p>&nbsp;

<p><strong>TRANSFER FROM ONE TOUR TO ANOTHER </strong>A transfer from one tour to another of the originally booked tour will be treated as a cancellation on that tour; thereby attracting the cancellation charges as stated in these terms and a fresh booking on another.

<p>&nbsp;

<p><strong>BOOKING &amp; PAYMENT CONDITIONS</strong> For booking confirmation, need to pay 50% amount in agency account by Cheque / Cash / Net banking in our agency account. Remaining amount should be paid at the time of check in at hotel. PREPONE AND POSTPONE For postpone / pre-pone of tour packages are to be communicated in written and need to be inform us at least 7 days prior of tour date. INR 3000/- will be charged extra for prep-one/postpone.

<p>&nbsp;

<p><strong>AMENDMENTS / CANCELLATIONS </strong>If the Client is willing to amend or cancel his / her booking because of whatsoever reasons including death, accident, illness, or any other personal reasons including non-payment of the balance payment, the Agency is liable to recover Cancellation charges from the Client. All cancellations are to be communicated in written and advance amount is non-refundable, besides the forfeiture of the deposit amount of the tour, a further charge will be levied as follows :- 30 days prior to departure of the tour, advance amount is non refundable, advance will be charged. 30 days to 15 days prior to departure of the tour 50% of total tour cost. 14 days to 07 days prior to departure of the tour 75% of total tour cost. 07 days to 01 days prior to departure of the tour 100% of total tour cost. There will be no refund for NO SHOWS Any amendment in the original booking has to be given to us in writing. All changes will be processed only after the receipt of the same by the Company. However, if any of the amendment requests results in cancellation of one or more services, then the Agency is liable to recover cancellation charges as indicated in the above-mentioned table. The above-mentioned cancellation charges are applicable only against the main Tour and optional tours published by the Agency. If the Client has booked any other services such as air / train tickets or any third party product, then the Agency is liable to recover cancellation charges as per cancellation terms of respective airline / railways or the cancellation terms of respective third party. The Company is also liable to recover its service charges against booking and cancelling such services for the Client.

<p>&nbsp;

<p><strong>THINGS TO NOTE:-</strong> The vehicle used for transfers is not at disposal. It is mandatory to carry photo ID card while you are on tour. Cost Exclusion. Cost of lunches. Additional / personal use of vehicle. Any extra excursions or sightseeing apart from the above specified itinerary. Camera fees, guide charges. Any incidental and other expenses which are not specified in the inclusions. Taxes as applicable. Early check-in or late check-out is subject to availability and may be chargeable by the hotel. In case of non availability of hotels, similar category of hotels will be provided. No refund in case of natural calamity like-weather, road conditions, the physical ability of the participants etc. Please Note:- At the time of check out we don&rsquo;t accept any cheques, any type of credit card or debit card (the final payment will made by cash or demand draft) Law &amp; Jurisdiction For all complaints, suits, claims or disputes of whatsoever nature relating to any products including tours by the Agency and third party products and tours, the courts and tribunals in Manali, India alone shall have exclusive jurisdiction. All tours are subject to laws, rules of RBI / Govt. of India. Upon signing the booking form, the above-mentioned terms &amp; conditions shall be binding on both the Agency and the Client and shall become the only basis of relations between the parties and all previous communication in whatsoever form or mode whether oral or otherwise, with respect to any terms &amp; conditions of the tour and services shall stand cancelled / revoked / terminated.												</div>
												
						<div class="ac mb10px">
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.majestickullumanali.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Delhi Kullu Manali Dharamshala 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="24459"/>
						</form>
						</div>
						
						";i:1;s:74:"Book Delhi Kullu Manali Dharamshala Tour - 7 Nights / 8 Days Tour Packages";i:2;s:138:"book delhi kullu manali dharamshala tour - 7 nights / 8 days tour packages, valley tour packages, kullu, manali, dharamshala tour packages";i:3;s:191:"Book Delhi Kullu Manali Dharamshala Tour - 7 Nights / 8 Days tour packages from Majestic Kullu Manali - Get attractive 7 Nights / 8 Days Valley  tour packages for  Kullu, Manali, Dharamshala.";i:4;s:522:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Kullu, Manali, Dharamshala"        
		                 },
		      "description": "Personal expenses
Train/Air fare
Govt Service Tax 3.09%
Guide
Entry Charges01-0431-03",
		      "name": "Delhi Kullu Manali Dharamshala Tour",
		      "telephone": "+91-9816800144"
		    }
		    </script>
			";i:5;N;}