function getElementsByClass( searchClass, domNode, tagName)
{
	if (domNode == null) domNode = document;
	if (tagName == null) tagName = '*';
	var el = new Array();
	var tags = domNode.getElementsByTagName(tagName);
	var tcl = " "+searchClass+" ";
	for(i=0,j=0; i<tags.length; i++) {
		var test = " " + tags[i].className + " ";
		if (test.indexOf(tcl) != -1)
			el[j++] = tags[i];
	}
	return el;
}

function AjaxCall(callback)
{
	this.xmlhttpCreate = function() {
		var req = false;
		if (window.XMLHttpRequest) // if Mozilla, Safari etc
		{ 
			req = new XMLHttpRequest();
			if (req.overrideMimeType) req.overrideMimeType("text/xml");
		}
		else 
		{
			if (window.ActiveXObject)
			{ // if IE
				try 
				{
					req = new ActiveXObject("Msxml2.XMLHTTP");
				}
				catch (e)
				{
					try
					{
						req = new ActiveXObject("Microsoft.XMLHTTP");
					}
					catch (e){}
				}
			}
		}
		if (! req)
		{
			alert("XMLHttpRequest could not be created.");
			return false;
		}
		return req;
	}
	this.xmlhttp = this.xmlhttpCreate();
	this.callback = callback;
}
	
	
function AjaxWhois()
{
	this.mainajaxcall = 0;

this.post = function(url, callback)
{
	var ajaxcall = new AjaxCall(callback) 
		
	ajaxcall.xmlhttp.open("POST", "whois/process.php", true);
	ajaxcall.xmlhttp.onreadystatechange = function () {anon_req_callback_catch();};
	ajaxcall.xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	ajaxcall.xmlhttp.send(url);
	this.mainajaxcall = ajaxcall;
}

this.req_callback_catch = function()
	{
		var ajaxcall = this.mainajaxcall;
		var doc;
		if (! ajaxcall) return false;
		if (ajaxcall.xmlhttp.readyState == 4)
		{
			doc = ajaxcall.xmlhttp.responseText;
		}
		else return false;
		if (ajaxcall.xmlhttp.status != 200)
		{
			alert("There was a problem with the request. Status Code: " + ajaxcall.xmlhttp.status);
			return false;
		}	
		ajaxcall.callback.call(this, doc);
		
	}

this.interact = function(action, callback)
{
	url = "action="+escape(action);
	
	if (action == "add")
	{
		url += "&ext="+escape(document.getElementById("ext").value)+"&serv="+escape(document.getElementById("serv").value)+"&errmsg="+escape(document.getElementById("errmsg").value)+"&minlen="+escape(document.getElementById("minlen").value);
	}
	else if (action == "get")
	{
		url += "&target="+escape(document.getElementById("dname").value) + "&ext=";
		var domains = getElementsByClass("domains", document, "input");
		var i = j = 0;
		var temp = '';
		while (domains[i])
		{
			if (domains[i].checked)
			{
				if (j != 0)
					temp += ',';
				temp += domains[i].value;
				j++;
			}
			i++;
		}
		if (j == domains.length)
			url += 'all';
		else
			url += escape(temp);
	}
	
	this.post(url, callback);
}

}

function anon_req_callback_catch()
{
	aw.req_callback_catch();
}

var aw = new AjaxWhois();
