var map=false;
var tagList=new Object;

$.ajaxSetup ({
        // Disable caching of AJAX responses */
        cache: false
});

function toggleInfoWindow() {
	if($("#infoWindow").css("display")!="none") $("#infoWindow").fadeOut(); else $("#infoWindow").fadeIn();
}

var hideToolTipTimer_ = 0;
function hideTooltip() {
	$("#tooltip").fadeOut("fast");
}

function showTooltip(marker) {
	var scale = Math.pow(2, map.getZoom());
	var nw = new google.maps.LatLng(
    		map.getBounds().getNorthEast().lat(),
    		map.getBounds().getSouthWest().lng()
	);
	var worldCoordinateNW = map.getProjection().fromLatLngToPoint(nw);
	var worldCoordinate = map.getProjection().fromLatLngToPoint(marker.getPosition());
	var pixelOffset = new google.maps.Point(
    		Math.floor((worldCoordinate.x - worldCoordinateNW.x) * scale),
    		Math.floor((worldCoordinate.y - worldCoordinateNW.y) * scale)
	);
	$("#tooltip").css("left",(pixelOffset.x)+4);
	$("#tooltip").css("top",pixelOffset.y);
	$("#tooltip").html("...");
	$("#tooltip").load("/ajax/tagInfo.php?tid="+marker.id);
	$("#tooltip").fadeIn("fast");
}

function initTagkarta() {
    var latlng = new google.maps.LatLng(59, 15);
    if(location.hash) {
	var latLngPat = /#([0-9\.]+),([0-9\.]+)/;
	if(latLngPat.test(location.hash)) {
		var tmp = location.hash.replace("#","").split(",");
		latlng=new google.maps.LatLng(tmp[0], tmp[1]);
	} 
    }
    var myOptions = {
      zoom: 7,
      center: latlng,
      mapTypeId: google.maps.MapTypeId.ROADMAP
    };
    map = new google.maps.Map(document.getElementById("tagKarta"), myOptions);

var winW = 630, winH = 460;
if (document.body && document.body.offsetWidth) {
 winW = document.body.offsetWidth;
 winH = document.body.offsetHeight;
}
if (document.compatMode=='CSS1Compat' &&
    document.documentElement &&
    document.documentElement.offsetWidth ) {
 winW = document.documentElement.offsetWidth;
 winH = document.documentElement.offsetHeight;
}
if (window.innerWidth && window.innerHeight) {
 winW = window.innerWidth;
 winH = window.innerHeight;
}

  if(winW>400) {
	$("#infoButton").css("display","block");
	if(0) {
  var adUnitDiv = document.createElement('div');
  var adUnitOptions = {
    format: google.maps.adsense.AdFormat.WIDE_SKYSCRAPER,
    position: google.maps.ControlPosition.RIGHT_TOP,
    channelNumber: '6553785799',
    map: map,
    visible: true,
    publisherId: 'pub-1619710324105486'
  }
  adUnit = new google.maps.adsense.AdUnit(adUnitDiv, adUnitOptions);
  if(winH<660) adUnit.setFormat(google.maps.adsense.AdFormat['VERTICAL_BANNER']);
  }
	} else {	
		map.setOptions({disableDefaultUI: true, zoom:8});
		$("div#about").css("display","none");
	}
    jQuery.getJSON('/json/jarnvag.php', function(json) { jarnvag(json); });
    ladda();
}

function ladda() {
	jQuery.getJSON('/json/tag2.php', function(json) { placeraTag(json); });
	window.setTimeout(ladda, 20*1000);
}

function visaTavla(station) {
	var w=window.open('http://tavla.xn--tg-yia.info/'+station, 'trafikInfo'+station, 'width=800, height=600, scrollbars=1,dependent=yes');
	if(w.focus) w.focus();
}

function dump(arr,level) {
	var dumped_text = "";
	if(!level) level = 0;
	
	//The padding given at the beginning of the line.
	var level_padding = "";
	for(var j=0;j<level+1;j++) level_padding += "    ";
	
	if(typeof(arr) == 'object') { //Array/Hashes/Objects 
		for(var item in arr) {
			var value = arr[item];
			
			if(typeof(value) == 'object') { //If it is an array,
				dumped_text += level_padding + "'" + item + "' ...\n";
				dumped_text += dump(value,level+1);
			} else {
				dumped_text += level_padding + "'" + item + "' => \"" + value + "\"\n";
			}
		}
	} else { //Stings/Chars/Numbers etc.
		dumped_text = "===>"+arr+"<===("+typeof(arr)+")";
	}
	return dumped_text;
}

function jarnvag(json) {
	for(var i=0;i<json.length;i++) {
		var pathCoordinates = new google.maps.MVCArray();
                var poly = new google.maps.Polyline({
                        path: pathCoordinates,
                        strokeColor: '#ffffff',
                        strokeOpacity: 0.75,
                        strokeWeight: 5,
                        clickable: false,
			zIndex:1
                });
                var pathCoordinates2 = new google.maps.MVCArray();
                var poly2 = new google.maps.Polyline({
                        path: pathCoordinates2,
                        strokeColor: '#555555',                        
			strokeOpacity: 1,
                        strokeWeight: 3,
			zIndex:2,
			trackId: i
                });
		for(var j=0;j<json[i].length;j++) {
			poly.getPath().insertAt(pathCoordinates.length, new google.maps.LatLng(json[i][j].lat,json[i][j].lon));
			poly2.getPath().insertAt(pathCoordinates2.length, new google.maps.LatLng(json[i][j].lat,json[i][j].lon));
		}
		poly.setMap(map);
		poly2.setMap(map);
/*
		google.maps.event.addListener(poly2, 'mouseover', function() {
			this.setOptions({strokeColor:'#999933'});
		});
                google.maps.event.addListener(poly2, 'mouseout', function() {
                        this.setOptions({strokeColor:'#333333'});
                });
                google.maps.event.addListener(poly2, 'click', function() {
			alert(this.trackId);
                });		
*/
	}
}

function smoothMoveMarker(marker, pos, l) {
	var from = marker.getPosition();
	var to = new google.maps.LatLng(from.lat()+(pos.lat()-from.lat())/l, from.lng()+(pos.lng()-from.lng())/l);
	l--;
	marker.setPosition(to);
	if(l>0) setTimeout(function() { smoothMoveMarker(marker, pos, l) }, 100);
}

function moveMarker(marker, pos) {
	//marker.setPosition(pos);
	smoothMoveMarker(marker, pos, 10);
}

function placeraTag(json) {
	var dbg='';
        var epochs = new Date().getTime()/1000;
	var delTagList = new Object;
	for(var id in tagList) {
		delTagList[id]=true;
	}

	for(var i=0;i<json.length;i++) {
		try {
			var pos = new google.maps.LatLng(json[i].lat, json[i].lon);
			var marker;
			if(tagList[json[i].id]) {
				marker=tagList[json[i].id];
				//marker.setPosition(pos);
				moveMarker(marker, pos);
				marker.setIcon(new google.maps.MarkerImage('/png/bullet_'+(json[i].sen?'red':'green')+'.png',new google.maps.Size(16, 16),new google.maps.Point(0,0),new google.maps.Point(7, 7)));
				delete delTagList[json[i].id];
			} else {
				var opos = new google.maps.LatLng(json[i].olat, json[i].olon);
				var marker = new google.maps.Marker({
      		   			position: pos,
					clickable: true,
      		       			map: map,
					id: json[i].id,
					//title: json[i].id,
      		                	icon: new google.maps.MarkerImage('/png/bullet_'+(json[i].sen?'red':'green')+'.png',new google.maps.Size(16, 16),new google.maps.Point(0,0),new google.maps.Point(7, 7))
      			       	});
//				google.maps.event.addListener(marker, "click", function() { var w=(parent?parent:window); w.location.href='http://xn--tg-yia.info/'+this.getTitle(); });
				google.maps.event.addListener(marker, "mouseover", function() { showTooltip(this); });
				google.maps.event.addListener(marker, "mouseout", function() { hideTooltip(); });
				//moveMarker(marker, pos);
			}
                	if(location.hash.replace('#','')==json[i].id) {
                	        map.setZoom(10);
        	                map.setCenter(pos);
	                }
			tagList[json[i].id]=marker;
		} catch(ex) {
			alert('1: '+ex);
			break;
		}
	}

	for(var id in delTagList) {
		tagList[id].setMap(null);
		delete tagList[id];
	}
}


