	var xmlHttp;
	var point = null;
    var geocoder = new GClientGeocoder();
	var result = [];
	var lastid = -1;
	var counter;
	var map;
	
	function createXmlHttpRequestObject() {
		var xmlHttp;
		try {
			xmlHttp = new XMLHttpRequest();
		} catch(e) {
			var XmlHttpVersions = new Array("MSXML2.XMLHTTP.6.0", "MSXML2.XMLHTTP.5.0", "MSXML2.XMLHTTP.4.0", "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP");
			
			for(var i = 0; i<XmlHttpVersions.length && !xmlHttp; i++) {
				try {
					xmlHttp = new ActiveXObject(XmlHttpVersions[i]);
				} catch(e) {}
			}
		}
		
		if(!xmlHttp) 
			alert('Wystąpił błąd podczas ładowania biblioteki XMLHttpRequest');
		else
			return xmlHttp;
	}
	
	function parse_date(text) {
		var old_date = new Date(text.replace(/-/g, '/'));
		var cur_date = new Date();
		var delta = parseInt((cur_date.getTime() - old_date) / 1000);
		delta = parseInt(delta + (cur_date.getTimezoneOffset() * 60));
        if (delta < 60) {
			return 'mniej ni&#380; minut&#281; temu';
		} else if(delta < 120) {
			return 'minut&#281; temu';
		} else if(delta < (60*60)) {
			return (parseInt(delta / 60)).toString() + ' minut temu';
		} else if(delta < (120*60)) {
            return 'godzin&#281; temu';
        } else if(delta < (24*60*60)) {
            return 'oko&#281;o ' + (parseInt(delta / 3600)).toString() + ' godzin temu';
        } else if(delta < (48*60*60)) {
            return 'dzie&#324; temu';
        } else {
            return (parseInt(delta / 86400)).toString() + ' dni temu';
        }
	}
	
    function init() {
		var mapdiv = document.createElement( 'div' );
		mapdiv.id = 'map';	
		mapdiv.style.width = screen.availWidth+'px';
		mapdiv.style.height = screen.availHeight-200+'px';
		document.body.appendChild( mapdiv );	
		counter = document.getElementById('counter');
		if (GBrowserIsCompatible()) {
			map = new GMap2(document.getElementById("map"))
			map.setCenter(new GLatLng(52.2319, 21.01), 7);
			map.addControl(new GLargeMapControl()); 
			var pos = new GControlPosition(G_ANCHOR_TOP_RIGHT, new GSize(100,10));
			pos.apply(document.getElementById("box"));
			map.getContainer().appendChild(document.getElementById("box"));
			var pinger_logo = new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(100,10));
			pinger_logo.apply(document.getElementById("pinger_logo"));
			map.getContainer().appendChild(document.getElementById("pinger_logo"));
			xmlHttp = createXmlHttpRequestObject();
			process();		
		}
    }
	
	function process() {
		if(xmlHttp.readyState == 4 || xmlHttp.readyState == 0) {
			xmlHttp.open("GET", "gpinger.php", true);
			xmlHttp.onreadystatechange = tracker;
			xmlHttp.send(null);
		} else {
			setTimeout('process()', 5000);
		}
	}
	
	function tracker() {
	  if(xmlHttp.readyState == 4)
	  {
		if(xmlHttp.status == 200)
		{	
			var items = eval(xmlHttp.responseText);
			for(var i = 0; i < items.length; i++) {
				if(items[i].user.location != "" && items[i].mid > lastid) {
					result.push(items[i]);
				}
			}
			counter.innerHTML = 'Nowych wiadomo&#347;ci: '+result.length;
			check_array();
		}
	  }
	}

    function check_array() {	
		if(result.length > 0) {
			var item = result.pop();
			findAddress(item);
			lastid = item.mid;
			counter.innerHTML = 'Nowych wiadomo&#347;ci: '+result.length;
		} else {
			setTimeout('process()', 15000);
		}
			
	}
	
	function findAddress(item) {
		geocoder.getLatLng(item.user.location+' '+item.user.country,
		function(pt) {
			if (pt) {
				var info = '<div id="bubble"><img src="'+item.user.profile_image_url_thumb+'" /><p><a href="'+item.user.url+'">'+item.user.nickname+'</a><span class="location">'+item.user.location+'</span><br />'+item.text.substr(0, 160)+'...<span class="date">'+parse_date(item.created_at)+'</span></p></div>';
				if(point == null) {
					point = new GMarker(pt);
				} else {
					point.setPoint(pt);
				}
                map.panTo(pt);
				map.clearOverlays();
				map.addOverlay(point);
				point.openInfoWindowHtml(info);
                setTimeout('check_array()', 7000);
			} else check_array();
		}
		);
		
	}
