delacompa.prototype.ajax = function(obj)
{
    var getRObj = function()
    {
        var e;
        try 
        {
            return new XMLHttpRequest();
        } 
        catch(e) 
        {
            try{return new ActiveXObject('Microsoft.XMLHTTP');}catch(e){}
        }
        return false;
    };
    
    var con = getRObj();

    var getJson = function(txt)
    {
        return (typeof(JSON) === 'undefined')?eval("(" + txt + ")"):JSON.parse(txt);
    };

    var url = obj.url;
    var method = (typeof(obj.method)!= 'undefined')?'POST':obj.method;
    var json = (typeof(obj.json)!= 'undefined' && obj.json== 1)?1:0;
    var success = (typeof(obj.success) != 'function')?'':obj.success; 
    var error = (typeof(obj.error) != 'function')?'':obj.error; 
    
    con.onreadystatechange = function() 
    {
        if (con.readyState == 4) 
        {
            if (con.status == 200 || con.status == 304) 
            {
                if(typeof(success) == 'function')
                {
                   var respTxt = (json==1)?getJson(con.responseText):con.responseText;
                   success(respTxt);
                }
            } 
            else if(typeof(error) == 'function') 
            {
                error(con.statusText);
            }
        }
    };
    con.open(method, url, true);
    if(method=='POST')con.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    if(con.overrideMimeType)con.overrideMimeType('text/html');
    (method=='POST')?con.send(url):con.send();
}   
 
delacompa.prototype.send = function(obj)
{                                      
    if(!obj.form) return;
    var url = (typeof(obj.url)!= 'undefined')?obj.url:dl$(obj.form).action;
    var form = dl$(obj.form).elements;
    url = (url.search(/\?/) == -1)?url+'?':url+'&';
    var el = {};
    var value = '';
    for (var i=0; i< form.length; i++) 
    {
        el = form[i]; 
        
        if(typeof(el.value)!='undefined' && el.tagName !='SELECT') value = encodeURIComponent(el.value);
        
        if (el.tagName == 'INPUT') 
        {
            if (el.type == 'text' || el.type == 'password' || el.type == 'hidden') url += el.name + '=' + value + '&';
            if (el.type == 'checkbox' && el.checked) url += el.name + '=' + value + '&';
            if (el.type == 'radio' && el.checked) url += el.name + '=' + value + '&';
        }
        else if (el.tagName == 'SELECT') 
        {                                                                       
            if (el.type=='select-one')
            {
                if (el.selectedIndex!=-1)
                {
                    url += el.name + '=' + encodeURIComponent(el.options[el.selectedIndex].value) + '&';
                }
            }
            else 
            {
                for(var j=0;j<el.options.length ;j++)
                {
                    if(el.options[j].selected==true) url += el.name + '=' + encodeURIComponent(el.options[j].value) + '&'; 
                }
            }
        }
        else if (el.tagName == 'TEXTAREA')
        { 
            url += el.name + '=' + value + '&';
        }
    }
    
    obj.url = url.substr(0,url.length-1);
    if (obj.url.length > 8190)
    {
        dl$(obj.form).action += "&reqTooLarge=1";
        dl$(obj.form).submit();
    }
    else
    {
        this.ajax(obj);
    }
};
