function ajaxSend( url, data, response )
{
    var xmlHttp = null;
    if( window.XMLHttpRequest ) xmlHttp = new XMLHttpRequest();
    else if( window.ActiveXObject )
    {
    	try{ xmlHttp = new ActiveXObject( "Msxml2.XMLHTTP" ); }catch( e )
    	{
            try{ xmlHttp = new ActiveXObject( "Microsoft.XMLHTTP" ); }catch( e ){}
     	}
    }
    xmlHttp.onreadystatechange = function()
    {
        if( xmlHttp.readyState == 4 || xmlHttp.readyState == "complete" )
        {
            var responseXml = xmlHttp.responseXML;
            xmlHttp = null;
            if( response != null ) response( responseXml );
        }
    };
    xmlHttp.open( "POST", url, true );
    xmlHttp.setRequestHeader( "Content-type", "application/x-www-form-urlencoded" );
    xmlHttp.setRequestHeader( "Content-length", data != null ? data.length : 0 );
    xmlHttp.setRequestHeader( "Connection", "close" );
    if( data != null )
    {
	    var dataSplit = data.split( "+" );
	    if( dataSplit.length > 1 )
	    {
	        data = "";
	        for( var i = 0; i < dataSplit.length - 1; i ++ ) data += dataSplit[ i ] + "%2B";
	        data += dataSplit[ dataSplit.length - 1 ];
	    }
    }
    xmlHttp.send( data );
}
function xmlEncode( value )
{
    var specialCharacters = new Array( "&", "<", ">", "\"", "'" );
    var encodes = new Array( "&amp;", "&lt;", "&gt;", "&quot;", "&apos;" );
    for( var i = 0; i < value.length; i ++ ) for( var t = 0; t < specialCharacters.length; t ++ ) if( value.charAt( i ) == specialCharacters[ t ] )
    {
        var preString = value.substring( 0, i );
        var postString = value.substring( i + 1, value.length );
        value = preString + encodes[ t ] + postString;
    }
    return value; 
}

