var timer;
var error = false;
var errorText = "";
var waiting = false;
var xmlText="";
var responseText="";
//send the request using get
//************************************************************************
//For log_time.htm
//************************************************************************
function send_request_get(url){
	http_request = get_http_request_type();
	http_request.open('GET',url,false);
	http_request.send(null);
	new_win = window.open('','Garbage','');
	new_win.document.write(http_request.responseText);
	new_win.close();
}

function send_request_post(url,parameters){
	http_request = get_http_request_type();
	http_request.open('POST',url,false);
        http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        http_request.setRequestHeader("Content-length", parameters.length);
        http_request.setRequestHeader("Connection", "close");
	http_request.send(parameters);
	new_win = window.open('','Garbage','');
	new_win.document.write(http_request.responseText);
	new_win.close();
}

//************************************************************************
//For general usage
//************************************************************************

//returns a boolean value based on whether or not the browser can do ajax
function send_ajax_get(url,asynchronous){
	http_request = get_http_request_type();
	http_request.open('GET',url+ "&ms=" + new Date().getTime(),asynchronous);
	http_request.setRequestHeader("Cookie",document.cookie);
	http_request.send(null);
	return error;
}

//returns a boolean value based on whether or not the browser can do ajax
function send_ajax_post(url,parameters,asynchronous){
	http_request = get_http_request_type();
	http_request.open('POST',url,asynchronous);
	http_request.setRequestHeader("Cookie",document.cookie);
	http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	http_request.setRequestHeader("Content-length", parameters.length);
	http_request.setRequestHeader("Connection", "close");
	http_request.send(parameters);
	return error;
}

//returns a boolean value based on whether or not the browser can do ajax
//use this if you want a response
function send_ajax_get_return(url,location,asynchronous){
	http_request = get_http_request_type();
	http_request.onreadystatechange = function(){ process_ajax(http_request,location); };
	http_request.open('GET',url+ "&ms=" + new Date().getTime(),asynchronous);
	http_request.setRequestHeader("Cookie",document.cookie);
	http_request.send(null);
	waiting = true;
	return error;
}

//returns a boolean value based on whether or not the browser can do ajax
//use this if you want a response
function send_ajax_post_return(url,parameters,location,asynchronous){
	http_request = get_http_request_type();
	http_request.onreadystatechange = function(){ process_ajax(http_request,location); };
	http_request.open('POST',url,asynchronous);
	http_request.setRequestHeader("Cookie",document.cookie);
	http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	http_request.setRequestHeader("Content-length", parameters.length);
	http_request.setRequestHeader("Connection", "close");
	http_request.send(parameters);
	waiting = true;
	return error;
}

//returns a boolean value based on whether or not the browser can do ajax
//use this if you want a response
function send_ajax_post_field_return(url,parameters,field,asynchronous){
	http_request = get_http_request_type();
	http_request.onreadystatechange = function(){ process_ajax_field(http_request,field); };
	http_request.open('POST',url,asynchronous);
	http_request.setRequestHeader("Cookie",document.cookie);
	http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	http_request.setRequestHeader("Content-length", parameters.length);
	http_request.setRequestHeader("Connection", "close");
	http_request.send(parameters);
	return error;
}

//returns a boolean value based on whether or not the browser can do ajax
//use this if you want a response that displays errors only
function send_ajax_get_return_error_only(url,asynchronous){
	http_request = get_http_request_type();
	http_request.onreadystatechange = function(){process_ajax_error_only(http_request,true); };
	http_request.open('GET',url+ "&ms=" + new Date().getTime(),asynchronous);
	http_request.setRequestHeader("Cookie",document.cookie);
	http_request.send(null);
	waiting = true;
	return error;
}

//returns a boolean value based on whether or not the browser can do ajax
//use this if you want a response that displays errors only
function send_ajax_post_return_error_only(url,parameters,asynchronous){
	http_request = get_http_request_type();
	http_request.onreadystatechange = function(){process_ajax_error_only(http_request,true); };
	http_request.open('POST',url,asynchronous);
	http_request.setRequestHeader("Cookie",document.cookie);
	http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	http_request.setRequestHeader("Content-length", parameters.length);
	http_request.setRequestHeader("Connection", "close");
	http_request.send(parameters);
	waiting = true;
	return error;
}
//returns a boolean value based on whether or not the browser can do ajax
//use this if you want a response that has a variable
function send_ajax_get_return_only_var(url,asynchronous){
	waiting = true;
	http_request = get_http_request_type();
	http_request.onreadystatechange = function(){process_ajax_var_only(http_request); };
	http_request.open('GET',url+ "&ms=" + new Date().getTime(),asynchronous);
	http_request.setRequestHeader("Cookie",document.cookie);
	http_request.send(null);
	return error;
}

//returns a boolean value based on whether or not the browser can do ajax
//use this if you want a response that has a variable
function send_ajax_post_return_only_var(url,parameters,asynchronous){
	waiting = true;
	http_request = get_http_request_type();
	http_request.onreadystatechange = function(){process_ajax_var_only(http_request); };
	http_request.open('POST',url,asynchronous);
	http_request.setRequestHeader("Cookie",document.cookie);
	http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	http_request.setRequestHeader("Content-length", parameters.length);
	http_request.setRequestHeader("Connection", "close");
	http_request.send(parameters);
	return error;
}

function send_ajax_get_return_xml(url,asynchronous){
	waiting = true;
	http_request = get_http_request_type();
	http_request.onreadystatechange = function(){process_ajax_xml(http_request); };
	http_request.open('GET',url+ "&ms=" + new Date().getTime(),asynchronous);
	http_request.setRequestHeader("Cookie",document.cookie);
	http_request.send(null);
	return error;
}

//returns a boolean value based on whether or not the browser can do ajax
//use this if you want a response that has a variable
function send_ajax_post_return_xml(url,parameters,asynchronous){
	waiting = true;
	http_request = get_http_request_type();
	http_request.onreadystatechange = function(){process_ajax_xml(http_request); };
	http_request.open('POST',url,asynchronous);
	http_request.setRequestHeader("Cookie",document.cookie);
	http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	http_request.setRequestHeader("Content-length", parameters.length);
	http_request.setRequestHeader("Connection", "close");
	http_request.send(parameters);
	return error;
}

//Call this first to make http_request a proper object
function get_http_request_type(){
  try
    {
    // Firefox, Opera 8.0+, Safari
    http_request=new XMLHttpRequest();
    }
  catch (e)
    {
    // Internet Explorer
    try
      {
      http_request=new ActiveXObject("Msxml2.XMLHTTP");
      }
    catch (e)
      {
      try
        {
        http_request=new ActiveXObject("Microsoft.XMLHTTP");
        }
      catch (e)
        {
	 //no ajax 
	 error= true;
	return false;
        }
      }
    }
    return http_request;
}

function process_ajax_error_only(http_request,alBox){
	if(http_request.readyState==4){
		waiting = false;
		if(http_request.responseText.indexOf('OK') == -1 && http_request.responseText != ""){
			error=true;
			if(alBox){
				alert(http_request.responseText);
			} else {
				errorText = http_request.responseText;
			}
		}
	}
}

function process_ajax_var_only(http_request){
	if(http_request.readyState==4){
		waiting = false;
		responseText = http_request.responseText;
	}
}

function process_ajax_xml(http_request){
	if(http_request.readyState==4){
		temp = setTimeout(function(){ release_wait();},50);
		xmlText = http_request.responseXML
	}
}

function process_ajax(http_request,location){
	if(http_request.readyState==4){
		waiting = false;
		replace_location(location,http_request.responseText);
	}
}


function replace_location(location_name,replace_with){
	document.getElementById(location_name).innerHTML = replace_with;
	return true;
}

function get_micro_time(){
	return new Date().getTime();
}

function release_wait(){
	clearTimeout(temp);
	waiting = false;
}

function process_ajax_field(http_request,field){
	if(http_request.readyState==4){
		if(http_request.responseText.indexOf("Error")>-1){
			alert(http_request.responseText)
			replace_field(field,"");
		}
		else{
		replace_field(field,http_request.responseText);}
	}
}

function replace_field(field,replace_with){
	field.value = replace_with;
	return true;
}