var map = null;

function geom_load() {
    baseIcon = new GIcon();
    baseIcon.shadow = "http://www.google.com/mapfiles/shadow50.png";
    baseIcon.image = "http://www.google.com/mapfiles/marker.png";
    baseIcon.iconSize = new GSize(20, 34);
    baseIcon.shadowSize = new GSize(37, 34);
    baseIcon.iconAnchor = new GPoint(9, 34);
    baseIcon.infoWindowAnchor = new GPoint(9, 2);
    baseIcon.infoShadowAnchor = new GPoint(18, 25);

    centerIcon = new GIcon();
    centerIcon.shadow = "http://www.google.com/mapfiles/shadow50.png";
    centerIcon.image = "http://www.google.com/mapfiles/marker.png";
    centerIcon.iconSize = new GSize(30, 51);
    centerIcon.shadowSize = new GSize(56, 51);
    centerIcon.iconAnchor = new GPoint(9, 34);
    centerIcon.infoWindowAnchor = new GPoint(9, 2);
    centerIcon.infoShadowAnchor = new GPoint(18, 25);


    if (GBrowserIsCompatible()) {
        map = new GMap2(document.getElementById("geom_map"));
        map.setCenter(new GLatLng(center_lat, center_lng), zoom_level);
        map.addControl(new GSmallMapControl());
	GEvent.addListener(map, 'click', function(overlay, point) {
	    if (overlay && overlay.openInfoWindow) {
		overlay.openInfoWindow("<a href='" + overlay.uri + "'>" + overlay.uri + "</a>");
	    }
	});
	function addressSelectControl() {}
	addressSelectControl.prototype = new GControl();
	addressSelectControl.prototype.initialize = function(map) {
	    var container = document.getElementById("addressSelectForm");
	    map.getContainer().appendChild(container);
	    return container;
	}
	addressSelectControl.prototype.getDefaultPosition = function() {
	    return new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(5,2));
	}
	map.addControl(new addressSelectControl(map));
	create_cross_icon();
    }
//    show_map();
}

function create_cross_icon() {
  var cross_px = 60;
  var cross_td = 2;
  var cross_cr = "red";

  var cross_h_emt =  document.createElement("div");
  cross_h_emt.style.fontSize = "1px";
  cross_h_emt.style.margin = "0px";
  cross_h_emt.style.padding = "0px";
  cross_h_emt.style.width = cross_px + "px";
  cross_h_emt.style.height = cross_td + "px";
  cross_h_emt.style.backgroundColor = cross_cr;

  var cross_v_emt =  document.createElement("div");
  cross_v_emt.style.margin = "0px";
  cross_v_emt.style.padding = "0px";
  cross_v_emt.style.width = cross_td+"px";
  cross_v_emt.style.height = cross_px + "px";
  cross_v_emt.style.backgroundColor = cross_cr;

  var MapPX = map.getSize();
  var mycenterHX = MapPX.width  / 2 - cross_px / 2;
  var mycenterHY = MapPX.height / 2 - cross_td / 2;
  var mycenterVX = MapPX.width  / 2 - cross_td / 2;
  var mycenterVY = MapPX.height / 2 - cross_px / 2;

  var mycenter_H = new GSize(mycenterHX,mycenterHY);
  var myposH = new GControlPosition(G_ANCHOR_TOP_LEFT, mycenter_H);
  myposH.apply(cross_h_emt);
  map.getContainer().appendChild(cross_h_emt); 

  var mycenter_V = new GSize(mycenterVX,mycenterVY);
  var myposV = new GControlPosition(G_ANCHOR_TOP_LEFT, mycenter_V);
  myposV.apply(cross_v_emt); 
  map.getContainer().appendChild(cross_v_emt);
}


function show_map() {
    var as = $('addressSelect');
    as.options.length = 0;
    var op = document.createElement("option");
    op.text = "Wait a moment";
    try {
        as.add(op,null);
    } catch(ex) {
	as.add(op);
    }
}

function extract_address() {
     var ajax = new Ajax.Request(
       '/blogsearch/extract_place_curl.cgi',
        {
          'method' : 'post',
          'asynchronous' : true,
          'parameters' : Form.serialize("extractForm"),
          'onSuccess' : display_extract_place
        }
    );
}

function display_extract_place(req, js) {
    eval('var json = ' + req.responseText);
    processLatLng( json );
}

function changeSelect() {
    var latLng = $F('addressSelect').split(',');

    map.clearOverlays();
    map.setCenter(new GLatLng(latLng[0], latLng[1]), zoom_level);
}

function processLatLng(res) {
    var as = $('addressSelect');
    as.options.length = 0;
    var op = document.createElement("option");
    op.text = "No Result";
    try {
        as.add(op,null);
    } catch(ex) {
	as.add(op);
    }
    if (!res || res.length == 0) {
      return;
    }
    processLatLng2(res);
}

function processLatLng2(result) {
    if (!result) {
	return;
    }
    if (!result.result_select) {
	return;
    }
    if (result.result_select.length == 0) {
	return;
    }
    var as = $('addressSelect');
    as.options.length = 0;
    for (var i = 0; element = result.result_select[i]; i++) {
	for (var j = 0; element2 = element[j]; j++) {
		var op = document.createElement("option");
		op.text = result.result_select[i][j].text;
		op.value = result.result_select[i][j].lat + ',' + result.result_select[i][j].lng;
		try {
		    as.add(op,null);
		} catch(ex) {
		    as.add(op);
		}
	}
    }

    var lat = result.result_select[0][0].lat;
    var lng = result.result_select[0][0].lng;

    map.clearOverlays();
    map.setCenter(new GLatLng(lat, lng), zoom_level);
}

