function makeRequestObject() {
    var request = null
    // пытаемся создать объект для MSXML 2 и старше
    if(!request) try {
        request=new ActiveXObject('Msxml2.XMLHTTP')
    } catch (e){}
    // не вышло... попробуем для MSXML 1
    if(!request) try {
        request=new ActiveXObject('Microsoft.XMLHTTP')
    } catch (e){}
    // не вышло... попробуем для Mozilla
    if(!request) try {
        request=new XMLHttpRequest()
    } catch (e){}
    return request
}

function escapeData(data) {
    var query = [];
    if (data instanceof Object) {
        for (var k in data) {
            query[query.length] = escape(k) + "=" + escape(data[k]);
        }
        return query.join('&');
    } else {
        return escape(data);
    }
}

function remoteScripting(url, data, handler) {
    var request = makeRequestObject()
    if(!request) return
    request.onreadystatechange  = function() { 
            if(request.readyState == 4) handler(eval('['+request.responseText+']')[0]) 
        }
    request.open('POST', url, true)
	request.setRequestHeader("Content-Type","application/x-www-form-urlencoded")
	request.send(escapeData(data))
}
