a:6:{i:0;s:11818:"				<div class="h1"><h1>Best Of Thailand Tour Package</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.oppexholidays.com/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.oppexholidays.com/tour-packages.htm" title="Tour Packages">Tour Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>Best Of Thailand 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">
						6 Nights / 7 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.oppexholidays.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Best Of Thailand 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="13759"/>
						</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_2/37817/17998.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_2/37817/17998.jpg"  width="150" height="150"    alt="Best Of Thailand Tour Package" title="Best Of Thailand Tour Package" /></a></p></div></li>
															</ul>
						</div>
						</td>
											</tr>
					</table>
					</div>
					<br />
					
					Personal Expenses.<br />
Water Sports.<br />
Other Expenses Not Mentioned Above.<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> Arrival in Bangkok - Transfer to Pattaya
								</p>
								<p class="aj">After Arriving In Bangkok To A Warm Reception, We Will Take You On A 2.5-Hour Drive To The Picturesque Pattaya, A Breathtakingly Beautiful Beach Destination. A Tropical Beach Retreat Town, Pattaya Is A Perfect Place To Laze Around Under Swaying Coconut Trees, Exploring White Sandy Beaches And Crystal Azure Waters. Interested Travelers Will Be Happy To Know That The Nightlife Of Pattaya Is One Of The Most Happening In The World.  You Can Either Enjoy The Evening At Leisure Or Enjoy The Alcazar Show, A World-Famous Cabaret That Can Give The Lido And Paris’ Moulin Rouge, A Run For Their Money. Featuring A Grand Theatre With 1,200 Seats, Mega Watts Of Pulsating Sound, A State-Of-The-Art Light & Sound System And Ultra-Modern Computer Technology, The Alcazar Is A Unique Blend Of Acting, Stage Design, Costumes And Glamorous Actors Performing Together In A Mesmerizing MéLange Of Light, Sound And Colour. After The Scintillating Alcazar Experience, Return To Your Hotel And Stay There Overnight.</p>					
									<p><b>Meals : </b> Packed Lunch, 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> Pattaya
								</p>
								<p class="aj">After A Scrumptious Breakfast, Speedboat Your Way To The Idyllic Coral Island (Koh Lan) Through The Sparkling Aqua-Blue Waters Of The Gulf Of Thailand. Spend The Day Luxuriating Under The Warm Tropical Sun. Relax, Swim, Snorkel Or Just Lie Around Sunning On The Island'S Immaculate Golden Beaches. Once You Are Relaxed And Rejuvenated, We Will Take You On The Crystal Waters On A Glass-Bottomed Boat To Witness Beautiful Coral Formations Around The Island. You Can Also Dive Down Into The Waters For A More Personal Experience. After A Relaxing Time At The Island, Return And Relish Upon A Sumptuous Indian Lunch. After Coral Island We Will Proceed To The Noong Nooch Village Beautiful Tropical Gardens And Cultural Shows Including Popular Elephant Show. Rest Day Free For Relaxing. Overnight At Pattaya.</p>					
									<p><b>Meals : </b> Breakfast, Lunch & 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> Pattaya
								</p>
								<p class="aj">After Breakfast We Will Proceed To Mini Siam.  Wonders Are Everywhere Around The World. The Idea, The Imagination And The Abilities Of Human Beings Are The Inspiration To Create These Wonders. Each Nation Substantially Reflects Their Unique Art, Culture And Traditions In Great Architecture.. Under The Idea To Gather The Wonders, Fine Arts, Handicrafts, Culture And Important Places Of Thailand. This Heritage Site Is As It Suggests: Miniature Versions Of Thai And European Structures And Sites Through History. Over A Hundred Models Built On A Scale Of 1:25 Are On Display In The Grounds, From The Famed Historical Cities Of Sukhothai And Ayuttaya To More Modern Models. A Great Opportunity For Those Unable To Travel To The Great Sights To Envisage What They Are Missing. Rest Of The Day Free For Relax. Overnight At Pataya.</p>					
									<p><b>Meals : </b> Breakfast, Lunch & 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 4:</b> Pattaya - Bangkok
								</p>
								<p class="aj">After Enjoying Breakfast At The Hotel, We Will Transfer To The Bangkok Hotel. After Lunch  Embark On A Cultural Tour Of Bangkok Visiting The Ancient Temples And Other Attractions Of The City. Thailand Is Home To More Than 26,000 Wats (Buddhist Temples). This Vacation, Let Us Take You To Some Of Bangkok'S Most Distinguished Wats Such As Wat Trimitr (Temple Of The Golden Buddha), Which Is Home To A 5.5 Ton Statue Of The Holy Buddha Made From Solid Gold And A Fine Example Of Sukhothai Art. Also Visit Wat Po, Temple Of The Reclining Buddha, The Largest And The Oldest Shrine Of Its Kind In Bangkok.Evening Will Proceed For Chao Phraya Dinner Cruise.</p>					
									<p><b>Meals : </b> Breakfast, Lunch & 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 5:</b> Bangkok
								</p>
								<p class="aj">After Breakfast At The Hotel Proceed To Safari World (With Marine Park), Which Is Thailand's Popular Open Zoo And Leisure Park. Divided Into Four Distinct Sections (Safari Park, Bird Park, Games Corner And Macau Island), The Safari World Park Is The Place To Be For Intimate Encounters With Dolphins, Orangutans, Seals And A Myriad Other Exotic Animals And Birds Amidst A Picturesque African Setting. After Enjoying Lunch At The Safari World Park, Return To The Hotel For A Comfortable Overnight Stay.</p>					
									<p><b>Meals : </b> Breakfast, Lunch & 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 6:</b> Bangkok
								</p>
								<p class="aj">After Breakfast Will Proceed For Tiger Temple Tour.  Its Old Buddhist School And Frorest Temple And Sanctury For Nimerous Animals Including Several Tame Tigers. Will Come Back To Hotel Late Evening. Overnight At Hotel </p>					
									<p><b>Meals : </b> Breakfast, Lunch, 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 7:</b> Departure
								</p>
								<p class="aj">After Breakfast Will Chk-Out From The Hotel And Transfer To The Airport For Departure To India.</p>					
									<p><b>Meals : </b> Breakfast</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>Meals</li>
																		<li>Transfers</li>
															</ul>
						<br />
												<p class="large b mb5px dif">Exclusions :</p> <ul><li>Personal Expenses.</li><li>
Water Sports.</li><li>
Other Expenses Not Mentioned Above.</li></ul><br />
												<p class="large b mb5px dif">Departure Cities with rates :</p>N.A. Per Person On Twin / Triple  Sharing Basis.<br /><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.oppexholidays.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Best Of Thailand 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="13759"/>
						</form>
						</div>
						
						";i:1;s:68:"Book Best Of Thailand Tour Package - 6 Nights / 7 Days Tour Packages";i:2;s:133:"book best of thailand tour package - 6 nights / 7 days tour packages, beach and islands tour packages, bangkok, pattaya tour packages";i:3;s:209:"Oppex Travels & Tours ( a Division of Oppex Freight Systems offers Best Of Thailand Tour Package - 6 Nights / 7 Days tour package, budget Beach and Islands tour packages for Bangkok, Pattaya at exciting price.";i:4;s:487:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Bangkok, Pattaya"        
		                 },
		      "description": "Personal Expenses.
Water Sports.
Other Expenses Not Mentioned Above.",
		      "name": "Best Of Thailand Tour Package",
		      "telephone": "+91-9821321975"
		    }
		    </script>
			";i:5;N;}