
var req = new HttpRequester();

// NewsView
function NewsView()
{
    this.requester = null;
    this.call;
    this.success = "";
}

NewsView.prototype.Request = function(fileName, callBack)
{
    var thisInstance = this;
    this.call = callBack;
    this.requester = req.createXMLHttpRequest(function() { thisInstance.onChangeState(thisInstance); });
    
    this.requester.open("GET", "/newscgi/" + fileName, true);
    this.requester.setRequestHeader("Content-Type" , "application/x-www-form-urlencoded");
    this.requester.setRequestHeader("If-Modified-Since", "Thu, 01 Jun 1970 00:00:00 GMT");
    //this.requester.send("c=" + code + "&sid=" + id);
    this.requester.send(null);
};



// change state event.
NewsView.prototype.onChangeState = function(recorder)
{
	if (recorder.requester == null)
	{
	    return;
	}
	if (recorder.requester.readyState != 4)
	{
		return;
	}

	try
	{
		if (recorder.requester.status == 200)
		{
		    this.success = recorder.requester.responseText;		
		    this.call(recorder.requester);
		    //alert("1130:responseText = " + this.success);
		}
		else if (recorder.requester.status != 304)
		{
			// Report error
		}
	}
	catch (e)
	{
		// Need error handling.
	}
	finally
	{		
        recorder.terminateRequest();
	}
};

// Terminate Request
NewsView.prototype.terminateRequest = function()
{
	if (this.requester !== null)
	{
		this.requester.abort();
		this.requester = null;
	}
};


// XmlHttpRequest
function HttpRequester()
{
}

HttpRequester.prototype.createXMLHttpRequest = function(stateChangeCallback)	// callback function on state change
{
	var requester = null;
	if (window.ActiveXObject) {
		try {
			requester = new ActiveXObject("Msxml2.XMLHTTP");
		    requester.onreadystatechange = stateChangeCallback;
		}
		catch (e) {
			try {
				requester = new ActiveXObject("Microsoft.XMLHTTP");
		        requester.onreadystatechange = stateChangeCallback;
			}
			catch (e) {
			}
		}
	}
	else if (window.XMLHttpRequest) {
		requester = new XMLHttpRequest();
		requester.onload = stateChangeCallback;
	}
	
//	if (requester !== null) {
//		requester.onreadystatechange = stateChangeCallback;
//	}
//	
	return requester;
};
