a:6:{i:0;s:12107:"				<div class="h1"><h1>Summer Singapore Surprise Tour</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.bluedolphintravels.co.in/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.bluedolphintravels.co.in/tour-packages.htm" title="Tour Packages">Tour Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>Summer Singapore Surprise 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">
						5 Nights / 6 Days 
						</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Destination Covered </td>
						<td class="p5px pl0px vat">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.bluedolphintravels.co.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Summer Singapore Surprise 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="65672"/>
						</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/428110/120937.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_15/428110/120937.jpg"  width="150" height="150"    alt="Summer Singapore Surprise Tour" title="Summer Singapore Surprise Tour" /></a></p></div></li>
															</ul>
						</div>
						</td>
											</tr>
					</table>
					</div>
					<br />
					
					Any increase in the Visa fees, Airfare/Taxes charged by the airlines on your air ticket (calculated at 1st January, 2016 rates).<br />
Cost of extension of the validity of your air ticket.<br />
Porterage.<br />
Mandatory tips of USD 2 per person per day towards tips to be paid to guide / driver.<br />
Laundry, mineral water, telephone charges, optional tours and also food and drinks not forming part of the group menus.<br />
Anything not specifically mentioned in the Package Tour Price includes box.<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 into Singapore Begin your ‘Singapore Surprise’ Tour Visit to S.E.A. AquariumTM at Resort
								</p>
								<p class="aj">Welcome to Singapore - the Lion city. On arrival, your local representative will be waiting outside the customs area to meet you and take you to your hotel (Check-in time is after 3.00 pm). This evening, we visit S.E.A. AquariumTM at Resort World Sentosa, where you will discover the weinspiring world of life in the ocean at the world’s largest aquarium. Immerse yourself in a magical marine world. Discover the endless wonders of the blue planet at S.E.A. AquariumTM which will take you and your family on an unforgettable journey.<br />
Later, we visit Sentosa Island for the fabulous light and sound ‘Wings of Time’ show.<br />
Overnight at the hotel in Singapore.<br />
(Dinner)<br />
(You have a choice to book early check-in facility in the hotel. Please refer to the price page)</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> Day Free Suggested Excursion: Universal Studios Singapore
								</p>
								<p class="aj">Today, the day is free for you. Relax in the comforts of your hotel OR you can OPT for the suggested excursion to the Universal Studios, Singapore. This Theme Park will offer you excitement, thrill and a great fun time. Witness the world’s first Far Far Away Castle in ‘The Shrek 4-D adventure’. Meet the terrifying T Rex in ‘The Lost World’, ride the world’s tallest dueling roller coasters at Sci-Fi City and witness ancient Egypt on the psychological thrill ride - ‘Revenge of The Mummy’.<br />
Overnight at the hotel in Singapore.<br />
(Breakfast, 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 3:</b> Guided City Tour of Singapore
								</p>
								<p class="aj">Today, the morning is free for you. In the afternoon, we proceed for a guided city tour of Singapore. See the ‘Swissotel - The Stamford’ one of the tallest hotels in the world, Parliament House and City Hall. Take a photo stop at the Merlion - Singapore’s famous symbol and The Esplanade, Singapore’s pride and joy. We finish our city tour with a visit to the Singapore Gems factory.<br />
Overnight at the hotel in Singapore.</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> Day Free Suggested Excursion: Jurong Bird Park Suggested Excursion: Night Safari
								</p>
								<p class="aj">Today, the day is free for you to explore this magnificent city on your own OR you may OPT for the suggested excursion to Jurong Bird Park. This Bird Park houses one of the largest collections of birds in the world. Must-visit key attractions at this bird paradise include the Bird Discovery Centre, African Waterfall Aviary, Lory Loft Aviary, South East Asia Birds Aviary and the award winning African Wetlands.<br />
This evening is free for you to enjoy the nightlife of this vibrant city on your own OR you may OPT for the suggested excursion of Night Safari.<br />
Set in a jungle adjoining the Singapore Zoo, the Night Safari unfolds the mystery and drama of the tropical jungle with stunning effect. It offers the unique chance to witness animals in their recreated natural environment in the dark. See the animals play, prowl and feed in the grounds of the tropical night safari.<br />
Overnight at the hotel in Singapore.</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> Day Free
								</p>
								<p class="aj">Today, the day is free for you to complete your last minute shopping. Shop from the various famous malls in the city, for all your branded materials. For local shopping head to the Bugis Street which is a unique retail shopping destination with almost 800 shops making it the largest street shopping location in Singapore, with fashionable clothing, accessories, to beauty products and a lot more to offer.<br />
In the evening, you may visit Clarke Quay on your own and unwind yourself by the Singapore River. Immerse yourself in the night life of Clarke Quay which is lit up to a colorful kaleidoscope. The fountain which grooves to the mood of the night will attract all young and the old. You will find a presence of partying with a many of pubs, restaurants and live musical local performances. Enjoy the performances from Clarke Quay outlets’ resident bands, regional bands and local music talents.<br />
Overnight at the hotel in Singapore.</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> Return home with wonderful memories
								</p>
								<p class="aj">Today, we check out and drive to the airport for your flight back home. It’s time to say goodbye to all the new friends you have made. We hope you take back many happy memories of your holiday. We would like you to spare a few minutes of your time to write and tell us how you enjoyed your holiday and any suggestions you may have for the future.</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>
																		<li>Meals</li>
																		<li>Sightseeing</li>
																		<li>Transport</li>
																		<li>Transfers</li>
															</ul>
						<br />
												<p class="large b mb5px dif">Exclusions :</p> <ul><li>Any increase in the Visa fees, Airfare/Taxes charged by the airlines on your air ticket (calculated at 1st January, 2016 rates).</li><li>
Cost of extension of the validity of your air ticket.</li><li>
Porterage.</li><li>
Mandatory tips of USD 2 per person per day towards tips to be paid to guide / driver.</li><li>
Laundry, mineral water, telephone charges, optional tours and also food and drinks not forming part of the group menus.</li><li>
Anything not specifically mentioned in the Package Tour Price includes box.</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.bluedolphintravels.co.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Summer Singapore Surprise 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="65672"/>
						</form>
						</div>
						
						";i:1;s:69:"Book Summer Singapore Surprise Tour - 5 Nights / 6 Days Tour Packages";i:2;s:127:"book summer singapore surprise tour - 5 nights / 6 days tour packages, forts and palaces tour packages, singapore tour packages";i:3;s:164:"Blue Dolphin Travels offers Summer Singapore Surprise Tour - 5 Nights / 6 Days tour package, budget Forts and Palaces tour packages for Singapore at exciting price.";i:4;s:891:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Singapore"        
		                 },
		      "description": "Any increase in the Visa fees, Airfare/Taxes charged by the airlines on your air ticket (calculated at 1st January, 2016 rates).
Cost of extension of the validity of your air ticket.
Porterage.
Mandatory tips of USD 2 per person per day towards tips to be paid to guide / driver.
Laundry, mineral water, telephone charges, optional tours and also food and drinks not forming part of the group menus.
Anything not specifically mentioned in the Package Tour Price includes box.",
		      "name": "Summer Singapore Surprise Tour",
		      "telephone": "+91-9558888723"
		    }
		    </script>
			";i:5;N;}