a:6:{i:0;s:10566:"				<div class="h1"><h1>Singapore & Malaysia Tour Package</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.jachintravels.com/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.jachintravels.com/tour-packages.htm" title="Tour Packages">Tour Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>Singapore & Malaysia 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">
						7 Nights / 8 Days 
						</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Destination Covered </td>
						<td class="p5px pl0px vat">Kuala Lumpur, Singapore</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.jachintravels.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Singapore & Malaysia 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="24405"/>
						</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_10/296660/47423.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_10/296660/47423.jpg"  height="150"  width="150"    alt="Singapore" title="Singapore" /></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_10/296660/47424.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_10/296660/47424.jpg"  height="150"  width="150"    alt="Malaysia" title="Malaysia" /></a></p></div></li>
															</ul>
						</div>
						</td>
											</tr>
					</table>
					</div>
					<br />
					
					Singapore is a small Island at the tip of the Malay Peninsula. Probably the best places to go in Singapore City to get a feel of the traditional culture is Chinatown, Little India and Arab Street. In the evenings the historic Singapore River is a sight that is not to be missed. <br />
<br />
Malaysia is located in the heart of Southeast Asia. Consisting of 127,000 sq. miles (330,200 sq. km), Malaysia is divided into two main regions: Peninsular Malaysia, which lies just south of Thailand, and East Malaysia, which can be found north of Indonesia on the island of Borneo. These two regions are divided into thirteen states and federal territories.<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> Delhi to Port Blair
								</p>
								<p class="aj">Departure from Delhi to Port Blair, On arrival at Port Blair airport, meet & greet at the airport with our representative. Transfers to hotel. Check in the Hotel / Resort. Afternoon at leisure. Evening, the Light and Sound Show at Cellular Jail where the saga of the freedom struggle brought alive back to the hotel. Overnight at the Port Blair with dinner.</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> Port Blair
								</p>
								<p class="aj">Breakfast at hotel. Check out from Port Blair hotel transfer to the airport for flight onwards to Chennai. Arrive Chennai. Take connecting flight from Chennai to Kualaumpur.</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> Kulalumpur
								</p>
								<p class="aj">Arrive in Kulalumpur Meet & Greet at the airport with our representative, proceed for transfer to the Genting hotel. Check in hotel ,Rest of the day at leisure Dinner at the local indian restaurant. Over night stay Genting.</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> Genting
								</p>
								<p class="aj">Breakfast at hotel. Proceed for Genting outdoor theme park rides which includes Enter a thrilling world of adventure at the Genting Outdoor Theme Park. Enjoy exiting roller-coasters and boat rides amidst ingenious landscaping Check out from the Genting hotel and transfer to the Kualalumpur ,check in kuala Lumpur hotel, Refresh and relaxed. Day at leisure. Dinner at the local indian restaurant. Over night stay at Kualalumpur.</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> Kuala Lumpur
								</p>
								<p class="aj">Breakfast at hotel. Proceed for half day city tour of Kuala Lumpur which includes Photo stop at the Old Railway Station, Merdeka Square, Sultan Abdul Monument building, Petronas Twin Towers and the Chocolate Factory. While the rest of the day is free at your leisure. Indian Dinner at the local indian restaurant. Over night stay at Kuala lumpur.</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> Kualaumpur - Singapore
								</p>
								<p class="aj">Take a morning coach from Kualaumpur- Singapore. In the afternoon arrive in Singapore. Our local representative will assist you. Transfer to the hotel. In the evening proceed for night safari tour. Dinner at the local indian restaurant. Over night stay 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> Singapore
								</p>
								<p class="aj">Breakfast at hotel. Proceed for half day city tour in Singapore. and in the afternoon proceed for afternoon sentosa tour includes (Sentosa inclusions: Underwater World with Dolphin Lagoon, Images of Singapore and Songs of the Sea show (afternoon Sentosa as Songs of Sea is at 1940hrs). Dinner at the local restaurant . Over night stay at the hotel rest of the day is free for you. Dinner at the local indian restaurant. Over night stay 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 8:</b> Transfer to the airport
								</p>
								<p class="aj">Breakfast at hotel check out. Transfer to the airport to catch the flight to india</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>Transfers</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.jachintravels.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Singapore & Malaysia 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="24405"/>
						</form>
						</div>
						
						";i:1;s:72:"Book Singapore & Malaysia Tour Package - 7 Nights / 8 Days Tour Packages";i:2;s:144:"book singapore & malaysia tour package - 7 nights / 8 days tour packages, forts and palaces tour packages, kuala lumpur, singapore tour packages";i:3;s:175:"JACHIN TRAVELS offers Singapore & Malaysia Tour Package - 7 Nights / 8 Days tour package, budget Forts and Palaces tour packages for Kuala Lumpur, Singapore at exciting price.";i:4;s:1069:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Kuala Lumpur, Singapore"        
		                 },
		      "description": "Singapore is a small Island at the tip of the Malay Peninsula. Probably the best places to go in Singapore City to get a feel of the traditional culture is Chinatown, Little India and Arab Street. In the evenings the historic Singapore River is a sight that is not to be missed. 

Malaysia is located in the heart of Southeast Asia. Consisting of 127,000 sq. miles (330,200 sq. km), Malaysia is divided into two main regions: Peninsular Malaysia, which lies just south of Thailand, and East Malaysia, which can be found north of Indonesia on the island of Borneo. These two regions are divided into thirteen states and federal territories.",
		      "name": "Singapore & Malaysia Tour Package",
		      "telephone": "+91-8527093369"
		    }
		    </script>
			";i:5;N;}