function AJAXPost(url, data, handler)
{
    var req = newXMLHttpRequest();

    var handlerFunction = getReadyStateHandler(req, handler);
    req.onreadystatechange = handlerFunction;
    req.open("POST", url, true);
    req.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
    try
    {
        req.send(data);
    }
    catch (e)
    {
    }
}

function newXMLHttpRequest() {

  var xmlreq = false;

  if (window.XMLHttpRequest) {

    // Create XMLHttpRequest object in non-Microsoft browsers
    xmlreq = new XMLHttpRequest();

  } else if (window.ActiveXObject) {

    // Create XMLHttpRequest via MS ActiveX
    try {
      // Try to create XMLHttpRequest in later versions
      // of Internet Explorer

      xmlreq = new ActiveXObject("Msxml2.XMLHTTP");

    } catch (e1) {

      // Failed to create required ActiveXObject

      try {
        // Try version supported by older versions
        // of Internet Explorer

        xmlreq = new ActiveXObject("Microsoft.XMLHTTP");

      } catch (e2) {

        // Unable to create an XMLHttpRequest with ActiveX
      }
    }
  }

  return xmlreq;
}

function getReadyStateHandler(req, responseXmlHandler)
{

  // Return an anonymous function that listens to the 
  // XMLHttpRequest instance
  return function ()
  {
    // If the request's status is "complete"
    if (req.readyState == 4)
    {
      // Check that a successful server response was received
      if (req.status == 200)
      {
        // Pass the XML payload of the response to the 
        // handler function
        responseXmlHandler(req.responseText);
      }
      else
      {
        // An HTTP problem has occurred
        alert("HTTP error: " + req.status);
      }
    }
  }
}

function InnerHTMLSet(id, data)
{
    data = unescape(data);
    //data = data.replace(String.fromCharCode(13)+String.fromCharCode(10), "<br/>");
    document.getElementById(id).innerHTML = data;
}
function InnerHTMLGet(id)
{
    return document.getElementById(id).innerHTML;
}
function ValueSet(id, data)
{
    document.getElementById(id).value = data;
}
function ValueGet(id)
{
    return document.getElementById(id).value;
}
function CheckedSet(id, data)
{
    document.getElementById(id).checked = data;
}
function CheckedGet(id)
{
    return document.getElementById(id).checked;
}
function ObjectShow(id)
{
    document.getElementById(id).style.visibility = "visible";
}
function ObjectHide(id)
{
    document.getElementById(id).style.visibility = "hidden";
}
function ObjectConceal(id)
{
    document.getElementById(id).style.display = "none";
}
function ObjectReveal(id)
{
    document.getElementById(id).style.display = "block";
}
function ObjectDisable(id)
{
    document.getElementById(id).disabled = true;
}
function ObjectEnable(id)
{
    document.getElementById(id).disabled = false;
}

function XMLTagValue(data, tag)
{
  data.ignoreCase = true;
  data.global = true;
  data.multiline = true;

  var ma = data.match("<"+ tag + ">(.*?)</"+ tag + ">");
  if (ma != null)
  {
    return ma[1];
  } else {
    return "";
  }
}

function XMLTagGroup(data, tag)
{
  var vXML = data.replace(/\r\n/g, "");
  var lngMatch = 0;
  var items = new Array(0);

  varPattern = "<"+ tag + ">(.*?)</"+ tag + ">";
  var re = new RegExp(varPattern);

  re.ignoreCase = true;
  re.global = true;
  re.multiline = false;
  var ma = re.exec(vXML);

  while (ma != null)
  {
    items[lngMatch] = ma[1];
    lngMatch ++;
    vXML = vXML.slice(ma.index + 1);
    if (vXML.length > 0)
    {
      var ma = re.exec(vXML);
    }
  }

  return items;
}

function addEvent(obj, evType, fn)
{ 
  if (typeof obj == "string")
  {
      obj = document.getElementById(obj);
  }
  if (obj == null || fn == null)
  {
      return false;
  }
  if (window.opera && obj.addEventListener)
  {
      obj.addEventListener(evType, fn, false);
      return true;
  } else if (obj.addEventListener) {
      obj.addEventListener(evType, fn, true); 
      return true; 
  } else if (obj.attachEvent) { 
      var r = obj.attachEvent("on"+evType, fn); 
      return r; 
  } else { 
      return false; 
  } 
} 

function Focus(id)
{ 
  document.getElementById(id).focus()
}
function Blur(id)
{ 
  document.getElementById(id).blur()
}

function tableruler(id, rowclass)
{
    if (document.getElementById && document.createTextNode)
    {
        var tables=document.getElementsByTagName('table');
        for (var i=0;i<tables.length;i++)
        {
            if (tables[i].id == id)
            {
                var trs=tables[i].getElementsByTagName('tr');
                for(var j=0;j<trs.length;j++)
                {
                    if(trs[j].parentNode.nodeName=='TBODY' && trs[j].parentNode.nodeName!='TFOOT')
                    {
                        trs[j].onmouseover=function(){this.className=rowclass;return false;}
                        trs[j].onmouseout=function(){this.className='';return false;}
                    }
                }
            }
        }
    }
}


