// ajax.js
function ajaxCall(url,callback,fieldName) {
    this.url = url;
    var callback = callback;
    var req = init();
    var fieldName = fieldName;
    req.onreadystatechange = processRequest;
        
    function init() {
      if (window.XMLHttpRequest) {
        return new XMLHttpRequest();
      } else if (window.ActiveXObject) {
        return new ActiveXObject("Microsoft.XMLHTTP");
      }
    }
    
    function processRequest () {
      if (req.readyState == 4) {
        if (req.status == 200 && callback != null) {
          callback(req,fieldName);
        }
      }
    }

    this.send = function() {
        req.open("GET", url, true);
        req.send(null);
    }
}

function callAjax(actionStr,callbackName)
{
	var url = "./ajax/call?action="+escape(actionStr);
	
	for (var i = 2; i < arguments.length; i+= 2)
	{
		url += "&"+arguments[i]+"="+escape(arguments[i+1]);
	}
	
	var ajax = new ajaxCall(url,callbackName);
	ajax.send();
}

function callAjaxForField(actionStr,callbackName,fieldName)
{
	var url = "./ajax/call?action="+escape(actionStr);
	
	for (var i = 3; i < arguments.length; i+= 2)
	{
		url += "&"+arguments[i]+"="+escape(arguments[i+1]);
	}
	
	var ajax = new ajaxCall(url,callbackName,fieldName);
	ajax.send();
}

function reportErrors(req,fieldName)
{
	var xml = req.responseXML;

	var errors = xml.getElementsByTagName("error");
	var errorsTag = document.getElementById(fieldName+"Error");
	if (errors.length > 0)
	{
		errorsTag.innerHTML = errors[0].childNodes[0].nodeValue;
	}
	else
	{
		errorsTag.innerHTML = "";
	}
}

function getTagValue(xml,name,defaultValue)
{
	if (arguments.length < 3)
	{
		defaultValue = '';
	}
	var tag = xml.getElementsByTagName(name);
	if (tag.length > 0 && tag[0].childNodes.length > 0)
	{
		return tag[0].childNodes[0].nodeValue;
	}
	return defaultValue;
}
