a:6:{i:0;s:11443:"				<div class="h1"><h1>Greece 6N/7D Package</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.emplanetourandtravels.co.in/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.emplanetourandtravels.co.in/tour-packages.htm" title="Tour Packages">Tour Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>Greece 6N/7D 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">Athens, Mykonos, Santorini</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.emplanetourandtravels.co.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Greece 6N/7D 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="120377"/>
						</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_17/508950/194993.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_17/508950/194993.jpg"  width="150" height="150"    alt="Greece 6N/7D Package" title="Greece 6N/7D Package" /></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> Arrival
								</p>
								<p class="aj">Meet and assist at International Athens Airport and transfer to your hotel. Accommodation in Athens. Overnight at your 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 2:</b> Breakfast At Hotel - Half Day City Tour
								</p>
								<p class="aj">In the morning you will be picked up from your hotel and start the half-day tour to Athens. This tour gives you an opportunity to observe the striking contrasts that make Athens such a fascinating city. Our expert guides will take you to see the Panathenaic Stadium where the first Olympic Games of modern times were held in 1896 (short stop). Continue and pass by the Presidential residence (ex Royal Palace) guarded by the Euzones in their colorful uniform, the Temple of Olympian Zeus, the Hadrians Arch, the Parliament and the memorial to the Unknown Soldier, the Academy, the University, the National Library, the Constitution Square (Syntagma). On the Acropolis visit the Architectural Masterpieces of the Golden Age of Athens: The Propylaea, the Temple of Athena Nike, the Erechtheion, the parthenon and finally the harmony between material and spirit, the monument that puts order in the mind, the New Acropolis Museum. Free Evening. Overnight at your 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 3:</b> Athens - Mykonos
								</p>
								<p class="aj">Today after breakfast, you will check out from your hotel in Athens and transferred to Piraeus port for your ferry embarkation to Mykonos Island. Mykonos sits amidst the Aegean Sea like a unique Jewell handcrafted by time, the Greek sun and an anonymous local craftsman. All that can be said or written about Mykonos would be just too little. For centuries Mykonos existed under the shade of the religious centre of Delos and it had to wait until the 20th century to reach its international status and win a place on the world tourist map. Mykonos, famously called ’the island of the winds’ due to the constant wind that blows, is the most popular and cosmopolitan island of the Cyclades and considered as one the most famous islands of the world. The sunlight of Mykonos from its first sunshine of dawn all the way to its last of the sunset is astonishing and supplements an atmosphere of images that seem to have sprung out of a painting. Arrival in Mykonos and transferred at your hotel. Rest of the day is free in order to explore the island. Overnight at your 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 4:</b> Mykonos
								</p>
								<p class="aj">Today, after breakfast the day will be free in order explore the island. Among the cobbled streets, next to the churches, behind the freshly painted shutters, through the delivery of island living, the heavenly beaches and the liveliness of the night, Mykonos still keeps its secrets: The happiest different moments for everyone, here, on the most famous island in the world, each one of us makes each moment UNIQUE. Mykonos retains full beauty through the passage of time, and is and always will be a perfect host to visitors, offering unlimited vacation and great expectations. Overnight at your 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 5:</b> Mykonos-Santorini
								</p>
								<p class="aj">Today, after breakfast you will be picked up from your hotel and transferred at Mykonos port for your ferry embarkation to Santorini Island. A thousand sunsets, a thousand memories, a thousand heartbeats, colours of blue red & gold streaking the sky ... this is Santorini island ... Poets have written about it, artists attempt to capture its beauty. Nothing can quite describe ... the unsurpassed magic of Santorini. This tiny Greek island in the Aegean sea, rich in history & steeped in myth, is situated on the southern east tip of the Cyclades Cluster. Once famous for its seafaring captains & thriving trade from Russia towards England, France & Italy, & even further back in time the biblical volcanic catastrophe of 1500 BC, today Santorini is one of the most popular holiday destinations worldwide. Arrival in Santorini and transferred at your hotel. Rest of the day is yours to spend in order to explore the island and admire the breathtaking view. Overnight at your 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 6:</b> SANTORINI
								</p>
								<p class="aj">Today, after breakfast you will be picked up for a cruise at the caldera and its hot springs. During this tour, you will have the unique chance to visit the active volcano of Santorini, walk on dried lava up to its peak, feel the heat underneath your feet and see the steam of sulphuric gases emerging from the earth bowels. Next, you will sail to the thermal springs where you can dive or step down into the blue waters in order to swim towards the springs (35-36 C). Last you will visit the traditional sister island of Santorini, Thirassia, where you can either swim, go up to the village or simply relax and have something to eat. Return at your hotel. Overnight at your 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> Departure From SANTORINI
								</p>
								<p class="aj">Departure Today, after breakfast you will be transferred at Santorini airport for your departure flight via Athens.</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.emplanetourandtravels.co.in/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Greece 6N/7D 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="120377"/>
						</form>
						</div>
						
						";i:1;s:59:"Book Greece 6N/7D Package - 6 Nights / 7 Days Tour Packages";i:2;s:125:"book greece 6n/7d package - 6 nights / 7 days tour packages, heritage tour packages, athens, mykonos, santorini tour packages";i:3;s:182:"Book Greece 6N/7D Package - 6 Nights / 7 Days tour packages from Emplane Tours and Travels - Get attractive 6 Nights / 7 Days Heritage  tour packages for  Athens, Mykonos, Santorini.";i:4;s:418:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Athens, Mykonos, Santorini"        
		                 },
		      "description": "",
		      "name": "Greece 6N/7D Package",
		      "telephone": "+91-8005957779"
		    }
		    </script>
			";i:5;N;}