function ajaxSend( url, data, response )
{
    for( var i = 0; i < data.length; i ++ ) if( data.charAt( i ) == '%' )
    {
        var preString = data.substring( 0, i );
        var postString = data.substring( i + 1, data.length );
        data = preString + "%25" + postString;
    }
    while( data.indexOf( "$" ) != -1 ) data = data.replace( "$", "%24" );
    while( data.indexOf( "&" ) != -1 ) data = data.replace( "&", "%26" );
    while( data.indexOf( "+" ) != -1 ) data = data.replace( "+", "%2B" );
    while( data.indexOf( "," ) != -1 ) data = data.replace( ",", "%2C" );
    while( data.indexOf( "/" ) != -1 ) data = data.replace( "/", "%2F" );
    while( data.indexOf( ":" ) != -1 ) data = data.replace( ":", "%3A" );
    while( data.indexOf( ";" ) != -1 ) data = data.replace( ";", "%3B" );
    while( data.indexOf( "=" ) != -1 ) data = data.replace( "=", "%3D" );
    while( data.indexOf( "?" ) != -1 ) data = data.replace( "?", "%3F" );
    while( data.indexOf( "@" ) != -1 ) data = data.replace( "@", "%40" );
    while( data.indexOf( " " ) != -1 ) data = data.replace( " ", "%20" );
    while( data.indexOf( "\"" ) != -1 ) data = data.replace( "\"", "%22" );   
    while( data.indexOf( "<" ) != -1 ) data = data.replace( "<", "%3C" );
    while( data.indexOf( ">" ) != -1 ) data = data.replace( ">", "%3E" );
    while( data.indexOf( "#" ) != -1 ) data = data.replace( "#", "%23" );
    while( data.indexOf( "{" ) != -1 ) data = data.replace( "{", "%7B" );
    while( data.indexOf( "}" ) != -1 ) data = data.replace( "}", "%7D" );
    while( data.indexOf( "|" ) != -1 ) data = data.replace( "|", "%7C" );
    while( data.indexOf( "\\" ) != -1 ) data = data.replace( "\\", "%5C" );
    while( data.indexOf( "^" ) != -1 ) data = data.replace( "^", "%5E" );
    while( data.indexOf( "~" ) != -1 ) data = data.replace( "~", "%7E" );
    while( data.indexOf( "[" ) != -1 ) data = data.replace( "[", "%5B" ); 
    while( data.indexOf( "]" ) != -1 ) data = data.replace( "]", "%5D" );
    while( data.indexOf( "`" ) != -1 ) data = data.replace( "`", "%60" );
    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" );
    xmlHttp.send( "request=" + data );
}
function ajaxEncode( value )
{
    for( var i = 0; i < value.length; i ++ )
    {
        var specialCharacters = new Array( "&", "<", ">", "\"", "'" );
        var encodes = new Array( "&amp;", "&lt;", "&gt;", "&quot;", "&apos;" );
        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; 
}