
function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      oldonload();
      func();
    }
  }
}

function readCookie(name)
{
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++)
	{
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

function showMsg() {

var element = document.getElementById("msg");
if (element.firstChild && element.firstChild.nodeType == 8) {
  // 8 means Node.COMMENT_NODE.  We're using numeric values
  // because IE6 does not support constant names.
  var parameters = element.firstChild.data;
}

alert(parameters);

}

function onLoad() {

baseIcon = new GIcon();
baseIcon.shadow = "http://www.google.com/mapfiles/shadow50.png";
//baseIcon.iconSize = new GSize(20, 34);
//baseIcon.shadowSize = new GSize(37, 34);
baseIcon.iconSize = new GSize(32, 32);
baseIcon.shadowSize = new GSize(59, 32);
baseIcon.iconAnchor = new GPoint(16, 34);
baseIcon.infoWindowAnchor = new GPoint(9, 2);
baseIcon.infoShadowAnchor = new GPoint(18, 25);

iconAnon = "/markers/question.png";
iconAnonShadow = "/markers/question.shadow.png";
iconMan = "/markers/man.png";
iconManShadow = "/markers/man.shadow.png";
iconWoman = "/markers/woman.png";
iconWomanShadow = "/markers/woman.shadow.png";

      // The allowed region which the whole map must be within
      var allowedBounds = new GBounds(-10,49.5,2.6,59);
      
      // If the zoom level is out of range, set it back
      function checkZoom() {
        if (map.getZoomLevel() > 8) { map.zoomTo(8); }
        if (map.getZoomLevel() < 2)  { map.zoomTo(2); }
      }
      
      // If the map position is out of range, move it back
      function checkBounds() {      
        var A = allowedBounds;
        var B = map.getBoundsLatLng();
        var C = map.getCenterLatLng();
        var X = C.x;
        var Y = C.y;
        if (B.minX < A.minX) {X += A.minX - B.minX;}
        if (B.maxX > A.maxX) {X += A.maxX - B.maxX;}
        if (B.minY < A.minY) {Y += A.minY - B.minY;}
        if (B.maxY > A.maxY) {Y += A.maxY - B.maxY;}
        if ((X != C.x) || (Y != C.y)) {
          map.centerAtLatLng(new GPoint(X,Y));
        }
      }

function createMarker(point, icon, html) {
  var marker = new GMarker(point, icon);
  GEvent.addListener(marker, "click", function() {

    marker.openInfoWindowHtml(html);
  });
  return marker;
}      

function rand(n)
{
  return ( Math.floor ( Math.random ( ) * n + 1 ) );
}

var map = new GMap(document.getElementById("map"));

map.addControl(new GLargeMapControl());
map.addControl(new GMapTypeControl());

var lng = -0.123572;
var lat = 51.521850;

var element = document.getElementById("lat");
if(element) {
if(element.firstChild && element.firstChild.nodeType == 8) {
  var lat = element.firstChild.data;
}
}

var element = document.getElementById("long");
if(element) {
if (element.firstChild && element.firstChild.nodeType == 8) {
  var lng = element.firstChild.data;
}
}


var centralPoint = new GPoint(lng, lat);
var zoomLevel = 5;

if(lat != 51.521850) {
	zoomLevel = 2;
	}

map.centerAndZoom(centralPoint, zoomLevel);

var request = GXmlHttp.create();
request.open("GET", "/russkie.xml?RANDOM="+Math.random(), true);
request.onreadystatechange = function() {
  if (request.readyState == 4) {

    var xmlDoc = request.responseXML;

    // var xmlDoc = GXml.parse(request.responseText);

    var markers = xmlDoc.documentElement.getElementsByTagName("marker");
    var sex = '';
    var uid;

    for (var i = 0; i < markers.length; i++) {
	var lng = parseFloat(markers[i].getAttribute("lng"));
	var lat = parseFloat(markers[i].getAttribute("lat"))
      
	var point = new GPoint(lng, lat);

      	var buddy = markers[i].getAttribute("owner");
      	sex = markers[i].getAttribute("sex");
      	uid = markers[i].getAttribute("uid");

	if(buddy != "Anonymous") {
		buddy = "<div style=\"white-space:nowrap;\"><a href=\"/user/" + uid + "\">" + buddy + "</a>";
		buddy = buddy + "<br />Кликни на меня, чтобы узнать больше!</div>";
	}

	else {
	var ox = readCookie('ox');
	var oy = readCookie('oy');
	var cook = readCookie('owner');

	if( (lat == ox) && (lng == oy) )
		buddy = "<div style=\"white-space:nowrap;\">" + buddy + "<br /><a href=\"/?rmpc=" + cook + "\">Нажмите</a> если хотите убрать маркер</div>";
	}

	if(buddy != "Anonymous") {

      		var icon = new GIcon(baseIcon);

		icon.image = iconAnon;
		icon.image.shadow = iconAnonShadow;

		if(sex == "M") {
			icon.image = iconMan;
			icon.shadow = iconManShadow;
		}
		if(sex == "F") {
			icon.image = iconWoman;
			icon.shadow = iconWomanShadow;
		}

      		var marker = createMarker(point, icon, buddy);
      		map.addOverlay(marker);
	}

    }
  }
}

      // Add a zoom listener to restrict the zoom range
      GEvent.addListener(map, "zoom", function() {
        checkZoom();
        checkBounds();
      });

      // Add a move listener to restrict the bounds range
      GEvent.addListener(map, "move", function() {
        checkBounds();
      });


request.send(null);


}

