var base64 = {
	charmap : "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",
	decode : function(str) {
			var ret = "";
			var i, acc = 0;
			var div = 1;
			for(i=0;i<str.length;i++)
			{
				if(str.charAt(i)=="=" || str.charAt(i)=='\n') break;
				acc = acc*64 + base64.charmap.indexOf(str.charAt(i));
				div = (div==1?64:div/4);
				if(div!=64)
				{
					ret = ret + String.fromCharCode(parseInt(acc/div));
					acc = acc % div;
				}
			}
			return ret;
		}
}

function _ajax_request_new() 
{
	var request = false;

	try {
		request = new ActiveXObject('Msxml2.XMLHTTP');
	}
	catch (e) {
		try {
			request = new ActiveXObject('Microsoft.XMLHTTP');
		}
       		catch (e) {
			try {
				request = new XMLHttpRequest();
			}
			catch (e) {
				request = false;
			}
		}
        }

	return request;
}

function _do_lookup(ip)
{
	var request = _ajax_request_new();
	var storage = document.getElementById('result');
	var complete = false;

	try {	
		if (!request) {
			document.location = '/lookup?ip=' + ip;
			return;
		}
			
		storage.innerHTML = '<h2>Lookup results for ' + ip + '<'+'/h2>\n<p style="text-align: center; font-size: 85%;">'+
				    '<img src="http://static.dronebl.org/images/loading.gif"><br/>Please wait.<'+'/p>';

		request.onreadystatechange = 	function() {
							var storage = document.getElementById("result");
							if (request.readyState == 4 && !complete)
							{
								complete = true;
								storage.innerHTML = request.responseText;
							}
						}

						request.open("POST", "/ws/lookup", true);
						request.setRequestHeader("Method", "POST /ws/lookup HTTP/1.1");
						request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
						request.send("ajax=1&ip=" + ip);
	}
	catch (e) {
		document.location = "/lookup?ip=" + ip;
		return;
	}
}

function _do_submit() 
{
	var ip = document.ajaxlookup.ip.value;
	_do_lookup(ip);
}
