function makeHttpRequest(url, callback_function, return_xml, parameters, method) 
{ 
    var http_request = false; 

    if (window.XMLHttpRequest) { // Mozilla, Safari,... 
        http_request = new XMLHttpRequest(); 
        if (http_request.overrideMimeType) { 
            if (return_xml) { 
		  if (callback_function != 'getElementById'){
	                //http_request.overrideMimeType('text/xml');
			  http_request.overrideMimeType('text/html');
                }else{
                       http_request.overrideMimeType('text/html');
		  }
            }else{
                http_request.overrideMimeType('text/html');
            } 
        } 

    } else if (window.ActiveXObject) { // IE 
        try { 
            http_request = new ActiveXObject('Msxml2.XMLHTTP'); 
        } catch (e) { 
            try { 
                http_request = new ActiveXObject('Microsoft.XMLHTTP'); 
            } catch (e) {} 
        } 
    } 

    if (!http_request) { 
        alert('Unfortunatelly you browser doesn\'t support this feature.'); 
        return false; 
    } 

    http_request.onreadystatechange = function() { 
        if (http_request.readyState == 4) { 
            if (http_request.status == 200) { 
                if (return_xml) { 
			if (callback_function=='getElementById'){
				document.getElementById(return_xml).innerHTML = (http_request.responseText);
       	             	//eval(callback_function + '(http_request.responseXML)'); 
			}	
                } else { 
                    eval(callback_function + '(http_request.responseText)'); 
                } 
            } else { 
                alert('There was a problem with the request.(Code: ' + http_request.status + ':' + http_request.responseText + ')'); 
            } 
        } 
    } 

    if (method=='get'){
        http_request.open('GET', url, true); 
        http_request.send(null);
    }else{
        http_request.open('POST', url, true);
        http_request.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
        http_request.setRequestHeader('Content-length', parameters.length);
        http_request.setRequestHeader('Connection', 'close');
        http_request.send(parameters);
    }
}

function postAjax(url, callback_function, return_xml, frmid) {
    //loop obj
    var poststr = '';
    if (frmid){
        var theForm = document.getElementById(frmid);
    }else{
        var theForm = document.forms[0];
    }
    for(i=0; i<theForm.elements.length; i++){
        if(theForm.elements[i].type == 'checkbox'){
            poststr = poststr + theForm.elements[i].name + '=' + escape(encodeURI(theForm.elements[i].checked)) + '&';
        }else{
            theForm.elements[i].value;
            poststr = poststr + theForm.elements[i].name + '=' + escape(encodeURI(theForm.elements[i].value)) + '&';
        }
    }
    //Strip last &
    n = String(poststr).length - 1;
    poststr = String(poststr).substring(0,n);

    makeHttpRequest(url, callback_function, return_xml, poststr, 'post');
}

function getAjax(url, callback_function, return_xml) {
    makeHttpRequest(url, callback_function, return_xml, '', 'get');
}

function fireEvent(element,event){
    if (document.createEventObject){
        // dispatch for IE
        var evt = document.createEventObject();
        return element.fireEvent('on'+event,evt)
    }
    else{
        // dispatch for firefox + others
        var evt = document.createEvent("HTMLEvents");
        evt.initEvent(event, true, true ); // event type,bubbling,cancelable
        return !element.dispatchEvent(evt);
    }
}
