function GetXmlHttpObject() { 
 var objXMLHttp=null
 if (window.XMLHttpRequest)
 {
  objXMLHttp=new XMLHttpRequest()
 }
 else if (window.ActiveXObject)
 {
  objXMLHttp=new ActiveXObject("Microsoft.XMLHTTP")
 }
 return objXMLHttp
}


//runs a url and returns the response
function Run_Http(url,qstring) {
 var xmlHttp=GetXmlHttpObject();
 if (xmlHttp==null) {
  return "ERROR: Browser does not support HTTP Request";
 } 
 //xmlHttp.onreadystatechange=Change_Element; 
 xmlHttp.open("POST",url,false);
 xmlHttp.setRequestHeader("Content-length",qstring.length);
 xmlHttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
 xmlHttp.send(qstring);
 if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete") 
  return xmlHttp.responseText;  
}

function Generate_Query_String(idstr) { //generates a querystring from a form element (by id)
 var querystring='';
 var formobj=document.getElementById(idstr);
 for (i=0;i<formobj.length;i++) {  
  if (formobj.elements[i].type!="checkbox") {
  querystring+=formobj.elements[i].name;
  querystring+='=';
  querystring+=formobj.elements[i].value;
  if (i<formobj.length-1)   //don't want to add & after last one 
   querystring+='&';
 }
 else { // don't display checkbox if it is not checked
  if (formobj.elements[i].checked) {
   querystring+=formobj.elements[i].name;
   querystring+='=';
   querystring+=formobj.elements[i].value;
   if (i<formobj.length-1)   //don't want to add & after last one 
    querystring+='&';
  }
 }
 }
 return querystring;
}

//included macromedia here functions for simplicity of includes
function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}
function getElementsByClass(searchClass,node,tag) {
	var classElements = new Array();
	if ( node == null )
		node = document;
	if ( tag == null )
		tag = '*';
	var els = node.getElementsByTagName(tag);
	var elsLen = els.length;
	for (var i = 0, j = 0; i < elsLen; i++) {
		if (searchClass==els[i].className) {
			classElements[j] = els[i];
			j++;
		}
	}
	return classElements;
}
function getElementsByAttr(search,attr,node,tag)
{
	var j;
	result_array=new Array();
	if (node==null)
		node=document;
	if (tag==null)
		tag=='*';
	var elements=node.getElementsByTagName(tag);
	for (var i=0,j=0;i<elements.length;i++)
	{
		if (search==elements[i].getAttribute(attr))
		{
			result_array[j]=elements[i];
			j++;
		}
	}
	return result_array;
}
