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 ajaxExecute(parametros, destino, pagina, callback) {
	document.getElementById(destino).innerHTML = '<p align="center"><img src="../imagens/load.gif" width="43" height="11" vspace="0" /></p>';
	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;
				response = response.replace(/^\s+|\s+$/g,"");
				
				if	(response.substring(0,7) == '<script') {
					extraiScript(response);
				}
				if	(response.substring(0,7) == '<option' && document.all) {
					select_innerHTML(document.getElementById(destino), response);						
				} else if (response != '') {
					document.getElementById(destino).innerHTML = response;
					extraiScript(response);
				}else{
					document.getElementById(destino).innerHTML = '';
				}
				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 select_innerHTML(objeto, innerHTML){
    objeto.innerHTML = ""
    var selTemp = document.createElement("micoxselect")
    var opt;
    selTemp.id="micoxselect1"
    document.body.appendChild(selTemp)
    selTemp = document.getElementById("micoxselect1")
    selTemp.style.display="none"
    innerHTML = innerHTML.replace(/<option/g,"<span").replace(/<\/option/g,"</span")
    selTemp.innerHTML = innerHTML
    
    for(var i=0;i<selTemp.childNodes.length;i++){
  		var spantemp = selTemp.childNodes[i];
  
        if(spantemp.tagName){     
            opt = document.createElement("OPTION")
    
	   if(document.all){ //IE
		   objeto.add(opt)
	   }else{
		   objeto.appendChild(opt)
	   }       
    
	   //getting attributes
	   for(var j=0; j<spantemp.attributes.length ; j++){
		var attrName = spantemp.attributes[j].nodeName;
		var attrVal = spantemp.attributes[j].nodeValue;
		if(attrVal){
		 try{
		  opt.setAttribute(attrName,attrVal);
		  opt.setAttributeNode(spantemp.attributes[j].cloneNode(true));
		 }catch(e){}
		}
	   }
	   //getting styles
		if(spantemp.style){
			for(var y in spantemp.style){
				try{opt.style[y] = spantemp.style[y];}catch(e){}
			}
	   }
	   //value and text
	   opt.value = spantemp.getAttribute("value")
	   opt.text = spantemp.innerHTML
	   //IE
	   opt.selected = spantemp.getAttribute('selected');
	   opt.className = spantemp.className;
	  } 
 }    
 document.body.removeChild(selTemp)
 selTemp = null
}

function submit_field(pagina, parametros) {
	submit_servidor(pagina, parametros);
}

function submit_form(form) {
	submit_servidor(form.action, '', form);
}

function serialize(form){
	 var url = "";
	 elementosForm = form.getElementsByTagName("input");
	 for(i=0; i < elementosForm.length; i++)	{
		if (elementosForm[i].type == "checkbox" && elementosForm[i].checked)
			url = url + elementosForm[i].name + "=" + "S" + "&";
		else
			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," ");
				
				extraiScript(response);

				if (response != '' && response.substring(0,7) != '<script') {
					var id='#dialog';
					var maskHeight=$(document).height();
					var maskWidth=$(document).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();
						
					});
				}
				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();
	}
}
