
// http://www.nabble.com/Conflict-with-Mootools...-td21552177s27240.html

	var g_query_string_array = new Array();


	function call_fn(domain_tld, json_php_file, the_succ_fn)
	{
//alert("call_fn() called " + domain_tld + " " + json_php_file + " " +  the_succ_fn);

		if (the_succ_fn == null)
		{
			the_succ_fn = "succ_fn";
		}

		mouseIcon("wait");

		var json_url = buildJsonUrl(domain_tld, json_php_file);
//alert(json_url);

		// 2009-01-26 gk this array does not accept non-default function names!

		$jquery_gk.ajax({
			type: "GET",
			url: json_url,
			async: true,
			dataType: "jsonp",
			jsonp: "jsonp_callback",
			beforeSend:  bef_fn,
			success: succ_fn,
			complete: comp_fn
		});

/*
		var ajax_vars_arr = new Array();
		ajax_vars_arr.push("url: " + json_url);
		ajax_vars_arr.push("async: true");
		ajax_vars_arr.push("dataType: json");
		ajax_vars_arr.push("beforeSend:  bef_fn");
		ajax_vars_arr.push("success: succ_fn");
		ajax_vars_arr.push("complete: comp_fn");

		$.ajax(ajax_vars_arr);
*/

	}; // the ; is important!

	function buildJsonUrl(domain_tld, json_php_file)
	{

		if(domain_tld == null)
		{
			domain_tld = "BestOfTexas.com";
		}

		if(json_php_file == null)
		{
			json_php_file = "json_default.php";
		}

		if(json_php_file.indexOf("?") == -1)
		{
			// not found (at end of string)
			json_php_file += "?";
		}

		json_php_file += buildQueryString();

		var json_url = "http://" + domain_tld + "/" + json_php_file;

		return json_url;
	}

	function buildQueryString()
	{
		var query_string = "";

		for ( var i = 0; i < g_query_string_array.length; i++)
		{
			var pair = g_query_string_array[i];
			query_string += "&" + pair[0] + "=" + pair[1]; // gk htmlspecialchars()
		}

		query_string = query_string.replace(/^&/, ''); // strip beginning & if there is one
//query_string = "key1=val1";
		return query_string;
	}

	function mouseIcon(icon_type)
	{
		if(icon_type == "wait")
		{
			document.body.style.cursor = 'wait';
		}
		else
		{
			document.body.style.cursor = 'default';
		}
	}


	function bef_fn()
	{
		//alert("bef_fn() called");
	}

/* implementation script has to define this function
	function succ_fn(data)
	{

alert("default succ_fn() called!");

		mouseIcon("default");

	}
*/

	function comp_fn(data)
  	{
//alert("comp_fn() called ");
	}

	function addQueryPair(key, value)
	{
		var pair = new Array();

		pair[0] = key;
		pair[1] = value;

		var i = g_query_string_array.length;

		g_query_string_array[i] = pair;

		return pair;
	}

	function jsonAddRequest(key, value)
	{
		return addQueryPair(key, value);
	}

	function jsonClearRequests()
	{
		g_query_string_array = new Array();
	}

	function jsonDispatch(domain_tld, json_php_file, json_succ_fn_name)
	{
		return call_fn(domain_tld, json_php_file, json_succ_fn_name);
	}

