
// holds an instance of XMLHttpRequest
var xmlHttp = createXmlHttpRequestObject();

// when set to true, display detailed error messages
var showErrors = true;

var trans = [];
for (var i = 0x410; i <= 0x44F; i++)
trans[i] = i - 0x350; // À-ßà-ÿ
trans[0x401] = 0xA8;    // ¨
trans[0x451] = 0xB8;    // ¸

var escapeOrig = window.escape;

window.escape = function(str)
{
	var ret = [];
	for (var i = 0; i < str.length; i++)
	{
		var n = str.charCodeAt(i);
		if (typeof trans[n] != 'undefined')
		n = trans[n];
		if (n <= 0xFF)
		ret.push(n);
	}
	return escapeOrig(String.fromCharCode.apply(null, ret));
}

// creates an XMLHttpRequest instance
function createXmlHttpRequestObject()
{

// will store the reference to the XMLHttpRequest object
var xmlHttp;

// this should work for all browsers except IE6 and older
try
{

// try to create XMLHttpRequest object
xmlHttp = new XMLHttpRequest();
}
catch(e)
{

// assume IE6 or older
var XmlHttpVersions = new Array("MSXML2.XMLHTTP.6.0",
"MSXML2.XMLHTTP.5.0",
"MSXML2.XMLHTTP.4.0",
"MSXML2.XMLHTTP.3.0",
"MSXML2.XMLHTTP",
"Microsoft.XMLHTTP");

// try every prog id until one works
for (var i=0; i<XmlHttpVersions.length && !xmlHttp; i++)
{
try
{

// try to create XMLHttpRequest object
xmlHttp = new ActiveXObject(XmlHttpVersions[i]);
}
catch (e) {} // ignore potential error
}
}

// return the created object or display an error message
if (!xmlHttp) alert("Error creating the XMLHttpRequest object.");
else return xmlHttp;

}

// function that displays an error message
function displayError($message)
{

// ignore errors if showErrors is false
if (showErrors)
{

// turn error displaying Off
showErrors = false;

// display error message
alert("Error encountered: \n" + $message);
}
}

// Retrieve titles from a feed and display them
function getFeed(txt1)
{

// only continue if xmlHttp isn't void
if (xmlHttp)
{

// try to connect to the server
try
{
if (xmlHttp.readyState == 4 || xmlHttp.readyState == 0)
{

xmlHttp.open("POST", "postfb.cgi", true);
xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
xmlHttp.onreadystatechange = handleHttpGetFeeds;
xmlHttp.send('txt='+escape(txt1));
}
else
{

// if connection was busy, try again after 1 second
setTimeout("getFeed('" + txt1 + "');", 1000);
}
}

// display the error in case of failure
catch (e)
{
displayError('msg1: '+e.toString());
}
}
}

// function that retrieves the HTTP response
function handleHttpGetFeeds()
{

// continue if the process is completed
if (xmlHttp.readyState == 4)
{

// continue only if HTTP status is "OK"
if (xmlHttp.status == 200)
{
try
{
displayFeed();
}
catch(e)
{

// display error message
displayError('msg2: '+e.toString());
}
}
else
{
displayError(xmlHttp.statusText);
}
}
}

// Processes server's response
function displayFeed()
{

// read server response as text, to check for errors
var response = xmlHttp.responseText;

// server error?
if (response.indexOf("ERRNO") >= 0
|| response.indexOf("error:") >= 0
|| response.length == 0)
throw(response.length == 0 ? "Void server response." : response);

document.getElementById('cnt1').innerHTML=response;

}

