

var map;
//var markers = new Array();

//var points = new Array();

var stores = new Array();

//var numMarkers = 1000;
//var numRoutes = 10;
//var bestDirection = null;
//var succeeded = 0;
//var failed = 0;
//var plottedDirections = null;

var bounds;

function initialize() {
	if (google.maps.BrowserIsCompatible()) {
	
	
//		getStoreInfos(new Array(1, 2, 3, 4, 5, 7, 6));
	
		var options = {};
		options.size = new GSize(569, 577);
		
		map = new google.maps.Map2(document.getElementById("map_canvas"), options);
		map.setCenter(new google.maps.LatLng(59.336746, 18.06648), 11);
		map.setUIToDefault();
		//map.addControl(new GLargeMapControl());

//		points[points.length] = new Array("52.1326330	5.2912660	INT50014	FODERBUTIKEN	HOVLANDAVÄGEN 28	66330	SKOGHALL	Mika Eklund (611)	B		 	Zoofack övriga	ÖVRIGT		054-510650	054-510660	0	1	Region Sverige Fackhandel	Säljkår Fackhandel	51669794								FACKHANDEL");


		/*if (numMarkers > points.length) {
			numMarkers = points.length;
		}

		for (var i = 0; i < numMarkers; i++) {
		
			points[i] = points[i][0].split("\t");
		
			//var lat = 59.336746 + (Math.random() - 0.5);
			//var lng = 18.06648 + (Math.random() - 0.5) * 2;
		
			var lat = points[i][0];
			var lng = points[i][1];
		
			//console.log(lat + " - " + lng);
		
			var marker = new google.maps.Marker(new google.maps.LatLng(lat, lng));
			marker.info = points[i];
			//map.addOverlay(marker);
			markers[i] = marker;
			
		}
		
		document.getElementById('findButton');*/

		bounds = new GLatLngBounds();
	}
}


/*function finalizeSearch(descDivId)
{
	//console.log('succeeded: ' + succeeded);
	//console.log('failed: ' + failed);
	//console.log(descDivId);
	//console.log('best: ' + bestDirection.getDistance().meters + ' meters');
	
	
	directions = new google.maps.Directions(map, document.getElementById(descDivId));
	
	google.maps.Event.addListener(directions, "load", function() {
		//console.log('final success');
	});
	
	google.maps.Event.addListener(directions, "error", function() {
		//console.log('final failiure');
	});
	
	directions.load("from:" + street + " " + zip + ", to: " + markers[i].getLatLng());
}*/


/*function success(dir)
{
	succeeded++;
	
	if (bestDirection == null || bestDirection.getDistance().meters > dir.getDistance().meters) {
		//console.log('New best: ' + dir.getDistance().meters);
		bestDirection = dir;
	}
}*/

/*function failiure(dir)
{
	//console.log('failed with code: ' + dir.getStatus().code);
	//console.log(dir.getStatus().code);

	failed++;
}*/

/*function checkProximity(street, zip, descDivId, index)
{
	var i = index;

	var sleep = 100;

	//console.log(i);
	
	
	if (i < numMarkers) {
		//directions = new google.maps.Directions(map, document.getElementById(descDivId));
		directions = new google.maps.Directions();
		
		
		if (i == numMarkers - 1) {
			
			google.maps.Event.addListener(directions, "load", function() {
				success(this);
				setTimeout("finalizeSearch('" + descDivId + "')", sleep * 2); 
			});

			google.maps.Event.addListener(directions, "error", function() {
				failiure(this);
				setTimeout("finalizeSearch('" + descDivId + "')", sleep * 2); 
			});
		} else {
			
			google.maps.Event.addListener(directions, "load", function() {
				success(this);
			});

			google.maps.Event.addListener(directions, "error", function() {
				failiure(this);
			});
		}
		

		//console.log('loading');
		directions.load("from:" + street + " " + zip + ", to: " + markers[i].getLatLng());

		setTimeout("checkProximity('" + street + "', '" + zip + "', '" + descDivId + "',  " + (index + 1) + ")", sleep); 
	}
	
}*/


/*
function getStoreInfos(ids)
{
	//Get full store info with ajax
	
	var first = true;
	
	var url = 'some.server.se/positions/get.php';
	
	for (var i = 0; i < ids.length; i++) {
		if (first) {
			url += '?';
			first = false;	
		} else {
			url += '&';
		}
		
		url += ('positions[]=' + ids[i]);
	}
	
	console.log(url);
}
*/

/*
function findCloseStores(street, zip, allDescsDivId, descDivId)
{
	var startTime = (new Date()).getTime();

	var closest = new Array();

	for (var i = 0; i < numRoutes; i++) {
		closest[i] = null;
	}

	
	document.getElementById(descDivId).innerHTML = "";
	document.getElementById(allDescsDivId).innerHTML = "";
	map.clearOverlays();
	
	var clientEncoder = new google.maps.ClientGeocoder();
	var start = null;
	var worstOnToplist = null;
	var bestOnToplist = null;
	
	clientEncoder.getLatLng(street + " " + zip, function(point) {
		//console.log(point);
		start = point;
		
		for (var i = 0; i < numMarkers; i++) {
		
			var dist = start.distanceFrom(markers[i].getLatLng());
			var j = 0;
			
			while (j < numRoutes) {
				if (closest[j] == null || dist < start.distanceFrom(closest[j].getLatLng())) {
					
					var k = numRoutes - 1;
					while (k >= j) {
						closest[k] = closest[k - 1];
						k--;
					}
					
					closest[j] = markers[i];
					
					break;
				}
				
				
				j++;
			}
			
		}
		
		
		var bounds = new google.maps.LatLngBounds();
		
		for (var i = 0; i < closest.length; i++) {
		
			//console.log(i + ": " + start.distanceFrom(closest[i].getLatLng()));
		
			bounds.extend(closest[i].getLatLng());
		
			var container = document.getElementById(allDescsDivId)
			var div = document.createElement('DIV');
			div.id = 'link_container_' + i;
			var link = document.createElement('A');
			link.id = 'link_' + i;
			link.innerHTML = closest[i].getLatLng() + ', Distance: ' + (start.distanceFrom(closest[i].getLatLng()) / 1000) + ' km';
			link.href = 'javascript: void (0)';
			link.pos = closest[i].getLatLng();
			
			try {
				link.addEventListener('click', function () {
					var descDiv = document.getElementById(descDivId);
					descDiv.innerHTML = "";
					
					if (plottedDirections == null) {
						plottedDirections = new google.maps.Directions(map, descDiv);
					}
					
					plottedDirections.load("from:" + street + " " + zip + ", to: " + this.pos);
				}, true);
			} catch (err) {	
			
				link.attachEvent('onclick', function (evt) {
				
					var obj = evt.srcElement.parentNode.childNodes[0];
				
					var descDiv = document.getElementById(descDivId);
					descDiv.innerHTML = "";
					if (plottedDirections == null) {
						plottedDirections = new google.maps.Directions(map, descDiv);
					}
					
					plottedDirections.load("from:" + street + " " + zip + ", to: " + obj.pos);					
				});
			}
		
			div.appendChild(link);
			container.appendChild(div);
		

			//var directions = new google.maps.Directions(map, document.getElementById(descDivId));
			var directions = new google.maps.Directions();
			directions.link = link;

			//console.log();


			google.maps.Event.addListener(directions, "load", function() {
			
				var latLng = this.getMarker(1).getLatLng();
			
				this.link.innerHTML = this.link.innerHTML + ', By car: ' + this.getDistance().html;
			
			 	//console.log((new Date()).getTime() - startTime);
			 	//console.log('success');
			 	//console.log(this.getDistance().meters);
			 	
			 	//console.log((new Date()).getTime() - startTime);
			});

			google.maps.Event.addListener(directions, "error", function() {
				//console.log('failiure');
			});

			directions.load("from:" + street + " " + zip + ", to: " + closest[i].getLatLng());
			
			
			
			google.maps.Event.addListener(closest[i], "click", function() {
				this.openInfoWindowHtml(this.info[3] + " at " + this.info[6]);
			});
			
			
			map.addOverlay(closest[i]);
			
		}
		
		//console.log(map);
		//console.log(bounds);
		//console.log(map.getBoundsZoomLevel(bounds));
		
		map.setCenter(bounds.getCenter());
		map.setZoom(map.getBoundsZoomLevel(bounds));
	}) 

			
}
*/

function addMarkerWithIcon(lat, lng, img, imgShadow, id) {
    var latlng = new GLatLng(lat, lng);

    var markerIcon = new GIcon(G_DEFAULT_ICON);
    markerIcon.image = img;
    markerIcon.iconSize = new GSize(24, 38);

    markerOptions = { icon: markerIcon };

    var marker = new GMarker(latlng, markerOptions);

    GEvent.addListener(marker, "mouseover", function() {
        showInfoWindow(id, false);
    });

    map.addOverlay(marker);
}

function addMarker(lat, lng) {
    var latlng = new GLatLng(lat, lng);
    map.addOverlay(new GMarker(latlng));
}

function registerMarkerForZooming(lat, lng) {
    var latlng = new GLatLng(lat, lng);
    bounds.extend(latlng);
}

function addStore(lat, lng, name, address1, address2, storeUrl, id, registerForZooming) {
    stores[id] = new Array();
    stores[id][0] = lat;
    stores[id][1] = lng;
    stores[id][2] = name;
    stores[id][3] = address1;
    stores[id][4] = address2;
    stores[id][5] = storeUrl;

    if (registerForZooming) {
        registerMarkerForZooming(lat, lng);
    }
}

function showInfoWindow(id, moveToCenter) {
    var store = stores[id];
    var latLng = new GLatLng(store[0], store[1]);
    
    if (moveToCenter) {
        map.setCenter(latLng);
    }
    var content = "<strong>" + store[2] + "</strong><br /><span>" + store[3] + "</span><br /><span>" + store[4] + "</span>";

    if (store[5].length > 0) {
        content += "<br /><br /><a href=\"" + store[5] + "\" target=\"_blank\">Till butiken</a>";
    }

    map.openInfoWindow(
        latLng,
        content);
}

//function showInfoWindow(lat, lng, name, adress1, adress2, storeUrl, moveToCenter) {
//    if (moveToCenter) {
//        map.setCenter(new GLatLng(lat, lng));
//    }
//    var content = "<strong>" + name + "</strong><br /><span>" + adress1 + "</span><br /><span>" + adress2 + "</span>";
//    
//    if (storeUrl.length > 0)
//    {
//        content += "<br /><br /><a href=\"" + storeUrl + "\" target=\"_blank\">Till butiken</a>";
//    }
//    
//    map.openInfoWindow(
//        map.getCenter(), 
//        content);
//}
