//-----------------------------------------------------------------
// DECLARAÇÃO VARIAVEIS
//-----------------------------------------------------------------
	var BASE_URL = "http://"+window.location.hostname+"/"; // URL ABSOLUTA DO SITE
	var xhr = new Array(); // ARRAY OF XML-HTTP REQUESTS
	var xi = new Array(0); // ARRAY OF XML-HTTP REQUEST INDEXES
	xi[0] = 1; // FIRST INDEX SET TO 1 MAKING IT AVAILABLE
	
//-----------------------------------------------------------------
// FUNÇÃO AJAX REQUEST
//-----------------------------------------------------------------

function xhrRequest(type) {
	if (!type) {
		type = 'html';
	}

	// xhrsend IS THE xi POSITION THAT GETS PASSED BACK
	// INITIALIZED TO THE LENGTH OF THE ARRAY(LAST POSITION + 1)
	// IN CASE A FREE RESOURCE ISN'T FOUND IN THE LOOP
	var xhrsend = xi.length;
	
	// GO THROUGH AVAILABLE xi VALUES
	for (var i=0; i<xi.length; i++) {

		// IF IT'S 1 (AVAILABLE), ALLOCATE IT FOR USE AND BREAK
		if (xi[i] == 1) {
			xi[i] = 0;
			xhrsend = i;			
			break;
		}
	}

	// SET TO 0 SINCE IT'S NOW ALLOCATED FOR USE
	xi[xhrsend] = 0;

	// SET UP THE REQUEST
	if (window.ActiveXObject) {
		try {
			xhr[xhrsend] = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				xhr[xhrsend] = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {}
		}
	} else if (window.XMLHttpRequest) {
		xhr[xhrsend] = new XMLHttpRequest();
		if (xhr[xhrsend].overrideMimeType) {
			xhr[xhrsend].overrideMimeType('text/' + type);
		}
	}
	return (xhrsend);
}

//-------------------------------------------------------------------
// FUNÇÃO GLOBAL, PARA DIMINUIR O GETELEMENTBYID, COMO NO MYSQLQUERY
//-------------------------------------------------------------------

function getById(elementoID) { 
	return document.getElementById(elementoID)
}

/*
//-----------------------------------------------------------------
// OBTER ROLAGEM ATUAL DO NAVEGADOR
//-----------------------------------------------------------------

function getScrollY() {
	var scrOfY = 0;
	if( typeof( window.pageYOffset ) == 'number' ) {
		//Netscape compliant
		scrOfY = window.pageYOffset;
	} else if( document.body && document.body.scrollTop ) {
		//DOM compliant
		scrOfY = document.body.scrollTop;
	} else if( document.documentElement && document.documentElement.scrollTop ) {
		//IE6 standards compliant mode
		scrOfY = document.documentElement.scrollTop;
	}
	return [ scrOfY ];
}


//------------------------------------------------------------------------
// FUNÇÃO PRÉ CARREGAMENTO ACOMPANHANDO O MOUSE
//------------------------------------------------------------------------
function mouseMoveHandler (evt) {
	var x = 0;
	var y = 0;
	var x = document.all ? event.clientX : document.layers ? evt.x : evt.clientX;
	var y = document.all ? event.clientY : document.layers ? evt.y : evt.clientY;
	
	var elemento = document.getElementById("carrega");
		
	if (elemento != null){
		elemento.style.left = (x-120)+'px';
		elemento.style.top = (y+30)+'px';
	}
	

}

function pre_carrega(){
	
	if (document.layers){
		document.captureEvents(Event.MOUSEMOVE);
	}
	if (document.layers || document.all){
		document.onmousemove = mouseMoveHandler;
	}
	if (document.addEventListener){
		document.addEventListener('mousemove', mouseMoveHandler, true);
	}

}
*/

//----------------------------------------------------------------
// FUNÇÃO PEGAR COORDENADAS MOUSE X,Y
//----------------------------------------------------------------

	var IE = document.all ? true:false; // Variavel detecta navegador	
	var coodX = 0
	var coodY = 0
	
if (!IE){
	document.addEventListener('mousemove', getMouseXY, true);
} else {
	// Set-up to use getMouseXY function onMouseMove
	document.onmousemove = getMouseXY;
}
 
// Main function to retrieve mouse x-y pos.s
 
function getMouseXY(e) {
  if (IE) { // grab the x-y pos.s if browser is IE
    coodX = event.clientX + document.documentElement.scrollLeft;
    coodY = event.clientY + document.documentElement.scrollTop;
  } else {  // grab the x-y pos.s if browser is NS
    coodX = e.pageX;
    coodY = e.pageY;
  }
  // catch possible negative values in NS4
  if (coodX < 0){coodX = 0}
  if (coodY < 0){coodY = 0}
  return true;
}

//----------------------------------------------------------------
// FUNÇÃO PEGAR ALTURA DIVS
//----------------------------------------------------------------

function divA(elementoID) {
	var Div = getById(elementoID);
	var altura = Div.offsetHeight;
	return altura;
}

//----------------------------------------------------------------
// FUNÇÃO NAVEGAÇÃO GERAL COM HISTÓRICO - SEM ELEMENTOS ID´S
//----------------------------------------------------------------

function requisicao(crt)
{
	var xhri = xhrRequest('html');

	xhr[xhri].onreadystatechange = function()
	{
		var elemento = getById("carrega-conteudo");

		if (xhr[xhri].readyState == 1) {
			elemento.innerHTML =  "<div class=\"carregando\"><img src=\""+BASE_URL+"img/carregando.gif\" /> Aguarde, carregando dados...</div>";
		}
		if (xhr[xhri].readyState == 4){
			if(xhr[xhri].status == 200) {
				var texto = xhr[xhri].responseText;
				texto = texto.replace(/([^\x01-\x7E])/g,function(word){return'&#'+word.charCodeAt(0)+ ';';});
				elemento.innerHTML = texto;
				xi[xhri] = 1;
				xhr[xhri] = null;
			} else{
				setTimeout("requisicao('" + crt + "','" + tipo + "')", 1000);
			}
		}
	};

	xhr[xhri].open("GET", BASE_URL+"ajax/conteudo_nav.php?act="+crt, true);
	xhr[xhri].setRequestHeader("encoding", "ISO-8859-1");
	xhr[xhri].setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
    xhr[xhri].setRequestHeader("Cache-Control", "no-store, no-cache, must-revalidate");
    xhr[xhri].setRequestHeader("Cache-Control", "post-check=0, pre-check=0");
    xhr[xhri].setRequestHeader("Pragma", "no-cache");
	xhr[xhri].send(null);
}

//-----------------------------------------------------------------------------------------
// FUNÇÃO ENVIAR FORMULARIOS - PASSANDO ID, ARQUIVO E TEMPO
//-----------------------------------------------------------------------------------------

function requisicao_post(crt,elementoID,formID)
{
	var xhri = xhrRequest('html');
	var elementosFormulario = getById(formID).elements;
    var qtdElementos = elementosFormulario.length;
    var queryString = "";
    var elemento;
	
	//Cria uma funcao interna para concatenar os elementos do form
    this.ConcatenaElemento = function(nome,valor) {
		if (queryString.length>0) {
			queryString += "&";
		}
		queryString += encodeURIComponent(nome) + "=" + encodeURIComponent(valor);
	};
	
	//Loop para percorrer todos os elementos
	for (var i=0; i<qtdElementos; i++) {
		//Pega o elemento
        elemento = elementosFormulario[i];
		if (!elemento.disabled) {
			//Trabalha com o elemento caso ele nao esteja desabilitado
            switch(elemento.type) {
				//Realiza a acao dependendo do tipo de elemento
                case 'text': case 'password': case 'hidden': case 'textarea':
                    this.ConcatenaElemento(elemento.name,elemento.value);
                    break;
                case 'select-one':
                    if (elemento.selectedIndex>=0) {
                        this.ConcatenaElemento(elemento.name,elemento.options[elemento.selectedIndex].value);
                    }
                    break;
                case 'select-multiple':
                    for (var j=0; j<elemento.options.length; j++) {
                        if (elemento.options[j].selected) {
                            this.ConcatenaElemento(elemento.name,elemento.options[j].value);
                        }
                    }
                    break;
                case 'checkbox': case 'radio':
                    if (elemento.checked) {
                        this.ConcatenaElemento(elemento.name,elemento.value);
                    }
                    break;
            }
        }
    }
    
    xhr[xhri].onreadystatechange = function()
	{
	
		if (xhr[xhri].readyState==1) {
			getById(elementoID).innerHTML =  "<div class=\"carregando\"><img src=\""+BASE_URL+"img/carregando.gif\" /> Aguarde, enviando dados...</div>";
		}
		if (xhr[xhri].readyState == 4){
			if (xhr[xhri].status == 200){
				getById(elementoID).innerHTML = xhr[xhri].responseText;
				xi[xhri] = 1;
				xhr[xhri] = null;
			} else {
				setTimeout("requisicao_post('" + crt + "','" + elementoID + "','" + formID + "')", 1000);
			}
		}
	};
	xhr[xhri].open("POST", BASE_URL+"ajax/conteudo_form.php?crt="+crt, true);
	xhr[xhri].setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	xhr[xhri].send(queryString);

}

//-----------------------------------------------------------------------------------------
// FUNÇÃO ATUALIZAR DADOS A CADA X TEMPO - PASSANDO ID DOS ELEMENTOS
//-----------------------------------------------------------------------------------------

function atualiza_dados(crt, elementoID, tempoR) {
	
	var xhri = xhrRequest('html');
	var elemento = getById(elementoID);
	
	xhr[xhri].onreadystatechange = function()
	{
		if (xhr[xhri].readyState == 1) {
			elemento.innerHTML = "<img src=\""+BASE_URL+"img/atualizando.gif\" />";
		}
		if (xhr[xhri].readyState == 4){
			if (xhr[xhri].status == 200) {
				var texto = xhr[xhri].responseText;
				texto = texto.replace(/([^\x01-\x7E])/g,function(word){return'&#'+word.charCodeAt(0)+ ';';});
				elemento.innerHTML = texto;
				xi[xhri] = 1;
				xhr[xhri] = null;
			} else {
				setTimeout("atualiza_dados('" + crt + "','" + elementoID + "','" + tempoR + "')", 3000);
			}
		}
	};
	xhr[xhri].open('GET', BASE_URL+"ajax/atualiza_dados.php?crt="+crt, true);
	xhr[xhri].setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
	xhr[xhri].setRequestHeader("Cache-Control", "no-store, no-cache, must-revalidate");
	xhr[xhri].setRequestHeader("Cache-Control", "post-check=0, pre-check=0");
	xhr[xhri].setRequestHeader("Pragma", "no-cache");
	xhr[xhri].send(null);	
	setTimeout("atualiza_dados('" + crt + "','" + elementoID + "','" + tempoR + "')", tempoR);
}

//-----------------------------------------------------------------------------------------
// FUNÇÃO NAVEGAR GERAL - PASSANDO ID DOS ELEMENTOS
//-----------------------------------------------------------------------------------------

function req_id(crt,elementoID)
{
	var xhri = xhrRequest('html');
	var elemento = getById(elementoID);
	
	xhr[xhri].onreadystatechange = function()
	{
		if (xhr[xhri].readyState == 1) {
			elemento.innerHTML = "<div class=\"carregando\"><img src=\""+BASE_URL+"img/carregando.gif\" /> Aguarde, carregando dados...</div><div id=\"bloqueio\" class=\"bloqueio-tela\"></div>";
		}
		if (xhr[xhri].readyState == 4){
			if (xhr[xhri].status == 200) {
				var texto = xhr[xhri].responseText;
				texto = texto.replace(/([^\x01-\x7E])/g,function(word){return'&#'+word.charCodeAt(0)+ ';';});
				elemento.innerHTML = texto;
				extraiScript(texto);
				xi[xhri] = 1;
				xhr[xhri] = null;
			} else {
				setTimeout("req_id('" + crt + "','" + elementoID + "')", 2000);
			}
		}
	};
	xhr[xhri].open('GET', BASE_URL+"ajax/conteudo_dados.php?crt="+crt, true);
	xhr[xhri].setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
	xhr[xhri].setRequestHeader("Cache-Control", "no-store, no-cache, must-revalidate");
	xhr[xhri].setRequestHeader("Cache-Control", "post-check=0, pre-check=0");
	xhr[xhri].setRequestHeader("Pragma", "no-cache");
	xhr[xhri].send(null);

}

//-----------------------------------------------------------------------------------------
// FUNÇÃO PARA CARREGAR FRAMES GERAL - PASSANDO ID E ARQUIVO NA FUNÇÃO
//-----------------------------------------------------------------------------------------

function carregaFrame(crt,elementoID)
{
    var xhri = xhrRequest('html');
    xhr[xhri].onreadystatechange = function() {
		if (xhr[xhri].readyState == 1) {
			getById(elementoID).innerHTML = "<img src=\""+BASE_URL+"img/atualizando.gif\" />";
		}
		if(xhr[xhri].readyState == 4) {
        	if(xhr[xhri].status == 200){
				getById(elementoID).innerHTML = xhr[xhri].responseText;
        	} else {
				getById(elementoID).innerHTML = "Erro!";
        	}
		}
	}	
	xhr[xhri].open('GET', BASE_URL+"ajax/frame.php?crt="+crt, true);
    xhr[xhri].send(null);
}

//-----------------------------------------------------------------------------------------
// FUNÇÃO PARA LER COOKIES
//-----------------------------------------------------------------------------------------
function LerCookie(strCookie)
{
    var strNomeIgual = strCookie + "=";
    var arrCookies = document.cookie.split(';');

    for(var i = 0; i < arrCookies.length; i++)
    {
        var strValorCookie = arrCookies[i];
        while(strValorCookie.charAt(0) == ' ')
        {
            strValorCookie = strValorCookie.substring(1, strValorCookie.length);
        }
        if(strValorCookie.indexOf(strNomeIgual) == 0)
        {
            return strValorCookie.substring(strNomeIgual.length, strValorCookie.length);
        }
    }
    return null;
}


//-----------------------------------------------------------------------------------------
// FUNÇÃO PARA CHAMAR OUTRAS FUNÇÕES AO CARREGAR O SITE
//-----------------------------------------------------------------------------------------

function addEvent( obj, type, fn ) {
	if (obj.addEventListener) {
		obj.addEventListener( type, fn, false );
	}
	else if (obj.attachEvent) {
		obj["e"+type+fn] = fn;
		obj[type+fn] = function() { obj["e"+type+fn]( window.event ); }
		obj.attachEvent( "on"+type, obj[type+fn] );
	}
	else {
		obj["on"+type] = obj["e"+type+fn];
	}
}


//--------------------------------------------------------------------------------------
// FUNÇÃO FECHAR FECHAR POP-UPS
//--------------------------------------------------------------------------------------
// Função que fecha o pop-up ao clicar no link fechar
function fechar(elementoID){
	getById(elementoID).style.display = 'none';
	getById(elementoID).innerHTML = "";
}
// Aqui abrimos a janela
function abrir(elementoID){
	var elemento = getById(elementoID);
	if (elemento.style.display != 'block'){
		elemento.style.display = 'block';
		elemento.style.left = (coodX -10) + "px";
		elemento.style.top = (coodY + 10)  + "px";
	}else {
		elemento.style.display = 'none'
	}
}

//--------------------------------------------------------------------------------------
// FUNÇÃO INSERIR BBCODES - CLICAVÉIS
//--------------------------------------------------------------------------------------
function selecao(obj, def_texto_padrao){
    if(obj.constructor == String){obj = getById(obj);}
    var def_texto = (def_texto_padrao) ? function(text){obj.value += text;} : function(){return false;};
    var selecao = {text: "", defTexto: def_texto};
    if(document.selection){
        var faixa = document.selection.createRange();
        if(faixa.text){
            selecao.text = faixa.text;
            selecao.defTexto = function(text){
                faixa.text = text.replace(/\r?\n/g, "\r\n");
            }
    }
    } else if(typeof(obj.selectionStart) != "undefined"){
        selecao.text = obj.value.substring(obj.selectionStart, obj.selectionEnd);
        selecao.defTexto = function(text){
            obj.value = obj.value.substring(0, obj.selectionStart) + text + obj.value.substring(obj.selectionEnd);
            return false;
        }
    } else if(window.getSelection){
        selecao.text = window.getSelection().toString();
    }
    return selecao;
}

function selTexto(obj, antes, depois){
    var selecionado = selecao(obj, true);
    selecionado.defTexto(antes + selecionado.text + depois);
}

//-----------------------------------------------------------------------------------------
// FUNÇÃO PARA VALIDAR FORMULÁRIOS
//-----------------------------------------------------------------------------------------
/* Script Adptado por ThiagoInfo  */

var Validar = {
	isEmail : function(s) {
		return this.test(s, '^[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+@[-!#$%&\'*+\\/0-9=?A-Z^_`a-z{|}~]+\.[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+$');
	},

	isAbsUrl : function(s) {
		return this.test(s, '^(news|telnet|nttp|file|http|ftp|https)://[-A-Za-z0-9\\.]+\\/?.*$');
	},

	isSize : function(s) {
		return this.test(s, '^[0-9]+(%|in|cm|mm|em|ex|pt|pc|px)?$');
	},

	isId : function(s) {
		return this.test(s, '^[A-Za-z_]([A-Za-z0-9_])*$');
	},

	isEmpty : function(s) {
		var nl, i;

		if (s.nodeName == 'SELECT' && s.options[s.selectedIndex].value == 'Selecione')
			return true;
		if (s.nodeName == 'INPUT' && s.value == '')
			return true;
		if (s.nodeName == 'TEXTAREA' && s.value == '')
			return true;

		if (s.type == 'checkbox' && !s.checked)
			return true;

		if (s.type == 'radio') {
			for (i=0, nl = s.form.elements; i<nl.length; i++) {
				if (nl[i].type == "radio" && nl[i].name == s.name && nl[i].checked)
					return false;
			}

			return true;
		}

		return new RegExp('^\\s*$').test(s.nodeType == 1 ? s.value : s);
	},
	test : function(s, p) {
		s = s.nodeType == 1 ? s.value : s;

		return s == '' || new RegExp(p).test(s);
	}
};

var AutoValidar = {
	settings : {
		id_cls : 'id',
		int_cls : 'int',
		url_cls : 'url',
		number_cls : 'number',
		email_cls : 'email',
		size_cls : 'size',
		required_cls : 'requerido',
		invalid_cls : 'invalido',
		min_cls : 'min',
		max_cls : 'max',
		verificado_cls : 'verificado'
	},

	init : function(s) {
		var n;

		for (n in s)
			this.settings[n] = s[n];
	},

	valida : function(f) {
		var i, nl, s = this.settings, c = 0;

		nl = this.tags(f, 'label');
		// Ao clicar no botão enviar, se tudo estiver ok, esconde a mensagem informativa
		getById("msg-form-erro").style.display = "none";
		for (i=0; i<nl.length; i++)
			this.removeClass(nl[i], s.invalid_cls);
			

		c += this.validaElms(f, 'input');
		c += this.validaElms(f, 'select');
		c += this.validaElms(f, 'textarea');

		return c == 3;
	},

	invalidate : function(n) {
		this.mark(n.form, n);
	},

	limpa : function(e) {
		var t = ['label', 'input', 'select', 'textarea'];
		var i, j, nl, s = this.settings;

		if (e == null)
			return;
			
		// Ao clicar no botão limpar, retira a mensagem de erro
		getById("msg-form-erro").style.display = "none";
		for (i=0; i<t.length; i++) {
			nl = this.tags(e.form ? e.form : e, t[i]);
			for (j=0; j<nl.length; j++){
				this.removeClass(nl[j], s.invalid_cls);
				this.removeClass(nl[j], s.verificado_cls);				
			}
				
		}
	},

	validaElms : function(f, e) {
		var nl, i, n, s = this.settings, st = true, va = Validar, v;

		nl = this.tags(f, e);
		for (i=0; i<nl.length; i++) {
			n = nl[i];

			this.removeClass(n, s.invalid_cls);
			
			if (this.removeClass(n, s.invalid_cls) && this.hasClass(n, s.required_cls)){
				this.addClass(n, s.verificado_cls);
			}

			if (this.hasClass(n, s.required_cls) && va.isEmpty(n))
				st = this.mark(f, n);			
				
			if (this.hasClass(n, s.number_cls) && !va.isNumber(n))
				st = this.mark(f, n);

			if (this.hasClass(n, s.int_cls) && !va.isNumber(n, true))
				st = this.mark(f, n);

			if (this.hasClass(n, s.url_cls) && !va.isAbsUrl(n))
				st = this.mark(f, n);

			if (this.hasClass(n, s.email_cls) && !va.isEmail(n))
				st = this.mark(f, n);
				
			if (this.hasClass(n, s.size_cls) && !va.isSize(n))
				st = this.mark(f, n);

			if (this.hasClass(n, s.id_cls) && !va.isId(n))
				st = this.mark(f, n);

			if (this.hasClass(n, s.min_cls, true)) {
				v = this.getNum(n, s.min_cls);

				if (isNaN(v) || parseInt(n.value) < parseInt(v))
					st = this.mark(f, n);
			}

			if (this.hasClass(n, s.max_cls, true)) {
				v = this.getNum(n, s.max_cls);

				if (isNaN(v) || parseInt(n.value) > parseInt(v))
					st = this.mark(f, n);
			}
		}

		return st;
	},

	hasClass : function(n, c, d) {
		return new RegExp('\\b' + c + (d ? '[0-9]+' : '') + '\\b', 'g').test(n.className);
	},

	getNum : function(n, c) {
		c = n.className.match(new RegExp('\\b' + c + '([0-9]+)\\b', 'g'))[0];
		c = c.replace(/[^0-9]/g, '');

		return c;
	},

	addClass : function(n, c, b) {
		var o = this.removeClass(n, c);
		n.className = b ? c + (o != '' ? (' ' + o) : '') : (o != '' ? (o + ' ') : '') + c;
	},

	removeClass : function(n, c) {
		c = n.className.replace(new RegExp("(^|\\s+)" + c + "(\\s+|$)"), ' ');
		return n.className = c != ' ' ? c : '';
	},

	tags : function(f, s) {
		return f.getElementsByTagName(s);
	},

	mark : function(f, n) {
		var s = this.settings;

		this.addClass(n, s.invalid_cls);
		this.markLabels(f, n, s.invalid_cls);
		getById("msg-form-erro").style.display = "block";
		getById("msg-form-erro").innerHTML =  "Os campos marcados em vermelho são de preenchimento obrigatório!";
		return false;
	},
	markLabels : function(f, n, ic) {
		var nl, i;

		nl = this.tags(f, "label");
		for (i=0; i<nl.length; i++) {
			if (nl[i].getAttribute("for") == n.id || nl[i].htmlFor == n.id)
				this.addClass(nl[i], ic);
		}

		return null;
	}
};


//-----------------------------------------------------------------------------------------
// CHAMANDO OS EVENTOS NA INICIALIZAÇÃO
//-----------------------------------------------------------------------------------------
/*
addEvent(window, 'load', function(){
	atualiza_dados('visitantes','visitantes', 300000);
	carregaFrame('pub-uol2','pub-uol2');
});
*/
