﻿var nomoslabel=["Νομοί","Perfectures"];
var arealabel=["Περιοχές","Areas"];
var noareafoundmessage=["Δεν βρέθηκαν περιοχές στον χάρτη.","No areas found on map"];
var morezoommessage=["Μεγενθύνετε με διαδοχικά κλικ και μετακινήστε τον χάρτη μέχρι να εμφανιστεί το πλήκτρο \"Αναζήτηση\" και λίστα προορισμών στην περιοχή που έχετε εστιάσει. <br /><br />Στη συνέχεια, επιλέξτε έναν ή περισσότερους από τους προορισμούς και πατήστε το πλήκτρο \"Αναζήτηση\" για να δείτε όλα τα ξενοδοχεία στους προορισμούς που έχετε επιλέξει.","Zoom and pan the map by using the positioning controls on the right or by dragging and double clicking on the map, until the \"Search button\" and the list of destinations appear. <br /><br />Then, select one or more destinations from the list and click on \"Search\" to see all the hotels in the destinations you have selected."];
var areanotcheckedmessage=["Πρέπει να επιλέξετε τουλάχιστον μια από τις διαθέσιμες περιοχές.","At least one area must be selected"];
var googleincomatiblemess=["Ο browser που χρησιμοποιείται δεν υποστηρίζει την προβολή χαρτών Google Maps.","Sorry. Your browser is not Google Maps compatible."];
var alltypehotelsmes=["Όλα","All"];
var typehotelsmes=["Επιλέξτε τάξη: ", "Choose type: "];
var changeviewmarkersmes=["Προβολή περιοχών στον χάρτη","View areas on map"];
var searchbuttontitle=["Αναζήτηση","Search"];
var errortitlemessage=["Λάθος","Error"];

function myAlert(mytitle, mytext){
	 window.alert(mytext);
	 /*var width  = 300;
	 var height = 100;
	 var left   = (screen.width  - width)/2;
	 var top    = (screen.height - height)/2;
	 var params = 'width='+width+', height='+height;
	 params += ', top='+top+', left='+left;
	 params += ', directories=no';
	 params += ', location=no';
	 params += ', menubar=no';
	 params += ', resizable=no';
	 params += ', scrollbars=no';
	 params += ', status=no';
	 params += ', toolbar=no';
	
	  html = "<html><head><title>" + mytitle +"</title></head>"
	  +"<body><font style='font-family: Verdana, Arial, sans serif; font-size: 11px;'>" +mytext +"</font></body></html>"
	  if (nw.closed)
	  {
	  nw = window.open('',"myAlert",params)
	  nw.document.write(html)
	  }*/
	  //alert("This is standard alert box:\n"+ html)
}
function setradiovalue(myval){
	var sumradval=0;
	
	if (myval>0 || hoteltypevalue[0]==0) //an kanei klik sto ola pou einai idi tsekarismeno den kanei tipota
	{
		if (document.getElementById("stravalue"+myval).checked){hoteltypevalue[myval]=1;}
		else{hoteltypevalue[myval]=0;}
		if (myval==0)
		{
			for (var i=1;i<6;i++){document.getElementById("stravalue"+i).checked=false;hoteltypevalue[i]=0;}
		}
		else
		{
			if (hoteltypevalue[myval]==1){document.getElementById("stravalue0").checked=false;hoteltypevalue[0]=0;}
			for (var k=1;k<6;k++){sumradval=sumradval+hoteltypevalue[k];}
			if (sumradval==5)
			{
				for (k=1;k<6;k++){document.getElementById("stravalue"+k).checked=false;hoteltypevalue[k]=0;}
				document.getElementById("stravalue0").checked=true;hoteltypevalue[0]=1;
			}
		}
	}
}
function searchhotels()
{
	var areahaschecked=0;
	var areacheckedstring="";
	var starstring="";

	for (i=0; i<areachecked.length; i++) {
			if (areachecked[i]==1)
			{
				if (areahaschecked==0){areacheckedstring=areacheckedstring+areaid[i];}
				else{areacheckedstring=areacheckedstring+","+areaid[i];}
				areahaschecked=1;
			}
	}
	for (var i=0;i<6;i++){
		if(document.getElementById("stravalue"+i).checked){starstring=starstring+"1";}
		else{starstring=starstring+"0";}
	}
	if (areahaschecked==0){myAlert(errortitlemessage[mylang],areanotcheckedmessage[mylang]);}
	else {
		document.getElementById("indexids").value=areacheckedstring;
		document.getElementById("stars").value=starstring;
		//alert(areacheckedstring+"-"+starstring);
		window.location.href = "SearchHotelResults.aspx?ismulti=1&points="+areacheckedstring+"&multistars="+starstring;

	}
}

function countpos(){
markerIconContainsLatLng();
}

function markerIconContainsLatLng(){
	if (map.getZoom()>8)
	{
		var currentmapbound=map.getBounds();
		maxlang = currentmapbound.getNorthEast().lng();
		maxlat = currentmapbound.getNorthEast().lat();
		minlang = currentmapbound.getSouthWest().lng();
		minlat = currentmapbound.getSouthWest().lat();
		//document.getElementById("code").innerHTML = 'minlat: '+minlat+' maxlat: '+maxlat+' <br>minlang: '+minlang+' maxlang: '+maxlang;
		checkarea();
	}
	else
	{
		document.getElementById("viewnmarkersdiv").style.visibility="hidden";
		document.getElementById("searchbuttonarea").style.visibility="hidden";
		document.getElementById("sidebar2").innerHTML='<p align="center"><font class="sidebarmes2">'+morezoommessage[mylang]+'</font></p>';
		clearmarkers();
	}
}

function checkarea()
{
	var i,j,k;
	areafound=0;
	for (i=0; i<areaon.length; i++) {
			areaon[i]=0;
	}
	for (i=0; i<areachecked.length; i++) {
			areachecked[i]=0;
	}
	for ( i=0; i<islandon.length; i++) {
		islandon[i]=0;
	}
	for (i=0; i<nomoson.length; i++) {
		nomoson[i]=0;
	}
	for (i=0; i<areaid.length; i++) {
		if (arealat[i]>minlat && arealat[i]<maxlat && arealng[i]>minlang && arealng[i]<maxlang)
		{
			areaon[i]=1;
			areafound=1;
			//alert(areatitle[i]);
			for ( j=0; j<islandid.length; j++) {
				if (islandid[j]==areaisland[i])
				{
					islandon[j]=1;
					islandnomos[j]=areanomos[i];
					//alert(islandtitle[j]);
					j=5000;
				
				} //if
			
			} //for j
			for (k=0; k<nomosid.length; k++) {
						if (areanomos[i]==nomosid[k])
						{
						 nomoson[k]=1;
						 //alert(nomostitle[k]);
						 k=5000;
						}
			} //for k
		}//if
	
	}//for i
	clearmarkers();
	createmarkers();
	printcheck();

}

function printcheck(){
	var code = [];
	var i,j,k,areacount;
	if (areafound==0)
	{
	document.getElementById("sidebar2").innerHTML = '<p align="center"><font class="sidebarmes2">'+noareafoundmessage[mylang]+'</font></p>';
	document.getElementById("viewnmarkersdiv").style.visibility="hidden";
	document.getElementById("searchbuttonarea").style.visibility="hidden";
	}
	else
	{
		
		code.push('<table border=0 cellpadding=0 cellscpacing=0 width=200 align=left>');
		//code.push('<tr><td class="sidelabel">'+nomoslabel+'</td></tr>');
		//code.push('<tr><td bgcolor="#000000"><img src="images/black.gif" height="1" border="0"></td></tr>');
		for (i=0; i<nomoson.length; i++) {
				if(nomoson[i]==1)
				{
					code.push('<tr><td class="sidetext2" colspan="3"><strong><input name="nomossel'+i+'" id="nomossel'+i+'" type="checkbox" value="0" onClick="javascript:changenomosselection('+i+');">'+nomostitle[i]+'</strong></td></tr>');
					code.push('<tr><td bgcolor="#000000" colspan="3"><img src="images/black.gif" height="1" border="0"></td></tr>');
					areacount=0;
					for (j=0; j<areaon.length; j++) {
						if(areaon[j]==1 && areanomos[j]==nomosid[i] && areaisland[j]==0) 
						{
							code.push('<tr><td>&nbsp;</td><td>&nbsp;</td><td class="sidetext2"><input name="mapsel'+j+'" id="mapsel'+j+'" type="checkbox" value="0" onClick="javascript:changemapselection('+j+',-1,'+i+');">'+areatitle[j]+'</td></td></tr>');
						} 
					}//for (j=0;
					
					for (j=0; j<islandon.length; j++) {
						if(islandon[j]==1 && islandnomos[j]==nomosid[i]) 
						{
							if (islandtitle[j]!=nomostitle[i])
							{
							code.push('<tr><td>&nbsp;</td><td colspan="2" class="sidetext2"><strong><input name="islandsel'+j+'" id="islandsel'+j+'" type="checkbox" value="0" onClick="javascript:changeislandselection('+j+','+i+');">'+islandtitle[j]+'</strong></td></tr>');
							//code.push('<tr><td bgcolor="#000000"><img src="images/black.gif" height="1" border="0"></td></tr>');
							}
							//islandon[j]=0;
							for (k=0; k<areaon.length; k++) {
								if(areaon[k]==1 && areaisland[k]==islandid[j]) 
								{
									code.push('<tr><td>&nbsp;</td><td>&nbsp;</td><td class="sidetext2"><input id="mapsel'+k+'" name="mapsel'+k+'" type="checkbox" value="0" onClick="javascript:changemapselection('+k+','+j+','+i+');">'+areatitle[k]+'</td></tr>');
										
								} 
							}//for (k=0;
							
						} //if(islandon[j]
					}//for (j=0;
					
				}//if(nomoson[i]==1)
			}//for (i=0;...
			code.push('</table>');
			var codeHTML = code.join("");
    		document.getElementById("sidebar2").innerHTML = codeHTML;
			document.getElementById("viewnmarkersdiv").style.visibility="visible";
			document.getElementById("searchbuttonarea").style.visibility="visible";
		
	}	


}
function changenomosselection(mymapsel){
var nomosselected=document.getElementById("nomossel"+mymapsel).checked;
	for (var i=0; i<areanomos.length; i++) {
		if(areanomos[i]==nomosid[mymapsel] && areaon[i]==1){
			if ((nomosselected && areachecked[i]==0) || (!nomosselected && areachecked[i]==1))
			{
				changeareaselection(i);	
				changemymark(i);
			}
		}
	}
	for (i=0; i<islandnomos.length; i++) {
		if(islandnomos[i]==nomosid[mymapsel] && islandon[i]==1){
			if (nomosselected){document.getElementById("islandsel"+i).checked=true;}
			else{document.getElementById("islandsel"+i).checked=false}
		}
	}
	
				
}

function changeislandselection(myisland, mynomos){
	var islandselected=document.getElementById("islandsel"+myisland).checked;
	for (var i=0; i<areaisland.length; i++) {
			if(areaisland[i]==islandid[myisland] && areaon[i]==1){
				if ((islandselected && areachecked[i]==0) || (!islandselected && areachecked[i]==1))
				{
					changeareaselection(i);	
					changemymark(i);
				}
			}
	}	
if(!islandselected && document.getElementById("nomossel"+mynomos).checked)document.getElementById("nomossel"+mynomos).checked=false;
}

function changeareaselection(mymapsel){
if (areachecked[mymapsel]==0)
	{areachecked[mymapsel]=1;
	document.getElementById("mapsel"+mymapsel).checked=true;
	}
	else
	{areachecked[mymapsel]=0;
	document.getElementById("mapsel"+mymapsel).checked=false;
	}
}

function changemapselection(mymapsel,myisland,mynomos){
	if (areachecked[mymapsel]==0)
	{areachecked[mymapsel]=1;
	}
	else
	{areachecked[mymapsel]=0;}
	changemymark(mymapsel);
	if (document.getElementById("nomossel"+mynomos).checked)document.getElementById("nomossel"+mynomos).checked=false;
	if (myisland>-1 && document.getElementById("islandsel"+myisland).checked)document.getElementById("islandsel"+myisland).checked=false;
}	


function createmarkers(){
	
	for (var j=0; j<areaon.length; j++) {
		if(areaon[j]==1) {createmarker(j,redIcon,0);}
	}
}

function createmarker(j,icon,mycolor)
{
	var posn = new GLatLng(arealat[j], arealng[j]);
	var marker = new GMarker(posn,{icon:icon,title:areatitle[j]});
	GEvent.addListener(marker, "click", function() {changemarkercolor(j);});
	 if (document.getElementById("viewmarkers").checked){map.addOverlay(marker);}	
	 markers.push(marker);
	 markersid.push(j);
	 markerscolor.push(mycolor);
}

function changemymark(mymark){
	var mym=0;
	var mycolor=0;
	for(var n=0;n<markersid.length; n++) {
		if (parseInt(markersid[n])==mymark)
			{
			
			mycolor=markerscolor[n];
			map.removeOverlay(markers[n])
			markers.splice(n,1);
			markersid.splice(n,1);
			markerscolor.splice(n,1);
			if (mycolor==0){createmarker(mymark,greenIcon,1);}
			else{createmarker(mymark,redIcon,0);}
			n=10000;
			}
		
	}
}
function changemarkercolor(mymark){
	if (areachecked[mymark]==1)changeislandnomosselection(mymark); //prepei na min allaksei thesi giati allazei to areacheked sti sinexeia
	changemymark(mymark);
	changeareaselection(mymark);	
}

function changeislandnomosselection(mymark)
{
	if (areaisland[mymark]>0)
	{
		for (var i=0; i<islandid.length; i++) {
			if(islandid[i]==areaisland[mymark]){
			document.getElementById("islandsel"+i).checked=false;
			i=5000;
			}
		}
	}
	for (i=0; i<nomosid.length; i++) {
			if(nomosid[i]==areanomos[mymark]){
			document.getElementById("nomossel"+i).checked=false;
			i=5000;
			}
	}
}

function clearmarkers(){
	if (markers.length>0)
	{
		for(var n = markers.length-1; n >-1; n--) {
			map.removeOverlay(markers[n]);
			markers.splice(n,1);
			markersid.splice(n,1);
			markerscolor.splice(n,1);
	   }
	}
}

function changeviewmarkers()
{
	if (document.getElementById("viewmarkers").checked){viewmarkers();}
	else{hidemarkers();}
}
function viewmarkers(){
	if (markers.length>0)
	{
		for(var n=0;n<markers.length; n++) {
			map.addOverlay(markers[n]);
	   }
	}
}
function hidemarkers()
{
	if (markers.length>0)
	{
		for(var n=0;n<markers.length; n++) {
			map.removeOverlay(markers[n]);
	   }
	}
}


function addIcon(icon) { // Add icon attributes
 icon.shadow= "images/tiny_shadow.png";
 icon.iconSize = new GSize(12, 20);
 icon.shadowSize = new GSize(22, 20);
 icon.iconAnchor = new GPoint(6, 20);
 icon.infoWindowAnchor = new GPoint(5, 1);
}
	  
function checkBounds() {
        // Perform the check and return if OK
        if (allowedBounds.containsLatLng(map.getCenter())) {
          return;
        }
        // It`s not OK, so find the nearest allowed point and move there
        var C = map.getCenter();
        var X = C.lng();
        var Y = C.lat();
		
        if (X < AminX) {X = AminX;}
        if (X > AmaxX) {X = AmaxX;}
        if (Y < AminY) {Y = AminY;}
        if (Y > AmaxY) {Y = AmaxY;}
		//document.getElementById("code").innerHTML ="maxX:"+AmaxX+"  AmaxY:"+AmaxY+" AminX:"+AminX+" AminY"+AminY+"<br> X:"+X+" Y:"+Y
        //alert ("Restricting "+Y+" "+X);
        map.setCenter(new GLatLng(Y,X));
}



/**
 * This function triggers the downloading and parsing of a selected text file
 * marker, sidebar and infowindow data is extracted from the file
 */


function ajaxLoadarea(textFile){
  //var opts = opt_options||{};
  //opts.sidebar = myBar;
  var process = function(material){
    material.parseCsvarea(material);
    //map.populate(entries, opts);
  }
  GDownloadUrl(textFile, process);
}

function ajaxLoadisland(textFile){
  //var opts = opt_options||{};
  //opts.sidebar = myBar;
  var process = function(material){
    material.parseCsvisland(material);
    //map.populate(entries, opts);
  }
  GDownloadUrl(textFile, process);
}

function ajaxLoadnomos(textFile){
  //var opts = opt_options||{};
  //opts.sidebar = myBar;
  var process = function(material){
    material.parseCsvnomos(material);
    //map.populate(entries, opts);
  }
  GDownloadUrl(textFile, process);
}

function printresults()
{
	alert("print");
	var code = [];
	for (var i=0; i<arealat.length; i++) {
		code.push(areaid[i]+'-'+areanomos[i]+'-'+arealat[i]+'-'+arealng[i]+'-'+areatitle[i]);
		}
		var codeHTML = code.join("<br/>");
		document.getElementById("sidebar2").innerHTML = codeHTML;
}


	//alert('Εδω είμαι');
	if (!GBrowserIsCompatible()) {
	document.write ('<p class="sidebarmes2" align="center">'+googleincomatiblemess[mylang]+'</p>');
	}
	else{
	var sDivGoogleMap = document.getElementById("googlemultisearchmap");
	var mapStr = ""

mapStr  += '<table width="650" border="0" cellspacing="0" cellpadding="0"><tr><td><div id="sidebar2"><p align="center"><font class="sidebarmes2">'+morezoommessage[mylang]+'</font></p></div></td><td colspan="2"><div id="map2"></div></td></tr>';
	mapStr  += '<tr><td><div id="viewnmarkersdiv"><input id="viewmarkers" name="viewmarkers" type="checkbox" value="0" onClick="javascript:changeviewmarkers();">'+changeviewmarkersmes[mylang]+'</div></td><td><table border="0"><tr><td class="sidetext2">'+typehotelsmes[mylang]+' ';
	mapStr  += '<input id="stravalue0" name="stravalue0" type="checkbox" value="0" checked onClick="javascript:setradiovalue(0);">'+alltypehotelsmes[mylang];
	mapStr  += '</td><td><input id="stravalue1" name="stravalue1" type="checkbox" value="1" onClick="javascript:setradiovalue(1);"><img src="images/star1.png">';
	mapStr  += '</td><td><input id="stravalue2" name="stravalue2" type="checkbox" value="2" onClick="javascript:setradiovalue(2);"><img src="images/star2.png"></td></tr>';
	mapStr  += '<tr><td align="right"><input id="stravalue3" name="stravalue3" type="checkbox" value="3" onClick="javascript:setradiovalue(3);"><img src="images/star3.png">';
	mapStr  += '</td><td><input id="stravalue4" name="stravalue4" type="checkbox" value="4" onClick="javascript:setradiovalue(4);"><img src="images/star4.png">';
	mapStr  += '</td><td><input id="stravalue5" name="stravalue5" type="checkbox" value="5" onClick="javascript:setradiovalue(5);"><img src="images/star5.png"></td></tr></table></td><td id="searchbuttonarea">';
   
	if (mylang == 0)
	{
	    mapStr  += '<input onClick="javascript:searchhotels();" name="searchbuttonarea" type="button" value="Αναζήτηση" class="buttonSearch">';
	}
	else
	{
	    mapStr  += '<input onClick="javascript:searchhotels();" name="searchbuttonarea" type="button" value="Search"  class="buttonSearch">';
	}
  mapStr  += '</td></tr></table>';

	sDivGoogleMap.innerHTML = mapStr;
	
	
	var map;
	var minlat=0;
	var minlang=0;
	var maxlat=0;
	var maxlang=0;
	var initlat=38.398989;
    var initlang=23.757547;
	var initzoom=6;
	var centerPoint = new GLatLng(initlat,initlang);
	var lastlat=initlat;
	var lastlang=initlang;
	var iconSize, iconAnchorPoint,
	iconAnchorPointOffset, iconBoundsPointSw, iconBoundsPointNe,
	iconBoundsLatLngSw, iconBoundsLatLngNe,mapProjection,mapZoomLevel;
	var areafound=0; // pairnei timi 1 an vrethike perioxi sto orthogonio
	var hoteltypevalue=[];
	hoteltypevalue[0]=1;
	for (var hotval=1;hotval<6;hotval++){hoteltypevalue[hotval]=0;}
	_mPreferMetric=true;                                 //to make size sure for IE too
	map = new GMap2(document.getElementById("map2"), {size:new GSize(430,400)});
	map.setCenter(centerPoint, initzoom);
	//map.setMapType(G_HYBRID_MAP);
	map.addControl(new GScaleControl());
	map.addControl(new GLargeMapControl());
	map.addControl(new GMapTypeControl());
	map.addControl(new GOverviewMapControl());
	//map.openInfoWindowHtml(map.getCenter(),"Nice to see you.");
	//map.closeInfoWindow(); //preloading infowindow
	
	//zoom restrictions
	var mt = map.getMapTypes();
	      // Overwrite the getMinimumResolution() and getMaximumResolution() methods
	      for (var i=0; i<mt.length; i++) {
	        mt[i].getMinimumResolution = function() {return 6;}
	        mt[i].getMaximumResolution = function() {return 14;}
	      }
	
	//var allowedBounds = new GLatLngBounds(new GLatLng(42.19596,17.88574), new GLatLng(32.5468,32.795));
	var allowedBounds = new GLatLngBounds(new GLatLng(34.5,19),new GLatLng(41.5,29));
	var AmaxX = allowedBounds.getNorthEast().lng();
	var AmaxY = allowedBounds.getNorthEast().lat();
	var AminX = allowedBounds.getSouthWest().lng();
	var AminY = allowedBounds.getSouthWest().lat();
	// Add a move listener to restrict the bounds range
	      GEvent.addListener(map, "move", function() {
	        checkBounds();
	      });
		  GEvent.addListener(map, "moveend", function() {
	        countpos();
	      });
		  /*GEvent.addListener(map, 'zoomend', function(){
			 countpos();
			});*/
	var markers = new Array();
	var markersid = new Array();
	var markerscolor =new Array();
	var redIcon = new GIcon();
	  redIcon.image = "images/tiny.png";
	  addIcon(redIcon);
	var greenIcon = new GIcon();
	  greenIcon.image = "images/tinygreen.png";
	  addIcon(greenIcon);
	
	var arealat=[];
	var arealng=[];
	var areanomos=[];
	var areaisland=[];
	var areatitle=[];
	var areaid=[];
	var areaon=[]; //an i perioxi emfanizetai sti lista = 1
	var areachecked=[];
	String.prototype.parseCsvarea = function(){
	  var lines = this.split("\n");
	  for (var i=0; i<lines.length; i++) {
	    if (lines[i]!="")
        {
	        var lineArray = lines[i].split(",");
		    if(lineArray[4]!="")
		    {
	   	     arealat[i] = parseFloat(lineArray[4]);
		    arealng[i] = parseFloat(lineArray[3]);
		    areanomos[i] = parseInt(lineArray[2]);
		    areaisland[i] = parseInt(lineArray[1]);
		    areaid[i] = parseInt(lineArray[0]);
	        //lineArray[4] = lineArray[4].replace(/::::/g,',');
		    areatitle[i] = lineArray[5];
		    areaon[i]=0;
		    areachecked[i]=0;
		    }
		}
	  }
	 //printresults();
	}
	
	var islandid=[];
	var islandnomos=[];
	var islandtitle=[];
	var islandon=[]; //an o dimos emfanizetai sti lista
	
	String.prototype.parseCsvisland = function(){
	  var lines = this.split("\n");
	  for (var i=0; i<lines.length; i++) {
	    if (lines[i]!="")
        {
	        var lineArray = lines[i].split(",");
	        islandid[i] = parseInt(lineArray[0]);
		    islandnomos[i] = parseInt(lineArray[1]);
		    islandtitle[i] = lineArray[2];
		    islandon[i]=0;
		}
	  }
	}
	var nomosid=[];
	var nomostitle=[];
	var nomoson=[]; //an o dimos emfanizetai sti lista
	
	String.prototype.parseCsvnomos = function(){
	  var lines = this.split("\n");
	  for (var i=0; i<lines.length; i++) {
	    if (lines[i]!="")
        {
	      var lineArray = lines[i].split(",");
	      nomosid[i] = parseInt(lineArray[0]);
		  nomostitle[i] = lineArray[2];
		  nomoson[i]=0;
		}
	  }

	}
	var mylangext="_gr";
	  if (mylang==1)mylangext="_en";
	  //document.getElementById("code").innerHTML='<p align="justify" class="sidetext">'+morezoommessage[mylang]+'</p>';
	  //showzoommessage();
	  //ajaxLoadarea("xml/index.txt");
	  //ajaxLoadisland("xml/islands.txt");
	  //ajaxLoadnomos("xml/areas.txt");
	} //google compatible
