function stopRKey(evt) { 
	var evt = (evt) ? evt : ((event) ? event : null); 
 	var node = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null); 
 	if ((evt.keyCode == 13) && (node.type=="text"))  {enterClick();return false;} 
} 

document.onkeypress = stopRKey; 

	google.load("maps", "2");
	var map;
	var rydsIcon;
	var userMarker;
	var workshopsXML = "/media/12525/verkstader_geodata.xml";
	var postnummerCSV = "/media/12528/postnummer.csv";
	var iconURL = "/media/12531/rydsglas.png";
	
	function initialize2() {
		
    		if (GBrowserIsCompatible()) {
			map = new GMap2(document.getElementById("map_canvas"));
		        map.setCenter(new GLatLng(61, 17), 5);
			map.addControl(new GSmallMapControl());
		        map.addControl(new GMapTypeControl());
	
				rydsIcon = new GIcon(G_DEFAULT_ICON);
					 
				rydsIcon.image = iconURL;
				rydsIcon.iconSize = new GSize(37, 49);
				rydsIcon.iconAnchor = new GPoint(16, 49);
				rydsIcon.infoWindowAnchor = new GPoint(25,10);
				rydsIcon.shadowSize = new GSize(0,0);
				rydsIcon.imageMap = ([0,0,35,0,35,47, 0,47]);
		}
    	}
    	function moveTo(lat, lng) {    
      		map.panTo(new GLatLng(lat, lng));
    	}
    	function addUserMarker(lat, lng){
		if(userMarker){
			map.removeOverlay(userMarker);
		}
    		var latlng = new GLatLng(lat,lng);
		userMarker = new GMarker(latlng);
    		map.addOverlay(userMarker);
    	}
    	function addWorkshopMarker(lat, lng, workshop){
    		var latlng = new GLatLng(lat,lng);
       		markerOptions = { icon:rydsIcon };
        	var marker = new GMarker(latlng, markerOptions);

		GEvent.addListener(marker,  "click", function() {
			var workshopInfo = "<font size='1'><b>" + workshop['namn'] + "</b>";
			if(workshop['avstand']){
				workshopInfo = workshopInfo + " - " + workshop['avstand'] + "km";
			}
			workshopInfo = workshopInfo + "<br />" + workshop['gata'] + "<br />" + workshop['postnummer'] + " " + workshop['ort'] + "<br />" + workshop['telefon'] + "<br />" + workshop['epost'] + "<br />";
			workshopInfo = workshopInfo + "<a href='#' onclick='map.setCenter(new GLatLng(" + workshop['lat'] + "," + workshop['lon'] + "), 15);'>Zooma hit</a></font>";
			marker.openInfoWindowHtml(workshopInfo);
        	});
        	map.addOverlay(marker);
		return marker;
    	}
	function restoreMarkers(workshops, bilglas, glasmasteri, entreprenad){
		for(var i = 0; i < workshops.length;i++){
			if((workshops[i]['bilglas'] && bilglas) || (workshops[i]['glasmasteri'] && glasmasteri) || (workshops[i]['entreprenad'] && entreprenad)){
				map.addOverlay(workshops[i]['marker']);
			}
		}	
	}
	function removeMarkers(workshops){
		for(var i = 0; i < workshops.length;i++){
			map.removeOverlay(workshops[i]['marker']);
		}	
	}		
	function createMarker(point) {
        	// Set up our GMarkerOptions object
        	markerOptions = { icon:rydsIcon };
	        var marker = new GMarker(point, markerOptions);

        	GEvent.addListener(marker,  "click", function() {
        		marker.openInfoWindowHtml("Marker");
        	});
        	return marker;
	}
	function toRad(number) {  // convert degrees to radians
		return number * Math.PI / 180;
	}
	function calDistance(lat1, lon1, lat2, lon2) {
		var R = 6371; // earth's mean radius in km
		var d = Math.acos(Math.sin(toRad(lat1))*Math.sin(toRad(lat2)) + Math.cos(toRad(lat1))*Math.cos(toRad(lat2))*Math.cos(toRad((lon2-lon1)))) * R;
		return d;
	}


	$(document).ready(function() {
		initialize2();
		$("#ajaxLoad").hide();
		var workshops = new Array();
		var tempArray = new Array();
		var userPosition = new Array();
		var workshopName;
		var postnummer;
		var distance = 0;
		var counter = 0;
		$.ajax({
		        	type: "GET",
		        	url: workshopsXML,
		        	dataType: "xml",
		        	success: function(xml) {
					$(xml).find('KATALOG').find('REGION').find('VERKSTAD').each(function(){
						if($(this).find('LATITUDE').text() > 0){
							workshops[counter] = new Array();					
							workshops[counter]['lat'] = $(this).find('LATITUDE').text();
							workshops[counter]['lon'] = $(this).find('LONGITUDE').text();
							workshops[counter]['namn'] = $(this).find('NAMN').text();
							workshops[counter]['gata'] = $(this).find('GATA').text();
							workshops[counter]['telefon'] = $(this).find('TELEFON').text();
							workshops[counter]['epost'] = $(this).find('EPOST').text();
							workshops[counter]['ort'] = $(this).find('ORT').text();
							workshops[counter]['postnummer'] = $(this).find('POSTNUMMER').text();
							workshops[counter]['bilglas'] = $(this).find('BILGLAS').text();
							workshops[counter]['glasmasteri'] = $(this).find('GLASMASTERI').text();
							workshops[counter]['entreprenad'] = $(this).find('ENTREPRENAD').text();
							workshops[counter]['marker'] = addWorkshopMarker(workshops[counter]['lat'], workshops[counter]['lon'], workshops[counter]);
							counter++;
						}					
					});
				}
		});					
		$("#submit1").click(function() {
			
			if(!$("#bilglas").attr("checked") && !$("#glasmasteri").attr("checked") && !$("#entreprenad").attr("checked")){
				alert("Du måste ange minst en verkstadstyp");
				
			}else{
				$("#ajaxLoad").show();
				removeMarkers(workshops);
				restoreMarkers(workshops, $("#bilglas").attr("checked"), $("#glasmasteri").attr("checked"), $("#entreprenad").attr("checked"));
				$("#postnummer").html("")
				var userPostNumber = $("#postnummerForm :input").val().replace(" ", ""); //Ta bort mellanslag
				userPostNumber = userPostNumber.substr(0,4) * 10; //Konvertera till formatet 8603x (x = 0);
				var userPosition = new Array();
				$.get(postnummerCSV, function(data) { 
					tempArray = $.csv()(data); 
					for(var i = 0;i < tempArray.length; i++){
						var row = String(tempArray[i]).split(",");
						if(row[0] == userPostNumber){
							userPosition[0] = row[1];//Latitude
							userPosition[1] = row[2];//Longitude
							userPosition[2] = row[0];//Postnummer
							addUserMarker(row[1], row[2]);
							break;	
						}
					}
					if(userPosition[0] > 0){
						for(i = 0; i < workshops.length; i++){
							//distance = Math.sqrt(  Math.pow((userPosition[0] - workshops[i][0]),2) + Math.pow((userPosition[1] - workshops[i][1]),2)  );
							distance = calDistance(userPosition[0], userPosition[1], workshops[i]['lat'], workshops[i]['lon']);
							workshops[i]['avstand'] = Math.round(distance);
						}
						workshops.sort(mySorting);
						var limit = 5;
						var workshopDistance = 0;
						$("#postnummer").append("<h3>Sökresultat - Närmast först</h3><hr />");
						for(i = 0; i < limit; i++){
							if((workshops[i]['bilglas'] && $("#bilglas").attr("checked")) || (workshops[i]['glasmasteri'] && $("#glasmasteri").attr("checked")) || (workshops[i]['entreprenad'] && $("#entreprenad").attr("checked"))){
								$("#postnummer").append("<b>" + workshops[i]['namn'] + "</b> -  " + workshops[i]['avstand'] + "km<br />");
								$("#postnummer").append(workshops[i]['gata'] + "<br />" + workshops[i]['postnummer'] + " " + workshops[i]['ort'] + "<br />" + workshops[i]['telefon'] + "<br />" + workshops[i]['epost'] + "<br /><br />");
								if(workshopDistance < 1){
									workshopDistance = workshops[i]['avstand']; //Avståndet till 1:a närmaste verkstaden 
								}
							}else{
								limit++;
							}
						}
						var zoom = 0;
						if(workshopDistance < 5){
							zoom = 11;
						}else if(workshopDistance < 10){
							zoom = 10;
						}else if(workshopDistance < 30){
							zoom = 9;
						}else if(workshopDistance < 60){
							zoom = 8;
						}else if(workshopDistance < 100){
							zoom = 7;
						}else if(workshopDistance < 200){
							zoom = 6;
						}else{
							zoom = 5;
						}
						//alert(zoom);
						//moveTo(userPosition[0], userPosition[1]);
						map.setCenter(new GLatLng(userPosition[0], userPosition[1]), zoom);
					}else{
						alert("Hittade inte postnummer");
					}
					$("#ajaxLoad").hide();
					});	
			}
		}); 
		
	});
	function displayResult(workshops){
		alert(workshops.length);
	}
	function enterClick(){
		$("#submit1").trigger('click');
	}
	function mySorting(a,b) {
		a = a['avstand'];
		b = b['avstand'];
		return a == b ? 0 : (a < b ? -1 : 1)
	}
	