function Ajax (scriptName,container,userFunc,format,write_meth) {
	if(scriptName && container && userFunc && format) {
		var _request=null;
		var _this=null;
		this.initialize(scriptName,container,userFunc,format,write_meth);
	}
}

Ajax.prototype = ({

initialize: function(scriptName,container,userFunc,format,write_meth) {
	_this=this;
	this.write_meth= (write_meth) ? write_meth : 1;
	this.scriptName='http://'+location.host+'/'+scriptName;
	this.container=container;
	this.userFunc=userFunc;
	this.format=format;
	this.method='GET'
	_request=this.getRequest();
	if (_request==null) {
		alert ('Browser does not support HTTP Request');
		return;
	}
},

getRequest: function() {
	obj=null;
	try {
		obj=new XMLHttpRequest();
	}
	catch (e) {
		try {
			obj=new ActiveXObject('Msxml2.XMLHTTP');
		}
		catch (e) {
			obj=new ActiveXObject('Microsoft.XMLHTTP');
		}
	}
	return obj;
},

statechanged: function() {
	if(_request.readyState==4 || _request.readyState=='complete') {
		if(_this.userFunc) {
//			alert(_request.responseText);
			switch(_this.format) {
				case 'xml':
					eval('var output='+_this.userFunc+"(_request.responseXML)");
					break;
				case 'html':
					eval('var output='+_this.userFunc+"(_request.responseText)");
//					var output=_request.responseText;
					break;
				default:
					return;
			}
			if(_this.write_meth==1) {
				_this.container.innerHTML='';
				_this.container.innerHTML=output;
			} else {
				_this.container.write(output);
			}
		} else {
			return;
		}
	} else {
		return;
	}
},

execute: function() {
	this.container.innerHTML="<div class=\"loading\" align=\"center\"><img src=\"http://"+location.host+"/pix/loading.gif\" /></div>";
	var parameters=new Array();

	for(var i=0;i<this.execute.arguments.length;i++) {
		if(this.execute.arguments[i]==null) { continue; }
		parameters[parameters.length]=this.execute.arguments[i].join('=');
	}

	switch(this.method) {
		case 'GET':
			parameters[parameters.length]='sid='+Math.random();
			var url=this.scriptName+'?'+parameters.join('&');
			var query=null;
			break;
		case 'POST':
			var url=this.scriptName;
			var query=parameters.join('&');
			break;
	}
	_request.onreadystatechange=this.statechanged;
	_request.open(this.method,url,true);
	if(this.method=='POST') {
		_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		_request.setRequestHeader("Content-length", parameters.length);
		_request.setRequestHeader("Connection", "close");
	}
	_request.send(query);

}

});

function getElemText(node) {
	switch(true) {
		case node.text:
			return node.text;
		case node.textContent:
			return node.text;
	}
    return node.text || node.textContent || (function(node){
        var _result = "";
        if (node == null) {
            return _result;
        }
        var childrens = node.childNodes;
        var i = 0;
        while (i < childrens.length) {
            var child = childrens.item(i);
            switch (child.nodeType) {
                case 1: // ELEMENT_NODE
                case 5: // ENTITY_REFERENCE_NODE
                    _result += arguments.callee(child);
                    break;
                case 3: // TEXT_NODE
                case 2: // ATTRIBUTE_NODE
                case 4: // CDATA_SECTION_NODE
                    _result += child.nodeValue;
                    break;
                case 6: // ENTITY_NODE
                case 7: // PROCESSING_INSTRUCTION_NODE
                case 8: // COMMENT_NODE
                case 9: // DOCUMENT_NODE
                case 10: // DOCUMENT_TYPE_NODE
                case 11: // DOCUMENT_FRAGMENT_NODE
                case 12: // NOTATION_NODE
                // skip
                break;
            }
            i++;
        }
        return _result;
    }(node));
}
