function ajaxGetObject(id)
{
  var object;
  if (document.layers)
  {   
    object = document.layers[id];
  }
  else if (document.all)
  {
    object = document.all[id];
  }
  else if (document.getElementById)
  {
    object = document.getElementById(id);
  }
  return object;
}

/*
function ajaxSend(param)
param is an array:

param[0] = the function object that will be executed when received response from the server
param[1] = url
param[2] = method ('GET' or 'POST')
param[3] = POST data
param[4] - param[NN] = additional parameters needed for the executed function at param[0]

Returns true - if success, or false - if an error
*/
function ajaxSend(param)
{
  var xmlHttp;
  var post = (param[2].toLowerCase() == "post");
  try
  {
    // Firefox, Opera 8.0+, Safari
    xmlHttp=new XMLHttpRequest();
  }
  catch (e)
  {
    // Internet Explorer
    try
    {
      xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
    }
    catch (e)
    {
      try
      {
        xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
      }
      catch (e)
      {
        return false;
      }
    }
  }

  xmlHttp.onreadystatechange=function()
  {
    if(xmlHttp.readyState==4)
    {
      if (xmlHttp.status != 404)
      {
        param[0](param, xmlHttp.responseText);
      }
      return true;
    }
    else
    {
      //error
    }
  }
  try
  {
    xmlHttp.open(param[2], param[1], true);
    if (post)
    {
      xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
      xmlHttp.setRequestHeader("Content-length", param[3].length);
      xmlHttp.setRequestHeader("Connection", "close");
    }
    xmlHttp.send((post ? param[3] : null));
  }
  catch(e)
  {
    return false;
  }
  return true;
}

/*
function ajaxTagsFilter()
text = text with list of tags separated by | (tag1|tag1value|tag2|tag2value)
tags = array of tags, [tag1,tag2,tag3]

Returns literal array:

var test = "testtag1|value1|testtag2|value3|blah|yay";
var testtags = ['blah','testtag1'];
tags = ajaxTagsFilter(test, testtags);

alert(tags['testtag1']);  //message: undefined
alert(tags['testtag2']);  //message: value3
alert(tags['blah']);      //message: yay


*/

function ajaxTagsFilter(text, tags)
{
  
  for (i = 0; i < tags.length; i++)
  {
    tags[tags[i]] = ""; //create  literal objects
  }
  var r = text.split('|');
  for (i = 0; i < r.length; i = i + 2)
  {
    if (typeof(tags[r[i]]) == "undefined" || typeof(r[i]) == "undefined")
      continue;
    tags[r[i]] = (typeof(r[i+1]) == "undefined") ? "" : r[i+1].replace("&#124;", "|");
  }
  return tags;
}

/*
function ajaxGetPostQuery(obj, Url)
collects form data and returns it as a string, ready for POST or GET
*/

//http://ds.mwebng.net/pages/js/jsubmit/
function ajaxGetFormQuery(obj, rQuery)
{
  if (typeof rQuery == "undefined")
    var rQuery = new Array();

  var p = new Array();
  var o;
  var v;
  var count = -1;
  for(var i = 0; i < obj.elements.length; i++)
  {
    count++;
  	o = obj.elements[i];
	  v = rQuery.indexOf(o.name);
	  if (v != -1)
	  {
	    o.value = rQuery[v+1];
	    rQuery.slice(v, 2);
	  }
  	switch(o.tagName)
  	{
    	case "TEXTAREA":
        	p[count] = o.name + "=" + escape(o.value);
      	break;

    	case "SELECT":
         	p[count] = o.name+"="+escape(o.options[o.selectedIndex].value);
    	  break;

    	case "INPUT":
    	  switch(o.type) 
    	  {
      	  case "text":
          	  p[count] = o.name + "=" + escape(o.value);
        	  break;

      	  case "password":
      	      p[count] = o.name + "=" + escape(o.value);
      	    break;

      	  case "radio":
          	  if (o.checked)
          	  {
          	    p[count] = o.name + "=" + escape(o.value);
          	  }
          	  else
          	  {
          	    count--;
          	  }
        	  break;

      	  case "checkbox":
          	  if (o.checked)
          	  {
          	    p[count] = o.name + "=" + escape(o.value);
          	  }
          	  else
          	  {
          	    count--;
          	  }
        	  break;

      	  case "hidden":
          	  p[count] = o.name + "=" + escape(o.value);
        	  break;

      	  default:
      	      count--;
      	    break;
    	  }
    	break;	
  	default:
    	  count--;
  	  break;
  	}	
  }
  v = p.length;
  for(i = 0; i < rQuery.length; i = i + 2)
  {
     p[v+1] = rQuery[i] + "=" + escape(rQuery[i+1]);
  }
  p = p.join("&") + "&" + new Date().getTime();
  return p.replace("&&", "&");
}

//work around IE lack of indexOf search in an array
if(!Array.indexOf)
{
  Array.prototype.indexOf = function(obj)
  {
   for(var i=0; i<this.length; i++)
    if(this[i]==obj)
     return i;
   return -1;
  }
}