/** 
 * $Id: ajax.js,v 1.1 2012/02/01 11:19:41 seanodonnell Exp $
 */

var htmlhttp;
var url;
var eid;
var rev;

/**
 * @method init_ajax
 * 
 * Instantiate and return the XMLHttpRequest/ActiveX object.
 *
 * We will support < IE7 for a wee-bit longer, although it's 
 * our least priority.
 *
 */
function init_ajax()
{
	if (window.XMLHttpRequest)
	{
		// IE7+, Firefox, Chrome, Opera, Safari
		xmlhttp=new XMLHttpRequest();
	}
	else
	{
		// code for IE6, IE5
		xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
	}
	return xmlhttp;		
}

/**
 * @method http_request
 * @param string HTTP Request URL
 * @param object element id
 *
 * The http_request method will perform the required procedures 
 * needed to open an http request, receive the response, and 
 * send the output to a DOM element (eid).
 */
function http_request(url,eid)
{
	xmlhttp = init_ajax();
	xmlhttp.onreadystatechange=function() 
	{
        	if (xmlhttp.readyState==4 && xmlhttp.status==200)
        	{
                	if (xmlhttp.responseText != null)
                	{
                	        document.getElementById(eid).innerHTML = xmlhttp.responseText;
                	}
                	else
                	{
                	        document.getElementById(eid).innerHTML = "<p>The bot is currently sleeping.</p>\n";
                	}
	        }
	}
	xmlhttp.open("GET",url,true);
	xmlhttp.send();
	return;
}


function get_random_quote(eid)
{
	document.getElementById(eid).innerHTML = '<img src="images/loading.gif" alt="" style="border: 0px; vertical-align: middle; margin: 4px;" /> Fetching a new Quote...';
	http_request("/ajax_random_quote.php",eid);
	return;
}


// -- newer, more universal/generic methods
/**
 * @method http_request
 * @param string HTTP Request URL
 * @param object element id
 *
 * The http_request method will perform the required procedures 
 * needed to open an http request, receive the response, and 
 * send the output to a DOM element (eid).
 */
function get_request(url,id)
{
	xmlhttp = init_ajax();
	xmlhttp.onreadystatechange=function() 
	{
    	if (xmlhttp.readyState==4 && xmlhttp.status==200)
    	{
        	if (xmlhttp.responseText != null)
        	{
    	        document.getElementById(id).innerHTML = xmlhttp.responseText;
        	}
        	else
        	{
    	        document.getElementById(id).innerHTML = "<p>No data response returned from the AJAX HTTP GET Request.</p>\n";
        	}
        }
	}
	xmlhttp.open("GET",url,true);
	xmlhttp.send();
	return;
}

// standard post-request procedures
function post_request(url,formdata,eid)
{
	xmlhttp = init_ajax();
	xmlhttp.open("POST",url,true);
	xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	xmlhttp.setRequestHeader("Content-length", formdata.length);
	xmlhttp.setRequestHeader("Connection", "close");

	xmlhttp.onreadystatechange=function() 
	{
    	if (xmlhttp.readyState==4 && xmlhttp.status==200)
    	{
        	if (xmlhttp.responseText != null)
        	{
        		document.getElementById(eid).innerHTML = xmlhttp.responseText;
        	}
        	else
        	{
    	        document.getElementById(eid).innerHTML = "<p>No data response returned from the AJAX HTTP POST Request</p>\n";
        	}
        }
	}

	xmlhttp.send(formdata);

	return;
	
}

function get_response(script,eid,msg)
{
	if (msg.value.length > 0)
	{
		document.getElementById(eid).innerHTML = msg;
	}
	get_request(script,eid);
	return;
}

function post_response(script,formdata,eid,msg)
{
	if (msg.value.length > 0)
	{
		document.getElementById(eid).innerHTML = msg;
	}
	post_request(script,formdata,eid);
	return;
}

// custom post-request processing 

// authentication
function login_request(url,formdata,eid)
{
	xmlhttp = init_ajax();

	xmlhttp.open("POST",url,true);
	xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	xmlhttp.setRequestHeader("Content-length", formdata.length);
	xmlhttp.setRequestHeader("Connection", "close");

	xmlhttp.onreadystatechange=function() 
	{
    	if (xmlhttp.readyState==4 && xmlhttp.status==200)
    	{
        	if (xmlhttp.responseText != null)
        	{
        		if (xmlhttp.responseText.indexOf("Error505") > 0)
        		{
    	    		document.getElementById(eid).innerHTML = xmlhttp.responseText;
    	        }
    	        else
    	        {
    	        	// login success. reload the page to display authorized content
    	        	self.location.reload();
    	        }
        	}
        	else
        	{
    	        document.getElementById(eid).innerHTML = "<p>No data response returned from the AJAX HTTP POST Request</p>\n";
        	}
        }
	}

	xmlhttp.send(formdata);
	return;
}

function login(script,formdata,eid)
{
	document.getElementById(eid).innerHTML = "<h2>Authenticating...</h2><p>Your credentials are being analyzed.</p>\n";
	login_request(script,formdata,eid);
	return;
}



