function CXMLHTTP()
{
	var _XMLHTTP;
	var debug = false;
	
	this.ClassName = "";
	this.submit = submit;
	this.submit3 = submit3;
	this.submit_sync = submit_sync;
	this.makeForm = makeForm;
	//this.getCode = getCode;
	//this.getMesg = getMesg;
	this.getResponseStruct = getResponseStruct;
	this.getXMLHTTP = getXMLHTTP;
	this.m_FormID = "";
	var m_ResponseStruct = null;
	this.log = _log;
		
	function _log( sMethod, sBuf, bAlways)
	{
		if( this.debug ||
			bAlways )
		{
			alert( this.ClassName + "::" + sMethod + " " + sBuf );
		}
	}
	
	function _init()
	{
		try
		{
			// Firefox, Opera 8.0+, Safari
			_XMLHTTP = new XMLHttpRequest();
		}
		catch (e)
		{
			// Internet Explorer
			try
			{
				_XMLHTTP = new ActiveXObject("Msxml2.XMLHTTP");
			}
			catch (e)
			{
				try
				{
					_XMLHTTP = new ActiveXObject("Microsoft.XMLHTTP");
				}
				catch (e)
				{
					alert("Your browser does not support AJAX!");
					return false;
				}
			}
		}
	}
	// if call back is set before open IE can't seem to do a second xmlhttp
	function submit3( myurl, sForm, callback )
	{
		_XMLHTTP.open("GET", myurl+"?"+sForm, true);
		_XMLHTTP.onreadystatechange = callback;
		_XMLHTTP.setRequestHeader( "lastCached", new Date() );
		_XMLHTTP.setRequestHeader( "Content-Type", "application/x-www-form-urlencoded" );
		_XMLHTTP.send(sForm);
	}
	
	function submit( myurl, sForm )
	{
		_XMLHTTP.open("POST", myurl, true);
		_XMLHTTP.setRequestHeader( "lastCached", new Date() );
		_XMLHTTP.setRequestHeader( "Content-Type", "application/x-www-form-urlencoded" );
		_XMLHTTP.send(sForm);
	}
	
	function submit_sync( myurl, sForm )
	{	
		//alert( "start submit" );
		_XMLHTTP.open("POST", myurl, false);
		_XMLHTTP.setRequestHeader( "lastCached", new Date() );
		_XMLHTTP.setRequestHeader( "Content-Type", "application/x-www-form-urlencoded" );
		alert( "CXMLHTTP::submit " + sForm );
		_XMLHTTP.send(sForm);
		//alert( "end submit" );
	}
	
	function makeForm( names )
	{
		var sForm = "";
		var elem = null;
		
		for(x=0; x < names.length; x++) 
		{
			var form = document.forms[this.m_FormID];
			var elem = eval( "form.id_" + names[x] );
		    //alert( "form name = " + form.name + "\ninput = " + elem.value);
		    
			//elem = document.getElementById( "id_" + names[x] );
		    
		    if( elem != null )
		    {
		    	sForm += names[x] + "=" + elem.value + "&";
		    }
		}
		
		//alert( sForm );
		return( sForm );		
	}
	
	function getXMLHTTP()
	{
		return( _XMLHTTP );
	}
	
	_init();	
}



/*
	function getResponseStruct( buf )
	{
		if( null == buf ||
			buf.length == 0 )
			return( false );
		
		if( m_ResponseStruct == null )
			m_ResponseStruct = buf.split("|");
			
		if( m_ResponseStruct == null ||
			m_ResponseStruct.length == 0 )
			return( false );
			
		return( true );
	}
		
	// XMLHttpRequest should return a buffer of the form
	// xxxx:<msg>|<uri>
	function getCode( buf )
	{
		if( !getResponseStruct( buf ) )
			return( "" );
			
		return( m_ResponseStruct[0] );
	}
	
	function getMesg( buf )
	{		
		if( !getResponseStruct( buf ) )
			return( "" );
		
		return( m_ResponseStruct[1] );
	}
*/