// configuration

var DEBUG=0;

// global variables

var q;
var map;
var point;
var activeID;
var start_time;

function get_query_content(q, m, o, timing, sid, map) {
	start_time=(new Date).getTime();
	
	var url = '/sources/query?q=' + q + '&m=' + m + '&o=' + o + '&timing=' + timing;
	if(map == 'off'){
		url+='&map=off';
	}

	$('query-content').update('<h2>Loading ...</h2><br /><img src="/include/images/ajax/loading.gif" border="0" width="32" height="32">');

	new Ajax.Request(url,
  {
    method: 'get',
    onSuccess: function(transport) {
			var response = transport.responseText;
			if(!response){
				var error_no=3;
				var response = "Service currently not available (" + error_no + "), please try again later!";
				$('query-content').update(response);
				send_duration(error_no);
			}
			if(sid){
				response=response.replace(/\/query\/([^\?"']+)\?/g, "/query/$1?sid=" + sid + "&amp;");
				response=response.replace(/\/query\/([^\?"']+)"/g, "/query/$1?sid=" + sid + '"');
				var id_replacement2='\/en/feedback/url?sid=' + sid + '&amp;';
				response=response.replace(/\/en\/feedback\/url\?/g, id_replacement2);
			}
			response=response.replace(/<latitude>(.+)<\/latitude>/, '');
			var latitude=RegExp.$1;
			response=response.replace(/<longitude>(.+)<\/longitude>/, '');
			var longitude=RegExp.$1;
			response=response.replace(/<ip>(.+)<\/ip>/, '');
			var ip=RegExp.$1;
			$('query-content').update(response);
			if(map != 'off'){
				load(latitude, longitude, ip);
			}
			send_duration(0);
   },
    onFailure: function() {
			var error_no=1;
			$('query-content').update("Service currently not available (" + error_no + "), please try again later!");
 			send_duration(error_no);
   },
    onException: function(aj, exc) {
			var error_no=2;
			var error_message="Service currently not available (" + error_no + "), please try again later!";
			if(DEBUG){
				error_message+=" " + exc.message;
			}
			$('query-content').update(error_message);
			send_duration(error_no);
    }
  });

}

// Google map

function create_marker(point, html) {
	var marker = new GMarker(point);
	GEvent.addListener(marker, "click", function() {
		marker.openInfoWindowHtml(html);
	});
	return(marker);
}

function load(latitude, longitude, ip) {
	if (GBrowserIsCompatible() && document.getElementById("map")) {
		map = new GMap2(document.getElementById("map"));
		point = new GLatLng(latitude || 0, longitude || 0);
		map.addControl(new GSmallZoomControl());
		map.setCenter(point, 1);		// world view
		var marker = create_marker(point, ip);
		map.addOverlay(marker);
		
		activeID='city_tab';
		change_tab('world_tab');
	}
}

function set_zoom(a) {
	map.setCenter(point, a);
}

function change_tab(tabID) {
	// previous tab to back
	document.getElementById(activeID).style.borderBottom = "1px solid #bbbbbb";
	document.getElementById(activeID).style.backgroundColor = "#dddddd";

	// clicked tab to front
	document.getElementById(tabID).style.borderBottom = "1px solid #ffffff";
	document.getElementById(tabID).style.backgroundColor = "#ffffff";

	activeID = tabID;
};		

function send_duration(error){
	var duration=(new Date).getTime()-start_time;
        var curHref = window.location.href;
	var url = '/sources/store_query_duration.pl?duration=' + duration + '&error=' + error + '&url=' + curHref.replace(/\&/g,'_') + '&time=' + start_time;		// start time parameter makes sure nothing is cached
	new Ajax.Request(url, { method: 'get' });
}
