//------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//------------------------------------------------------------------------- FUNÇÕES GERAIS -------------------------------------------------------------------------------
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------

//------------------------------------------------------------------------------------------------------------------------------------------------------------------------
// AUXILIAR
//      $
//      Nome_server
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------
// AJAX
//      createXMLHTTP
//      fnAjaxCarregaCidade
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------
// MÁSCARA
//      KeyNumber
//      FormataCep
//      FormataFone
//      FormataData
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------
// VALIDAÇÃO
//      TEXTO
//          ValidaNome
//          ValidaEmail
//      NÚMERO
//          ValidaProtocolo
//          calculadv
//          calculadvNire
//          checkCGC
//          checkCPF
//          checkNire
//      DATA
//          ValidaData
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------
// FOCO
//      MudaFoco
//      MudaFocoData
//      Habilitar_Campo
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------
// FORMATAÇÃO
//      SizeFont
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------
// STRINGS
//      MaxlengthResp
//      trim
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------
// DATA
//      isDate
//      VerificaData
//      getYear
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------
// CHECKBOX
//      Check
//      VerificaCheck
//      ObtemCheck
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------
// CALENDÁRIO
//      Merge
//      Split
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------
// MONTAGEM DO EDITOR
//      Editor
//      desableControls
//      edit
//      updateEditors
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------
// ROTINAS PARA RODAR FLASH
//------------------------------------------------------------------------------------------------------------------------------------------------------------------------

//========================================================================================================================================================================

//-- AUXILIAR ------------------------------------------------------------------------------------------------------------------------------------------------------------
//seta uma variável com o id do objeto
function $(e){
    if(typeof e=='string') {
        e=document.getElementById(e);
    }
    return e;
};

//Variável que diz se é ou não Internet Explorer
var ie = (document.all)?true:false;

function Nome_server()
{
    return 'pr02';
}

//-- AJAX ----------------------------------------------------------------------------------------------------------------------------------------------------------------
function createXMLHTTP() 
{
    try
    {
        ajax = new ActiveXObject("Microsoft.XMLHTTP");
    } 
    catch(e) 
    {
        try
        {
            ajax = new ActiveXObject("Msxml2.XMLHTTP");
            alert(ajax);
        }	
        catch(ex) 
        {
            try 
            {
                ajax = new XMLHttpRequest();
            }
            catch(exc) 
            {
                alert("Esse browser não tem recursos para uso do Ajax");
                ajax = null;
            }
        }
        return ajax;
    }

    var arrSignatures = ["MSXML2.XMLHTTP.1.0", "MSXML2.XMLHTTP.5.0", "MSXML2.XMLHTTP.4.0","MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP","Microsoft.XMLHTTP"];

    for (var i=0; i < arrSignatures.length; i++) 
    {
        try
        {
	  	    var oRequest = new ActiveXObject(arrSignatures[i]);
  	        return oRequest;
        } 
		catch (oError) 
        {
        }        
    }
    throw new Error("MSXML is not installed on your system.");
}

function fnAjaxCarregaCidade(sUF,sMunicipio,sCaminho) 
{	
    document.getElementById("divCombo").innerHTML = "<p>Carregando, aguarde...</p>";
    
    var oHTTPRequest = createXMLHTTP(); 
			
    oHTTPRequest.open("post", sCaminho, true);
	oHTTPRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");	
	oHTTPRequest.onreadystatechange=function() 
	{
        if (oHTTPRequest.readyState==4)
        {
            document.getElementById("divCombo").innerHTML = oHTTPRequest.responseText;
        }
    }
    oHTTPRequest.send("sUF=" + sUF + "&sMunicipio=" + sMunicipio);
}

//-- MÁSCARA -------------------------------------------------------------------------------------------------------------------------------------------------------------
function KeyNumber(e) 
{
    if(ie)
    {
        var key = window.event.keyCode;
    }
    else
    {
        var key = e.which
    }
    
    if ((key >= 48 && key <= 57) || key == 0 || key == 8 || key == 13 || key == 37 || key == 39 || key == 46)
        return true;
    else
        return false;
}

function FormataCep(val)
{
    val = val.replace(".", "");
    val = val.replace("-", "");
    
    if(val.length > 2 && val.length <= 5)
    {
        val = val.substring(0,2) + "." + val.substring(2,val.length);
    }
    else
    {
        if (val.length > 5 && val.length <= 8)
        {
            val = val.substring(0,2) + "." + val.substring(2,5) + "-" + val.substring(5,val.length)
        }
    }
    return val;
}

function FormataFone(val)
{
    val = val.replace("-", "");
    
    if(val.length > 4 && val.length <= 8)
    {
        val = val.substring(0,4) + "-" + val.substring(4,val.length);
    }
    
    return val;
}

function FormataData(form, campo, teclapres)
{
    var tecla = teclapres.keyCode;	

    vr = form[campo].value;
    vr = vr.replace(".", "");
    vr = vr.replace("/", "");
    vr = vr.replace("/", "");
    tam = vr.length + 1;

    //Coloca as barras da data no preenchimento
    if (tecla != 9 && tecla != 8) 
    {
        if (tam > 2 && tam < 5)
            form[campo].value = vr.substr(0, tam-2 ) + '/' + vr.substr(tam-2, tam);
        if (tam >= 5 && tam <= 10)
            form[campo].value = vr.substr(0, 2) + '/' + vr.substr(2, 2) + '/' + vr.substr(4, 4); 
    }	
}

//-- VALIDAÇÃO -----------------------------------------------------------------------------------------------------------------------------------------------------------
//-----TEXTO
function ValidaNome(obj)
{
    if(trim(obj).search(" ") == -1)
    {
        return false
    }
    else
    {
        return true
    }
}
function ValidaEmail(endereco)
{
    var re = /^[\w!#$%&'*+\/=?^`{|}~-]+(\.[\w!#$%&'*+\/=?^`{|}~-]+)*@(([\w-]+\.)+[A-Za-z]{2,6}|\[\d{1,3}(\.\d{1,3}){3}\])$/;
    return re.test(endereco);
}

function ValidaUrl(endereco) 
{
    var re = /^(([\w]+:)?\/\/)?(([\d\w]|%[a-fA-f\d]{2,2})+(:([\d\w]|%[a-fA-f\d]{2,2})+)?@)?([\d\w][-\d\w]{0,253}[\d\w]\.)+[\w]{2,4}(:[\d]+)?(\/([-+_~.\d\w]|%[a-fA-f\d]{2,2})*)*(\?(&?([-+_~.\d\w]|%[a-fA-f\d]{2,2})=?)*)?(#([-+_~.\d\w]|%[a-fA-f\d]{2,2})*)?$/;
    return re.test(endereco);
}

//-----NÚMERO
function ValidaProtocolo(obj)
{
    if (obj.value == "")
    {
        return true;
    }
    
    if (obj.value.length < "9") 
    {
        return true;
	}
	
	if (!calculadv(obj,8)) 
	{
        alert("Número de Protocolo Inválido");
		obj.focus();
		return false;
	}
}

function calculadv(cpo,tam)
{
    soma = 0
    num = ""
    k = 2
    
    for (var i=tam;i>0;i--)
    {
        elem = cpo.value.substring((i-1),i)
        soma += (k*elem)
        num  += elem
        k++
    }

    dv = (11-(soma % 11))
    if (dv >= 10) 
    {
        dv = 0
    }

    dv_in = cpo.value.substring(tam,(tam+1))

    if (dv_in != dv) 
    {
        return false
    }
    return true
}

function calculadvNire(cpo,tam)
{
    soma = 0
    num = ""
    k = 2

    for (var i=tam;i>0;i--)
    {
        elem = cpo.value.substring((i-1),i);
        soma += (k*elem);
        num  += elem;
        k++;
        if (k > 10) 
        {
            k = 2;
        }        
    }
 
    dv = (11-(soma % 11))
    if (dv == 11) 
    {
        dv = 1
    } 
    if (dv == 10) 
    {
        dv = 0
    }
    dv_in = cpo.value.substring(tam,(tam+1))
   
    if (dv_in != dv) 
    {
        return false
    }
    return true
}

function checkCGC (CGC) 
{
    mult1 = "543298765432";
    mult2 = "6543298765432";
    num1 = 0;
    num2 = 0;
    dig1 = 0;
    dig2 = 0;

	for (var x = 0; x <= 12; x++) 
	{
        num1 = CGC.charAt(x);
        num2 = mult1.charAt(x);
        num1 *= num2;
        dig1 += num1;
    }

    for (var X = 0; X <=13; X++) 
    {
        num1 = CGC.charAt(X);
        num2 = mult2.charAt(X);
        num1 *= num2;
        dig2 += num1;
    }
	
	dig1 *= 10; 
	dig1 %= 11;
	dig2 *= 10;
	dig2 %= 11;
	
	if (dig1 == 10) 
		dig1 = 0;
	if (dig2 == 10) 
		dig2 = 0;
		
	if (dig1 != CGC.charAt(12)) 
	{ 
		return  false;
	}
		
	if (dig2 != CGC.charAt(13)) 
	{
	    return  false;
	}
	return true;
}

function checkCPF(RecebeCPF) 
{
    Numero = new Array();
    var soma, resultado1, resultado2;

    Numero[0] = parseInt(RecebeCPF.substr(0,1));
    Numero[1] = parseInt(RecebeCPF.substr(1,1));
    Numero[2] = parseInt(RecebeCPF.substr(2,1));
    Numero[3] = parseInt(RecebeCPF.substr(3,1));
    Numero[4] = parseInt(RecebeCPF.substr(4,1));
	Numero[5] = parseInt(RecebeCPF.substr(5,1));
    Numero[6] = parseInt(RecebeCPF.substr(6,1));
    Numero[7] = parseInt(RecebeCPF.substr(7,1));
    Numero[8] = parseInt(RecebeCPF.substr(8,1));
    Numero[9] = parseInt(RecebeCPF.substr(9,1));
    Numero[10] = parseInt(RecebeCPF.substr(10,1));

    soma = 10 * Numero[0] + 9 * Numero[1] + 8 * Numero[2] + 7 * Numero[3] + 6 * Numero[4] + 5 * Numero[5] + 4 * Numero[6] + 3 * Numero[7] + 2 * Numero[8];
	soma = soma -(11 * (parseInt(soma / 11)));

	if ((soma == 0) || (soma == 1)) 
	{
		resultado1 = 0;
	}
	else
	{
		resultado1 = 11 - soma;
	}

	if (resultado1 == Numero[9]) 
	{
		soma = Numero[0] * 11 + Numero[1] * 10 + Numero[2] * 9 + Numero[3] * 8 + Numero[4] * 7 + Numero[5] * 6 + Numero[6] * 5 + Numero[7] * 4 + Numero[8] * 3 + Numero[9] * 2;
		soma = soma -(11 * (parseInt(soma / 11)));
		if ((soma == 0) || (soma == 1))
		{
			resultado2 = 0;
		} 
		else 
		{
			resultado2 = 11 - soma;
		}
	
		if (resultado2 == Numero[10]) 
		{
			return true; 
		}
		else 
		{
			return false; 
		}
	}
	else 
	{
		return false; 
	}
}

function checkNire(RecebeNire) 
{
    Numero = new Array();
    var soma, resto, digito;
	
	Numero[0] = parseInt(RecebeNire.substr(0,1));
	Numero[1] = parseInt(RecebeNire.substr(1,1));
	Numero[2] = parseInt(RecebeNire.substr(2,1));
	Numero[3] = parseInt(RecebeNire.substr(3,1));
	Numero[4] = parseInt(RecebeNire.substr(4,1));
	Numero[5] = parseInt(RecebeNire.substr(5,1));
	Numero[6] = parseInt(RecebeNire.substr(6,1));
	Numero[7] = parseInt(RecebeNire.substr(7,1));
	Numero[8] = parseInt(RecebeNire.substr(8,1));
	Numero[9] = parseInt(RecebeNire.substr(9,1));
	Numero[10] = parseInt(RecebeNire.substr(10,1));

	tamanho = RecebeNire.length;
	
	if (tamanho!=11)
	{
        return false; 
    }		
	if ((Numero[2] == 0) || (Numero[2] == 6) || (Numero[2] == 7))
	{
        return false; 
	} 
	else
	{
		soma = (Numero[0]*2) + (Numero[1]*10) + (Numero[2]*9) + (Numero[3]*8) + (Numero[4]*7) + (Numero[5]*6) + (Numero[6]*5) + (Numero[7]*4) + (Numero[8]*3) + (Numero[9]*2)

		resto = soma % 11;

		if (resto == 0) 
		{
			digito = 1;
		} 
		else
		{
            if (resto == 1) 
            {
				digito = 0;
			} 
			else 
			{
				digito = 11 - resto;
			}
		}

		if (digito != Numero[10]) 
		{
			return false;	
        }
    }
    return true; 
}

//-----DATA
function ValidaData(campo)
{
    // dd/mm/aaaa
    var data = campo.value;

    if (data.replace(/^\s+/g, "").replace(/\s+$/g, "") == "") 
    {
        return true;  
    }
    else 
        if (data.length == 10) 
            if (!(isNaN(data.substr(0,2))) && !(isNaN(data.substr(3,2))) && !(isNaN(data.substr(6,4)))) 
                if (data.substr(2,1) == '/' && data.substr(5,1) == '/')
                {
                    var dia = data.substr(0,2);
                    var mes = data.substr(3,2);
                    var ano = data.substr(6,4);
                    mes = mes - 1;  // javascript intervalo mês: 0-11
                    var tempData = new Date(ano, mes, dia);
                    if ((getYear(tempData.getYear()) == ano) && (ano > 1900) && (mes == tempData.getMonth()) && (dia == tempData.getDate()))
						return true;
                }
    if (ano < 1901) 
    { 
        alert ('Data inválida! Ano tem que ser maior que 1900.');		
    }
    else 
    {
        alert ('Data inválida! O formato deve ser "dd/mm/aaaa".');
    }
    campo.value = '';
    campo.focus();
    return false;
}

//-- FOCO ----------------------------------------------------------------------------------------------------------------------------------------------------------------
function MudaFoco(tam,val,obj)
{
    if(val.length == tam)
    {
        document.getElementById(obj).focus();
    }
}

function MudaFocoData(type,val,obj)
{
    switch (type)
    {
        case "Dia":
        {
            if(val > 0 && val < 32 && (val.length == 2))
            {
                document.getElementById(obj).focus();
            }
            break;
        }
        case "Mes":
        {
            if((val > 0 && val < 13) && (val.length == 2))
            {
                document.getElementById(obj).focus();
            }
            break;
        }
        case "Ano":
        {
            if((val > 1900 && val < 2100) && (val.length == 4))
            {
                document.getElementById(obj).focus();
            }
            break;
        }
    }
}

function Habilitar_Campo(table,field)
{
    var table = document.getElementById(table);
    var input = table.getElementsByTagName("input");

    for (i = 0; i < input.length ; i = i + 2)
    {
        if (input[i].type == "radio")
        {
            if (i == field)
            {
                input[i].checked = true;
                input[i+1].disabled = false;
                input[i+1].style.backgroundColor = "#FFFFE8";
                input[i+1].focus();
            }
            else
            {
                input[i].checked = false;
                input[i+1].value = "";
                input[i+1].disabled = true;
                input[i+1].style.backgroundColor = "#DDDDDD";
            }
        }
    }
}

//-- FORMATAÇÃO ----------------------------------------------------------------------------------------------------------------------------------------------------------
// Aumenta e diminui tamanho da fonte do texto
// 1o. parâmetro: divs e classes afetadas
// 2o. parâmetro: + ou - 
function sizeFont (elem, acao) 
{
    // tamanho inicial da fonte (em px)
    var tamInic = 11;
    
    // Tamanho mínimo da fonte (em px)
    var tamMin = 10;
    
    // Tamanho máximo da fonte (em px)
    var tamMax = 20;

	var i,j = 0;
	
    var arrElem = new Array(); 
    arrElem = elem.split(',');
	
    for (i=0; i<arrElem.length; i++) 
    {	
        var elemento = document.getElementsByName(arrElem[i]);
        var elemento2 = document.getElementById(arrElem[i]);
		
	    // No firefox .length pode não vir, nesse caso trata especial
        if (elemento.length) 
        {
            for (j=0; j<elemento.length; j++) 
            {
                if (elemento.item(j).style.fontSize == "") 
                    var tamFonte = tamInic;
                else
                    var tamFonte = parseInt(elemento.item(j).style.fontSize);
		    
                switch (acao) 
                {
                    // Aumenta o tamanho, enquanto foi menor que 'tamMax'
                    case '+':
                        if (tamFonte < tamMax)
                            elemento.item(j).style.fontSize = (tamFonte + 2) + "px";
                        break;
                    // Diminui o tamanbo, enquanto for maior que 'tamMin'
                    case '-':
                        if (tamFonte > tamMin)
                            elemento.item(j).style.fontSize = (tamFonte - 2) + "px";
                        break;
                }
            }
        }
        else if (elemento2) 
             {
                 if (elemento2.style.fontSize == "") 
                    var tamFonte = tamInic;
                 else
                    var tamFonte = parseInt(elemento2.style.fontSize);
		    
                 switch (acao)
                 {
                    // Aumenta o tamanho, enquanto foi menor que 'tamMax'
                    case '+':
                        if (tamFonte < tamMax)
                            elemento2.style.fontSize = (tamFonte + 2) + "px";
                        break;
                    // Diminui o tamanbo, enquanto for maior que 'tamMin'
                    case '-':
                        if (tamFonte > tamMin)
                            elemento2.style.fontSize = (tamFonte - 2) + "px";
                        break;
                }
            }	
    }
}

//-- STRINGS -------------------------------------------------------------------------------------------------------------------------------------------------------------
function MaxlengthResp(campo,tam)
{
    if (campo.value.length > tam - 3)
    {
        alert('Tamanho máximo do campo deve ser de até '+tam+' caracteres !');
        campo.focus();
        return false;    
    }
    return true;
}

function trim(cespaco)
{
    var Branco = " ";
    var Posic, Carac;
    var sespaco="";
    var Temp = cespaco.value.length;    
    var primeiro=false;

    for (var i=0; i < Temp; i++)   
    {  
        Carac =  cespaco.value.charAt (i);
        Posic  = Carac.indexOf (Branco);   
        if (Posic == -1)   
		{
            primeiro=true;
            sespaco=sespaco+Carac;
        }
        else if (primeiro)
        {	
		    sespaco=sespaco+Carac;
		}			   
    }
    
    //corre do fim p/ inicio
    Branco = " ";
    Temp = sespaco.length - 1;
    var str2 = ""
    var primeiro=false;
    for (Temp; Temp >= 0; Temp--)   
    {  
        Carac =  sespaco.charAt (Temp);
        Posic  = Carac.search(Branco);   
        if (Posic == -1)   
        {
            primeiro=true;
            str2=Carac + str2;
        }
        else if (primeiro)
		{	
            str2=Carac + str2;
        }
    }	
    cespaco.value=str2;
    return cespaco.value;
}

//-- DATA ----------------------------------------------------------------------------------------------------------------------------------------------------------------
//função que retorna se uma data está no formato dd/mm/yyyy e é válida
function isDate(data) 
{
    var temp = String(data);
    if (temp.length != 10) return false;		
    if (temp.charAt(2)!="/" || temp.charAt(5)!="/") return false
		
	//Pega o dia		
	var dia
	if (temp.substr(0, 2)=="08" || temp.substr(0, 2)=="09")
		dia = parseInt(temp.substr(1, 1));
	else
		dia = parseInt(temp.substr(0, 2));

	//pega o mes
	var mes
	if (temp.substr(3, 2)=="08" || temp.substr(3, 2)=="09")
		mes = parseInt(temp.substr(4, 1));
	else
		mes = parseInt(temp.substr(3, 2));
		
	//pega o ano
	var ano = parseInt(temp.substr(6, 4));

	if (ano < 1900) return false;
	if (mes < 1 || mes > 12) return false;
	if (dia < 1) return false;

	if (mes==1 || mes==3 || mes==5 || mes==7 || mes==8 || mes==10 || mes==12) 
	{
        return dia <= 31;
	}
	else
	{
        if (mes==4 || mes==6 || mes==9 || mes==11) 
        {
            return dia <= 30 && dia >=1;
        }
        else
        {
			if (ano%4==0) 
			{
			    return dia <= 29 && dia >=1;
            }
            else
            {
				return dia <= 28 && dia >=1;
            }
        }
    }
}

// função que retorna true se a data2 for maior que a data1
function VerificaData(data1, data2) 
{		
    //Se uma das datas for vazia, retorna true
    if (data1=="" || data2=="") 
    {
        return true;
    }
	var ano1 = 0
	var ano2 = 0
	var mes1 = 0
	var mes2 = 0
	var dia1 = 0
	var dia2 = 0
	
	//var NovoObjeto = new Date();
		
	ano1 = data1.substr(6,4);
    ano2 = data2.substr(6,4);
    mes1 = data1.substr(3,2);
    mes2 = data2.substr(3,2);
    dia1 = data1.substr(0,2); 		
    dia2 = data2.substr(0,2);
		
    if(ano1 < ano2)
    {
        return(true);
    }
    if(ano1 > ano2)
    {
		return(false);
    }
    if (ano1 == ano2)
    {
        if(mes1 < mes2)
        {
			return(true);
        }
		if(mes1 > mes2)
		{
			return(false);
		}
		if(mes1 == mes2)
		{
			if(dia1 < dia2)
			{
				return(true);
			}
			if(dia1 > dia2)
			{
				return(false);
			}
			else
			{
				return(true);
			}
		}
	}
}

function getYear(d) 
{ 
    return (d < 1000) ? d + 1900 : d;
}

//-- CHECKBOX ------------------------------------------------------------------------------------------------------------------------------------------------------------
function Check()
{
    for (var i = 0; i < document.frm.elements.length; i++)
    {
        if(document.frm.elements[i].type == "checkbox")
        {
            if (document.frm.elements[i].name.substring(0,6) == "chcKey")
            {            
                if(document.frm.elements[i].disabled == false)
                {
                    document.frm.elements[i].checked = document.frm.check_all.checked;
                }
            }
        }
    }
}

function VerificaCheck()
{
	for (i = 0; i < document.frm.elements.length; i++)
	{
        if(document.frm.elements[i].type == "checkbox" && document.frm.elements[i].name.substring(0,6) == "chcKey" && document.frm.elements[i].checked == true && document.frm.elements[i].name != "check_all")
        {
            return true;
        }
    }
	return false;
}

function ObtemCheck()
{
    key = ""
    for (i = 0; i < document.frm.elements.length; i++)
    {
        if (document.frm.elements[i].checked == true && document.frm.elements[i].name.substring(0,6) == "chcKey")
        {
            key = key + document.frm.elements[i].name.substring(6,document.frm.elements[i].name.length) + ",";
        }
    }
    return key.substring(0,key.length-1);
}

//-- CALENDÁRIO ----------------------------------------------------------------------------------------------------------------------------------------------------------
function Merge(form,type,obj)
{
    var frm = document.getElementById(form);
    switch (type)
    {
        case "Data1":
        {
            if(frm.txtDiaData1.value.length == 2 && frm.txtMesData1.value.length == 2 && frm.txtAnoData1.value.length == 4)
            {
                if(frm.txtMesData1.value > 0 && frm.txtMesData1.value < 13)
                {
                    frm.hdnData1.value = frm.txtDiaData1.value + "/" + frm.txtMesData1.value + "/" + frm.txtAnoData1.value;
                    displayCalendar(frm.hdnData1,'dd/mm/yyyy',obj);
                }
                else
                {
                    alert("Data Inválida.");
                }
            }
            else
            {
                frm.hdnData1.value = frm.txtDiaData1.value + "/" + frm.txtMesData1.value + "/" + frm.txtAnoData1.value;
                displayCalendar(frm.hdnData1,'dd/mm/yyyy',obj);
            }
            break;
        }        
        case "Data2":
        {
            if(frm.txtDiaData2.value.length == 2 && frm.txtMesData2.value.length == 2 && frm.txtAnoData2.value.length == 4)
            {
                if(frm.txtMesData2.value > 0 && frm.txtMesData2.value < 13)
                {
                    frm.hdnData2.value = frm.txtDiaData2.value + "/" + frm.txtMesData2.value + "/" + frm.txtAnoData2.value;
                    displayCalendar(frm.hdnData2,'dd/mm/yyyy',obj);
                }
                else
                {
                    alert("Data Inválida.");
                }
            }
            else
            {
                frm.hdnData2.value = frm.txtDiaData2.value + "/" + frm.txtMesData2.value + "/" + frm.txtAnoData2.value;
                displayCalendar(frm.hdnData2,'dd/mm/yyyy',obj);
            }
            break;
        }
        case "DataInicial":
        {
            if(frm.txtDiaDataInicial.value.length == 2 && frm.txtMesDataInicial.value.length == 2 && frm.txtAnoDataInicial.value.length == 4)
            {
                if(frm.txtMesDataInicial.value > 0 && frm.txtMesDataInicial.value < 13)
                {
                    frm.hdnDataInicial.value = frm.txtDiaDataInicial.value + "/" + frm.txtMesDataInicial.value + "/" + frm.txtAnoDataInicial.value;
                    displayCalendar(frm.hdnDataInicial,'dd/mm/yyyy',obj);
                }
                else
                {
                    alert("Data Inicial Inválida.");
                }
            }
            else
            {
                frm.hdnDataInicial.value = frm.txtDiaDataInicial.value + "/" + frm.txtMesDataInicial.value + "/" + frm.txtAnoDataInicial.value;
                displayCalendar(frm.hdnDataInicial,'dd/mm/yyyy',obj);
            }
            break;
        }
        case "DataFinal":
        {
            if(frm.txtDiaDataFinal.value.length == 2 && frm.txtMesDataFinal.value.length == 2 && frm.txtAnoDataFinal.value.length == 4)
            {
                if(frm.txtMesDataFinal.value > 0 && frm.txtMesDataFinal.value < 13)
                {
                    frm.hdnDataFinal.value = frm.txtDiaDataFinal.value + "/" + frm.txtMesDataFinal.value + "/" + frm.txtAnoDataFinal.value;
                    displayCalendar(frm.hdnDataFinal,'dd/mm/yyyy',obj);
                }
                else
                {
                    alert("Data Final Inválida.");
                }
            }
            else
            {
                frm.hdnDataFinal.value = frm.txtDiaDataFinal.value + "/" + frm.txtMesDataFinal.value + "/" + frm.txtAnoDataFinal.value;
                displayCalendar(frm.hdnDataFinal,'dd/mm/yyyy',obj);
            }
            break;                
        }
    }       
}

function Split(form,type)
{
    var frm = document.getElementById(form);
    switch (type)
    {
        case "Data1":
        {
            frm.txtDiaData1.value = frm.hdnData1.value.substring(0,2);
            frm.txtMesData1.value = frm.hdnData1.value.substring(3,5);
            frm.txtAnoData1.value = frm.hdnData1.value.substring(6,10);
            break;
        }
        case "Data2":
        {
            frm.txtDiaData2.value = frm.hdnData2.value.substring(0,2);
            frm.txtMesData2.value = frm.hdnData2.value.substring(3,5);
            frm.txtAnoData2.value = frm.hdnData2.value.substring(6,10);
            break;
        }
        case "DataInicial":
        {
            frm.txtDiaDataInicial.value = frm.hdnDataInicial.value.substring(0,2);
            frm.txtMesDataInicial.value = frm.hdnDataInicial.value.substring(3,5);
            frm.txtAnoDataInicial.value = frm.hdnDataInicial.value.substring(6,10);
            break;
        }
        case "DataFinal":
        {
            frm.txtDiaDataFinal.value = frm.hdnDataFinal.value.substring(0,2);
            frm.txtMesDataFinal.value = frm.hdnDataFinal.value.substring(3,5);
            frm.txtAnoDataFinal.value = frm.hdnDataFinal.value.substring(6,10);
            break;
        }
    }
}

//-- MONTAGEM DO EDITOR --------------------------------------------------------------------------------------------------------------------------------------------------
var currEditor = null;		    //editor atual
var desableCtrls = false;		//indica que os controles foram desabilitados para edição;
var path_editor = "";

function Editor(textarea){
	var editor = this;
	var txt = (typeof textarea == "string") ? document.getElementById(textarea) : textarea;
	this.txtarea = txt;
	txt.style.display = "none";
	var frm = txt.form;
	this.frm = frm;
	
	var html = document.createElement("div");
	html.className = "htmlarea";
	this.htmlarea = html;
	
	txt.parentNode.insertBefore(html, txt);
	html.style.width = txt.style.width;
	html.style.height = txt.style.height;
	html.innerHTML = txt.value.replace(/\r\n/ig,"<BR>");
	
	if(!desableCtrls)desableControls(document.body,html);
	html.unselectable = "off";
	html.contentEditable = true;
	
	if(!frm.editors)frm.editors = new Array();
	frm.editors[frm.editors.length] = editor;
	
	html.onblur = function(){
		currEditor = html;	
	};	
	
	this.update = function(){
		var html_final = html.innerHTML.replace(/\r\n/ig,"");
		html_final = html_final.replace(/^<p>(.*)<\/p>$/ig,"$1");
		txt.value = html_final.replace(/\sstyle\=\".*?\"/ig,"");
	};
}

function desableControls(obj_pai,obj_html){
	var i = 0; desableCtrls = true;
	if(!document.all)return;
	var objs = obj_pai.children;
	for(;i<objs.length;i++){
		if(objs[i]==obj_html)continue;		
		if(objs[i].children.length && objs[i].canHaveHTML)
			desableControls(objs[i],obj_html);
		else
			if(objs[i].canHaveHTML)
				objs[i].unselectable = "on";
	}
}

function edit(cmd){
	var range = document.selection.createRange();
	switch(cmd.toLowerCase()){
		case "sup":
			range.pasteHTML(range.text.sup());
			break;
		default:
			if(range.text != "")
				document.execCommand(cmd);
			else{
				alert("Selecione o texto que deseja editar!");
				if(currEditor)currEditor.focus();
			}
	}
}

function updateEditors(frm){
	for(i=0;i<frm.editors.length;i++)
		frm.editors[i].update();
}

function help(cmd){
	var msg = "*** AJUDA PARA EDIÇÃO DE TEXTO COM RECURSOS HTML ***\n\n";
	switch(cmd.toLowerCase()){
		case "pastetable":
			msg += "Recurso: COLAR TABELA\n\nFormato 1\n- Colunas representadas por \"|\" ou ";
			msg += "\"Tabulação\"\n- Linhas representadas por quebras de linha\nExemplo:";
			msg += "\nbla|bla|bla|bla\nbla|bla|bla|bla\nbla|bla|bla|bla\n\nFormato 2\n";
			msg += "- Utilizando o editor de tabelas do Word\n\nPara ambos formatos, ";
			msg += "selecione a tabela e copie (CRTL+C), já na tela de edição do Admin,";
			msg += " posicione o cursor do mouse sobre a área onde será colada a tabela e clique no botão \"Colar Tabela\"."
			break;
		case "link": break;	
		case "inserttable": 
			msg += "Recurso: MONTAR TABELA\n\nÉ bem simples, todos os campos já vem com ";
			msg += "valores pré-definidos, você precisa apenas preencher os campos de Linhas ";
			msg += "e Colunas de acordo com a tabela que deseja montar, clicar no botão ";
			msg += "\"Inseri Tabela\" e editar os textos sobre a tabela que será exibida na ";
			msg += "janela de edição.\n\nDica: Faça testes, com tamanhos e espaçamentos variados, ";
			msg += "sabendo que sempre a última alteração pode ser desfeita com (CTRL+Z) ";
			msg += "ou a tabela pode ser selecionada e deletada.";
			break;
		case "": break;
	}
	alert(msg);
}

document.EditorLoaded = true;


// ROTINAS PARA RODAR FLASH


//v1.7
// Flash Player Version Detection
// Detect Client Browser type
// Copyright 2005-2007 Adobe Systems Incorporated.  All rights reserved.
var isIE  = (navigator.appVersion.indexOf("MSIE") != -1) ? true : false;
var isWin = (navigator.appVersion.toLowerCase().indexOf("win") != -1) ? true : false;
var isOpera = (navigator.userAgent.indexOf("Opera") != -1) ? true : false;

function ControlVersion()
{
	var version;
	var axo;
	var e;

	// NOTE : new ActiveXObject(strFoo) throws an exception if strFoo isn't in the registry

	try {
		// version will be set for 7.X or greater players
		axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");
		version = axo.GetVariable("$version");
	} catch (e) {
	}

	if (!version)
	{
		try {
			// version will be set for 6.X players only
			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");
			
			// installed player is some revision of 6.0
			// GetVariable("$version") crashes for versions 6.0.22 through 6.0.29,
			// so we have to be careful. 
			
			// default to the first public version
			version = "WIN 6,0,21,0";

			// throws if AllowScripAccess does not exist (introduced in 6.0r47)		
			axo.AllowScriptAccess = "always";

			// safe to call for 6.0r47 or greater
			version = axo.GetVariable("$version");

		} catch (e) {
		}
	}

	if (!version)
	{
		try {
			// version will be set for 4.X or 5.X player
			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");
			version = axo.GetVariable("$version");
		} catch (e) {
		}
	}

	if (!version)
	{
		try {
			// version will be set for 3.X player
			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");
			version = "WIN 3,0,18,0";
		} catch (e) {
		}
	}

	if (!version)
	{
		try {
			// version will be set for 2.X player
			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash");
			version = "WIN 2,0,0,11";
		} catch (e) {
			version = -1;
		}
	}
	
	return version;
}

// JavaScript helper required to detect Flash Player PlugIn version information
function GetSwfVer(){
	// NS/Opera version >= 3 check for Flash plugin in plugin array
	var flashVer = -1;
	
	if (navigator.plugins != null && navigator.plugins.length > 0) {
		if (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]) {
			var swVer2 = navigator.plugins["Shockwave Flash 2.0"] ? " 2.0" : "";
			var flashDescription = navigator.plugins["Shockwave Flash" + swVer2].description;
			var descArray = flashDescription.split(" ");
			var tempArrayMajor = descArray[2].split(".");			
			var versionMajor = tempArrayMajor[0];
			var versionMinor = tempArrayMajor[1];
			var versionRevision = descArray[3];
			if (versionRevision == "") {
				versionRevision = descArray[4];
			}
			if (versionRevision[0] == "d") {
				versionRevision = versionRevision.substring(1);
			} else if (versionRevision[0] == "r") {
				versionRevision = versionRevision.substring(1);
				if (versionRevision.indexOf("d") > 0) {
					versionRevision = versionRevision.substring(0, versionRevision.indexOf("d"));
				}
			}
			var flashVer = versionMajor + "." + versionMinor + "." + versionRevision;
		}
	}
	// MSN/WebTV 2.6 supports Flash 4
	else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.6") != -1) flashVer = 4;
	// WebTV 2.5 supports Flash 3
	else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.5") != -1) flashVer = 3;
	// older WebTV supports Flash 2
	else if (navigator.userAgent.toLowerCase().indexOf("webtv") != -1) flashVer = 2;
	else if ( isIE && isWin && !isOpera ) {
		flashVer = ControlVersion();
	}	
	return flashVer;
}

// When called with reqMajorVer, reqMinorVer, reqRevision returns true if that version or greater is available
function DetectFlashVer(reqMajorVer, reqMinorVer, reqRevision)
{
	versionStr = GetSwfVer();
	if (versionStr == -1 ) {
		return false;
	} else if (versionStr != 0) {
		if(isIE && isWin && !isOpera) {
			// Given "WIN 2,0,0,11"
			tempArray         = versionStr.split(" "); 	// ["WIN", "2,0,0,11"]
			tempString        = tempArray[1];			// "2,0,0,11"
			versionArray      = tempString.split(",");	// ['2', '0', '0', '11']
		} else {
			versionArray      = versionStr.split(".");
		}
		var versionMajor      = versionArray[0];
		var versionMinor      = versionArray[1];
		var versionRevision   = versionArray[2];

        	// is the major.revision >= requested major.revision AND the minor version >= requested minor
		if (versionMajor > parseFloat(reqMajorVer)) {
			return true;
		} else if (versionMajor == parseFloat(reqMajorVer)) {
			if (versionMinor > parseFloat(reqMinorVer))
				return true;
			else if (versionMinor == parseFloat(reqMinorVer)) {
				if (versionRevision >= parseFloat(reqRevision))
					return true;
			}
		}
		return false;
	}
}

function AC_AddExtension(src, ext)
{
  if (src.indexOf('?') != -1)
    return src.replace(/\?/, ext+'?'); 
  else
    return src + ext;
}

function AC_Generateobj(objAttrs, params, embedAttrs) 
{ 
  var str = '';
  if (isIE && isWin && !isOpera)
  {
    str += '<object ';
    for (var i in objAttrs)
    {
      str += i + '="' + objAttrs[i] + '" ';
    }
    str += '>';
    for (var i in params)
    {
      str += '<param name="' + i + '" value="' + params[i] + '" /> ';
    }
    str += '</object>';
  }
  else
  {
    str += '<embed ';
    for (var i in embedAttrs)
    {
      str += i + '="' + embedAttrs[i] + '" ';
    }
    str += '> </embed>';
  }

  document.write(str);
}

function AC_FL_RunContent(){
  var ret = 
    AC_GetArgs
    (  arguments, ".swf", "movie", "clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
     , "application/x-shockwave-flash"
    );
  AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);
}

function AC_SW_RunContent(){
  var ret = 
    AC_GetArgs
    (  arguments, ".dcr", "src", "clsid:166B1BCA-3F9C-11CF-8075-444553540000"
     , null
    );
  AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);
}

function AC_GetArgs(args, ext, srcParamName, classid, mimeType){
  var ret = new Object();
  ret.embedAttrs = new Object();
  ret.params = new Object();
  ret.objAttrs = new Object();
  for (var i=0; i < args.length; i=i+2){
    var currArg = args[i].toLowerCase();    

    switch (currArg){	
      case "classid":
        break;
      case "pluginspage":
        ret.embedAttrs[args[i]] = args[i+1];
        break;
      case "src":
      case "movie":	
        args[i+1] = AC_AddExtension(args[i+1], ext);
        ret.embedAttrs["src"] = args[i+1];
        ret.params[srcParamName] = args[i+1];
        break;
      case "onafterupdate":
      case "onbeforeupdate":
      case "onblur":
      case "oncellchange":
      case "onclick":
      case "ondblClick":
      case "ondrag":
      case "ondragend":
      case "ondragenter":
      case "ondragleave":
      case "ondragover":
      case "ondrop":
      case "onfinish":
      case "onfocus":
      case "onhelp":
      case "onmousedown":
      case "onmouseup":
      case "onmouseover":
      case "onmousemove":
      case "onmouseout":
      case "onkeypress":
      case "onkeydown":
      case "onkeyup":
      case "onload":
      case "onlosecapture":
      case "onpropertychange":
      case "onreadystatechange":
      case "onrowsdelete":
      case "onrowenter":
      case "onrowexit":
      case "onrowsinserted":
      case "onstart":
      case "onscroll":
      case "onbeforeeditfocus":
      case "onactivate":
      case "onbeforedeactivate":
      case "ondeactivate":
      case "type":
      case "codebase":
      case "id":
        ret.objAttrs[args[i]] = args[i+1];
        break;
      case "width":
      case "height":
      case "align":
      case "vspace": 
      case "hspace":
      case "class":
      case "title":
      case "accesskey":
      case "name":
      case "tabindex":
        ret.embedAttrs[args[i]] = ret.objAttrs[args[i]] = args[i+1];
        break;
      default:
        ret.embedAttrs[args[i]] = ret.params[args[i]] = args[i+1];
    }
  }
  ret.objAttrs["classid"] = classid;
  if (mimeType) ret.embedAttrs["type"] = mimeType;
  return ret;
}

