var xmlhttp;
var isIE;
/*@cc_on @*/
/*@if (@_jscript_version >= 5)
  try {
  xmlhttp=new ActiveXObject("Msxml2.XMLHTTP");
  isIE = true;
 } catch (e) {
  try {
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  } catch (E) {
   xmlhttp=false;
  }
 }
@else
 xmlhttp=false;
@end @*/

if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
 try {
  xmlhttp = new XMLHttpRequest();
 } catch (e) {
  xmlhttp=false;
 }
}

var map;
var all_markers_ids = [];
var all_markers = [];
var bounds = new GLatLngBounds(0,0);
var geocoder = new GClientGeocoder();
var cluster;
var focus_marker = null;
var focus_marker_address = "";
 
function tooltipsTonen(infovenster,label) {
  if(typeof(tooltips)==='undefined') return;
  
  var links_boven = map.getCurrentMapType().getProjection().fromLatLngToPixel(map.fromDivPixelToLatLng(new GPoint(0,0),true),map.getZoom());
  var offset = map.getCurrentMapType().getProjection().fromLatLngToPixel(infovenster.getPoint(),map.getZoom());
  var anker_ico = infovenster.getIcon().iconAnchor;
  var breedte_ico = infovenster.getIcon().iconSize.width;
  var hoogte_label = 0;
  var positie = new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(offset.x - links_boven.x - anker_ico.x + breedte_ico + 2, offset.y - links_boven.y -anker_ico.y -hoogte_label)); 
 
  positie.apply(tooltips);
  tooltips.innerHTML = label;
  tooltips.style.visibility = "visible";
}
 
function createMarker(hotel_name,hotel_user_url,point,catid,catname,name,description,label,location,address,currentbid,timeleft,auctionurl,auctionid,marker_id,image) {
	
  
  var icon = new GIcon();
  icon.image = "/images/gmaps/pointer.png";
	   
  icon.iconSize = new GSize(20,27);	
  icon.iconAnchor = new GPoint(10,27);
  icon.infoWindowAnchor = new GPoint(10,26);
  
  var popupwindow = new GMarker(point, {icon: icon, draggable: false, id: auctionid, title:label} );
 
  GEvent.addListener(popupwindow, "click", function() {

    var html = "<table border=0 width=210 cellpadding=2 >"
    +"<tr><td valign=\"top\" class=\"smallfont\"><b>" + hotel_name + "</b><br>"+address+"<br></td></tr>"
    +"<tr><td valign=\"top\" align=\"center\" height=120 ><img src=\""+image+"\" border=\"1\" height=120 ></td></tr>"
    +"<tr><td valign=\"top\" class=\"smallfont\"><b>Huidige bod: </b>&euro;"+currentbid+"<br>"
    +"<b>Sluit tijd: </b>"+timeleft+"<br>"
    +"<b><a href=\""+hotel_user_url+"\">Klik hier meer informatie</a></b>"
    +"</td></tr>"
    +"</table>";       
    
    //var html = "<h4>" + name + "</h4><table border=0 width=350 cellpadding=2 background=\"/images/gmaps/bggoogle.jpg\"><tr><td width=270 valign=\"top\" class=\"smallfont\">"+description+"<br><br><b>Huidige bod: </b>"+currentbid+" euro<br><b>Tijd over: </b>"+timeleft+"<br><br><b><a href=\""+auctionurl+"\">Klik hier voor de veiling</a></b></td><td width=80 valign=\"top\"><div align=\"right\"><img src=\""+image+"\" border=\"1\"></div></td></tr><tr bgcolor=\"#a6a6a6\"><td colspan=\"2\" class=\"smallfont\"><img src=\"/themes/modern_silver/img/pixel.gif\" width=\"1\" height=\"1\"></td></tr></table>";
    
    //var miw = map.getInfoWindow();
    popupwindow.openInfoWindowHtml(html);
/*
    GEvent.addListener(miw, "closeclick", function() {
    });	
*/

  });

  GEvent.addListener(popupwindow,"mouseover", function() {
    tooltipsTonen(popupwindow,label);

	popupwindow.setImage("/images/gmaps/pointer-focus.png");

  });
  
  GEvent.addListener(popupwindow,"mouseout", function() {
    if(typeof(tooltips) !='undefined')
	{
		tooltips.style.visibility = "hidden";
	}
	popupwindow.setImage("/images/gmaps/pointer.png");

  }); 

  return popupwindow;
  
}
  
function markerLoader(category_id) {
	
  if (xmlhttp) {
	var url="/cache/gmaps_feed.rss";
	
    xmlhttp.open("GET",url,true);
    
      xmlhttp.onreadystatechange = function() {
      	
      if (xmlhttp.readyState == 4) {   
      	   	
      	if (xmlhttp.status == 200) {			
		  var xmldata = GXml.parse(xmlhttp.responseText);		  	    
          var markers = xmldata.documentElement.getElementsByTagName("marker");
		  		
          for (var i = 0; i < markers.length; i++) {
		
			var catname = markers[i].getAttribute("category");	
            var lat = parseFloat(markers[i].getAttribute("lat"));
            var lon = parseFloat(markers[i].getAttribute("lon"));
            var point = new GLatLng(lat,lon);
			
			
            var name = markers[i].getAttribute("name");
            var label = markers[i].getAttribute("label");
			var address = markers[i].getAttribute("address");	
			var description = markers[i].getAttribute("description");
			var currentbid = markers[i].getAttribute("currentbid");				
			var timeleft = markers[i].getAttribute("timeleft");				
			var auctionurl = markers[i].getAttribute("auctionurl");	
			var auctionid = markers[i].getAttribute("auctionid");	
			var image = markers[i].getAttribute("image");	
			var hotelname = markers[i].getAttribute("hotelname");	
			var hotel_user_url = markers[i].getAttribute("hotel_user_url");	

			var marker_id = auctionid;
			
            var marker = createMarker(hotelname,hotel_user_url,point,catname,catname,name,description,label,location,address,currentbid,timeleft,auctionurl,auctionid,marker_id,image);
			
			all_markers.push(marker);
		    all_markers_ids.push(marker_id);
			
            //map.addOverlay(marker);
			bounds.extend(point);
          }
		  cluster.addMarkers(all_markers);
		  cluster.refresh();
        }
        else {
	      //alert("XML Error bij ophalen kaart data.");  
        }
      }
    }
  
    xmlhttp.setRequestHeader('Accept','message/x-formresult');
    xmlhttp.send(null);
    return false;
  }
  else {
	alert("Kaart data kan door uw browser niet opgehaald worden, gebruike een andere browser.");  
  }
}

function ClusterClick(args) {
	cluster.defaultClickAction=function(){
		map.setCenter(args.clusterMarker.getLatLng(), map.getBoundsZoomLevel(args.clusterMarker.clusterGroupBounds))
		delete cluster.defaultClickAction;
	}
	
	var html='<h4>' +args.clusteredMarkers.length+ ' Veilingen: </h4>'
		+'<table border=0 width=200 cellpadding=2 ">'
		+'<tr><td width=200 valign=\"top\" class=\"smallfont\">'
		+'<div style="max-height:120px;overflow:auto;width:100%;"><ul>';
		
	for (i=0; i<args.clusteredMarkers.length; i++) {
		html+='<li><a href=\"javascript:cluster.triggerClick('+args.clusteredMarkers[i].index+')\">'+args.clusteredMarkers[i].getTitle()+'</a></li>';
	}
	html+='</ul></div><br><a href=\"javascript:void(0)\" onclick=\"cluster.defaultClickAction()\">Zoom in op deze Veilingen</a></b></td></tr></table>';
	
	args.clusterMarker.openInfoWindowHtml(html);
}

function showAddress(address) {
	var crossIcon = new GIcon();		
	crossIcon.image = "/images/gmaps/pointer.png";
	crossIcon.iconSize = new GSize(20, 27);
	crossIcon.iconAnchor = new GPoint(10, 27);	
	crossIcon.infoWindowAnchor = new GPoint(10,26);
	
	var markerPoints =new Array();
	var centerpoint = null;
	var arr_address = address.split('|');
	var j = 0;
	for ( i=0;i < arr_address.length ;i=i+2 )    
    {        	
    	var addressText = arr_address[i];
    	if(addressText.length < 1) continue;   	
    	
        geocoder.getLatLng(
	        addressText,
	        function(point) {
	          if(j==0){  
				if (!point) {
				    //alert(address + " niet gevonden!");
					map.setCenter(new GLatLng(52.132633, 5.291266), 5);
			     } else {
			        setmap_center(point, 10 ,arr_address[0]);
			    }   
			  }  	         		        	
	          if (point) {	            
	            var markerTitle = "";
		    	if(arr_address.length>(j+1)) markerTitle=arr_address[j+1];
		    	var markerAddress= arr_address[j];	    	
	            markerOptions = {icon:crossIcon, title:markerTitle};
	                  
	            markerPoints[j/2] = point;
	            
	            var popupwindow = new GMarker(point, markerOptions);
	            GEvent.addListener(popupwindow, "click", function() {
	            	setmap_center(point, 10 ,markerAddress);
	            		                
				    var html = '<table border=0 width=210 cellpadding=1 >'
				    +'<tr><td valign=\"top\" class=\"smallfont\"><b>' + markerTitle + '</b><br>'+markerAddress+'<br></td></tr>';
				    if(arr_address.length>2){
				    	html+='<tr><td valign=\"top\" class=\"smallfont\"><b>Andere hotels</b><br>'
				    		+'<div style=\"max-height:160px;overflow:auto;width:100%;\"><ul style="padding-left:5px;margin-left: 8px;">';
				    	
						for (var k=0; k<arr_address.length; k=k+2) {
						    if(markerAddress==arr_address[k] || arr_address[k].length<1 || typeof(markerPoints[k/2])=='undefined') continue;
							html+='<li><a href=\"javascript:setmap_center(new GLatLng'+markerPoints[k/2]+', 10,\''+ arr_address[k] +'\');\"><b>' + arr_address[k+1] + '</b><br>'+arr_address[k]+'</a></li>';
						}
						html+='</ul></div></td></tr>';
					}
					html+='</table>';
	
				    popupwindow.openInfoWindowHtml(html);
				  });
				map.addOverlay(popupwindow);
	          }
	          j = j+2;
	        }
	     );
    }  
}
function setmap_center(point,scale,title){
	if(focus_marker) map.removeOverlay(focus_marker);
	map.setCenter(point, scale);
	map.closeInfoWindow();
	
	var crossIcon = new GIcon();
	crossIcon.image = "/images/gmaps/cross.png";
	crossIcon.iconSize = new GSize(15, 14);
	crossIcon.iconAnchor = new GPoint(7, 7);
	markerOptions = {icon:crossIcon, clickable:false};
	focus_marker_address = title;  
	focus_marker = new GMarker(point, markerOptions);    
	map.addOverlay(focus_marker);
}

function showCategory(address) {
	var crossIcon = new GIcon();
	crossIcon.image = "/images/gmaps/cross.png";
	crossIcon.iconSize = new GSize(15, 14);
	crossIcon.iconAnchor = new GPoint(7, 7);
	markerOptions = {icon:crossIcon, clickable:false};
      geocoder.getLatLng(
        address,
        function(point) {
          if (!point) {
            //alert(address + " niet gevonden!");
			map.setCenter(new GLatLng(52.132633, 5.291266), 5);
          } else {
            			map.setCenter(point, 8);
						map.addOverlay(new GMarker(point, markerOptions));          }
        }
      );
}
  
function initialize() {
	
      if (GBrowserIsCompatible()) {
        map = new GMap2(document.getElementById("map"));
        map.addControl(new GLargeMapControl());
        map.addControl(new GMapTypeControl());
        map.setCenter(new GLatLng(52.132633, 5.291266), 5);
		map.enableScrollWheelZoom();
		// remove tooltips because here uses clusterMarkerTitle
		//tooltips = document.createElement("div");
		//map.getPane(G_MAP_FLOAT_PANE).appendChild(tooltips);
		//tooltips.id = "tt";
		//tooltips.style.visibility="hidden";
		//tooltips.style.display="none";
		
		cluster = new ClusterMarker(map, {clusterMarkerTitle:'%count Veilingen, Klik voor meer info' , clusterMarkerClick:ClusterClick , fitMapMaxZoom :20 });
				
		markerLoader(0);	
		}
}

