function makeRequest(url, method, form, data) {
	var http_request = new XMLHttpRequest();
	http_request.onreadystatechange = function() {
		if (http_request.readyState == 4) {
			hideAjaxLoading();
			$(form).find('*[name=save]:last').show();
			if (http_request.status == 200) {
				try {
					if ( (form.getAttribute("callback") != '' ) && (form.getAttribute("callback") !== null) ) {
						var callback_data = {};
						if ( (form.getAttribute("callback_data") != '' ) && (form.getAttribute("callback_data") !== null) ) callback_data = eval("("+form.getAttribute("callback_data")+")"); 
						eval(form.getAttribute("callback")+"(http_request.responseText, callback_data);");
					}
				} catch(err) {
				}
//				alert(http_request.responseText);
				//change to something like: yourlayer.visibility = 'hidden';
			} else {
				alert('Unable to perform request. Please check entered data.');
			}
		}
	};
	http_request.open(method, url, true);
	if ( method == 'POST' ) {
//        if ( form.getAttribute("enctype") == '' ) {
            http_request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
//        } else {
//            http_request.setRequestHeader("Content-Type", form.getAttribute("enctype"));                        
//        }
    }
	http_request.send(data);
}

function handleSendItem(sub) {
	query = new Array();
	for(i in sub) {
		if(sub[i] !== undefined) {
		if(sub[i].name) {
    	    if (sub[i].value !== undefined) query.push(sub[i].name + '=' + encodeURIComponent(sub[i].value));
		}}
	}
	return query;
}

function sendform(el) {
	var sub = el.getElementsByTagName("input");
	var sub2 = el.getElementsByTagName("textarea");
    var data = {};
    for(i in sub) {
		if (sub[i] !== undefined) {
        if(sub[i].name) {
            if (sub[i].type == "checkbox") {
                if (eval((sub[i].checked) == true) || (sub[i].checked == "checked")) {
                    eval("data."+sub[i].name+"=true");
                } else {
                    eval("data."+sub[i].name+"=false");
                }
            } else {
                if (sub[i].value !== undefined) eval("data."+sub[i].name+"='"+sub[i].value.replace(/'/g,"\\'")+"'");
            }
        }else{
			if(sub[i] instanceof HTMLCollection ){
				eval("data."+sub[i][1].name + "='"+sub[i][1].value+"'");
			}
		}
		}
    }
    for(i in sub2) {
        if(sub2[i].name) {
            if (sub2[i].value !== undefined) eval("data."+sub2[i].name+"='"+sub2[i].value.replace(/'/g,"\\'").replace(/\n/g,"<BR/>")+"'");
        }
    }

	if ( ( el.method == 'GET' ) || ( el.method == 'get' ) ) {
        $.get(el.action, data, function(d) {
            hideAjaxLoading();
            if ( (el.getAttribute("callback") != '' ) && (el.getAttribute("callback") !== null) ) {
				var callback_data = {};
				if ( (el.getAttribute("callback_data") != '' ) && (el.getAttribute("callback_data") !== null) ) callback_data = eval("("+el.getAttribute("callback_data")+")"); 
                eval(el.getAttribute("callback")+"(d, callback_data);");
            };
        }).error(function(){
            hideAjaxLoading();
            if ( (el.getAttribute("errorcallback") != '' ) && (el.getAttribute("errorcallback") !== null) ) {
                eval(el.getAttribute("errorcallback")+"();");
			};
		});
    } else {
        $.post(el.action, data, function(d) {
            hideAjaxLoading();
            if ( (el.getAttribute("callback") != '' ) && (el.getAttribute("callback") !== null) ) {
				var callback_data = {};
				if ( (el.getAttribute("callback_data") != '' ) && (el.getAttribute("callback_data") !== null) ) callback_data = eval("("+el.getAttribute("callback_data")+")"); 
                eval(el.getAttribute("callback")+"(d, callback_data);");
            };
        }).error(function(err){
            hideAjaxLoading();
            if ( (el.getAttribute("errorcallback") != '' ) && (el.getAttribute("errorcallback") !== null) ) {
                eval(el.getAttribute("errorcallback")+"(err);");
			};
		});
    }
}

function sendform2(el) {
	var sub = el.getElementsByTagName("input");
	var sub2 = el.getElementsByTagName("textarea");

	query = new Array();
	query = query.concat(handleSendItem(sub));
	query = query.concat(handleSendItem(sub2));
	query = query.join('&');
	if ( ( el.method == 'GET' ) || ( el.method == 'get' ) ) {
		query = '?' + query;
		makeRequest(el.action + query, 'GET', el);
	} else {
		makeRequest(el.action, 'POST', el, query);
	}
}

