var snMap = null;
var nieuwetekst = '';
var snMarkers = [];
var SideBarHtml = [];
var infoWindowHtml1 = '';
var infoWindowHtml2 = '';

function XHConn() {
var xmlhttp, bComplete = false;
var hasError = false;

	try { 
		xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
	}
  	catch (e) { 
		try { 
			xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
		}
		catch (e) {
			try { 
				xmlhttp = new XMLHttpRequest(); 
				xmlhttp.overrideMimeType('text/xml');
			}
			catch (e) { 
			xmlhttp = false; 
			}
		}
	}
	
	if (!xmlhttp) return null;
  
	this.connect = function(sURL, sMethod, sVars, fnDone, waiter) {
		
		if (!xmlhttp) return false;
		statushtml='';
		//setClock(true,waiter,false,statushtml);
    	bComplete = false;
    	sMethod = sMethod.toUpperCase();

    	try {
      		if (sMethod == "GET") {
      			if (sVars != "") {
      				sURL = sURL+"?"+sVars;
      			}
        		xmlhttp.open(sMethod, sURL, true);
        	sVars = "";
      	}
		else {
        	xmlhttp.open(sMethod, sURL, true);
        	xmlhttp.setRequestHeader("Method", "POST "+sURL+" HTTP/1.1");
        	xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
		}

	xmlhttp.onreadystatechange = function() {

		switch (xmlhttp.readyState) {
		case 0:
			//setClock(true,waiter,false,'[Uninitialised]');
			break;
		case 1:
			//setClock(true,waiter,false,'[Loading...]');
			break;
		case 2:
			//setClock(true,waiter,false,'[Loaded]');
			break;
		case 3:
			//setClock(true,waiter,false,'[<font color=red><b>even geduld</b></font>]');
			break;
		case 4:
	          	bComplete = true;
			if (200 == xmlhttp.status) {
				//setClock(false,waiter,false,'[Parsing...]');
				fnDone(xmlhttp);
				//snToSidebar('[inzoomen & klik op de kaart]','black');
			} else {
				//snToSidebar('[Server error ' + xmlhttp.status + ': ' + xmlhttp.statusText + ']','red');
				switch (xmlhttp.status) {
					case 404: 
					  hasError = "<strong>" + error404 + "</strong>";
					  break;
					case 400: 
					  hasError = "<strong>" + error400 + "</strong>";
					  break;
					default: 
					  hasError = "<strong>" + errorDefault + "</strong>";
					  break;
				}
			//setClock(false,waiter,hasError,statushtml);

			}
			break;
		} // case
		// put the sideBarHtml contents into the sideBar div
	} // function



	xmlhttp.send(sVars);
	}
	
   
    catch(z) { 
		return false; 
	}
    return true;
  };
  return this;
}


function snCreateMarker(i, id, name, iconcolor, point) {

icon = new GIcon(G_DEFAULT_ICON, "m_red.png");

switch (iconcolor){
case 'red':
icon.image = 'm_red.png';
break;
case 'red_verhuur':
icon.image = 'm_red_verhuur.png';
break;
default:
icon.image = 'm_red.png';
}

icon.shadow = "m_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);

/*
icon = new GIcon(G_DEFAULT_ICON, "m_red.png");
icon.image = 'm_red.png';
icon.shadow = "m_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);
*/


var marker = new GMarker(point, {icon: icon, title: name});
snAddMarkerListener(marker, i, id);
//GEvent.addListener(marker, "click", function() {snMarkers[i].openInfoWindowHtml(snInfoHtmls[i]);})
return marker;
}

function snToSidebar(html,fgcolor) {
	document.getElementById('snSideBar').style.color = fgcolor;
	document.getElementById('snSideBar').innerHTML = html;
}

function toontekst(nieuwetekst){
	document.getElementById('inhoud').innerHTML = nieuwetekst;
	return nieuwetekst;
	}

function updateMarker(id,marker){


myRandom = Math.floor(Math.random() * 100);
var url = "mapGetPoint.php?id=" + id + "&q=" + myRandom;
infoWindowHtml1="<div class='sn_wb'><div class='sn_il'></div></div>";
infoWindowHtml2='';
fgcolor='black';


var request = GXmlHttp.create();
//open the request to putxml.php on your server
request.open('GET', url, true);
request.onreadystatechange = function() {

		switch (request.readyState) {
		case 0:
			snToSidebar('[Uninitialised]',fgcolor);
			break;
		case 1:
			snToSidebar('[Loading...]',fgcolor);
			break;
		case 2:
			snToSidebar('[Loaded]',fgcolor);
			break;
		case 3:
			snToSidebar('[Interactive]',fgcolor);
			break;
		case 4:
			if (200 == request.status) {

				var xmlDoc = request.responseXML;
				var xmlPoint = xmlDoc.documentElement.getElementsByTagName("marker"); //only 1 point
				//id, name, groupID, dorp, postcode, street, groupname, mail, domainname, lat, lng, dep, orgid, org, cat, statusid
				//snMap.clearOverlays();
		
		for (var j = 0; j < xmlPoint.length; j++) {
			//window.alert(xmlMarkers.length);
			xmlMarker = xmlPoint[j];
			var id = xmlMarker.getAttribute("id");
			var name = xmlMarker.getAttribute("name");
			var groupID = xmlMarker.getAttribute("groupID");
			var dorp = xmlMarker.getAttribute("dorp");
			var gemeente = xmlMarker.getAttribute("gemeente");
			var postcode = xmlMarker.getAttribute("postcode");
			var street = xmlMarker.getAttribute("street");
			var groupname = xmlMarker.getAttribute("groupname");
			var mail = xmlMarker.getAttribute("mail");
			var domainname = xmlMarker.getAttribute("domainname");
			var lat = parseFloat(xmlMarker.getAttribute("lat"));
			var lng = parseFloat(xmlMarker.getAttribute("lng"));
			var dep = xmlMarker.getAttribute("dep");
			var orgid = xmlMarker.getAttribute("orgid");
			var org = xmlMarker.getAttribute("org");
			var orgshort = xmlMarker.getAttribute("orgshort");
			var orgurl = xmlMarker.getAttribute("orgurl");
			var cat = xmlMarker.getAttribute("cat");
			var statusid = xmlMarker.getAttribute("statusid");
			var verhuur = xmlMarker.getAttribute("verhuur");
			var verhuur_info = xmlMarker.getAttribute("verhuur_info");
			
			//var prov = xmlMarker.getAttribute("prov"); //??

			if (org != 'clear'){orgs = org;}else{orgs = '-';}

			
			if (groupID != '') {groupID=" (" + groupID + ")";}

			if ((groupID == ' (0)') && (dep == 'jhnet.be')) {orgid=orgid + "a"; groupID = '';}

			infoWindowHtml1 =
				"<div class='sn_wb'><div class='sn_il'><img src='maplogo.php?id="+ id +"&orgid="+ orgid +"' alt='logo' title='logo' /></div>" +
				"<div class='sn_ir'>" + orgs + "<br />" +
				"<a href='" + cat + "/" + orgurl + "/" + name + "' target='_blank'>" + groupname + "</a>" + groupID + " <br />" +
				"" + street + "<br />" +
				postcode + " <span class='aa'>" + dorp + "</span><br />"
				'';

			if ((domainname) && (domainname != "nodomain")) {
				infoWindowHtml1 += '<a href="http://www.' + domainname + '" target="_blank">www.' + domainname + '</a><br />';
			}else{
				infoWindowHtml1 += '<a href="http://' + name + '.' + dep + '" target="_blank">' + name + '.' + dep + '</a><br />';
			}

			if (verhuur == "y") {
				infoWindowHtml1 += '<br />Onze lokalen worden verhuurd.<br />';
			}else if(verhuur == "n"){
				infoWindowHtml1 += '<br />Onze lokalen worden niet verhuurd.<br />';
			}else{
				infoWindowHtml1 += '<br />Lokalen verhuur ??<br />';
			}

			infoWindowHtml1 += '</div></div>';

			//infoWindowHtml2 = "nog geen diensten <br /> Activeren via control panel (my-site)";
			infoWindowHtml2 = verhuur_info;

			if (statusid == 2) {
			infoWindowHtml2 += '<br /><b>Status</b>: wachten op bevestiging<br />';
			}


		} // for
		
var infoTabs = [
		new GInfoWindowTab("Algemeen", infoWindowHtml1),
		new GInfoWindowTab("Diensten", infoWindowHtml2)
];

		//infoTabs[0].content=infoWindowHtml1;
		//alert(infoTabs[0].content);
		//marker.openInfoWindowHtml(infoWindowHtml1);
		marker.openInfoWindowTabsHtml(infoTabs);
		//return infoWindowHtml1;

		
			} else {
				alert('[Server error ' + request.status + ': ' + request.statusText + ']');
			}
			break;
		} // case


} // function



request.send(null);
return false;
}
	
	
function snAddMarkerListener(marker, i, id) {
	
	GEvent.addListener(marker, "click", function() {
	
	myRandom = Math.floor(Math.random() * 100);
	var url = "mapGetPoint.php?id=" + id + "&q=" + myRandom;
	
	//snGetPoint(id);
	//ajax_get(url,'alert(ajax.responseXML);');
//	ajax_get(url,'toontekst(snParsePoint2(ajax.responseXML));');
	//snMarkers[i].openInfoWindowHtml(ajax_get(url,'snParsePoint2(ajax.responseXML);'));
	
	//snMarkers[i].openInfoWindowHtml(nieuwetekst);
//	marker.openInfoWindowHtml(nieuwetekst);
	//window.alert('i='+i);
	
	//ajax_get(url,'toontekst(snParsePoint2(ajax.responseXML));');
	//snMarkers[i].openInfoWindowHtml(ajax_get(url,'toontekst(snParsePoint2(ajax.responseXML));'));
	//snMarkers[i].openInfoWindowHtml(ajax_get(url,'String(snParsePoint2(ajax.responseXML));'));
	
	updateMarker(id,marker);

	})
	

	
}




function snParseXml(request) {

// obtain the array of markers and loop through it
sideBarHtml = '';
iconcolor = 'red';
snMarkers = [];

	try {

		var xmlDoc = request.responseXML;
		var xmlMarkers = xmlDoc.documentElement.getElementsByTagName("marker");

		snMap.clearOverlays();
		var bounds = new GLatLngBounds();
		
		if (xmlMarkers.length > 0){
		for (var i = 0; i < xmlMarkers.length; i++) {
			str_verhuur = "";
			xmlMarker = xmlMarkers[i];
			var id = xmlMarker.getAttribute("id");
			var groupname = xmlMarker.getAttribute("groupname");
			var org = xmlMarker.getAttribute("org");
			var lat = parseFloat(xmlMarker.getAttribute("lat"));
			var lng = parseFloat(xmlMarker.getAttribute("lng"));

			var verhuur = xmlMarker.getAttribute("verhuur");
			if (verhuur == "y"){ str_verhuur="_verhuur";}

			iconcolor = "red"+str_verhuur;
			

			if ((Math.round(lat) != 0) || (Math.round(lng) != 0)) {
				bounds.extend(new GLatLng(lat, lng));
			}
			
			snMarkers[i] = snCreateMarker(i, id, org + ' - ' + groupname, iconcolor, new GLatLng(lat, lng));
			snMap.addOverlay(snMarkers[i]);

		} // for

		snMap.setZoom(snMap.getBoundsZoomLevel(bounds));
		snMap.setCenter(bounds.getCenter());
		}


	} catch (err) {
		//window.alert("error44");
		sideBarHtml += '<div>Error in data:</div>';
		sideBarHtml += '<div>'+ request.responseText +'</div>';
			}
	return sideBarHtml;
}



function snGetXml(lat,lng) {
	//myRandom = Math.floor(Math.random() * 100);
	waiter='sideBar';
	var url = "mapGetPoints.php?lat=" + lat + "&lng=" + lng;

	var myConn = new XHConn();
	var content = false;
	if (myConn) {
	this.fnWhenDone = function (oXML) {
	snParseXml(oXML);
	};
	myConn.connect(url, "GET", "", fnWhenDone, waiter);

	}else{alert("geen connectie object");}
}

function snGetPoint(id) {
	myRandom = Math.floor(Math.random() * 100);
	waiter='sideBar';
	html='';
	//if (q==''){snToSidebar("[geen info beschikbaar]",'red');q='empty';}
	var url = "mapGetPoint.php?id=" + id + "&q=" + myRandom;

	var myConn2 = new XHConn();
	var content = false;
	if (myConn2) {
	this.fnWhenDone = function (oXML) {
	snParsePoint(oXML);
	//snToSidebar('[inzoomen & klik op de kaart]','black');
	};
	myConn2.connect(url, "GET", "", fnWhenDone, waiter);

	}else{alert("geen connectie object");}
//return html;
}


function snload(){
	if (GBrowserIsCompatible()) {
		snMap = new GMap2(document.getElementById('snMap'));
		snMap.setCenter(new GLatLng(50.8, 4.2), 8);
		snMap.addControl(new GMapTypeControl());
		snMap.addControl(new GLargeMapControl());
		snMap.addControl(new GScaleControl());
		//snMap.enableContinuousZoom();
		snMap.enableScrollWheelZoom();
		//snMap.enableDoubleClickZoom();
		snAddMapEvents();

}
}



function snAddMapEvents(){

GEvent.addListener(snMap, "click", function(marker, point) {
if (!marker){
//create an HTML DOM form element
//var inputForm = document.createElement("form");
//inputForm.setAttribute("action","");
//inputForm.onsubmit = function() {putMarker(); return false;};
//retrieve the longitude and lattitude of the click point
var lng = point.lng();
var lat = point.lat();
/*
inputForm.innerHTML = '<fieldset style="width:200px;">'
+ '<legend>Jouw vereniging</legend>'
+ '<input type="text" id="groupname" style="width:100%;" value="groepsnaam" maxlength="40" onclick="if(this.value==\'groepsnaam\'){this.value=\'\';}"/>'
+ '<input type="text" id="street" style="width:100%;" value="straat" maxlength="50" onclick="if(this.value==\'straat\'){this.value=\'\';}"/>'
+ '<input type="text" id="pcode" style="width:20%;" size="9" value="0000" maxlength="6"/ onclick="if(this.value==\'0000\'){this.value=\'\';}"> <input type="text" id="city" style="width:70%;" size="20" maxlength="40" value="gemeente" onclick="if(this.value==\'gemeente\'){this.value=\'\';}"/><br /><br />'
+ '<input type="text" id="domain" style="width:100%;" value="http://www.mijndomein.be" maxlength="40" onclick="if(this.value==\'http://www.mijndomein.be\'){this.value=\'\';}"/>'
+ '<input type="text" id="mail" style="width:100%;" value="info@mijndomein.be" maxlength="40" onclick="if(this.value==\'info@mijndomein.be\'){this.value=\'\';}"/><br /><br />'
+ '<input type="submit" value="Save"/>'
+ '<input type="hidden" id="lng" value="' + lng + '"/>'
+ '<input type="hidden" id="lat" value="' + lat + '"/>'
+ '</fieldset>';
*/

//snMap.openInfoWindow (point,inputForm);

snGetXml(lat,lng);


}

});


}

