
function loadWrapper(){
	
	var params = '';
	var callback = null;
	var url = '';
	var mode = 'text';

	this.addParam = function( name, value ){
		if( params == '' ) params += encodeURIComponent( name ) + '=' + encodeURIComponent( value );
		else params += '&' + encodeURIComponent( name ) + '=' + encodeURIComponent( value );
	}
	this.setCallback = function( callbackFunc ){
		if( typeof( callbackFunc ) == 'function' ) callback = callbackFunc;
	}
	this.setURL = function( _url ){
		url = _url;
	}
	this.setMode = function( _mode ){
		mode = _mode;
	}
	this.gogogo = function(){
		new loader( url, callback, params, mode, false );
	}
}


function loader ( _url, _callback, _postData, _mode, allowCache ) {
	


	if( allowCache == undefined ) allowCache = false;
	var url = _url;
	var callback = _callback;
	var postData = _postData;
	var mode = _mode;

	var req = createXMLHTTPObject();
	if ( !req ) return;

	var method = ( postData ) ? "POST" : "GET";
	var method = 'GET';
	//req.open( method, url, true );
	req.open( method, url, true );
	req.setRequestHeader( 'User-Agent',' XMLHTTP/1.0' );
	req.setRequestHeader("Connection", "close");
	req.onreadystatechange = processReqChange;

	if ( postData ){
		req.setRequestHeader( 'Content-type', 'application/x-www-form-urlencoded; charset=UTF-8' );
		req.setRequestHeader( 'Content-length', postData.length );		


		if( allowCache ) req.send( postData );
		else req.send( postData + "&nocache=" + Math.random() );
	} else {
		if( allowCache ){
			req.setRequestHeader( 'Cache-Control', 'no-cache=' + Math.random() );
			//req.setRequestHeader( 'Cache-Control', 'max-age=0' );
			req.send( null );
		}
		else {
			req.send( null );
		}
	}

	function processReqChange(){
		if (req.readyState == 0){ /*0 = uninitialized*/ }
		if (req.readyState == 1){ /*1 = loading*/ }
		if (req.readyState == 2){ /*2 = loaded*/ }
		if (req.readyState == 3){ /*3 = interactive*/ }
		if (req.readyState == 4){ //4 = complete
			if( callback == null ) return;
			if( mode && mode == 'xml' ) callback( req.responseXML, url, req.status );
			if( mode && mode == 'text' ) callback( req.responseText, url, req.status );
		}
	}

	function createXMLHTTPObject() {		
		var XMLObjects = [
			function () { return new XMLHttpRequest() },			
			function () { return new ActiveXObject("Microsoft.XMLHTTP") },
			function () { return new ActiveXObject("Msxml3.XMLHTTP") },	
			function () { return new ActiveXObject("Msxml2.XMLHTTP.5.0") },
			function () { return new ActiveXObject("Msxml2.XMLHTTP.4.0") },
			function () { return new ActiveXObject("Msxml2.XMLHTTP.3.0") },
			function () { return new ActiveXObject("Msxml2.XMLHTTP") }			
		];
		var xmlhttp = false;
		for (var i = 0 ; i < XMLObjects.length ; i++) {
			try {
				xmlhttp = XMLObjects[i]();
			}
			catch (e) {
				continue;
			}
			break;
		}
		return xmlhttp;
	}
}
