function ajax(data_url,method)
{
    // kontrola vstupu
    if (data_url == undefined) return false;
    if (method == undefined) method = 'POST';
    // inicializace objektu
    this.ajax = null;
    this.request = '';
    this.method = method;
    this.data_url = data_url;
    this.session = '';
    this.xml = ''; // sem budou vlozena data k transformaci
	this.is_xml = true;
	this.content_type = "";
    
    // vytvorit objekt pro spojeni se serverem
    if (window.XMLHttpRequest)
    {
        this.ajax = new XMLHttpRequest();
        if (this.ajax.overrideMimeType)
            this.ajax.overrideMimeType('text/xml'); // osetreni chyby ve FF 1.5
    } 
    else if (window.ActiveXObject)
    {
        try {
            this.ajax = new ActiveXObject("Msxml2.XMLHTTP");
        } catch (e) {
            try {
                this.ajax = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e) {}
        }
    }
    else
        this.ajax = false;
}

/**
 * Funkce vraci true, pokud je objekt funkcni
 * (jsou v nem vyplneny vsechny informace potrebne k odesilani requestu)
 * @return bool
 */
ajax.prototype.is_valid = function()
{
    return (this.ajax && this.data_url != '')?true:false;
}

/**
 * Funkce zkontroluje, zda je nastavena session promenna
 * @return bool 
 */
ajax.prototype.check_session = function()
{
    if (this.session_name == undefined || this.session_value == undefined ||
        typeof(this.session_name) != typeof('') || typeof(this.session_value) != typeof('') ||
        this.session_name == '' || this.session_value == '') return false
    else return true;
}


/**
 * Funkce posle request na server
 * @param request XML-RPC pozadavek, ktery bude telem zpravy zaslane na server
 * Pokud je parametr prazdny, k odeslani requestu nedojde.
 * @return bool Je vracen status vykonani operace
 */
ajax.prototype.send_request = function(request,response_handler,handler_param)
{
    // kontrola vstupu
    if (request == undefined || typeof(request) != typeof('') || request == '') return false;
    if (!this.is_valid()) return false;
    if (!this.method) this.method = 'POST';
    
//     this.continue_flag = true;
//     this.continue_request(request, response_handler, handler_param);
    var ajax_obj = this;
    this.ajax.open(this.method, this.data_url);
    this.ajax.onreadystatechange = function() {
                                                if (ajax_obj.ajax.readyState == 4)
                                                {
                                                    if (ajax_obj.ajax.status == 200)
                                                        ajax_obj.xml = ajax_obj.ajax.responseText;
                                                    else ajax_obj.xml = '';
                                                    //this.xhtml = ajax_obj.transform_response(response_handler, handler_param);
                                                    if (response_handler && handler_param) response_handler(ajax_obj, handler_param);
                                                    else if (response_handler) response_handler(ajax_obj);
                                                }};
	if (this.is_xml || this.content_type == "")
		this.ajax.setRequestHeader('Content-Type', 'application/xml; charset=utf-8');
	else
		this.ajax.setRequestHeader("Content-Type", this.content_type+"; charset=utf-8");
    if (this.check_session())
        this.ajax.setRequestHeader('Cookie', this.session_name+'='+this.session_value);
    this.ajax.send(request);
}











