function ajaxSend( url, data, response )
{
    var xmlHttp = null;
    if( window.XMLHttpRequest ) xmlHttp = new XMLHttpRequest();
    else if( window.ActiveXObject ) xmlHttp = new ActiveXObject( "Microsoft.XMLHTTP" );
    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; charset=UTF-8" );
    data = escape( data );
    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; 
}