﻿var map;
var myData = new ReadMyData("XML/MyInfo.xml")
var centerLatitude = parseFloat(myData.firmLat)    //40.633137884900876;
var centerLongitude =parseFloat(myData.firmLng)  //22.94170618057251;  

var startZoom = 12;
var markers =[];
var deselectCurrent = function() {};
 var bounds;
 var   plimit ;  
 var  slimit  ;   
 var  marker =[];
 var imageFolder ='Images/GMaps/'; 
 var fotoFolder = ""
 var markerCounter = 0;
//  var cfilename, cOfferedFor;
 var textPPcriteriaCounter ;
 var qsParm = new Array();
qsParm['FN'] = null;
qsParm['OFFOR'] = null;
var arOfferedFor =['ΝΟΝ','ΠΩΛΗΣΗ','ΕΝΟΙΚΙΑΣΗ','ΑΝΤΙΠΑΡΟΧΗ']

// ----------------  plot marker on map
function plotPoint(pointData) {
	var point = new GLatLng(pointData.latitude, pointData.longitude);
	  // ==== Each time a point is found, extent the bounds to include it =====
    bounds.extend(point);
    // select icon
	var imageNormal,imageOver, imageOut, imageVisited;
	var latlng = new GLatLng(parseFloat(pointData.latitude),parseFloat(pointData.longitude));
	var filename ;
	var icon = new GIcon(G_DEFAULT_ICON);  
	  switch(pointData.TYPE)
        {
       case 'ΚΑΤΑΣΤΗΜΑ':
           filename = "Building6.png"
          icon.iconSize = new GSize(30,26); 
          icon.shadowSize = new GSize(49, 39);
            break;  
         case 'ΑΠΟΘΗΚΗ':
           filename =    "Building6.png"
          icon.iconSize = new GSize(40,35); 
          icon.shadowSize = new GSize(69, 39);
            break;  
         case 'ΟΙΚΟΠΕΔΟ':
           filename =    "Building5.png"
           icon.iconSize = new GSize(33,21); 
           icon.shadowSize = new GSize(9, 9);
            break; 
          case 'ΑΓΡΟΤΕΜΑΧΙΟ':
           filename =    "Building5.png"
          icon.iconSize = new GSize(45,27); 
           icon.shadowSize = new GSize(9, 9);
            break; 
          case 'ΜΕΖΟΝΕΤΑ':
           filename =  "Building7a.png"
           icon.iconSize = new GSize(45,35); 
           icon.shadowSize = new GSize(9, 9);
           break; 
           case 'ΜΟΝΟΚΑΤΟΙΚΙΑ':
           filename =  "Building7.png"
           icon.iconSize = new GSize(34,26); 
           icon.shadowSize = new GSize(9, 9);
           break; 
         default:
           if (pointData.OfferedFor == '1')
            {filename =  "markerBlue.png"}
          else
            {filename =  "markerPurple.png"}  
          icon.shadowSize = new GSize(30, 35);
          break;    
         }
      
        imageNormal = imageFolder + filename  
        imageOver = imageFolder + "Lens.png" 
        imageOut = imageFolder + filename     
        imageVisited = imageFolder + "'Pin.gif'"     
        icon.image = imageNormal;
     //  icon.iconSize = new GSize(24, 36);
       icon.iconAnchor = new GPoint(9, 44);
         
   var winTitle   = arOfferedFor[pointData.OfferedFor] + ': ' +  pointData.TYPE + ' ' + FormatCurrency(pointData.PRICE) + " €, " +   pointData.SURFACE + " τ.μ."
   var marker = new GMarker(latlng,{icon:icon, draggable: false, title:winTitle});	      

	var listItem = document.createElement('li');
	listItem.setAttribute("id",pointData.PropertyKA)
	var listItemLink = listItem.appendChild(document.createElement('a'));
	listItemLink.href = "#" ;
	
	// replace first word in bold
	var index =  pointData.add.indexOf(" ")
	var iniword = pointData.add.substring(0, index)
	
    if (pointData.OfferedFor == 1)
    { 
      newword = arOfferedFor[pointData.OfferedFor].bold().italics().fontsize(+2).fontcolor("#3333CC")
	}
    else
    {
      newword = arOfferedFor[pointData.OfferedFor].bold().italics().fontsize(+2).fontcolor("#990066") 
    }
         var newAdd = pointData.add.replace(iniword, newword)
         var listText = newword + ': ' + pointData.TYPE + ' ' + FormatCurrency(pointData.PRICE) + " €, " + pointData.SURFACE + " τ.μ."
         listItemLink.innerHTML = '<div>' + listText + '</div>';
	 // ---------------------------------------------------------------------------------
	var focusPoint = function() {
		deselectCurrent();
		listItem.className = 'current';
		deselectCurrent = function() {listItem.className = '';}
		var vTitle = pointData.MyName;
		if (vTitle =='-'){vTitle = myData.firmName };
		var strBuffer = new Array()
	    strBuffer[strBuffer.length] = '<div style="width:330px;font-size: 10pt; color: #ff0000; font-family: Arial"><span style="text-decoration: underline"><b>' + vTitle + '</span></div><br />';
	    strBuffer[strBuffer.length] = '<table style="width: 340px;background-color: whitesmoke; height:100px">'
	  
	   var str=pointData.image1;
	   var trimmed = str.replace(/^\s+|\s+$/g, '') ; 
	   if (trimmed.length == 13)
	   {strBuffer[strBuffer.length] ="<tr><td>" + pointData.add + "</td></tr></table>"}
	   else
	   { 
	    strBuffer[strBuffer.length] ='<tr><td><img src="' +  fotoFolder + pointData.image1 + '" width="80" alt="Photo"/></td><td><img src="' + fotoFolder + pointData.image2 + '" width="80" alt="Photo2"/>';
	    strBuffer[strBuffer.length] ='</td><td><img src="' + fotoFolder + pointData.image3 + '" width="80" alt="Photo"/></td><td><img src="' + fotoFolder + pointData.image4 + '" width="80" alt="Photo4"/></td></tr></table>';
	  } 
	   strBuffer[strBuffer.length] = '<div style="font-size: 9pt; font-family: Arial; text-align: right;">';
	    switch(pointData.Template)
                {
             case '0':
                var u ='&Category=' + pointData.Category 
                 strBuffer[strBuffer.length] = '<a href="' + fotoFolder + 'AKINHTA/Details.aspx?PropertyKA=' + pointData.PropertyKA + '&lat=' + pointData.latitude + '&lng=' + pointData.longitude + '&OfferedFor=' + pointData.OfferedFor + '"> λεπτομέρειες >> </a>';
                break; 
            default:
              strBuffer[strBuffer.length] = '<a href="Flyers/T' + pointData.Template + '.aspx?PropertyKA=' + pointData.PropertyKA + '&lat=' + pointData.latitude + '&lng=' + pointData.longitude + pointData.OfferedFor + '"> λεπτομέρειες >> </a>';
              break;    
             }
               strBuffer[strBuffer.length] = '</div>';
        var html = strBuffer.join("");
        strBuffer=null
		marker.openInfoWindowHtml(html);
		marker.visited = true;
		return false;
	}
	
	// reorder list - move selected li element on top
        MoveCurrentTop = function(){  
               var ul, il,imga;
               ul=document.getElementById('sidebar-list')
               il=document.getElementById('sidebar-list').getElementsByTagName('li'); 
               if (il.length > 5)
               {
                   for(i=0;i<il.length;i++)
                        {
                            imga=il[i].id
                           if (pointData.PropertyKA == imga) 
                                {   
                                    var c =  il[i]
                                   ul.removeChild(il[i])
                                   ul.insertBefore(c, il[0]);
                               }
                      }
                  }
               }  
       
        GEvent.addListener(marker, 'mousedown', MoveCurrentTop);
	    GEvent.addListener(marker, 'click', focusPoint);	
	    GEvent.addListener(marker,'mouseover',function(){
            marker.setImage(imageOver);
             marker.iconSize = new GSize(60,56);
            });
       
       GEvent.addListener(marker,'mouseout',function(){
            if(marker.visited){
            marker.setImage(imageVisited);
            }else{
            marker.setImage(imageNormal);
            }});
            	
	listItemLink.onclick = focusPoint;
	document.getElementById('sidebar-list').appendChild(listItem);
    map.addOverlay(marker);
}

    
function windowHeight() {
	// Standard browsers (Mozilla, Safari, etc.)
	if (self.innerHeight)
		return self.innerHeight;
	// IE 6
	if (document.documentElement && document.documentElement.clientHeight)
		return document.documentElement.clientHeight;
	// IE 5
	if (document.body)
		return document.body.clientHeight;
	// Just in case.
	return 0;
}

function handleResize() {
	var height = windowHeight() - document.getElementById('toolbar').offsetHeight - 160;
	document.getElementById('map').style.height = height + 'px';
	document.getElementById('sidebar').style.height = height + 'px';
	var menu =$get('menuHolder')
    var tb =  document.getElementById('toolbar').offsetWidth - 13;
    if (menu){menu.style.width=tb  + 'px';}
}

function changeBodyClass(from, to) {
     document.body.className = document.body.className.replace(from, to);
     return false;
}


function initMapAll() {
try
{ 
  if (GBrowserIsCompatible()) 
  {   
	document.getElementById('button-sidebar-hide').onclick = function() { return changeBodyClass('sidebar-right', 'nosidebar'); };
	document.getElementById('button-sidebar-show').onclick = function() { return changeBodyClass('nosidebar', 'sidebar-right'); };
	handleResize();
    changeBodyClass('nosidebar', 'sidebar-right');
	
	if (document.getElementById && document.getElementById('map') != null)
        map =  new GMap2(document.getElementById('map'))
    else if (document.layers && document.layers['map'] != null)
        map= new GMap2(document.layers['map']);
    else if (document.all)
         map=  new GMap2(document.all['map']);
    map.addControl(new GSmallMapControl());
    map.addControl(new GMapTypeControl());
    map.addControl(new GScaleControl());
	map.setCenter(new GLatLng(centerLatitude, centerLongitude), startZoom);
    map.addControl(new GOverviewMapControl());
    map.setMapType(G_NORMAL_MAP);  
   
   var marker = createOfficeMarker();
   map.addOverlay(marker);
             
	changeBodyClass('loading', 'standby');
	var filename = queryString('FileName')
	 DisplayProposedMarkers ();
}
}
catch(e)
	{
	  alert('Παρακαλούμε βεβαιωθείτε οτι η συνδεσή σας στο internet είναι ενεργή')
	  changeBodyClass('loading', 'standby')
	  document.getElementById('indicator').style.display = 'none'  
    }
}

function DisplayProposedMarkers ()
{   
    markerCounter = 0;
    markers=[]
    
    filename="XML/Properties/GProposed.xml" ;  
    var ul = document.getElementById('sidebar-list')
	changeBodyClass('loading', 'standby');
	GDownloadUrl(filename, function(data, responseCode) {
	        if(responseCode == 200) { 
                     var xml = GXml.parse(data);     
                     var  xmlmarkers = xml.documentElement.getElementsByTagName("Markers");
                         for (var i = 0; i < xmlmarkers.length; i++)
                         {   
                            if (xmlmarkers[i].getAttribute("lat")!= 0)
							{     
										marker ={
													'latitude' :  xmlmarkers[i].getAttribute("lat") ,
													'longitude' : xmlmarkers[i].getAttribute("lng"),
													'PropertyKA' : xmlmarkers[i].getAttribute("PropertyKA"),
													'TYPE'   :  xmlmarkers[i].getAttribute("TYPE"),
													'OfferedFor'  :  xmlmarkers[i].getAttribute("OfferedFor"),
													'PRICE'  :  xmlmarkers[i].getAttribute("PRICE"),
													'SURFACE' :  xmlmarkers[i].getAttribute("SURFACE"),
													'add'   :  xmlmarkers[i].getAttribute("add"),
													'image1' : xmlmarkers[i].getAttribute("image1"),
													'image2' : xmlmarkers[i].getAttribute("image2"),
													'image3' : xmlmarkers[i].getAttribute("image3"),
													'image4' :  xmlmarkers[i].getAttribute("image4"),
													'Template' : xmlmarkers[i].getAttribute("Template"),
													'MyName' : xmlmarkers[i].getAttribute("MyName")
												};
									   markers.push(marker); 
								       markerCounter += 1
								     HideDiv('PPcriteria')
							}	
                        }
                                   if (markers.length  == 0) 
                                   {
                                        alert('ΔΕΝ ΒΡΕΘΗΚΑΝ ΑΚΙΝΗΤΑ');   
                                   }
                                   else
                                   {    changeBodyClass( 'nosidebar','sidebar-right');
                                        ul.innerHTML=""
                                        map.setCenter(new GLatLng(0,0),10);    
                                        bounds = new GLatLngBounds();
                                        map.clearOverlays();
	                                    for(id in markers)
	                                         { 
	                                            plotPoint(markers[id]); 
	                                         }
                            	        // ========== create Office marker ================================
                            	        var markerO = createOfficeMarker();
                                        map.addOverlay(markerO);
                                        var latlng = new GLatLng(parseFloat(myData.firmLng),parseFloat(myData.firmLat)); 
                                        bounds.extend(latlng)
                                            
	                                     // ===== determine the zoom level from the bounds =====
	                                   var currentzoom  =map.getBoundsZoomLevel(bounds)
	                                  if (currentzoom > 18)
	                                     {
	                                         map.setZoom(12)
	                                     }
	                                     else
	                                     { 
                                           map.setZoom(map.getBoundsZoomLevel(bounds));
                                          } 

                                         // ===== determine the centre from the bounds ======
                                        map.setCenter(bounds.getCenter());
                                       document.getElementById('indicator').style.display='none'
                                  }     
              } 
              else if(responseCode == -1) {
                    alert("Data request timed out. Please try later.");
                    document.getElementById('indicator').style.display='none'
              } else { 
                 map.addControl(new GSmallMapControl());
                map.addControl(new GMapTypeControl());
                map.setCenter(new GLatLng(parseFloat(myData.firmLng),parseFloat(myData.firmLat)), 14); 
                changeBodyClass('sidebar-right','nosidebar');
               document.getElementById('indicator').style.display='none' 
              }
        }); 
        
	changeBodyClass('loading', 'standby');

}

    // ----------------------------------------- 
 function FormatCurrency(num) 
{
	num = num.toString().replace(/\$|\,/g,'');
	if(isNaN(num))
		num = "0";
		sign = (num == (num = Math.abs(num)));
		num = Math.floor(num*100+0.50000000001);
		cents = num%100;
		num = Math.floor(num/100).toString();
		if(cents<10)
		cents = "0" + cents;
		for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
			num = num.substring(0,num.length-(4*i+3))+'.'+
			num.substring(num.length-(4*i+3));
	//return (((sign)?'':'-') + num + ',' + cents);
	return (((sign)?'':'-') + num);
}
function ConvertToNumber(value)
{
	value=value.replace(/\./g, "" );
	value=value.replace(/\,/g, ".");
	return value;
}
 

 function createOfficeMarker() {
            var strBuffer = new Array()
        strBuffer[strBuffer.length] = '<table border="0" cellpadding="2" style="border-right: #cc0066 thin solid; border-top: #cc0066 thin solid; margin: 2px; border-left: #cc0066 thin solid; border-bottom: #cc0066 thin solid">'
        strBuffer[strBuffer.length]= '<tr><td style="width: 27px" valign="top">'
        strBuffer[strBuffer.length]= '<img src="Images/GMaps/gmapPin.gif" /></td>'
        strBuffer[strBuffer.length]='<td style="width: 317px; vertical-align: top; text-align: center;" valign="top">'
        strBuffer[strBuffer.length]= ' <span style="font-size: 16pt; color: #ff0066; font-family: Arial">'
        strBuffer[strBuffer.length]=  myData.firmName +  '</span><br />'
        strBuffer[strBuffer.length]= '<span style="font-size: 12pt; color: #0000ff">' + myData.firmSlogan + '</span></td>'
        strBuffer[strBuffer.length]= '</tr><tr style="font-size: 12pt">'
        strBuffer[strBuffer.length]= '<td style="width: 27px; height: 25px;" valign="top"></td>'
        strBuffer[strBuffer.length]= '<td style="width: 317px; font-family: Arial; height: 25px;" valign="top">'
        strBuffer[strBuffer.length]= myData.firmAddress 
        strBuffer[strBuffer.length]= '<br /> <span>Τηλ.: ' + myData.firmPhone + '</td>'
        strBuffer[strBuffer.length]= '</tr> </table>' 
        var html = strBuffer.join("");
        var iconImage = "Images/GMaps/on.gif";
        var latlng = new GLatLng(parseFloat(myData.firmLng),parseFloat(myData.firmLat));  
    
        if(iconImage) 
            {
                var icon = new GIcon();
                icon.image = iconImage;
                icon.iconSize = new GSize(15, 15);
                icon.iconAnchor = new GPoint(14, 25);
                icon.infoWindowAnchor = new GPoint(14, 14);
                var marker = new GMarker(latlng,icon);
            } 
            else 
            {
                var marker = new GMarker(latlng);
            }
        
        GEvent.addListener(marker, 'click', function() {
                var markerHTML = html;
                 marker.openInfoWindowHtml(markerHTML);
                });
        
        return marker;
    }

    function ShowDiv(divid)
       { try{
       if (document.layers) document.layers[divid].visibility="show";
       else document.getElementById(divid).style.display='inline';
        fadeDiv(divid,0,0,0); }
       catch(e){return} 
       } 
   function HideDiv(divid)
       { 
       try
        {if (document.layers) document.layers[divid].visibility="hide";
       else document.getElementById(divid).style.display='none';}
       catch(e){return}
       } 
       
     function fadeUp (element,red,green,blue)
      {
      //  var element =  document.forms[0].elements[element1];
       
          if (element.fade) {clearTimeout(element.fade); }
        element.style.backgroundColor = "rgb(" + red + "," + green + "," + blue + ")";
        if (red == 245 && green == 245 & blue ==245) { return; }
         
        var newred = red + Math.ceil((245 - red)/10);
        var newgreen = green + Math.ceil((245 - green)/10);
        var newblue = blue + Math.ceil((245 - blue)/10);
        var repeat = function() {fadeUp(element,newred,newgreen,newblue)};
        element.fade = setTimeout(repeat,40);
     }
     
        function fadeDiv(divid,red,green,blue)
      {
         var element = document.getElementById(divid);
         fadeUp (element,red,green,blue);
      }  
     
  // ---------        query string --------------------------------
  function PageQuery(q) {
	if(q.length > 1) this.q = q.substring(1, q.length);
	else this.q = null;
	this.keyValuePairs = new Array();
	if(q) {
		for(var i=0; i < this.q.split("&").length; i++) {
			this.keyValuePairs[i] = this.q.split("&")[i];
		}
	}
	this.getKeyValuePairs = function() { return this.keyValuePairs; }
	this.getValue = function(s) {
		for(var j=0; j < this.keyValuePairs.length; j++) {
			if(this.keyValuePairs[j].split("=")[0] == s)
				return this.keyValuePairs[j].split("=")[1];
		}
		return false;
	}
	this.getParameters = function() {
		var a = new Array(this.getLength());
		for(var j=0; j < this.keyValuePairs.length; j++) {
			a[j] = this.keyValuePairs[j].split("=")[0];
		}
		return a;
	}
	this.getLength = function() { return this.keyValuePairs.length; }	
}
function queryString(key){
    var page = new PageQuery(window.location.search); 
    return unescape(page.getValue(key)); 
}
   
function ReadMyData(filename)
{try
    {if (window.ActiveXObject)
      {xmlDoc=new ActiveXObject("Microsoft.XMLDOM");}
    else if (document.implementation && document.implementation.createDocument)
      {xmlDoc=document.implementation.createDocument("","",null); }
    else
      {alert('Your browser cannot handle this script');return;}
    xmlDoc.async=false;
    xmlDoc.load(filename);
     this.firmName = (xmlDoc.getElementsByTagName("FirmName")[0].childNodes[0].nodeValue);
     this.firmSlogan = (xmlDoc.getElementsByTagName("FirmSlogan")[0].childNodes[0].nodeValue);
     this.firmAddress = (xmlDoc.getElementsByTagName("FirmAddress")[0].childNodes[0].nodeValue);
     this.firmPhone = (xmlDoc.getElementsByTagName("FirmPhone")[0].childNodes[0].nodeValue);
     this.firmLng = (xmlDoc.getElementsByTagName("FirmLng")[0].childNodes[0].nodeValue);
     this.firmLat = (xmlDoc.getElementsByTagName("FirmLan")[0].childNodes[0].nodeValue);
     this.firmEmail =  (xmlDoc.getElementsByTagName("FirmEmail")[0].childNodes[0].nodeValue); 
     this.firmEmailTagEN = '<a href="mailto:' + this.firmEmail + '?subject=Property Inquiry">For further details or if you have any questions </a>'      
     this.firmEmailTagGr = '<a href="mailto:' +  this.firmEmail + '?subject=Property Inquiry">ζητήστε περισσότερα</a>' }
    catch(error)
    {alert("Σφάλμα κατά την ανάγνωση του αρχείου παρουσίασης γραφείου \n" + error.message); return;};}  
//--------------------------------------------------------------------  
window.onresize = handleResize;
window.onload = initMapAll;


