function fetch(url, elementId, loaderId)
 {
    var base = 'http://www.zaonce.com/cgi-bin/blog.pl?';

    if( loaderId )
    {
        current_hash = url.substr(base.length);
        window.location.hash = current_hash;
    }

    if( url == '' || url == base )
    {
        url = base + 'e=2';
    }

    var element = document.getElementById(elementId);
    var loader = document.getElementById(loaderId);

    if (loader)
    {
        $(element).fadeTo(250, 0.01);
        $(loader).fadeIn(250);
    }

    if (window.XMLHttpRequest)
    {
        try
        {
            req = new XMLHttpRequest();
        }
        catch(e)
        {
            req = false;
        }
    }
    else if (window.ActiveXObject)
    {
        // For Internet Explorer on Windows
        try
        {
            req = new ActiveXObject("Msxml2.XMLHTTP");
        }
        catch(e)
        {
            try
            {
                req = new ActiveXObject("Microsoft.XMLHTTP");
            }
            catch(e)
            {
                req = false;
            }
        }
    }
    if (req)
    {
        var baseurl = url.substr( 0, url.indexOf( '?' ) );
        var params  = url.substr( url.indexOf( '?' ) + 1 );
        
        // Synchronous request, wait till we have it all
        req.open('POST', baseurl, true);        

        req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        req.setRequestHeader("Content-length", params.length);
        req.setRequestHeader("Connection", "close");
        
        var requestTimer = setTimeout(function() {
            req.abort();
            if (loader)
            {
                $(element).fadeTo(250, 1.0);
                $(loader).fadeOut(250);
                window.location = base + current_hash.substr( 4 );
            }
        },
        2000);
        req.onreadystatechange = function()
        {
            if (req.readyState != 4)
            {
                return;
            }

            clearTimeout(requestTimer);

            if (req.responseText != '')
            {
                element.innerHTML = req.responseText;
            }

            var ob = element.getElementsByTagName("script");
            for (var i = 0; i < ob.length; i++)
            {
                if (ob[i].text != null) eval(ob[i].text);
            }

            if (loader)
            {
                $(element).fadeTo(250, 1.0);
                $(loader).fadeOut(250);
            }
        };
        req.send(params);

        return 0;
    }
    else
    {
        return - 1;
    }
}
