
/**
	responseHTML
	(c) 2007 xul.fr		
	Licence Mozilla 1.1
*/	


/**
	Searches for body, extracts and return the content
*/

function getTag(content,tag)
{
	test = content.toLowerCase();    // to eliminate case sensitivity
	var x = test.indexOf("<"+tag);
	if(x == -1) return "";

	x = test.indexOf(">", x);
	if(x == -1) return "";

	var y = test.indexOf("</"+tag+">");
	
	return content.slice(x + 1, y);   
}


/**
	Loads a HTML page
	Put the content of the body tag into the current page.
	Arguments:
		url of the other HTML page to load
		id of the tag that has to hold the content
*/		

function loadHTML(url, fun, param, storage)
{
	var xhr = createXHR();
	xhr.onreadystatechange=function()
	{ 
		if(xhr.readyState == 4)
		{
			//if(xhr.status == 200)
			{
				param.innerHTML = getTag(xhr.responseText,"body");
				storage = getTag(xhr.responseText,"script");
				fun(param, storage);
			}
		} 
	}; 

	xhr.open("GET", url , true);
	xhr.send(null); 

} 

	/**
		Callback
		Assign directly a tag
	*/		


	function processHTML(target, script)
	{
		if (script != null)
			eval(script);
	}

	function loadWholePage(url)
	{
		var x = document.getElementById("maincontent");
		var y;// = document.getElementById("storage");
		loadHTML(url, processHTML, x, y);
	}	


	/**
		Create responseHTML
		for acces by DOM's methods
	*/	
	
	function processByDOM(responseHTML, target)
	{
		target.innerHTML = "Extracted by id:<br />";

		var message = responseHTML.getElementsByTagName("div").namedItem("two").innerHTML;
		target.innerHTML += message;

		target.innerHTML += "<br />Extracted by name:<br />";
		
		message = responseHTML.getElementsByTagName("form").namedItem("ajax");
		target.innerHTML += message.dyn.value;
	}
	
	function accessByDOM(url)
	{
		//var responseHTML = document.createElement("body");	// Bad for opera
		var responseHTML = document.getElementById("storage");
		var y = document.getElementById("displayed");
		loadHTML(url, processByDOM, responseHTML, y);
	}	


