/**
 * Create HTTP request object
 * @return request object
 */
function getHTTPObject() {
    if ( window.ActiveXObject ) {
        return new ActiveXObject( 'Microsoft.XMLHTTP' );
    } else if ( window.XMLHttpRequest ) {
        return new XMLHttpRequest();
    } else {
        return null;
    }
}

/** 
 * Perform an AJAX call
 * @param url
 * @param method request method
 * @param params array of POST arguments
 * @param callback callback to process AJAX result
 * @param boolean noEval
 * @return void
 */
function ajaxCall( url, method, params, callback, noEval ) {
    url = getBaseUrl()+url;
    httpObject = getHTTPObject();
    if ( httpObject != null ) {
        params = '&'+params.join( '&' );
        if ( method == null || method == 'POST' ) {
            httpObject.open( 'POST', url, true );
            httpObject.setRequestHeader( 'Content-length', params.length );
        } else {
            httpObject.open( 'GET', url+params, true );
        }

        httpObject.setRequestHeader( 'Content-type', 'application/x-www-form-urlencoded' );
        httpObject.setRequestHeader( 'Connection', 'close' );
        httpObject.onreadystatechange = function() {
            if ( httpObject.readyState == 4 ) {
                if ( noEval ) {
                    callback( httpObject.responseText );
                } else {
                    callback( eval("(" + httpObject.responseText + ")") );
                }
            }
        }
        httpObject.send( params );
    }
}
