String.prototype.trim = function() {
	var s = this;
	s = s.replace(/^\s*(.*)/, "$1");
	s = s.replace(/(.*?)\s*$/, "$1");
	return s;
}

function parseJSON(s) {
  try {
    s = "return "+s;
    var o = Function(s)();
  } catch (e) {
    s = "Error "+e;
  }
  return o;
}

var zoom = 12;

function zoomIn(img_url) {
	if (zoom < 16) {
		zoom++;
		changeImageUrl(img_url);
	}
}

function zoomOut(img_url) {
	if (zoom > 2) {
		zoom--;
		changeImageUrl(img_url);
	}
}

function changeImageUrl(img_url) {
  var img = document.getElementById("geo_img");
  img.src = img_url + "&zoom="+zoom;
}

function openRoutingSite(ll) {
  window.location.href = getRouteUrl(ll);
}

function getImageUrl(ll) {
 return "http://maps.google.com/staticmap?center="+ll+"&size=256x128&maptype=mobile&key=ABQIAAAA6fZlO6BCbxbJR1ochmvvZBRJ2wxg7y-UEMfPhwSf1nJxRymJVBRZfHMHTPdyooszfGN4l0jEYOrmGw&sensor=false&zoom=12";
}

function getRouteUrl(ll) {
  return "http://maps.google.de/maps?f=d&source=s_d&saddr=&daddr="+ll+"&hl=en&geocode=&mra=ls&sll="+ll+"&g="+ll+"&ie=UTF8&z="+zoom;
}

var gp_error_message = 'Sorry, but this feature is not supported by your device/browser';
var gp_div;
function initGeoPosition(div) {
  gp_div = div;
  if(geo_position_js.init()) {
    geo_position_js.getCurrentPosition(getGeoPosition,getGeoPositionError,{enableHighAccuracy:false});
  } else {
    var div = document.getElementById(gp_div);
    div.innerHTML = gp_error_message;
  }
}

function getGeoPosition(p) {
  var lat = p.coords.latitude.toFixed(2);
  var lng = p.coords.longitude.toFixed(2);
  var tf_lat = document.getElementById('fspd_lat');
  var tf_fpb_lat = document.getElementById('fpb_lat'); 
  tf_lat.value = lat;
  tf_fpb_lat.value = lat;
  var tf_lng = document.getElementById('fspd_lng');
  var tf_fpb_lng = document.getElementById('fpb_lng'); 
  tf_lng.value = lng;
  tf_fpb_lng.value = lng;
  var div = document.getElementById(gp_div);
  div.innerHTML = '<img src="'+getImageUrl(lat+','+lng)+'">';
  var div2 = document.getElementById('fgahs');
  div2.style.visibility = 'visible'; 
}

function getGeoPositionError(p) {
  var div = document.getElementById(gp_div);
  div.innerHTML = "Unable to get your location. Please use the links below!";
}

var adiv;
function set_position(form) {
  var dataString = 'lat='+ form.fspd_lat.value + '&lng=' + form.fspd_lng.value;
  jQuery.post('/lukator/api/position', dataString, showResponse);
  adiv = document.getElementById('spfd');
}

function post_blog(form) {
  var dataString = 'lat='+ form.fpb_lat.value + '&lng=' + form.fpb_lng.value + '&bt=' + form.bt.value+ '&bc=' + form.bc.value + '&btags=' + form.btags.value;
  jQuery.post('/lukator/api/blog', dataString, showResponse);
  adiv = document.getElementById('sfpb');
}

function showResponse(responseText, statusText) {
  var response = parseJSON(responseText);
  document.getElementById("sp").innerHTML += "<BR>"+response.info;
  document.getElementById("ajax_info_bottom").innerHTML = response.info;
  //adiv.innerHTML += "<BR>"+response.info;
}

function workingBrowser() {
 // Workaround because some Nokia devices passes the Canvas Test without drawing anything
 if (navigator.userAgent.indexOf("Nokia") != -1) { 
  return false;
 }
 return true;
}

var max_zoom = 16;
var init_zoom = 12;

function friend_init() {
 if (Modernizr.canvas && workingBrowser()) {
  for (var a = 0; a < img_array.length; a++) {
   dicc(img_array[a], "img_div_"+a, a);
  }
 } else { // Fallback: add normal image to div  
  for (var a=0; a < img_obj_array.length; a++) { 
   var obj = document.getElementById("img_div_"+a);
   createImageNode(obj, a);
  } 
 }
}

function dicc(img, div, a) {
  var obj = document.getElementById(div);
   try {
    var canvas = document.createElement("canvas");
    canvas.addEventListener("click", function() { click2zoom(canvas, div, a) } , false);
    canvas.width = img.width;
    canvas.height = img.height;    
    if (img.complete) {  
      if (obj != null) {
	if (canvas != null) {
	  drawMap(canvas, img, init_zoom);
	  obj.appendChild(canvas);
	  //obj.appendChild(document.createTextNode('Click to zoom map'));
	} else {
	createImageNode(obj, a);
	}
      }
     } else {
       img_array[a].onload = function(e) {
	drawMap(canvas, img_array[a], init_zoom);
	obj.appendChild(canvas);
      }
     }
   } catch(e) {
    createImageNode(obj, a);
   }
}

function createImageNode(obj, a) {
 obj.innerHTML = '<a href="javascript:click2zoomL('+a+');">'+img_obj_array[a]+'</a>';
}

function drawMap(canvas, img, zoom) {
  var ctx = canvas.getContext("2d");
  ctx.drawImage(img,0,0,img.width,img.height);
  ctx.fillStyle = "rgba(255, 0, 0, .4)"
  ctx.beginPath();
  ctx.arc(img.width/2, img.height/2, zoom*zoom/10, 0, Math.PI*2, true);
  ctx.closePath();
  ctx.fill();
  ctx.fillStyle = "rgba(255, 0, 0, .8)"
  ctx.beginPath();
  ctx.arc(img.width/2, img.height/2, 2, 0, Math.PI*2, true);
  ctx.closePath();
  ctx.fill();
}

function click2zoom(canvas, div, a) {
 var zoom_pos = img_array[a].src.indexOf("zoom=");
 if (zoom_pos != -1) {
  var img_src = img_array[a].src.substring(0, zoom_pos+5);
  var zoom = img_array[a].src.substring(zoom_pos+5);
  zoom++;
  if (zoom > max_zoom) {
   zoom = 10;
  }
  img_array[a].src = img_src+zoom;
  img_array[a].onload = function(e) {
    drawMap(canvas, img_array[a], zoom);
  }
 }
}

function click2zoomL(a) {
 var img = document.getElementById("static_img_"+a);
 var zoom_pos = img.src.indexOf("zoom=");
 if (zoom_pos != -1) {
  var img_src = img.src.substring(0, zoom_pos+5);
  var zoom = img.src.substring(zoom_pos+5);
  zoom++;
  if (zoom > max_zoom) {
   zoom = 10;
  }
  img.src = img_src+zoom;
 }
}

