var Membermap = {

	initrequest: function()
	{
		var req = false;
		if(window.XMLHttpRequest) {
			req = new XMLHttpRequest();
		} else if(window.ActiveXObject) {
			try {
				req = new ActiveXObject('Microsoft.XMLHTTP');
			} catch(e) {}
		}
		if(!req) {
			alert(membermap_lang['not_supported']);
			return false;
		}
		//req.overrideMimeType('text/xml');
		return req;
	},
	
	setstatusicon: function(el, state)
	{
		if(state)
		  el.innerHTML = '<div style="padding:10px;text-align:center"><img src="images/membermap/ajax-loader.gif" alt="' + membermap_lang['loading'] + '" title="' + membermap_lang['loading'] + '"/></div>';
    else
      el.innerHTML = ''; 
  },
	
	search: function(q)
	{
		if(q.length < 3)
		{
		  alert(membermap_lang['min3chars']);
		  return;
		}
		var e = document.getElementById('membermap_results');
		this.setstatusicon(e, true)
		var req = this.initrequest();
		if(!req) return;
		req.onreadystatechange = function()
		{
			if(req.readyState == 4)
			{
				var results = req.responseXML.getElementsByTagName('result');
				var html = '<small><b>' + membermap_lang['locs_found'].replace(/%s1%/, results.length) + '</b></small>';
				if(results.length > 0)
				{
				  var el;
					for(var i = 0; i < results.length; i++)
					{
  					html += '<hr/>';
  					if(el = results[i].getElementsByTagName('id'))
				      if(el.length > 0)
						    html += '<div><a href="javascript:Membermap.locinfo(' + el[0].childNodes[0].nodeValue + ')">';
  					if(el = results[i].getElementsByTagName('name'))
				      if(el.length > 0)
						    html += el[0].childNodes[0].nodeValue + '</a><br/>';
  					if(el = results[i].getElementsByTagName('trace0'))
				      if(el.length > 0)
						    html += '<small>' + el[0].firstChild.nodeValue + '<br/>';
  					if(el = results[i].getElementsByTagName('trace1'))
				      if(el.length > 0)
						    html += '&#x2514; ' + el[0].firstChild.nodeValue + '<br/>';
  					if(el = results[i].getElementsByTagName('trace2'))
				      if(el.length > 0)
						    html += '&nbsp;&#x2514; ' + el[0].firstChild.nodeValue + '</small>';
						html += '</div>';
					}
				}
				e.innerHTML = html;
				
				
			}
		}
		req.open('GET', '?q=' + escape(q), true);
		req.send(null);
	},
	
	searchuser: function(q)
	{
		if(q.length < 3)
		{
		  alert(membermap_lang['min3chars']);
		  return;
		}
		var e = document.getElementById('membermap_results');
		this.setstatusicon(e, true)
		var req = this.initrequest();
		if(!req) return;
		req.onreadystatechange = function()
		{
			if(req.readyState == 4)
			{
				var results = req.responseXML.getElementsByTagName('result');
				var html = '<small><b>' + membermap_lang['users_found'].replace(/%s1%/, results.length) + '</b></small>';
				if(results.length > 0)
				{
				  var el;
					for(var i = 0; i < results.length; i++)
					{
  					html += '<hr/>';
  					if(el = results[i].getElementsByTagName('locid'))
				      if(el.length > 0)
						    html += '<div><a href="javascript:Membermap.locinfo(' + el[0].childNodes[0].nodeValue + ')">';
  					if(el = results[i].getElementsByTagName('username'))
				      if(el.length > 0)
						    html += el[0].childNodes[0].nodeValue + '</a>';
  					if(el = results[i].getElementsByTagName('uid'))
				      if(el.length > 0)
						    html += ' <a href="member.php?action=profile&uid=' + el[0].childNodes[0].nodeValue + '"><img src="images/membermap/profile.gif" alt="Profil" title="Profl" style="vertical-align:middle"/></a><br/>';
  					if(el = results[i].getElementsByTagName('name'))
				      if(el.length > 0)
						    html += '<small>' + el[0].firstChild.nodeValue + '</small>';
						html += '</div>';
					}
				}
				e.innerHTML = html;
			}
		}
		req.open('GET', '?qu=' + escape(q), true);
		req.send(null);
	},
	
	locinfo: function(loc_id)
	{
		var e = document.getElementById('membermap_locinfo');
		this.setstatusicon(e, true)
		var req = this.initrequest();
		if(!req) return;
		req.onreadystatechange = function()
		{
			if(req.readyState == 4)
			{
				var xml = req.responseXML;
				var result = xml.getElementsByTagName('result');
				var html = '';
				var maptext = document.getElementById('membermap_crosstext');
				if(result.length > 0)
				{
				  var el;
				  if(el = result[0].getElementsByTagName('name'))
				    if(el.length > 0)
				    {
              html += '' + el[0].firstChild.nodeValue + '<br/>';
              maptext.innerHTML = el[0].firstChild.nodeValue;
            }
          if(el = result[0].getElementsByTagName('land'))
				    if(el.length > 0)
              html += '<table><tr><td>' + membermap_lang['country'] + '</td><td>' + el[0].firstChild.nodeValue + '</td></tr>';
          if(el = result[0].getElementsByTagName('bland'))
				    if(el.length > 0)
              html += '<tr><td>' + membermap_lang['land'] + '</td><td>' + el[0].firstChild.nodeValue + '</td></tr>';
				  if(el = result[0].getElementsByTagName('regbezirk'))
				    if(el.length > 0)
              html += '<tr><td>' + membermap_lang['district'] + '</td><td>' + el[0].firstChild.nodeValue + '</td></tr>';
          if(el = result[0].getElementsByTagName('lkreis'))
				    if(el.length > 0)
              html += '<tr><td>' + membermap_lang['county'] + '</td><td>' + el[0].firstChild.nodeValue + '</td></tr>';
          if(el = result[0].getElementsByTagName('gem'))
				    if(el.length > 0)
              html += '<tr><td>' + membermap_lang['commune'] + '</td><td>' + el[0].firstChild.nodeValue + '</td></tr>';
          if(el = result[0].getElementsByTagName('plz'))
            if(el.length > 0)
            {
    				  var plz = el[0].firstChild.nodeValue.split(',');
    				  html += '<tr><td>' + membermap_lang['zipcode'] + '</td><td>';
              if(plz.length > 3)
                html += plz.shift() + ', ' + plz.shift() + ', ' + plz.shift() + ', <span title="' + plz.join(', ') + '">...</span>';
              else
                html += plz.join(', ');
              html += '</td></tr>';
            }
          if(membermap_isuser)
          	html += '<tr><td colspan="2"><button onclick="location.href=\'?setloc=' + loc_id + '\'">' + membermap_lang['mark_as_residence'] + '</a></td></tr>';
					html += '</table>';
          e.innerHTML = html;
          
          
					var x = 0, y = 0;
					var cross = document.getElementById('membermap_cross');
					var map = document.getElementById('membermap_map');
					var ol = map.offsetLeft;
					var ot = map.offsetTop;
					var el = map;
					while((el = el.offsetParent) != null)
					{
						ol += el.offsetLeft;
					}
					el = map;
					while((el = el.offsetParent) != null)
					{
						ot += el.offsetTop;
					}
					if(el = result[0].getElementsByTagName('x'))
						if(el.length > 0)
							x = parseInt(ol) + parseInt(el[0].firstChild.nodeValue);
					if(el = result[0].getElementsByTagName('y'))
						if(el.length > 0)
							y = parseInt(ot) + parseInt(el[0].firstChild.nodeValue);
					cross.style.left = (x - 8) + 'px';
					cross.style.top = (y - 7) + 'px';
					cross.style.display = '';
				}
			}
		}
		req.open('GET', '?loc_id=' + loc_id, true);
		req.send(null);
	},
	
	mapinfo: function(loc_id)
	{
		var e = document.getElementById('membermap_mapinfo');
		this.setstatusicon(e, true)
		var req = this.initrequest();
		if(!req) return;
		req.onreadystatechange = function()
		{
			if(req.readyState == 4)
			{
				var xml = req.responseXML;
				var results = xml.getElementsByTagName('result');
				if(results.length > 0)
				{
				  var el;
				  var html = '';
					for(var i = 0; i < results.length; i++)
					{
  					if(el = results[0].getElementsByTagName('name'))
				      if(el.length > 0)
						    html += membermap_lang['users_from'].replace(/%s1%/, el[0].firstChild.nodeValue) + '<br/>';
  					if(el = results[0].getElementsByTagName('user'))
				      for(var i = 0; i < el.length; i++)
				      {
						    html += '<a href="member.php?action=profile&uid=' + el[i].getAttribute('uid') + '">' + el[i].firstChild.nodeValue + '</a>';
						    if(i != el.length - 1)
						    	html += ', '; 
						  }
					}
					e.innerHTML = html;
				}
			}
		}
		req.open('GET', '?mapinfo=' + loc_id, true);
		req.send(null);
	},
	
	popup: function(loc, users)
	{
		var e = document.getElementById('membermap_popup');
		var e1 = document.getElementById('membermap_popup1');
		var e2 = document.getElementById('membermap_popup2');

		e1.innerHTML = loc;
		e2.innerHTML = users;
		e.style.display = '';
	},
	
	popuphide: function()
	{
		var e = document.getElementById('membermap_popup');
		e.style.display = 'none';
	},
	
	capturemouse: function(e)
	{
		var ie5 = (document.getElementById && document.all); 
		var ns6 = (document.getElementById && !document.all); 
		var ua = navigator.userAgent.toLowerCase();
		var isapple = (ua.indexOf('applewebkit') != -1 ? 1 : 0);
		if(document.getElementById)
    {
			var iebody = (document.compatMode && document.compatMode != 'BackCompat') ? document.documentElement : document.body;
			pagex = (isapple == 1 ? 0 : (ie5) ? iebody.scrollLeft : window.pageXOffset);
			pagey = (isapple == 1 ? 0 : (ie5) ? iebody.scrollTop : window.pageYOffset);
			mousex = (ie5) ? event.x : (ns6) ? clientX = e.clientX : false;
			mousey = (ie5) ? event.y : (ns6) ? clientY = e.clientY : false;
			
			var e = document.getElementById('membermap_popup');
			e.style.left = (mousex + pagex + 8) + 'px';
			e.style.top = (mousey + pagey - 40) + 'px';
    }
	}
};

if(document.addEventListener)
	document.addEventListener("mousemove", Membermap.capturemouse, true);
else
	document.onmousemove = Membermap.capturemouse;

