function enviaPage(url, metodo, modo, tagId, parametros)
{
    goAjax( url+"?"+parametros+"&rnd"+ Math.random() , metodo, modo , tagId);
}

function goAjax(url, metodo, modo, tagRetorno, parametros) {
	document.getElementById(tagRetorno).innerHTML='<div style="text-align:center; margin:0; padding:0;"><img src="/imagens/carregando.gif" alt="carregando..." style="text-align:center; margin:0; padding:0;"><br />carregando...</div>'

	// Tenta criar objeto xmlHTTP
	try {
		xmlhttp = new XMLHttpRequest();
	} catch(e) {
		try {
			xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
		} catch(e) {
			try {
				xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
			} catch(e) {
				xmlhttp = false;
			}
		}
	}

    if(metodo == "GET") {
    	xmlhttp.open("GET", url, modo);
	} else {        
		xmlhttp.open("POST", url, modo);
		xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=iso-8859-1");
		xmlhttp.setRequestHeader("Cache-Control", "no-store, no-cache, must-revalidate");
		xmlhttp.setRequestHeader("Cache-Control", "post-check=0, pre-check=0");
		xmlhttp.setRequestHeader("Pragma", "no-cache");
	}    
	
	xmlhttp.onreadystatechange = function() {
		if(xmlhttp.readyState == 4) {
			retorno=xmlhttp.responseText
			document.getElementById(tagRetorno).innerHTML=retorno
			//findScript(retorno)
		}
	}


	if(metodo == "GET") {
		xmlhttp.send(null);
	} else {
		// Se veio o form, manda os dados por POST, multipar/form-data 
		if (document.getElementById(parametros)) {
			var form = document.getElementById(parametros);
			var formData = ""; 
			var boundary; 
			if (form != null) { 
				boundary = "---------------------------"+ Math.floor(Math.random()*99999999999999); 
				formData = generateMultiPart(form, boundary); 
				xmlhttp.setRequestHeader('Content-Type', 'multipart/form-data; boundary=' + boundary); 
			} 
			xmlhttp.send(formData); 
		}
		else {
			xmlhttp.send(parametros);
		}
	}
}

function generateMultiPart(theForm, boundary) {
	var formData = "";
	var cDisposition = 'Content-Disposition: form-data; name="';

	// Percorre todos os elementos do formulário
	for(i = 0; i < theForm.elements.length; i++){
		if (theForm.elements[i].name) {
			if ( theForm.elements[i].type == "text" || theForm.elements[i].type == "textarea" || theForm.elements[i].type == "button" || theForm.elements[i].type == "password" || theForm.elements[i].type == "hidden" ) {
				formData += '--' + boundary + '\r\n';
				formData += cDisposition + theForm.elements[i].name +'"\r\n\r\n';
				formData += theForm.elements[i].value + "\r\n";
			}
			if (theForm.elements[i].type == "select-one") {
				formData += '--' + boundary + '\r\n';
				formData += cDisposition + theForm.elements[i].name +'"\r\n\r\n';
				formData += theForm.elements[i].options[theForm.elements[i].selectedIndex].value + "\r\n";
			}
			if (theForm.elements[i].type == "radio") {
				if (theForm.elements[i].checked == true) {
					formData += '--' + boundary + '\r\n';
					formData += cDisposition + theForm.elements[i].name +'"\r\n\r\n';
					formData += theForm.elements[i].value + "\r\n";
				}
			}
			if (theForm.elements[i].type == "select-multiple") {
				for (j = 0; j < theForm.elements[i].length; j++) {
					if (theForm.elements[i][j].selected) {
						formData += '--' + boundary + '\r\n';
						formData += cDisposition + theForm.elements[i].name +'"\r\n\r\n';
						formData += theForm.elements[i][j].value + "\r\n";
					}
				}
			}
			if (theForm.elements[i].type == "checkbox") {
				if (theForm.elements[i].checked) {
					formData += '--' + boundary + '\r\n';
					formData += cDisposition + theForm.elements[i].name +'"\r\n\r\n';
					formData += theForm.elements[i].value + "\r\n";
				}
			}
		}
	}
	formData += "--" + boundary + "--\r\n";
	return formData;
}

