// JavaScript

//*************************************************************************************************************************//
// método que converter pra upperCase qqr texto digitado
	function toUpper(e){
		if (e != null)
			var key = (window.event) ? window.event.keyCode : e.which;
		else
			var key = window.event.keyCode;

		if (key >= 97 && key <= 122){
			if (e != null){
				if (window.event){
					window.event.keyCode = key - 32;
				}
				else e.which = key - 32;
			} else {
				if (window.event) window.event.keyCode = key - 32;
			}
		} else return;
	}

//*************************************************************************************************************************//
//cria uma linha em uma tabela
	function createRow(oTable,tid){
		var tr = oTable.insertRow();

		tr.id = (tid != null) ? tid : "tr_" + (oTable.getElementsByTagName("TR").length - 2).toString();

		return tr;
	}

//*************************************************************************************************************************//
//cria um conjunto de colunas em uma TR
	function createCell(tr,size,cid){
		var td = null;
		for (var i = 0; i < size; i++){
			td = tr.insertCell();
			td.id = (cid != null) ? cid + "_" + (tr.getElementsByTagName("TD").length).toString() : "td_" + (tr.getElementsByTagName("TD").length).toString();
		}

		return tr.getElementsByTagName("TD");
	}

//*************************************************************************************************************************//
//método que exibe varias linhas ao mesmo tempo
//ex: trID = 22
//	  <tr id="tr_22_1">
//	  <tr id="tr_22_2">
//	  <tr id="tr_22_3">
	function showNLines(trID){
		var aTR = document.body.getElementsByTagName("TR");

		for (var i = 0; i < aTR.length; i++){
			if (aTR[i].id.indexOf(trID) == 0) aTR[i].style.display = (aTR[i].style.display == "none") ? "" : "none";
		}
	}

//*************************************************************************************************************************//
//método que faz um texto piscar também para IE (requer tag <blink></blink> em volta do texto)
	function blinkIt() {
		if (!document.all) return;

		for(var i = 0; i < document.all.tags('blink').length; i++){
			s = document.all.tags('blink')[i];
			s.style.visibility = (s.style.visibility == 'visible') ? 'hidden' : 'visible';
		}
	}

//*************************************************************************************************************************//
//método que desabilita o "Ctrl + C" e "Ctrl + V" dos inputs
	function disableCtrl(e) {
		if (e != null)
			var key = (window.event) ? window.event.keyCode : e.which;
		else
			var key = window.event.keyCode;

		// current pressed key
		var pressedKey = String.fromCharCode(key).toLowerCase();
	
		if (e.ctrlKey && (pressedKey == "c" || pressedKey == "v")) {
			// disable key press processing
			e.returnValue = false;
		}	
	}

//*************************************************************************************************************************//
//método trim() em Javascript
	function trim(str){
	   return str.replace(/^\s*|\s*$/g,"");
	}

//*************************************************************************************************************************//
	//método simples de ordenação de um array
	//array: array com os valores a serem ordenados
	//ordem: asc/desc
	function bubbleSort(array,ordem){
		var temp = null;
		for (var i = 0; i < array.length; i++){
			for (var j = i + 1; j < array.length; j++){
				if (ordem == "asc"){
					if (array[i] > array[j]){
						temp = array[i];
						array[i] = array[j];
						array[j] = temp;
					}
				} else {
					if (array[i] < array[j]){
						temp = array[i];
						array[i] = array[j];
						array[j] = temp;
					}
				}
			}
		}

		return array;
	}

//*************************************************************************************************************************//
	//método que faz tremer a tela!
	//n = numeros de tremidas
	function shake(n) {
		if (self.moveBy) {
			for (i = 10; i > 0; i--) {
				for (j = n; j > 0; j--) {
					self.moveBy(0,i);
					self.moveBy(i,0);
					self.moveBy(0,-i);
					self.moveBy(-i,0);
				}
			}
		}
	}

//*************************************************************************************************************************//
	//método que exibe e oculta um painel abaixo de um item, alternado suas imagens de status
	function showPainel(img, img_1, img_2, painelID){
		var imgReturn = "";
		var newImg = img.src.split("/");
		var display = document.getElementById(painelID).style.display;

		if (newImg[newImg.length-1] == img_1){
			newImg[newImg.length-1] = img_2;
		} else {
			newImg[newImg.length-1] = img_1;
		}

		for (var i = 0; i < newImg.length; i++){
			imgReturn += newImg[i];

			if (i < newImg.length-1) imgReturn += "/";
		}

		img.src = imgReturn;
		
		document.getElementById(painelID).style.display = (display == "none") ? "" : "none";
		
		return;
	}

//*************************************************************************************************************************//
	//método que atribui aos input hiddens, os valores do checkbox selecionado
	function selectImages(input,param,obj){
		var hdn = obj.value;

		// se o checkbox estiver tickado...
		if (input.checked){
			// se o input hidden estiver vazio...
			if (hdn == "") hdn = param;
			else hdn += "_" + param;
		} else {
			//se estiver na primeira posição...
			if (hdn.indexOf(param) == 0)
				//se for somente uma foto selecionada...
				if ((hdn.indexOf("_")) == -1)
					hdn = hdn.replace(param,"");
				else
					hdn = hdn.replace(param+"_","");
			else
				hdn = hdn.replace("_"+param,"");
		}

		obj.value = hdn;
	}
	
//*************************************************************************************************************************//
// método que trata a entrada dos dados entre fillHdn e clearHdn
	function fill(oHdn,obj,div){
		if (div == null) div = "_";

		if (obj.checked) fillHdn(oHdn,obj.value,div);
		else clearHdn(oHdn,obj.value,div);
	}

//*************************************************************************************************************************//
// método que preenche um input com valores separados por uma divisão qualquer de entrada para qualquer valor
	function putHdn(oHdn,param,div){
		if (div == null) div = "_";

		// se o input hidden estiver vazio...
		if (oHdn.value == "")
			oHdn.value = param;
		else
			oHdn.value += div + param;
	}
	
// método que preenche um input com valores separados por uma divisão qualquer de entrada ( pode ser repetida )
	function fillHdnRepeat(oHdn,param,div){
		if (div == null) div = "_";

		// se o input hidden estiver vazio...
		if (oHdn.value == ""){
			oHdn.value = param;
		} else {

			oHdn.value += div + param;
		}
	}


//-----------------------------------------------------------------------------------------------
//atribui a string concatenada sem o elemento da posicao passada ao valor do objeto 
//criada em 13 de junho de 2007 - Yeiki
//obj - objeto a ser alterado
//posicao - posicao do array a ser retirada
//div - separador
	function clearHdnRepeat(obj,posicao,div){
		//array original
		var arrayTotal = obj.value.split(div);

		if(posicao == arrayTotal.length-1){
			arrayTotal.pop();
			var stringTotal = arrayTotal.join(div);
		
		}else if(posicao == 0){
			arrayTotal.shift(); 
			var stringTotal = arrayTotal.join(div);

		}else{ 
		
			//array dos elementos antes da posicao
			var arrayInicial = arrayTotal.slice(0,posicao);
			
			//array dos elementos depois da posicao
			var arrayFinal = arrayTotal.slice(new Number(posicao)+1,arrayTotal.length);
			
			//string geradas
			var stringInicial = arrayInicial.join(div);

			var stringFinal = arrayFinal.join(div);

			var stringTotal = stringInicial + div + stringFinal;
		}
		
		obj.value = stringTotal;
	}
//-----------------------------------------------------------------------------------------------
//adiciona a string concatenada com o elemento da posicao passada ao valor do objeto após a posicao passada
//criada em 01 de agosto de 2007 - Yeiki
//obj - objeto a ser alterado
//posicao - posicao do array a ser adicionada
//div - separador
	function addHdnRepeat(strIn,obj,posicao,div){
		//array original
		var arrayTotal = obj.value.split(div);

		if(posicao == arrayTotal.length-1){
			arrayTotal.push(strIn);
			var stringTotal = arrayTotal.join(div);
		
		}else if(posicao == 0){
			arrayTotal.unshift(strIn); 
			var stringTotal = arrayTotal.join(div);

		}else{ 
		
			//array dos elementos antes da posicao
			var arrayInicial = arrayTotal.slice(0,posicao);
			
			//array dos elementos da posicao até o final
			var arrayFinal = arrayTotal.slice(new Number(posicao),arrayTotal.length);
			
			//insere a string de entrada no inicio do array final
			arrayFinal.unshift(strIn); 
			
			//string geradas
			var stringInicial = arrayInicial.join(div);

			var stringFinal = arrayFinal.join(div);

			var stringTotal = stringInicial + div + stringFinal;
		}
		
		obj.value = stringTotal;
	}
	
	
//-----------------------------------------------------------------------------------------------
//move o conteúdo do array para mais ou para menos 
//criada em 25 de julho de 2007 - Yeiki
//obj - objeto a ser alterado hdn
//posicaoAtual - posicao do array com conteúdo a ser movido
//div - separador
//direcao da alteração('up' ou 'down')

	function moveHdnRepeat(obj, posicaoAtual, direcao, div){
		var arrayTotal = obj.value.split(div);
		var conteudoTemp = arrayTotal[posicaoAtual];
		
		if((direcao == "up")&&(posicaoAtual != arrayTotal.length-1)){
			arrayTotal[posicaoAtual] = arrayTotal[posicaoAtual + 1];
			arrayTotal[posicaoAtual + 1] = conteudoTemp;
		}else if((direcao == "down")&&(posicaoAtual != 0)){
			arrayTotal[posicaoAtual] = arrayTotal[posicaoAtual - 1];
			arrayTotal[posicaoAtual - 1] = conteudoTemp;
		}else{
			alert("O objeto não pode ser movido.");
			return false;
		}
		
		obj.value = arrayTotal.join(div);
	}

//*************************************************************************************************************************//
// método que preenche um input com valores separados por uma divisão qualquer de entrada
	function fillHdn(oHdn,param,div){
		if (div == null) div = "_";

		// se o input hidden estiver vazio...
		if (oHdn.value == ""){
			oHdn.value = param;
		} else {
			//se o valor jah existir...
			if (oHdn.value.indexOf(div + param + div) >= 0) return false;
			//se o valor estiver na ultima posicao...
			if (oHdn.value.substring(oHdn.value.length-2,oHdn.value.length).indexOf(div + param) >= 0) return false;
			//se o valor estiver na primeira posicao...
			if (oHdn.value.substring(0,2).indexOf(param + div) == 0) return false;

			oHdn.value += div + param;
		}
	}

//*************************************************************************************************************************//
// método que remove de input o valor passado por parametro (extenção de fillHdn(...))
	function clearHdn(oHdn,param,div){
		if (div == null) div = "_";

		//se estiver na primeira posição...
		if (oHdn.value.indexOf(param) == 0)
			//se for somente uma foto selecionada...
			if ((oHdn.value.indexOf(div)) == -1)
				oHdn.value = oHdn.value.replace(param,"");
			else
				oHdn.value = oHdn.value.replace(param + div,"");
		else
			oHdn.value = oHdn.value.replace(div + param,"");
	}

//*************************************************************************************************************************//
// método que verifica se o valor existe no input (extenção de fillHdn(...) e clearHdn(...))
	function checkHdn(oHdn,param,div){
		if (div == null) div = "_";

		//se estiver único na primeira posição...
		if (oHdn.value.indexOf(param) == 0 && oHdn.value.indexOf(param + div) == -1) return true;
		//se estiver na primeira posição...
		if (oHdn.value.indexOf(param + div) == 0) return true;
		//se estiver no meio...
		if (oHdn.value.indexOf(div + param + div) != -1) return true;
		//se estiver no fim...
		if (oHdn.value.indexOf(div + param) != -1 && oHdn.value.indexOf(div + param + div) == -1) return true;

		return false;
}

//*************************************************************************************************************************//
// método que formata a entrada para o tipo data (ex: 01/01/2006)
	function dateFormat(origem,e){
		if (e != null)
			var key = (window.event) ? window.event.keyCode : e.which;
		else
			var key = window.event.keyCode;

		// se não for o navegador Opera
		if(navigator.userAgent.toLowerCase().indexOf('opera') == -1){
			//se for TAB ou DEL ou BACKSPACE ou ENTER
			if (key != 9 && key != 46 && key != 8 && key != 13){
				if (origem.value.length == 2) origem.value += '/';
				if (origem.value.length == 5) origem.value += '/';
			
				onlyNumbers('0123456789',e);
			}
		}
	}

//*************************************************************************************************************************//
// método que verifica se o navegador é Opera para poder formatar os campos CEP
	function doFormat(origem,e){
		if (e != null)
			var key = (window.event) ? window.event.keyCode : e.which;
		else
			var key = window.event.keyCode;

		// se não for o navegador Opera
		if(navigator.userAgent.toLowerCase().indexOf('opera') == -1){
			//se for TAB ou DEL ou BACKSPACE ou ENTER
			if (key != 9 && key != 46 && key != 8 && key != 13){
				if(origem.value.length == 5)
					origem.value += '-';
			
				onlyNumbers('0123456789');
			}
		}
	}

//*************************************************************************************************************************//
	// método que exibe as capas dos album cadastrados onde o mouse estiver posicionado
	// o div DEVE se chamar "divImage" e estar em document
	function showDivs(e,size,id,show,pos){
		pos = (pos) ? pos : "0:0";
		var posicao = pos.split(":");

		var posx = 0;
		var posy = 0;
		if (!e) var e = window.event;
		if (e.pageX || e.pageY){
			posx = e.pageX;
			posy = e.pageY;
		} else if (e.clientX || e.clientY){
			posx = e.clientX + document.body.scrollLeft;
			posy = e.clientY + document.body.scrollTop;
		}

		// posx and posy contain the mouse position relative to the document
		// Do something with this information

		with (document){
			for (var i = 0; i < size; i++)
				getElementById(["divImage"+i]).style.display = "none";

			if (show)
				with (getElementById(["divImage"+id]).style){
					left = posx - parseInt(posicao[0]);
					top = posy + 18 - parseInt(posicao[1]);
					display = "";
				}
		}
	}

//*************************************************************************************************************************//
// Método que cria códigos numéricos, ex: entra 5287, sai 0000005287
	function addZero(str,nLoop){
		var nextVal = parseInt(str)+1;
		var size = nextVal.toString().length;
		var newStr = "";
		
		for(var i = 0; i < nLoop-size; i++){
			newStr += "0";
		}

		return newStr += nextVal.toString();
	}

//*************************************************************************************************************************//
// formata o input para moeda
	function formataValor(oCampo,tMax,ePress) {
		var tecla = ePress.keyCode;
		var vr = oCampo.value;

		vr = vr.replace( "/", "" );
		vr = vr.replace( "/", "" );
		vr = vr.replace( ",", "" );
		vr = vr.replace( ".", "" );
		vr = vr.replace( ".", "" );
		vr = vr.replace( ".", "" );
		vr = vr.replace( ".", "" );
		tam = vr.length;

		if (tam < tMax && tecla != 8) tam = vr.length + 1;
		if (tecla == 8) tam = tam - 1;		
		if (tecla == 8 || (tecla >= 48 && tecla <= 57) || (tecla >= 96 && tecla <= 105) ){
			if (tam <= 2) oCampo.value = vr;
			tam = tam - 1;
			if ((tam > 2) && (tam <= 5)) oCampo.value = vr.substr( 0, tam - 2 ) + ',' + vr.substr( tam - 2, tam );
			if ((tam >= 6) && (tam <= 8)) oCampo.value = vr.substr( 0, tam - 5 ) + '.' + vr.substr( tam - 5, 3 ) + ',' + vr.substr( tam - 2, tam );
			if ((tam >= 9) && (tam <= 11)) oCampo.value = vr.substr( 0, tam - 8) + '.' + vr.substr( tam - 8, 3 ) + '.' + vr.substr( tam - 5, 3 ) + ',' + vr.substr( tam - 2, tam );
			if ((tam >= 12) && (tam <= 14))	oCampo.value = vr.substr( 0, tam - 11) + '.' + vr.substr( tam - 11, 3 ) + '.' + vr.substr( tam - 8, 3 ) + '.' + vr.substr( tam - 5, 3 ) + ',' + vr.substr( tam - 2, tam );
			if ((tam >= 15) && (tam <= 17))	oCampo.value = vr.substr( 0, tam - 14) + '.' + vr.substr( tam - 14, 3 ) + '.' + vr.substr( tam - 11, 3 ) + '.' + vr.substr( tam - 8, 3 ) + '.' + vr.substr( tam - 5, 3 ) + ',' + vr.substr( tam - 2, tam );
		}
	}

//*************************************************************************************************************************//
// remove caracteres indesejados de uma string
	function removeBadChars(str,charac,repl){
		var badChar = (charac != null) ? charac.charCodeAt(0) : 39;	// 39 = ';
		var newString = "";

		for (var i = 0; i < str.length; i++){
			if(str.charCodeAt(i) != badChar){
				newString += str.charAt(i);
			} else {
				if (repl != null)
					newString += repl;
			}
		}
		return newString;
	}

//*************************************************************************************************************************//
// adiciona um ZERO a mais ao numero, ex: 4 -> 04
	function returnZero(nro){
		return (nro < 10) ? "0" + nro : nro;
	}

//*************************************************************************************************************************//
// exibe/oculta a progressBar
	function showProgressBar(local,acao){
		local.getElementById("progressBar").style.display = acao;
	}

//*************************************************************************************************************************//
// aplica a máscara ao campo CEP
	function MascaraCEP (formato, keypress, objeto){
		campo = eval (objeto);
		if (formato == 'CEP'){
			caracteres = '01234567890';
			separacoes = 1;
			separacao1 = '-';
			conjuntos = 2;
			conjunto1 = 5;
			conjunto2 = 3;

			if ((caracteres.search(String.fromCharCode (keypress)) != -1) && campo.value.length < (conjunto1 + conjunto2 + 1)){
				if (campo.value.length == conjunto1) 
					campo.value = campo.value + separacao1;
		} else 
			event.returnValue = false;
		}
	}

//*************************************************************************************************************************//
// habilita/desabilita campos de um form
	function disableFormFields(local,form,inicio,fim,acao,read) {
		var fim = (fim == 0) ? local.form.elements.length : fim;
	
		for (var i = inicio; i < fim; i++) {
			if (read) local.getElementById(form).elements[i].readOnly = acao;
			else local.getElementById(form).elements[i].disabled = acao;
		}
	}

//*************************************************************************************************************************//
// monta menu
//	tab: aba selecionada (de 0 a N)
//	size: qtde de abas no total (de 1 a N)
	function tabs(local,tab,size){
		var newTab = returnZero(tab);
		var nextTab = returnZero(tab+1);
		var newSize = returnZero(size);

		var newI;

		// oculta todas abas
		for (var i = 0; i < size; i++){
			var newI = returnZero(i);
			var nextI = returnZero(i+1);

			with (local.getElementById(["aba"+newI])){
				bgColor = "#CCCCCC";
				style.borderTop = "1px solid #000000";
				style.borderBottom = "1px solid #000000";
				style.cursor = "pointer";
			}
			// coloca a borda inferior nos cantos das abas
			// "m"+newI == m01 ou m02 ... etc
			local.getElementById(["m"+newI]).style.borderBottom = "1px solid #000000";
			// coloca a borda inferior no ultimo canto da ultima aba
			if (i == size - 1)
				local.getElementById(["m"+newSize]).style.borderBottom = "1px solid #000000";
				
			// se for a primeira aba
			if (i == 0){
				local.getElementById(["img"+(newI)]).src = "img/left_low.gif";
				local.getElementById(["img"+(nextI)]).src = "img/middle_left.gif";
			// se for a ultima aba
			} else if (i == size - 1){
				local.getElementById(["img"+(nextI)]).src = "img/right_low.gif";
				local.getElementById(["img"+(newI)]).src = "img/middle_middle.gif";
			// se for qualquer outra
			} else {
				local.getElementById(["img"+(newI)]).src = "img/middle_middle.gif";
				local.getElementById(["img"+(nextI)]).src = "img/middle_middle.gif";
			}			
		}

		// destaca a aba selecionada
		with (local.getElementById(["aba"+newTab])){
			bgColor = "#FFFFFF";
			style.borderTop = "1px solid #000000";
			style.cursor = "pointer";
			style.borderBottom = "0px";
		}
		// tira a borda inferior do canto esquerdo aba selecionada
		local.getElementById(["m"+newTab]).style.borderBottom = "0px";
		// tira a borda inferior do canto direito aba selecionada
		local.getElementById(["m"+(nextTab)]).style.borderBottom = "0px";
		
		// se for a primeira aba
		if (tab == 0){
			local.getElementById(["img"+(newTab)]).src = "img/left_high.gif";
			local.getElementById(["img"+(nextTab)]).src = (size > 1) ? "img/middle_left.gif" : "img/right_high.gif";
		// se for a ultima aba
		} else if (tab == size - 1){
			local.getElementById(["img"+(nextTab)]).src = "img/right_high.gif";
			local.getElementById(["img"+(newTab)]).src = "img/middle_right.gif";
		// se for qualquer outra
		} else {
			local.getElementById(["img"+(newTab)]).src = "img/middle_right.gif";
			local.getElementById(["img"+(nextTab)]).src = "img/middle_left.gif";
		}

		// oculta todas abas e exibe as ferramentas da aba selecionada
		hideLines(local,size,"L"+newTab);

		//atribui valor ao input hidden que indica qual aba esta selecionada
		local.getElementById("hdn_Abas").value = "aba"+newTab;
	}

	// oculta todas linhas referentes as abas
	function hideLines(local,size,show){
		for (var i = 0; i < size; i++){
			var newI = returnZero(i);
			local.getElementById(["L"+newI]).style.display = "none";
		}

		// exibe as ferramentas da aba selecionada
		if (show)
			local.getElementById(show).style.display = "";
	}

//*************************************************************************************************************************//
// monta menu de abas de ponta cabeça na cor cinza
//	tab: aba selecionada (de 0 a N)
//	size: qtde de abas no total (de 1 a N)
	function tabs2(local,tab,size){
		var newTab = returnZero(tab);
		var nextTab = returnZero(tab+1);
		var newSize = returnZero(size);

		var newI;

		// oculta todas abas
		for (var i = 0; i < size; i++){
			var newI = returnZero(i);
			var nextI = returnZero(i+1);

			with (local.getElementById(["aba"+newI])){
				bgColor = "#CCCCCC";
				style.borderTop = "1px solid #666666";
				style.borderBottom = "1px solid #666666";
				style.cursor = "pointer";
			}
			// coloca a borda inferior nos cantos das abas
			// "m"+newI == m01 ou m02 ... etc
			local.getElementById(["m"+newI]).style.borderTop = "1px solid #666666";
			// coloca a borda inferior no ultimo canto da ultima aba
			if (i == size - 1)
				local.getElementById(["m"+newSize]).style.borderTop = "1px solid #666666";
				
			// se for a primeira aba
			if (i == 0){
				local.getElementById(["img"+(newI)]).src = "img/left_low.gif";
				local.getElementById(["img"+(nextI)]).src = "img/middle_left.gif";
			// se for a ultima aba
			} else if (i == size - 1){
				local.getElementById(["img"+(nextI)]).src = "img/right_low.gif";
				local.getElementById(["img"+(newI)]).src = "img/middle_middle.gif";
			// se for qualquer outra
			} else {
				local.getElementById(["img"+(newI)]).src = "img/middle_middle.gif";
				local.getElementById(["img"+(nextI)]).src = "img/middle_middle.gif";
			}			
		}

		// destaca a aba selecionada
		with (local.getElementById(["aba"+newTab])){
			bgColor = "#F3F3F3";
			style.borderBottom = "1px solid #666666";
			style.cursor = "pointer";
			style.borderTop = "0px";
		}
		// tira a borda inferior do canto esquerdo aba selecionada
		local.getElementById(["m"+newTab]).style.borderTop = "0px";
		// tira a borda inferior do canto direito aba selecionada
		local.getElementById(["m"+(nextTab)]).style.borderTop = "0px";
		
		// se for a primeira aba
		if (tab == 0){
			local.getElementById(["img"+(newTab)]).src = "img/left_high.gif";
			local.getElementById(["img"+(nextTab)]).src = (size > 1) ? "img/middle_left.gif" : "img/right_high.gif";
		// se for a ultima aba
		} else if (tab == size - 1){
			local.getElementById(["img"+(nextTab)]).src = "img/right_high.gif";
			local.getElementById(["img"+(newTab)]).src = "img/middle_right.gif";
		// se for qualquer outra
		} else {
			local.getElementById(["img"+(newTab)]).src = "img/middle_right.gif";
			local.getElementById(["img"+(nextTab)]).src = "img/middle_left.gif";
		}

		// oculta todas abas e exibe as ferramentas da aba selecionada
		hideLines(local,size,"L"+newTab);

		//atribui valor ao input hidden que indica qual aba esta selecionada
		local.getElementById("hdn_Abas").value = "aba"+newTab;
	}

//*************************************************************************************************************************//
// limita a qtde de caracteres exibidos
	function limitString(local,string,limit){
		var novaString = "";
		
		if (string.length > limit)
			for (var i = 0; i < limit; i++){
				novaString += string.charAt(i);
			}
		else
			return string;
		return novaString + "...";
	}

//*************************************************************************************************************************//
// método que faz o redirect das páginas
	function frameRedirect(local,frame,url){
		if(navigator.appName == "Netscape"){
			local.getElementById(frame).src = url;
		} else {
			local.frames[frame].location.href = url;
		}
	}


//*************************************************************************************************************************//
// método que faz o redirect das páginas
	function redirect(local,url,cg){
		var change = (cg != null) ? cg : false;
		if(navigator.appName == "Netscape"){
			local.location.href = url;
		} else {
			if (change) {
				local.location.replace(url);
			} else {
				local.location = url;
			}
		}
	}

//*************************************************************************************************************************//
// método que restringe apenas um conjunto de caracteres ao digitar no campo data. Parâmetro são os números que serão permitidos
	function onlyNumbers(cadeia,e){
		if (e != null)
			var key = (window.event) ? window.event.keyCode : e.which;
		else
			var key = window.event.keyCode;

		//se for TAB ou DEL ou BACKSPACE ou ENTER
		if (key == 9 || key == 46 || key == 8 || key == 13) return;

		var chars = cadeia;
		var ev = String.fromCharCode(key);

		if(chars.indexOf(ev) == -1){
			if (e != null){				
				if (window.event) {
					window.event.keyCode = 0;
				} else
					e.which = 0;
			} else
				if (window.event)
					window.event.keyCode = 0;
		}
	}
	
//*************************************************************************************************************************//
//Método só deixa digitar números (p/ IE e MOZILLA)
	function Numero(e){
		navegador = /msie/i.test(navigator.userAgent);
		if (navegador)
			var tecla = e.keyCode;
		else{
			var tecla = e.which;
			if(tecla == 0)
				return true;//TAB
		}
		if (tecla == 9 || tecla == 46 || tecla == 8 || tecla == 13)
			return true;
		else{
			if(tecla > 43 && tecla < 58) // numeros de 0 a 9
				return true;
			else{
				if (tecla != 8 && tecla !=9) // backspace
					return false;
				else
					return true;
			}
		}
	}
//Fim 

//*************************************************************************************************************************//
// Método que seleciona o item do groupbox clicando em cima do nome também
	function checkRadioButtons(local,cadeia,rb){
		for (var i = 1; i <= cadeia; i++)
			document.getElementById([local+i]).checked = false;

		return document.getElementById([local+rb]).checked = true;
	}

//*************************************************************************************************************************//
// Método que coloca quaqler frase na status-bar
	function setStatusBar(msgStr){
		self.status = msgStr;
	}

//*************************************************************************************************************************//
// Método que auto-alinha as palavras em Upper/Lower Case

	function toUpperLower(str){
		var resultado = str.charAt(0).toUpperCase();							// jah transforma a primeira letra para UpperCase
		for(var i = 1; i < str.length; i++){									// loop do tamanho da string		
			if(str.charCodeAt(i-1) == 32){										// checa se a posição eh igual um espaço em branco
				resultado += str.charAt(i-1) + str.charAt(i).toUpperCase();		// transforma a primeira letra logo depois do espaço em UpperCase
			} else {
				while(str.charCodeAt(i) != 32 && i < str.length){				// loop rodando enquanto a letra for diferente de espaço e final da string
					resultado += str.charAt(i).toLowerCase();					// colca todas letras dessa intervalo em LowerCase
					i++;
				}
			}
		}
		return resultado;
	}

//*************************************************************************************************************************//
//	setInterval("scrollingDetector()", 2000);

	function scrollingDetector(){
		alert(document.body.scrollTop);
	}
	
//	onLoad="getDocHeight()"
//	Método que retorna o tamanho da janela ativa
//	Campos: request boolean, true pega width / false pega height
	function getDocHeight(request){
//		docHeight = document.getElementById("iListaCurta").scrollHeight;
		if (parseInt(navigator.appVersion) > 3) {
			if (navigator.appName == "Netscape") {
				if(request)
					return window.innerWidth;
				else 
					return window.innerHeight;
			}
			if (navigator.appName.indexOf("Microsoft") != -1) {
				if(request)
					return document.body.offsetWidth;
				else
					return document.body.offsetHeight;
			}
		}
	}

//*************************************************************************************************************************//
// - método que oculta as colunas que não serão utilizadas na pesquisa
/*	Campos:
		local [objeto], onde vai ser executada a funcao,
		values [objeto], List/Menu completo,
		objeto String, valor escolhido do List/Menu,
		size int, tamanho do ResultSet do iFrame
*/
	function columDisable(local,values,objeto,size){
		var fields = new Array(values.length-1);											// cria um Array do tamanho do List/Menu
		var i = 0;
		textColor(document,3,0,objeto,"#003366","#B42223");
		for(j=0; j<values.length; j++){
			fields[j] = values.options[j].value;											// joga dentro do Array o valores do List/Menu
		}
		with(local){
			for(j=2; j<values.length; j++){													// Loop que roda apenas nas posições que exitem valores (geralmente os índices 0 e 1 são respectivamente 'Selecione...' e '---')
				if(fields[j] == objeto){													// verifica se o campo atual do Array é igual ao desejado
					i = 0;
					while(i < size){														// Loop que roda toda a coluna pintando de preto os textos // 'size' é pego atravéz de um input hidden que é re-atribuído por outra página a cada consulta
						getElementById("h"+i+"_"+objeto).style.color="#000000";				// Pinta de preto o texto da coluna selecionada (o id precisa ter o mesmo nome do campo do banco seguido do numero da linha)
						i++;
					}
				} else {
					if(values.selectedIndex == 0 || values.selectedIndex == 1){				// verifica se esta nas posições 'Selecione...' ou '---'
						i = 0;
						while(i < size){													// Loop que pinta todas colunas de preto
							getElementById("h"+i+"_"+fields[j]).style.color="#000000";		// Pinta de preto o texto de todas colunas (o id precisa ter o mesmo nome do campo do banco seguido do numero da linha)
							i++;
						}
					} else {
						i = 0;
						while(i < size){													// Loop que pinta todas colunas de preto exceto a desejada
							getElementById("h"+i+"_"+fields[j]).style.color="#aaaaaa";		// Pinta de cinza o texto das outras colunas (o id precisa ter o mesmo nome do campo do banco seguido do numero da linha)
							i++;
						}
					}
				}
			}
		}
	}

//*************************************************************************************************************************//
	// Método que procura paralvras no documento

	var pos = 0;

	// str - string que se deseja procurar
	// tipo - 0 (Default) / 1 (de tráz pra frente) / 2 (palavras inteiras) / 4 (Match case)
	function findIt(local, str, tipo) {
		if (str == '' || str == '< digite aqui sua pesquisa >') {
			alert('Digite algo para realizar a pesquisa');
			return;
		}
		if (document.all) {
			var found = false;
			var text = local.body.createTextRange();
//			alert(text.htmlText);
			for (var i=0; i <= pos && (found = text.findText(str, 0, tipo)) != false; i++) {
				text.moveStart("character", 1);
				text.moveEnd("textedit");
			}

			if (found) {
				text.moveStart("character", -1);
				text.findText(str, 0, tipo);
				text.select();
				text.scrollIntoView();
				pos++;
			} else {
				if (pos == '0')
					alert('"'+ str +'" não foi encontrado nesta página');
				else
					alert('Pesquisa no documento concluída');
				pos=0;
			}
		} else if (document.layers) {
			find(str,false);
		}
	}
	
//*************************************************************************************************************************//
//	Método padrão que troca as cores dos títulos das colunas

/*	Campos:
		local [objeto], local onse aplicará a função
		tamanho int, qtde de colunas da tabela
		ini int, onde começa o For
		campo String, campo que chamou o evento
*/
	function textColor(local,tamanho,ini,campo,corNormal,corDestaque){
		if(ini == null) ini = 0;
		if(campo == null) return false;

		for(var i = (1+parseInt(ini)); i <= (tamanho+parseInt(ini)); i++){
			local.getElementById(i).style.color = corNormal;					// Pinta na cor normal todas colunas da tabela
		}

		if(campo) {
			local.getElementById(campo).style.color = corDestaque;				// Pinta na cor destaque somente a coluna que foi clicada
		}
	}
	
//*************************************************************************************************************************//
// - Método padrão que gera uma máscara automático em um campo tipo telefone
	function foneMask(local,string){
		if(string.length == 1 ) local.value = "("+string;
		if(string.length == 3 ) local.value += ") ";
//		if(string.length == 9 ) local.value += "-";
	}

//*************************************************************************************************************************//
// Método que pega a hora atual com contagem de segundos
	var oInterval = "";
	var oTimer = "";
	var isMinute = false;
	var isSecond = false;
	var isAmPm = false;

	function fnStartInterval(strLocal,minute,second,amPm){
		this.oTimer = document.getElementById(strLocal);
		if (minute != "") this.isMinute = true;
		if (second != "") this.isSecond = true;
		if (amPm != "") this.isAmPm = true;

		if(oInterval == ""){
//			this.oTimer.innerHTML = "Contagem iniciada...";
			this.oInterval = window.setInterval("fnRecycle()",1000);
		}
		else{
			fnStopInterval();
		}
	}

	function fnStopInterval(){
		if(this.oInterval != ""){
			window.clearInterval(oInterval);
			this.oInterval = "";
//			this.oTimer.innerHTML = "Contagem interrompida...";
		}
	}

	function fnRecycle(){
		var sSwitch = "am";
		oDate = new Date();
		iHours = oDate.getHours();
		sMinutes = oDate.getMinutes() + "";
		sSeconds = oDate.getSeconds() + "";

		if(iHours > 12){
//			iHours -= 12;
			sSwitch = "pm";
		}

		if(sMinutes.length == 1) sMinutes = "0" + sMinutes;
		if(sSeconds.length == 1) sSeconds = "0" + sSeconds;
		this.oTimer.innerHTML = iHours;
		if (this.isMinute) this.oTimer.innerHTML += ":" + sMinutes;
		if (this.isSecond) this.oTimer.innerHTML += ":" + sSeconds;
		if (this.isAmPm) this.oTimer.innerHTML += " " + sSwitch;
	}

//*************************************************************************************************************************//
//método que funciona como um cronometro
//local: local onde será exibido o tempo
//hdn: input hidden que poderá receber o valor

	var tSecond = 0;
	var tMinute = 0;
	var tHour = 0;
	var run = null;
	var oLocal = null;
	var oHdn = null;

	function runChrono(local,hdn){
		oLocal = local;
		oHdn = hdn;

		run = window.setInterval("doChrono()",1000);
	}
	
	function doChrono(){
		tSecond++;
		
		if (tSecond == 60){		
			tMinute++;
			tSecond = 0;
		}

		if (tMinute == 60){
			tHour++;
			tMinute = 0;
			tSecond = 0;
		}
		
		if (tHour == 24){
			tHour = 0;
			tMinute = 0;
			tSecond = 0;		
		}

		var str = returnZero(tHour) + ":" + returnZero(tMinute) + ":" + returnZero(tSecond);
		document.getElementById(oLocal).innerHTML = str;
		if (oHdn != null) document.getElementById(oHdn).value = str;
	}

	function stopChrono(){
		window.clearInterval(run);
		run = "";
	}

//*************************************************************************************************************************//
	function removeCaracter(local,string) {
		if(!(event.keyCode>=0x30 && event.keyCode<=0x39)) {
			alert("Você digitou um caracter inválido. Por favor digite uma data correta.");
			local.focus();
			local.value = "";
			event.returnValue = false;
	  	}
	}	

//*************************************************************************************************************************//
//Hide status bar
//Credit must stay intact for use
	function hidestatus(){
		window.status=''
		return true
	}
/*
	if (document.layers)
		document.captureEvents(Event.MOUSEOVER | Event.MOUSEOUT)

	document.onmouseover = hidestatus
	document.onmouseout = hidestatus
*/



//*************************************************************************************************************************//
/* Método AUTO TAB - ao preencher o campo, automaticamente manda o foco para o próximo!*/
//Yeiki	

	var isNN = (navigator.appName.indexOf("Netscape")!=-1);
	function autoTab(input,len, e) {
		var keyCode = (isNN) ? e.which : e.keyCode;
		var filter = (isNN) ? [0,8,9] : [0,8,9,16,17,18,37,38,39,40,46];
		if(input.value.length >= len && !containsElement(filter,keyCode)) {
			input.value = input.value.slice(0, len);
			input.form[(getIndex(input)+1) % input.form.length].focus();
		}
	
	function containsElement(arr, ele) {
		var found = false, index = 0;
		while(!found && index < arr.length)
		if(arr[index] == ele)
			found = true;
		else
			index++;
			return found;
		}
	
	function getIndex(input) {
		var index = -1, i = 0, found = false;
		while (i < input.form.length && index == -1)
			if (input.form[i] == input)index = i;
			else i++;
			return index;
		}
		return true;
	}
	//Fim dos métodos para AutoTab

//***************************************************************************************************************
//-----------------------------------------------------------------------------------------------
// método que formata um número com casas numéricas
// Entrada: 234 --> Saída: 234,00
// Entrada: 234,3333333334 --> Saída: 234,33
//-----------------------------------------------------------------------------------------------
	function formatNumber(str,nro){
		var strRetorno = str.toString();
		if (strRetorno.indexOf(".") == -1) strRetorno += ".00";

		if(strRetorno.split(".")[1].length == 1)
			strRetorno = strRetorno.split(".")[0] +"."+ strRetorno.split(".")[1]+"0";
		else if (strRetorno.split(".").length == 2){
			if(strRetorno.split(".")[1].length > 2){
				strRetorno = strRetorno.split(".")[0] +"."+ strRetorno.split(".")[1].substring(0,nro);
			}
		}

		return strRetorno;
	}

//*************************************************************************************************************************//
// - método que formata um valor para Real monetário (não foi testado)
	function formatCurrency(fld, milSep, decSep, e) {
		var sep = 0;
		var key = '';
		var i = j = 0;
		var len = len2 = 0;
		var strCheck = '0123456789';
		var aux = aux2 = '';
		var whichCode = (window.Event) ? e.which : e.keyCode;

		//if (whichCode == 8 ) return true; //backspace - estamos tratando disso em outra função no keydown
		if (whichCode == 0 ) return true;
		if (whichCode == 9 ) return true; //tecla tab
		if (whichCode == 13) return true; //tecla enter
		if (whichCode == 16) return true; //shift internet explorer
		if (whichCode == 17) return true; //control no internet explorer
		if (whichCode == 27) return true; //tecla esc
		if (whichCode == 34) return true; //tecla end
		if (whichCode == 35) return true; //tecla end
		if (whichCode == 36) return true; //tecla home

		//O trecho abaixo previne a ação padrão nos navegadores. Não estamos inserindo o caractere normalmente, mas via script
		if (e.preventDefault){ //standart browsers
			e.preventDefault();
		} else { // internet explorer
			e.returnValue = false;
		}

		var key = String.fromCharCode(whichCode);  // Valor para o código da Chave
		if (strCheck.indexOf(key) == -1) return false;  // Chave inválida

		//Concatenamos ao value o keycode de key, se esse for um número
		fld.value += key;

		var len = fld.value.length;
		var bodeaux = demaskvalue(fld.value,true).formatCurrency();
		fld.value=bodeaux;

		//Essa parte da função tão somente move o cursor para o final no opera. Atualmente não existe como movê-lo no konqueror.
		if (fld.createTextRange) {
			var range = fld.createTextRange();
			range.collapse(false);
			range.select();
		} else if (fld.setSelectionRange) {
			fld.focus();
			var length = fld.value.length;
			fld.setSelectionRange(length, length);
		}

		return false;
}


//*************************************************************************************************************************//
//-----------------------------------------------------------------------------------------------
//metodo mascara generica
//Yeiki
//-----------------------------------------------------------------------------------------------
function txtBoxFormat(objForm, strField, sMask, evtKeyPress) {
		var i, nCount, sValue, fldLen, mskLen,bolMask, sCod, nTecla;

	if (navigator.userAgent.indexOf("MSIE")>=0) { // Internet Explorer
		nTecla = evtKeyPress.keyCode;
	} else if (navigator.userAgent.indexOf("Mozilla")>=0) { // Nestcape
		nTecla = evtKeyPress.which;
	} else {
		nTecla = evtKeyPress.which;
		if (nTecla == 8) {
			return true;
		}
	}

	sValue = objForm[strField].value;
	// Limpa todos os caracteres de formatação que
	// já estiverem no campo.
	sValue = sValue.toString().replace( "-", "" );
	sValue = sValue.toString().replace( "-", "" );
	sValue = sValue.toString().replace( ".", "" );
	sValue = sValue.toString().replace( ".", "" );
	sValue = sValue.toString().replace( "/", "" );
	sValue = sValue.toString().replace( "/", "" );
	sValue = sValue.toString().replace( "(", "" );
	sValue = sValue.toString().replace( "(", "" );
	sValue = sValue.toString().replace( ")", "" );
	sValue = sValue.toString().replace( ")", "" );
	sValue = sValue.toString().replace( " ", "" );
	sValue = sValue.toString().replace( " ", "" );
	sValue = sValue.toString().replace( ":", "" );
	fldLen = sValue.length;
	mskLen = sMask.length;

	i = 0;
	nCount = 0;
	sCod = "";
	mskLen = fldLen;

	while (i <= mskLen) {
	bolMask = ((sMask.charAt(i) == "-") || (sMask.charAt(i) == ":") || (sMask.charAt(i) == ".") || (sMask.charAt(i) == "/"))
	bolMask = bolMask || ((sMask.charAt(i) == "(") || (sMask.charAt(i) == ")") || (sMask.charAt(i) == " "))

	if (bolMask) {
    	sCod += sMask.charAt(i);
	    mskLen++;
	} else {
	    sCod += sValue.charAt(nCount);
    	nCount++;
	}
	i++;
	}

	objForm[strField].value = sCod;
	if (nTecla != 8) { // backspace
	    if (sMask.charAt(i-1) == "9") { // apenas números...
    	return ((nTecla > 47) && (nTecla < 58)); } // números de 0 a 9
	else { // qualquer caracter...
    	return true;
	}
	} else {
	    return true;
	}
}

//*************************************************************************************************************************//

//*************************************************************************************************************************//
//-----------------------------------------------------------------------------------------------
//metodo mascara generica
//passando a tecla
//Yeiki
//-----------------------------------------------------------------------------------------------
function txtBoxFormatTecla(objForm, strField, sMask, nTecla) {
		var i, nCount, sValue, fldLen, mskLen,bolMask, sCod;


	sValue = objForm[strField].value;
	// Limpa todos os caracteres de formatação que
	// já estiverem no campo.
	sValue = sValue.toString().replace( "-", "" );
	sValue = sValue.toString().replace( "-", "" );
	sValue = sValue.toString().replace( ".", "" );
	sValue = sValue.toString().replace( ".", "" );
	sValue = sValue.toString().replace( "/", "" );
	sValue = sValue.toString().replace( "/", "" );
	sValue = sValue.toString().replace( "(", "" );
	sValue = sValue.toString().replace( "(", "" );
	sValue = sValue.toString().replace( ")", "" );
	sValue = sValue.toString().replace( ")", "" );
	sValue = sValue.toString().replace( " ", "" );
	sValue = sValue.toString().replace( " ", "" );
	sValue = sValue.toString().replace( ":", "" );
	fldLen = sValue.length;
	mskLen = sMask.length;

	i = 0;
	nCount = 0;
	sCod = "";
	mskLen = fldLen;

	while (i <= mskLen) {
	bolMask = ((sMask.charAt(i) == "-") || (sMask.charAt(i) == ":") || (sMask.charAt(i) == ".") || (sMask.charAt(i) == "/"))
	bolMask = bolMask || ((sMask.charAt(i) == "(") || (sMask.charAt(i) == ")") || (sMask.charAt(i) == " "))

	if (bolMask) {
    	sCod += sMask.charAt(i);
	    mskLen++;
	} else {
	    sCod += sValue.charAt(nCount);
    	nCount++;
	}
	i++;
	}

	objForm[strField].value = sCod;
	if (nTecla != 8) { // backspace
	    if (sMask.charAt(i-1) == "9") { // apenas números...
    	return ((nTecla > 47) && (nTecla < 58)); } // números de 0 a 9
	else { // qualquer caracter...
    	return true;
	}
	} else {
	    return true;
	}
}

//-----------------------------------------------------------------------------------------------
//metodo para Mascara generica
//Não Precisa de formulario
//passar id
//Yeiki
//-----------------------------------------------------------------------------------------------
function txtBoxFormatToID(objForm, ID, sMask, evtKeyPress) {
		var i, nCount, sValue, fldLen, mskLen,bolMask, sCod, nTecla;

	if (navigator.userAgent.indexOf("MSIE")>=0) { // Internet Explorer
		nTecla = evtKeyPress.keyCode;
	} else if (navigator.userAgent.indexOf("Mozilla")>=0) { // Nestcape
		nTecla = evtKeyPress.which;
	} else {
		nTecla = evtKeyPress.which;
		if (nTecla == 8) {
			return true;
		}
	}

	sValue = document.getElementById(ID).value;
	// Limpa todos os caracteres de formatação que
	// já estiverem no campo.
	sValue = sValue.toString().replace( "-", "" );
	sValue = sValue.toString().replace( "-", "" );
	sValue = sValue.toString().replace( ".", "" );
	sValue = sValue.toString().replace( ".", "" );
	sValue = sValue.toString().replace( "/", "" );
	sValue = sValue.toString().replace( "/", "" );
	sValue = sValue.toString().replace( "(", "" );
	sValue = sValue.toString().replace( "(", "" );
	sValue = sValue.toString().replace( ")", "" );
	sValue = sValue.toString().replace( ")", "" );
	sValue = sValue.toString().replace( " ", "" );
	sValue = sValue.toString().replace( " ", "" );
	sValue = sValue.toString().replace( ":", "" );
	fldLen = sValue.length;
	mskLen = sMask.length;

	i = 0;
	nCount = 0;
	sCod = "";
	mskLen = fldLen;

	while (i <= mskLen) {
	bolMask = ((sMask.charAt(i) == "-") || (sMask.charAt(i) == ":") || (sMask.charAt(i) == ".") || (sMask.charAt(i) == "/"))
	bolMask = bolMask || ((sMask.charAt(i) == "(") || (sMask.charAt(i) == ")") || (sMask.charAt(i) == " "))

	if (bolMask) {
    	sCod += sMask.charAt(i);
	    mskLen++;
	} else {
	    sCod += sValue.charAt(nCount);
    	nCount++;
	}
	i++;
	}

	document.getElementById(ID).value = sCod;
	if (nTecla != 8) { // backspace
	    if (sMask.charAt(i-1) == "9") { // apenas números...
    	return ((nTecla > 47) && (nTecla < 58)); } // números de 0 a 9
	else { // qualquer caracter...
    	return true;
	}
	} else {
	    return true;
	}
}

//-----------------------------------------------------------------------------------------------
//seleciona uma opção do combo box de acordo com o value passado
//criada em 13 de abril de 2007 - Yeiki
//obj=objeto select -- value=valor a ser selecionado no select
//-----------------------------------------------------------------------------------------------
function selectValueIndex(obj, value){
	for(var i = 0;i<obj.options.length;i++){
		if(obj.options[i].value == value){
			obj.selectedIndex = i;
			break;
		}
	}
}

//-----------------------------------------------------------------------------------------------
//executa função ao precionar a tecla enter
//criada em 16 de abril de 2007 - Yeiki
//e= event  -- f="função"
//ex.: onEnterNow(event,'buscaDados()')
//-----------------------------------------------------------------------------------------------
function onEnterNow(e,f){
	if (e != null){
		var key = (window.event) ? window.event.keyCode : e.which;
		if(key == 13){
			eval(f);
		}
		
	}
}

//-----------------------------------------------------------------------------------------------
//função de alterar a quantidade de caracteres a serem digitados no campo
//criada em 20 de abril de 2007 - Yeiki
//obj - objeto a ser alterado
//ml - quantidade de caracteres
//-----------------------------------------------------------------------------------------------
function changeMaxlengthField(obj,ml){
	obj.maxLength = ml;
}

//===============================================================================================

//-----------------------------------------------------------------------------------------------
//criada em 19/07/2007 - thiago costa
//utilizada para comparar o número de caracteres contido em um objeto , com o número máximo permitido (passado como parâmetro), 
//a função retorna FALSE caso o conteúdo do objeto seja maior que o número máximo permitido (passado como parâmetro).
//-----------------------------------------------------------------------------------------------
function limitaCaracteresInnerText(obj,num){
	if(obj.innerText.length > num){
		return false;	
	}else{
		return true;	
	}
}

//-----------------------------------------------------------------------------------------------
//função de retorna false caso a string não seja numero
//criada em 30 de outubro de 2007 - Yeiki
//s - string de entrada
//-----------------------------------------------------------------------------------------------
function isNumber(s){
	var i;
	if(s == "^")
		return true;
	
    for (i = 0; i < s.length; i++){   
        var c = s.charAt(i);
        if (((c < "0") || (c > "9"))) return false;
    }
    return true;
}

//-----------------------------------------------------------------------------------------------
//função retorna o caracter do evento passado por parametro
//criada em 30 de outubro de 2007 - Yeiki
//e - event
//-----------------------------------------------------------------------------------------------
function returnCharPressInEvent(e){
	if (e != null)
		var key = (window.event) ? window.event.keyCode : e.which;
	else
		var key = window.event.keyCode;
		
	if(key == 8)
		return "^";//se for backspace retorna "^"
	else	
		return String.fromCharCode(key);
}