/*
$(document).ready(function() {
	var stringName 	= " "+document.location;
	var stringSub = stringName.lastIndexOf("/");
	var fileName = stringName.substring( stringSub+1 , stringName.lastIndexOf(".")-5 );

	$("#"+fileName).submit(function() {
		submit_form(document.getElementById(fileName));
		return false;
	});
});
*/
function serialize(form){
	 var url = "";
	 elementosForm = form.getElementsByTagName("input");
	 for(i=0; i<elementosForm.length; i++)	{
		url = url + elementosForm[i].name + "=" + elementosForm[i].value + "&";
	 }
	 elementosForm = form.getElementsByTagName("textarea");
	 for(i=0; i<elementosForm.length; i++)	{
		url = url + elementosForm[i].name + "=" + elementosForm[i].value + "&";
	 }
	 elementosFormSelect = form.getElementsByTagName("select");
	 for(i=0; i<elementosFormSelect.length; i++)	{
		url = url + elementosFormSelect[i].name + "=" + elementosFormSelect[i].value + "&";
	 }
	 return url;
}

function extraiScript(texto){
    // inicializa o inicio ><
    var ini = 0;
    // loop enquanto achar um script
    while (ini!=-1){
        // procura uma tag de script
        ini = texto.indexOf('<script', ini);
        // se encontrar
        if (ini >=0){
            // define o inicio para depois do fechamento dessa tag
            ini = texto.indexOf('>', ini) + 1;
            // procura o final do script
            var fim = texto.indexOf('</script>', ini);
            // extrai apenas o script
            codigo = texto.substring(ini,fim);

            novo = document.createElement("script");
            novo.text = codigo;
            document.body.appendChild(novo);
        }
    }
}

function AjaxRequest() {
	Ajax = false;
	if (window.XMLHttpRequest) { // Mozilla, Safari,...
		Ajax = new XMLHttpRequest();
	} else if (window.ActiveXObject) { // IE
		try {
			Ajax = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				Ajax = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {}
		}
	}
	return Ajax;
}

function ajax(pagina, parametros, div, callback) {
	document.getElementById('msg').style.display = '';
	document.getElementById('msg').innerHTML = 'Carregando...';

	var req = AjaxRequest();
	if(!req) {
		//document.getElementById(pagina).innerHTML = '[Erro na Chamada]';
		return;
	}
	
	req.onreadystatechange = function resultado() {
		if (req.readyState == 4) {
			if (req.status == 200) {
				var response = req.responseText;
				if	(response.substring(0,7) == '<script') {
					extraiScript(response)
				} else {
					document.getElementById('msg').style.display = 'none';
					document.getElementById(div).innerHTML = response;
					extraiScript(response)
				}
				if(callback != '' || callback != 'undefined'){
					eval(callback);
				} 	
			} else {
				//alert('[Erro no Servidor]');
			}
		}
	}
	
	req.open('GET', pagina + '?' + parametros + '&z=' + Math.ceil(Math.random() * 100000), true);
	req.send(null);
}

function submit_field(pagina, parametros) {
	submit_servidor(pagina, parametros);
}

function submit_form(form) {
//	pagina = "document."+form+".action";
	submit_servidor(form.action, '', form);
}

function serialize(form){
	 var url = "";
	 elementosForm = form.getElementsByTagName("input");
	 for(i=0; i<elementosForm.length; i++)	{
		url = url + elementosForm[i].name + "=" + elementosForm[i].value + "&";
	 }
	 elementosForm = form.getElementsByTagName("textarea");
	 for(i=0; i<elementosForm.length; i++)	{
		url = url + elementosForm[i].name + "=" + elementosForm[i].value + "&";
	 }
	 elementosFormSelect = form.getElementsByTagName("select");
	 for(i=0; i<elementosFormSelect.length; i++)	{
		url = url + elementosFormSelect[i].name + "=" + elementosFormSelect[i].value + "&";
	 }
	 return url;
}

function submit_servidor(pagina, parametros, form) {
	if(parametros == '') {
		parametros = 'form=' + form.name + '&' + serialize(form);
	}
	
	var req = AjaxRequest();
	if(!req) {
		alert('Erro interno');
		return;
	}
	
	req.onreadystatechange = function resultado() {
		if (req.readyState == 4) {
			if (req.status == 200) {
				var response = unescape(req.responseText);
				response = response.replace(/\+/g," ");
				
				if (response != '') {
					var id = '#dialog';
				
					var maskHeight = $(document).height();
					var maskWidth = $(window).width();
				
					$('#mask').css({'width':maskWidth,'height':maskHeight});
				
					$('#mask').fadeIn(100);	
					$('#mask').fadeTo("fast",0.3);	
				
					$("#dialog").html(response);
				
					var winH = $(window).height();
					var winW = $(window).width();
						  
					$(id).css('top',  winH / 2 - $(id).height() / 2);
					$(id).css('left', winW / 2 - $(id).width()  / 2);
				
					$(id).fadeIn(200); 
									
					$('.window .close').click(function (e) {
						e.preventDefault();
						
						$('#mask').hide();
						$('.window').hide();
					});		
					
					$('#mask').click(function () {
						$(this).hide();
						$('.window').hide();
						
					});
					extraiScript(response);
				}
				return false;
			} else {
				//alert('[Erro no Servidor]');
			}
		}
	}
	
	req.open('POST', pagina, true);
	req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	req.setRequestHeader("Content-length", parametros.length);
    req.setRequestHeader('encoding','ISO-8859-1'); 
    req.setRequestHeader("Connection", "close");
	req.send(parametros);
}

function redireciona(tipo, destino) {
	$('#mask').hide();
	$('.window').hide();

	if(tipo == 'page') {
		window.location = destino;
	} else if(tipo == 'field' && destino != '') {
		document.destino.focus();
	}
}
