a:6:{i:0;s:10208:"				<div class="h1"><h1>Simply Thailand</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.stardestinationtours.in/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.stardestinationtours.in/tour-packages.htm" title="Tour Packages">Tour Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>Simply Thailand</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">Bangkok, Pattaya</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.stardestinationtours.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Simply Thailand - 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="78891"/>
						</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/439456/138899.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_15/439456/138899.jpg"  width="150" height="150"    alt="Simply Thailand" title="Simply Thailand" /></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> Arrive - Bangkok - Pattaya
								</p>
								<p class="aj">Arrive at Bangkok Airport in the morning to be received cordially by our IHPL representative. Accompanied by the staff representative, get on a two hour drive to Pattaya, one of the most exotic beach destination in South East Asia. Post Arrival, indulge in your favorite pastimes. Enjoy the city ambience, relax and lay off at beaches, revel in the delicacies with local restaurants and relish the exotic bar. Pamper yourself with amazing body massages and shop till you drop. It's like the whole city for your wishes. Evening is free at your leisure! Return to your hotel for the overnight stay.</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> Pattaya - Half Day Coral Island Tour in Pattaya and Crocodile Farm
								</p>
								<p class="aj">Post Breakfast, get transferred to the picturesque Coral Island (Kohlan), passing through the wonderful azure waters of Gulf of Thailand. You have the entire day at your leisure. You can laze around the beach, relax, snorkel or swim around, relishing to the full, the island's marvelously scenic beaches. There is also an option of diving down the sea waters to behold the exotic marine life from close quarters.<br />
<br />
After this, Get transferred to the crocodile farm to marvel at these giant beasts from nearby. Besides having the largest water area, this farm also has largest population of crocodiles which are bred in-house. Spend the evening at your wish, soaking in and understanding this incredible city. Return to the hotel for the overnight stay.</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> Pattaya - Sriracha Tiger Zoo and Adventurous Activities
								</p>
								<p class="aj">Start your day off with a healthy breakfast and travel to Sriracha Tiger Zoo, which is one of the best Tiger zoos in the world. Pervaded with wonderful natural surroundings all over, the park is house to hundreds of tigers which you can see closely. Herein you also have great opportunity to take amazing pictures while holding tiger cubs in your hands and feeding them. An amazing dose of entertainment lies in here for your family and friends.<br />
<br />
In the latter part of the day, relish the adventurous rides like the Tower Shoot and Sky Pattaya to enjoy to the hilt. The evening is free at your leisure. Return to your hotel and stay for overnight at Pattaya.</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> Pattaya - Bangkok - Chao Phraya
								</p>
								<p class="aj">After breakfast, get transferred from Pattaya to Bangkok and perform check in to your hotel and relax. Proceed to River City Pier later in the evening. From the River Shopping Complex, get aboard the beautiful Chao Phraya Princess Cruise and enjoy the amazingly picturesque sights of both the sides of the Chao Phraya River. Click the beautiful pictures of the two "Wonders by Night"-the temple of Dawn and the temple of Emerald Buddha, as you sail through the river on your amazing boat. Enjoy lip smacking dinner prepared carefully by expert chefs as well as live music as you revel in the delightful settings. Return to your hotel for the overnight stay.</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> Bangkok Safari World and Marine Park
								</p>
								<p class="aj">Post Breakfast, get ready for a day full of fun and frolic at the Safari World and Marine Park, one of the Thailand's most popular destinations. The park is divided into four different parts-the Safari Park, the Bird Park, The Games Corner, and the Macaw Island). An incredible haven of exotic wildlife, the Safari Park is an amazing world of several species like dolphins, orangutans, seals and many other exquisite birds as well as animals. The setting is closely African and there are mouth-watering lunch options to choose from. Transfer back to your hotel for few moments of relaxation. The evening is free to spend. Catch sights of amazing places within the city and experience the wonderful vibrancy of the place. Get transferred to your hotel for relaxed overnight stay.</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> Departure
								</p>
								<p class="aj">Enjoy your morning meals and perform check out. Get transferred to the airport for your return journey.</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>
															</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.stardestinationtours.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Simply Thailand - 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="78891"/>
						</form>
						</div>
						
						";i:1;s:54:"Book Simply Thailand - 5 Nights / 6 Days Tour Packages";i:2;s:119:"book simply thailand - 5 nights / 6 days tour packages, beach and islands tour packages, bangkok, pattaya tour packages";i:3;s:158:"Star Destination Tours offers Simply Thailand - 5 Nights / 6 Days tour package, budget Beach and Islands tour packages for Bangkok, Pattaya at exciting price.";i:4;s:403:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Bangkok, Pattaya"        
		                 },
		      "description": "",
		      "name": "Simply Thailand",
		      "telephone": "+91-9888421743"
		    }
		    </script>
			";i:5;N;}