function __duplex() {
	var req = null;
	var AjaxArea;
	this.getXMLHttpRequest = duplex_getXMLHttpRequest;
	this.sendRequest = duplex_sendRequest;
	this.changeDuplexAjaxArea = changeDuplexAjaxArea;
	this.setDuplexAreaContent = setDuplexAreaContent;
}
function changeDuplexAjaxArea(area,content) {
	this.AjaxArea = area;
	
	if(content.indexOf("?") != -1) {
		content = content+"&";
	} else if(content.indexOf(".html") != -1) {
		content = content+"?";
	} else {
		content = content+"/index.html?";
	}
	content = "../"+content;
	this.sendRequest(content,this.setDuplexAreaContent,"output=single");
}
function setDuplexAreaContent() {
	if(__MasterDuplex.req.readyState == 4 && typeof(window.tplSetContent) == "function") {
 		tplSetContent(__MasterDuplex.AjaxArea,__MasterDuplex.req.responseText);
	}
}
function duplex_getXMLHttpRequest() {
	var httpReq = null;
	if(window.XMLHttpRequest) {
		httpReq = new XMLHttpRequest();
	} else if(typeof ActiveXObject != "undefined") {
		httpReq = new ActiveXObject("Microsoft.XMLHTTP");
	}
	return httpReq;
}

function duplex_sendRequest(url, handler, param) {
	
	this.req = this.getXMLHttpRequest();
	if(this.req) {
		this.req.onreadystatechange = handler;
		this.req.open("get",url+param,true);
		this.req.send(null);
	}
	if(typeof(window.tplWaitContent) == "function") {
		tplWaitContent(this.AjaxArea);
	}
	return 0;
}
var __MasterDuplex = new __duplex();

