/* 	CTRL+C >> CTRL+V ???
	TSC,TSC,TSC...
	Get www.leobreda.net !!!!
*/var isFF = (navigator.appName.indexOf("Netscape")!=-1);
	
//Cria uma mensagem de erro no rodapé da página
function msg_erro(mensagem){if(mensagem!=''){var objeto=document.createElement('div');objeto.setAttribute('id','msg_erro');var pagina=document.body;pagina.appendChild(objeto);objeto.style.zIndex='1000';objeto.style.position='fixed';objeto.style.padding='5px';objeto.style.left='0px';objeto.style.right='0px';objeto.style.bottom='0px';objeto.style.background='#990000';objeto.style.color='#ffffff';objeto.style.fontSize='12px';objeto.style.fontFamily='verdana';objeto.innerHTML=mensagem;}else{if(document.getElementById('msg_erro')){var pagina=document.body;pagina.removeChild(document.getElementById('msg_erro'));}}}
	
function valida_upload_imagem(imagem){var extensoesOk = ',.png,.gif,.jpg,.jpeg,.bmp';var extensao = ',' + imagem.substr( imagem.length - 4 ).toLowerCase() + ',';if( extensoesOk.indexOf( extensao ) == -1 ){return false;}else {return true;}}

//Permite a formatação automática de campos, tais como telefone, CEP, cnpj, etc...
//	CPF	onkeydown="javascript:formatar_mascara(this, '###.###.###-##');"
function formatar_mascara(src, mascara) {var campo = src.value.length;var saida = mascara.substring(0,1);var texto = mascara.substring(campo);if(texto.substring(0,1) != saida) {src.value += texto.substring(0,1);}}

//Auto TAB nos campos, tais como DDD >> TELEFONE
//	 onKeyUp="javascript:return autoTab(this, 5, event);" 
function autoTab(input,len, e){var keyCode = (isFF) ? e.which : e.keyCode; var filter = (isFF) ? [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;}
	
//Conta caracteres de determinado campo	
//	onKeyPress="javascript:contaCaracteres'COMENTARIO_2',200)" onKeyDown="contaCaracteresId('COMENTARIO_2',200)"
	function contaCaracteres(campo,maximo) //v1.0
	{	
		if(isFF==true)
		{
			//BUG
		}
		else if(isFF==false)
		{
			document.getElementById(campo.name+'_conta').innerHTML=parseInt(maximo)-parseInt(campo.value.length);
		}
		else
		{
			return;
		}
		
	}
	
//Conta caracteres de determinado campo	
//	onKeyPress="contaCaracteresId('COMENTARIO_2',200)" onKeyDown="contaCaracteresId('COMENTARIO_2',200)"
	function contaCaracteresId(campo,contador,maximo) //v2.0
	{	
		if(isFF==true)
		{
			//BUG
		}
		else if(isFF==false)
		{
			document.getElementById(contador+'_conta').innerHTML=parseInt(maximo)-parseInt(campo.value.length);
		}
		else
		{
			return;
		}
		
	}	
	
	
	
//Aplica o parâmatro MAXLENGTH em campos do tipo TEXTAREA
//	onkeyup="javascript:return ismaxlength(this);" 
function ismaxlength(obj){var mlength=obj.getAttribute? parseInt(obj.getAttribute("maxlength")) : "";if (obj.getAttribute && obj.value.length>mlength){obj.value=obj.value.substring(0,mlength);}}

//Bloqueia caracteres não numéricos
//	 onkeypress="javascript:return apenas_numeros(event);" 
function apenas_numeros(event){if(isFF==true) {tecla=event.which;}		else {tecla= event.keyCode;} if (tecla < 48 || tecla > 57) {return false};	}

//Bloqueia caracteres informados na variável caracteres
// onkeypress="javascript:return bloqueia_caractere(',');"		<== Bloqueia a vírgula (ideal em casos de vetorizar formulários
function bloqueia_caractere(caracteres){for(i=0;i<caracteres.length;i++){if(caracteres.charAt(i)==String.fromCharCode(event.keyCode)){return false;}}}
	
 
//Valida e-mail por RETURN=false ou RETURN=true
function valida_email(email){var er = new RegExp(/^[A-Za-z0-9_\-\.]+@[A-Za-z0-9_\-\.]{2,}\.[A-Za-z0-9]{2,}(\.[A-Za-z0-9])?/);if(typeof(email) == "string"){if(er.test(email)){ return true; }}else if(typeof(email) == "object"){if(er.test(email.value)){ return true; }}else{return false;}}

//Valida CPF por RETURN=false ou RETURN=true
function valida_cpf(cpf){cpf=cpf.replace(/[-.]/g,'');var numeros, digitos, soma, i, resultado, digitos_iguais;digitos_iguais = 1;if (cpf.length < 11) {return false;}for (i = 0; i < cpf.length - 1; i++){if (cpf.charAt(i) != cpf.charAt(i + 1)){digitos_iguais = 0;break;}}if (!digitos_iguais){numeros = cpf.substring(0,9);digitos = cpf.substring(9);soma = 0;for (i = 10; i > 1; i--) {soma += numeros.charAt(10 - i) * i;}resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;if (resultado != digitos.charAt(0)) {return false;}numeros = cpf.substring(0,10);soma = 0;for (i = 11; i > 1; i--){soma += numeros.charAt(11 - i) * i;}resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;if (resultado != digitos.charAt(1)){return false;}return true;}else{return false;}return true;}
	
//Valida CNPJ por RETURN=false ou RETURN=true	
function valida_cnpj(cnpj){cnpj=cnpj.replace(/[-./]/g,'');var a = [];var b = new Number;var c = [6,5,4,3,2,9,8,7,6,5,4,3,2];for (i=0; i<12; i++){a[i] = cnpj.charAt(i);b += a[i] * c[i+1];}if ((x = b % 11) < 2) { a[12] = 0 } else { a[12] = 11-x }b = 0;for (y=0; y<13; y++) {b += (a[y] * c[y]); }if ((x = b % 11) < 2) { a[13] = 0; } else { a[13] = 11-x; }if ((cnpj.charAt(12) != a[12]) || (cnpj.charAt(13) != a[13])){ return false;}}

	
	
//Valida data por RETURN=false ou RETURN=true
//	if(valida_data(document.frm.DATA_NASCIMENTO.value)==false){}
function valida_data(data){try{if(data.length==10){var dia = parseInt(data.substring(0,2));var mes = parseInt(data.substring(3,5));var ano = parseInt(data.substring(6,10));if((dia>31 || mes>12 || ano==0 || ano>=2100)||(((mes==4 || mes==6 || mes==9 || mes==11) && dia > 30)||(ano%4!=0 && mes==2 && dia>28)||(ano%4==0 && mes==2 && dia>29))){return false;} else{return true;}}else if(data.length==7){var mes = data.substring(0,2);var ano = parseInt(data.substring(3,7));if((mes>12) || (mes<1) || (ano>9999)){return false;} else{ return true;}}else{return false;}}catch(err){return false;}}
		
	
	
//Move os dados de um SELECT para outro SELECT	
//	<input name="button" type="button" onClick="javascript:moveSelect(this.form.ETAPA_DESTINO, 'passar', this.form.ETAPA_ORIGEM)" value="&gt;&gt;">
//	<input name="button2" type="button"  onClick="javascript:moveSelect(this.form.ETAPA_ORIGEM, 'passar', this.form.ETAPA_DESTINO)" value="&lt;&lt;">
//	<input name="button3" type="button" onClick="javascript:moveSelect(this.form.ETAPA_DESTINO, 'cima')" value="Mover p/ cima">
//	<input name="button3" type="button"   onClick="javascript:moveSelect(this.form.ETAPA_DESTINO, 'baixo')" value="Mover p/ baixo">
function moveSelect(elemento, direcao) {var sel = elemento;var len, i;if (!sel) {return;}if (direcao == 'passar' && arguments[2] == undefined) {return;} else if (direcao == 'passar') {var sel_pai = arguments[2];var selecionados = new Array();if (!sel_pai) {return;}len = sel_pai.options.length;for (i = 0; i < len; i++) {if (sel_pai.options[i].selected) {sel.options[sel.options.length] = new Option(sel_pai.options[i].text, sel_pai.options[i].value);selecionados.push(i);}}len = selecionados.length;for (i = len-1; i >= 0; i--) {sel_pai.options[selecionados[i]] = null;}} else if (direcao == 'cima' || direcao == 'baixo') {var selecionado = sel.selectedIndex;var comparacao = direcao == 'cima' ? selecionado - 1 : selecionado;var opts_values = new Array();var opts_texts = new Array();var tam = sel.options.length;var i;if (selecionado == -1) {return;}if (direcao == 'cima' && selecionado == 0) {return;}if (direcao == 'baixo' && selecionado == tam - 1) {return;}selecionado = direcao == 'cima' ? selecionado - 1 : selecionado + 1;for (i = 0; i < sel.options.length; i++) {if (i == comparacao) {opts_values.push(sel.options[i+1].value);opts_texts.push(sel.options[i+1].text);sel.options[i + 1] = null;}opts_values.push(sel.options[i].value);opts_texts.push(sel.options[i].text);}for (i = 0; i < tam; i++) {sel.options[i] = new Option(opts_texts[i], opts_values[i]);}sel.selectedIndex = selecionado;}}