function AjaxShowPageBlocker() {

	var AjaxDivPageBlocker = document.createElement("div");

	AjaxDivPageBlocker.id               = 'idAjaxDivPageBlocker';
	AjaxDivPageBlocker.style.position   = 'absolute';
	AjaxDivPageBlocker.style.width      = '100%';
	AjaxDivPageBlocker.style.height     = '100%';
	AjaxDivPageBlocker.style.top        = '0px';
	AjaxDivPageBlocker.style.left       = '0px';
	AjaxDivPageBlocker.style.background = '#ffffff';
	AjaxDivPageBlocker.style.opacity    = '0.0';
	AjaxDivPageBlocker.style.filter     = 'alpha(opacity=0)';

	document.body.appendChild(AjaxDivPageBlocker);
}

function AjaxShowImgLoading(img) {

	var AjaxImgLoading = document.createElement('img');
	
	AjaxImgLoading.id               = 'idAjaxImgLoading';
	AjaxImgLoading.src              = img;
	AjaxImgLoading.border           = '0';
	AjaxImgLoading.style.position   = 'absolute';
	AjaxImgLoading.style.top        = '50%';
	AjaxImgLoading.style.left       = '50%';
	AjaxImgLoading.style.marginTop  = '-50px';
	AjaxImgLoading.style.marginLeft = '-50px';

	document.body.appendChild(AjaxImgLoading);
}

function AjaxHidePageBlocker() {	
	var DivPageBlocker = document.getElementById('idAjaxDivPageBlocker');
	document.body.removeChild(DivPageBlocker);
}

function AjaxHideImgLoading() {	
	var AjaxImgLoading = document.getElementById('idAjaxImgLoading');
	document.body.removeChild(AjaxImgLoading);
}

function AjaxSend (options)
{
	var url        = options.url;
	var method     = options.method;
    var pageTarget = false;
    var funcResp   = options.funcResp;
    var imgLoading = options.imgLoading;
    var blockPage  = options.blockPage;
    var vars       = options.vars;
    var data       = '';    
    var response   = '';   
    
    if (window.XMLHttpRequest) {
        // Si es Mozilla, Safari etc
        pageTarget = new XMLHttpRequest ();
    } else if (window.ActiveXObject) {
        // pero si es IE
        try {
            pageTarget = new ActiveXObject ("Msxml2.XMLHTTP");
        } catch (e) {
            // en caso que sea una versión antigua
            try {
                pageTarget = new ActiveXObject ("Microsoft.XMLHTTP");
            } catch (e) {
            	
            }
        }
    } else {
    	return false;
    }
    
    if (blockPage == '1') {
    	AjaxShowPageBlocker();
    }
    if (imgLoading != '') {
    	AjaxShowImgLoading(imgLoading);
    }
    
    pageTarget.onreadystatechange = function ()
    {    	
        // función de respuesta
        //if (pageTarget.readyState == 4 && (pageTarget.status == 200 || window.location.href.indexOf ("http") == - 1)) {
       	if (pageTarget.readyState == 4  && pageTarget.status == 200) {
       		if (blockPage == '1') {
       			AjaxHidePageBlocker();
       		}
       		if (imgLoading != '') {
       			AjaxHideImgLoading();
       		}
       		funcResp(pageTarget.responseText);     
        } 
    }
    
    if (typeof vars == 'object') {
    	for (var namevar in vars) {
    		data += namevar + '=' + vars[namevar] + '&';
    	}
    	data = data.replace(/&$/, '');
    } else {
    	data = null;
    }

    if (method == 'GET') {
    	url  = url + '?' + data;
    	data = null;
    } 
    
    pageTarget.open (method, url, true); // asignamos los métodos open y send
    pageTarget.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    pageTarget.send (data);
    
}

function AjaxSendForm(idform, url, funcResp){
	var form = document.getElementById(idform);
	var vars = {};
	if (!funcResp) {
		funcResp = alert;
	} 
	for (i=0; i<form.length; i++) {
		if (form.elements[i].type == 'checkbox' || form.elements[i].type == 'radio') {
			if (form.elements[i].checked) {
				vars[form.elements[i].name] = form.elements[i].value;
			}
		} else {
			vars[form.elements[i].name] = form.elements[i].value;
		}
	}
	var options = {
		url:         url,
		method:      'POST',
		vars:        vars,
		funcResp:    funcResp,
		imgLoading:  '/js/img/loadingEspabit.gif',
		blockPage:   '0'
	};
	AjaxSend(options);
}