/**
	responseHTML
	(c) 2007-2008 xul.fr		
	Licence Mozilla 1.1
*/	


//DEBUG FUNCTION
function inspectObject(obj)
{
 var message = "";
 for (var m in obj)
 {
  try
  {
   var value = obj[m];
   message += (m+": "+value+"\n");
  }
  catch (e)
  {
   message += (m+" (Unable to get value - exception: "+e.message+")\n");
  }
 }
 alert(message);
}

function browserDet(){

	var browsername=navigator.appName;
	var browseragent=navigator.userAgent; 
	if (browsername.indexOf("Netscape")!=-1) {
		if (browseragent.indexOf("Chrome")!=-1){
			return "CHR"; 	//Chrome
		}else{
			return "NS";	//Netscape Firefox
		}		
	}else{
		if (browsername.indexOf("Microsoft")!=-1) {
			return "MSIE"; //IE
		}else {
			return "N/A"
		}
	}
	
}

/**
	Searches for body, extracts and return the content
	New version contributed by users
*/

function createXHR() 
{
	try { return new XMLHttpRequest(); } catch(e) {}
	try { return new ActiveXObject("Msxml2.XMLHTTP.6.0"); } catch (e) {}
	try { return new ActiveXObject("Msxml2.XMLHTTP.3.0"); } catch (e) {}
	try { return new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) {}
	try { return new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {}
	alert("XMLHttpRequest not supported");
	return null;
}

function getDivPrint(content){  // for IE
	
	// This would be after the Ajax request:
	var myHTML = content;
	//alert("myHTML: "+myHTML);
	var tempDiv = document.createElement('div');
	tempDiv.innerHTML = myHTML.replace(/<script(.|\s)*?\/script>/g, '');
	//alert(tempDiv);
	
	// tempDiv now has a DOM structure:
	//tempDiv.childNodes;
	myHTML = "";
	var i=0;
	for (i=0;i<tempDiv.childNodes.length;i++)
	{
		//inspectObject(tempDiv.childNodes[i].firstChild);
		//alert(tempDiv.childNodes[i].nodeValue);
		myHTML += tempDiv.childNodes[i].outerHTML;
		//alert(myHTML);
	}
	
	return myHTML;

}

function getBody(content) // for FF
{
   //alert(content);
   test = content.toLowerCase();    // to eliminate case sensitivity
   var x = test.indexOf("<body");
   if(x == -1) return "";

   x = test.indexOf(">", x);
   if(x == -1) return "";

   var y = test.lastIndexOf("</body>");
   if(y == -1) y = test.lastIndexOf("</html>");
   if(y == -1) y = content.length;    // If no HTML then just grab everything till end
		
   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,title, fun, storage, param)
{
	var xhr = createXHR();
	xhr.onreadystatechange=function()
	{ 
		if(xhr.readyState == 4)
		{
			if(xhr.status == 200)
			{
				if (browserDet()=="MSIE" || browserDet()=="CHR"){
					storage.innerHTML = getDivPrint(xhr.responseText); //for IE
				}else if (browserDet()=="NS"){
					storage.innerHTML = getBody(xhr.responseText);		//for FF					
				}else{
					alert("browser N/A for print")				
				}

				fun(storage, param, title);
			}else{
				alert(xhr.status);
			}
		} 
	}; 

	xhr.open("GET", url , true);
	xhr.send(null); 

} 

	/**
		Callback
		Assign directly a tag
	*/		


function processHTML(temp, target)
{
	target.innerHTML = temp.innerHTML;		
}

function loadWholePage(url)
{
	var y = document.getElementById("storage");
	var x = document.getElementById("displayed");
	loadHTML(url, processHTML, x, y);
}	


	/**
		Create responseHTML
		for acces by DOM's methods
		and retrieve DIV print
	*/	
	
function processByDOM(responseHTML, target, title)
{
	target.innerHTML = "<H3>Title: "+title+"</H3><br /><br />";

	// does not work with Chrome/Safari
	//var message = responseHTML.getElementsByTagName("div").namedItem("two").innerHTML;
	//var message = responseHTML.getElementsByTagName("div").item(1).innerHTML;
	//inspectObject(responseHTML.getElementsByTagName("div"));
	//inspectObject(responseHTML.getElementsByTagName("div").print);
	
	var message = '';
	if (browserDet()=="MSIE" || browserDet()=="CHR"){
		message = responseHTML.getElementsByTagName("div").print.innerHTML;  //for IE
	}else if (browserDet()=="NS"){
		message = responseHTML.getElementsByTagName("div").namedItem("print").innerHTML; //for FF					
	}else{
		alert("browser N/A for print")				
	}		

	//alert("message: "+message);
	
	target.innerHTML += message;

	//target.innerHTML += "<br />Extracted by name:<br />";
	
	//message = responseHTML.getElementsByTagName("form").item(0);
	//target.innerHTML += message.dyn.value;
}
	
function accessByDOM(URL, title, div_target)
{
	//var responseHTML = document.createElement("body");	// Bad for opera
	var responseHTML = document.getElementById("storage");
	var y = document.getElementById(div_target);
	loadHTML(URL,title, processByDOM, responseHTML, y);
}
	
function accessByDOM_1(lista, div_target)
{
	//var responseHTML = document.createElement("body");	// Bad for opera
	var responseHTML = document.getElementById("storage");

  var printlist1_array = lista.split(',');
  
  for (var loop=0; loop < printlist1_array.length; loop++) {
  	
  	item_t = printlist1_array[loop];
  	temp_t = item_t.split('|');
  	item_text = temp_t[0].substring(1, temp_t[0].length);
	if(!temp_t[1]) {
	  continue;
	}  	

//alert("item_text: "+item_text);
  	item_link = temp_t[1].substring(0, temp_t[1].length-1);
  	//alert("item_link: "+item_link);
  	
		var y = document.getElementById(div_target+""+loop);
		loadHTML(item_link,item_text, processByDOM, responseHTML, y);	  	
  }
  window.print();
	

}	

