/*
  <!----------------------------------------------------------------------|
  |  NetDOM - Informática e Tecnologia dos Municípios LTDA                |
  |  Copyright (c) 2004 - 2005 NetDOM Ltda. Todos Direitos reservados     |
  |-----------------------------------------------------------------------|
  | Alerta: Esse código é protegido por Direitos Autorais e protegido     |
  | por Leis Internacionais, que proibem quaisquer reprodução, modificação| 
  | ou redistribuição.                                                    |
  | Caso esse alerta seja desconsiderado, o responsável poderá ser punido |
  | por quebra de Direitos Autorais e Pirataria sob o Codigo civil n.º155 | 
  | da lei 45654 /94                                                      |
  |----------------------------------------------------------------------->
  Arquivo 			 :	scripts.js - Biblioteca Geral de Scripts
  Autor 			 : Jefferson Petilo (jefferson@netdom.com.br)
  Última Modificação : 24/11/2004 13:30:20
*/
// Variáveis Globais
var campos 	  			= document.cookie;
var hoje 	  			= new Date();
var expirar   			= new Date( hoje.getTime() + 28 * 24 * 60 * 60 * 1000 ); 
var horas    			= hoje.getHours();
var minutos  			= hoje.getMinutes();
var segundos 			= hoje.getSeconds();
var dia      			= hoje.getDate();
var mes      			= hoje.getMonth();
var ano      			= hoje.getFullYear();
var elemento;
var cor1;
var cor2;

// Prototype Validate Lib
/**
 * @objetivo	: ProtoType Datas
 * @parametro	: sem parâmetros
 * @retorno		: data
 * @autor       : João Neto
 * @versão		: 2, 10 de Dezembro  de  2003
 */					
Date.prototype.Dtos = function()
{
  var dd = this.getDate();
  var mm = this.getMonth() + 1;
  var yy = this.getFullYear();
	
  return( [ yy , ( mm < 10 ? '0' : '' ) + mm , ( dd < 10 ? '0' : '' ) + dd ].join( '' ) );
}
	
/**
 * @objetivo	: Formata data
 * @parametro	: p_data   : data.   ( Requerido )
 * @retorno		: data 
 * @autor       : Jefferson Petilo( jefferson@netdom.com.br )
 * @versão		: 1, 11 de Maio  de  2004
 */					
Date.prototype.fromString = function( p_data )
{
    var dt = p_data.split('/');
	this.setFullYear( dt[ 2 ] , dt[ 1 ] -1 , dt[ 0 ] );
	  
  return( this );
}
  
/**
 * @objetivo	: Seta data como Prototype
 * @parametro	: p_intervalo   : string.   ( Requerido )
 * @parametro	: p_num_dias    : numero.   ( Requerido )   
 * @retorno		: data 
 * @autor       : Jefferson Petilo( jefferson@netdom.com.br )
 * @versão		: 1, 13 de Maio  de  2004
 */					
Date.prototype.dataAdd = function ( p_intervalo, p_num_dias ) { return DateAdd( this, p_intervalo, p_num_dias ); }
 
/**
 * @objetivo	: ProtoType Elementos em Branco
 * @parametro	: sem parâmetros
 * @retorno		: booleano
 * @autor       : João Neto
 * @versão		: 2, 10 de Dezembro  de  2003
 */					
Array.prototype.hasEmptyElements = function()
{
  for( var i = 0 ; i < this.length ; i++ )
	   if( ( this[ i ] == '' ) || ( this[ i ] == null ) || ( this[ i ] == undefined ) )
	      return( true );
			
   return( false );
}
 
/**
 * @objetivo	: ProtoType Numero
 * @parametro	: sem parâmetros
 * @retorno		: booleano
 * @autor       : João Neto
 * @versão		: 2, 10 de Dezembro  de  2003
 */					
String.prototype.isNumber = function()
{
  return( !isNaN( this.split( '.' ).join( '' ).split( ',' ).join( '' ).split( '-' ).join( '' ) ) );
}

/**
 * @objetivo	: ProtoType IP
 * @parametro	: sem parâmetros
 * @retorno		: booleano 
 * @autor       : Jefferson Petilo( jefferson@netdom.com.br )
 * @versão		: 2, 10 de Agosto  de  2004
 */					
String.prototype.isIP = function()
{
   var regExp = /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/;
   
   if( regExp.test( this ) )
   {
      if( parseInt( parseFloat( this.split('.')[ 0 ] ) ) == 0 )
		  return ( false ); 
			
	   var ip = this.split('.');
	   
	   for( var i = 0; i < ip.length; i++)
		   if(parseInt(  ip[ i ] ) > 255 )
			  return ( false ); 
					
	  return ( true );		
   } else { 
	  return ( false );
   }	
}
/**
 * @objetivo	: ProtoType Date
 * @parametro	: sem parâmetros
 * @retorno		: booleano 
 * @autor       : Jefferson Petilo( jefferson@netdom.com.br ) 
 * @versão		: 2, 10 de Agosto  de  2004
 */					
String.prototype.isDate = function()
{
 	var pt = this.split( '/' );
		if( pt.length != 3 ) return( false );

	var dd = Number( pt[ 0 ] );
	var mm = Number( pt[ 1 ] );
	var yy = Number( pt[ 2 ] );
    var dt = new Date( yy , mm -1 , dd  );
	 
  return( [ yy , ( mm < 10 ? '0' : '' ) + mm , ( dd < 10 ? '0' : '' ) + dd ].join( '' ) == dt.Dtos() );
}
	
/**
 * @objetivo	: ProtoType Email
 * @parametro	: sem parâmetros
 * @retorno		: booleano
 * @autor       : João Neto
 * @versão		: 2, 10 de Dezembro  de  2003
 */					
String.prototype.isMail = function()
{
 var test
 var pt1    = this.split( '@' );
 var valid = '.-_@';
		
	if( ( pt1.length != 2 ) || ( pt1[ 0 ].length == 0 ) || ( pt1[ 1 ].length == 0 ) ) 
		return( false );
	else
	{
	  for( var i = 0 ; i < valid.length - 1 ; i++ )
	  {
		if( pt1[ 0 ].split( valid.charAt( i ) ).hasEmptyElements() ) return( false );
		if( pt1[ 1 ].split( valid.charAt( i ) ).hasEmptyElements() ) return( false );
	   }			
	}
	for( var i = 0 ; i < this.length ; i++ )
	{
	  var charac = this.toUpperCase().charCodeAt( i );
	  
		if( valid.indexOf( String.fromCharCode( charac ) ) == -1 )
		if(!( ( ( charac >= 65 ) && ( charac <= 90 ) ) || ( ( charac >= 48 ) && ( charac <= 57 ) ) ) ) 
		   return( false );
	}	
  return( true );
}
	
/**
 * @objetivo	: ProtoType CPF
 * @parametro	: sem parâmetros
 * @retorno		: booleano
 * @autor       : João Neto
 * @versão		: 2, 10 de Dezembro  de  2003
 */					
String.prototype.isCPF = function()
{
 this.testar = function( soma , pos )
 {
   var resto = 11 - ( soma % 11 );
   if( ( resto == 10 ) || ( resto == 11 ) ) resto = 0;
		
   return( resto == this.charCodeAt( pos ) - 48 );
 }
 
  for( var i = 0 ; i < 10 ; i++ ) if( this.split( i ).join( '' ).length == 0 ) return( false );
  for( var i = 0 , soma1 = 0 ; i < 9 ; i++ ) soma1 += ( this.charCodeAt( i ) - 48 ) * ( 10 - i );
  for( var i = 0 , soma2 = 0 ; i < 9 ; i++ ) soma2 += ( this.charCodeAt( i ) - 48 ) * ( 11 - i );

  if( !this.testar( soma1 , 9 ) ) return( false );
  if( !this.testar( soma2 , 10 ) ) return( false );

  return( true );
}
	
/**
 * @objetivo	: ProtoType CNPJ
 * @parametro	: sem parâmetros
 * @retorno		: data
 * @autor       : João Neto
 * @versão		: 2, 10 de Dezembro  de  2003
 */					
String.prototype.isCNPJ = function()
{
    var b = [6,5,4,3,2,9,8,7,6,5,4,3,2], c = this;
    if((c = c.replace(/[^\d]/g,"").split("")).length != 14) return false;
    for(var i = 0, n = 0; i < 12; n += c[i] * b[++i]);
    if(c[12] != (((n %= 11) < 2) ? 0 : 11 - n)) return false;
    for(var i = 0, n = 0; i <= 12; n += c[i] * b[i++]);
    if(c[13] != (((n %= 11) < 2) ? 0 : 11 - n)) return false;
    return true;
}
// Browser Lib
 
/**
 * @objetivo	: Detecta Navegador 
 * @parametro	: sem parâmetros
 * @retorno		: Data
 * @autor       : Desconhecido
 * @versão		: 1, 11  de Junho de 2004
 */					
function xbDetectBrowser()
{
 var platform;
 var oldOnError 	   	  = window.onerror;
 var element    	   	  = null;
	 window.onerror 	  = null;
	 window.saveNavigator = window.navigator;// work around bug in xpcdom Mozilla 0.9.1
	 navigator.OS    	  = '';
	 navigator.version    = parseFloat( navigator.appVersion );
	 navigator.org    	  = '';
	 navigator.family  	  = '';
	  
	 if( typeof( window.navigator.platform ) != 'undefined')
	 {
	   platform = window.navigator.platform.toLowerCase();
	   
	   if( platform.indexOf('win') != -1 )
		   navigator.OS = 'win';
	   else if( platform.indexOf('mac') != -1 )
		   navigator.OS = 'mac';
	   else if( platform.indexOf('unix') != -1 || platform.indexOf('linux') != -1 || platform.indexOf('sun') != -1 )
		   navigator.OS = 'nix';
	 }
	
	  var i  = 0;
	  var ua = window.navigator.userAgent.toLowerCase();
	  
	  if( ua.indexOf('opera') != -1 )
	  {
		i 				   = ua.indexOf('opera');
		navigator.family   = 'opera';
		navigator.org      = 'opera';
		navigator.version  = parseFloat('0' + ua.substr( i + 6 ), 10);
		
	  } else if( ( i = ua.indexOf('msie') ) != -1 ) {
		
		navigator.org      = 'microsoft';
		navigator.version  = parseFloat('0' + ua.substr( i + 5 ), 10);
		navigator.family   = ( navigator.version < 4  )? 'ie3':'ie4';
	  } else if( ua.indexOf('gecko') != -1 ) {
		  
		navigator.family   = 'gecko';
		var rvStart        = ua.indexOf('rv:');
		var rvEnd   	   = ua.indexOf(')', rvStart);
		var rv      	   = ua.substring(rvStart + 3, rvEnd );
		var rvParts 	   = rv.split('.');
		var rvValue 	   = 0;
		var exp     	   = 1;
	
		for( var i = 0; i < rvParts.length; i++ )
		{
		  var val  = parseInt( rvParts[ i ] );
		  rvValue += val / exp;
		  exp 	  *= 100;
		}
		navigator.version   = rvValue;
	
		if( ua.indexOf('netscape') != -1 )
		  navigator.org = 'netscape';
		else if(ua.indexOf('compuserve') != -1)
		  navigator.org = 'compuserve';
		else
		  navigator.org = 'mozilla';
		  
	  } else if( ( ua.indexOf('mozilla') !=-1) && (ua.indexOf('spoofer')==-1) && (ua.indexOf('compatible') == -1) && (ua.indexOf('opera')==-1)&& (ua.indexOf('webtv')==-1) && (ua.indexOf('hotjava')==-1)) {
		
		var is_major = parseFloat(navigator.appVersion);
			if( is_major < 4 )
			  navigator.version = is_major;
			else
			{
			  i = ua.lastIndexOf('/')
			  navigator.version = parseFloat('0' + ua.substr( i + 1 ), 10);
			}
			  navigator.org    = 'netscape';
			  navigator.family = 'nn' + parseInt( navigator.appVersion );
			  
	 } else if((i = ua.indexOf('aol')) != -1 )  {
		// aol
			  navigator.family   	   = 'aol';
			  navigator.org      	   = 'aol';
			  navigator.version  	   = parseFloat('0' + ua.substr( i + 4 ), 10);
			  
	  } else if( ( i = ua.indexOf('hotjava') ) != -1 )  {
		// hotjava
			  navigator.family  	   = 'hotjava';
			  navigator.org    		   = 'sun';
			  navigator.version  	   = parseFloat(navigator.appVersion);
	  }
	   window.onerror = oldOnError;
}
	// Detecta navegador
	xbDetectBrowser();

// Window Object Lib

/**
 * @objetivo	: Mostrar Dialogo
 * @parametro	: p_pagina 		  : string 		( obrigatório ) 
				  p_target	  	  : string 		( obrigatório ) 
				  p_resize		  : booleano	( opcional )
				  p_scrol		  : booelano	( opcional )
				  p_status		  : booelano	( opcional )
				  p_width		  : numérico	( opcional )
				  p_heigth		  : numérico	( opcional )
 * @retorno		: void 
 * @autor       : Jefferson Petilo( jefferson@netdom.com.br )
 * @versão		: 1, 05 de Maio de  2004
 * @sintaxe1 	: showModal('pagina1.cfm', '_top|_self|_blank|_parent') 
 * @sintaxe2 	: showModal('pagina2.cfm', 'target_customizado', 1, 1, 0, 580, 420 )
 */					
function showModal( p_pagina, p_target, p_resize, p_scroll, p_status, p_width, p_height )
{
 var path     = p_pagina.split('/');
 var pagina   = path[ path.length -1 ].split('?');
	 
	 resize	  = ( p_resize != null || p_resize != 0 ) ? p_resize : false;
	 scrol 	  = ( p_scroll != null || p_scroll != 0 ) ? p_scroll : false;
	 status   = ( p_status != null || p_status != 0 ) ? p_status : '';
	 width	  = ( p_width  != null || p_width  != 0 ) ? p_width  : 0;
	 height	  = ( p_height != null || p_height != 0 ) ? p_height : 0; 
	 esquerda = ( screen.width  ) ? ( screen.width  - parseInt( width )  ) / 2 : 0;
	 topo	  = ( screen.height ) ? ( screen.height - parseInt( height ) ) / 2 : 0; 
	 win 	  = window.open( p_pagina, p_target ,'height='+ height +', width='+ width +', left='+ esquerda + ', top=' + topo + ', toolbar=0, location=0,directories=0,status='+ status +',menuBar=0,scrollBars='+ scrol +',resizable=' + resize + '');

	if (!win)
	{
	  alert("Bloqueador de pop-ups detectado! Por favor adicione perrmissão que as popups dejam abertas para esse site.!");
	}

	 win.focus(); 
}

/**
 * @objetivo	: Mostra Hint de Coment' + String.fromCharCode( 224 ) + 'rio ( Definitivo )
 * @parametro	: p_atual     		: objeto. ( Requerido )
 * @parametro	: p_elemento   		: objeto. ( Requerido )
 * @parametro	: p_comentario      : objeto. ( Requerido )
 * @retorno		: objeto * @autor       : Jefferson Petilo( jefferson@netdom.com.br )* @versão		: 1, 03 de Março de  2004
 */					
function showPopup( current , e , comentario )
{
  var oPopup = window.createPopup();	
  var oPopupBody						 = oPopup.document.body;
	  oPopupBody.style.backgroundColor 	 = cor_primaria;
	  oPopupBody.style.border 		 	 = "solid black 1px";    
	  oPopupBody.style.fontFamily 	 	 = "Verdana, Geneva, Arial, Helvetica, sans-serif";
	  oPopupBody.style.fontSize 		 = "10px";
  var altura 		= 1;
  var largura 	 	= 320;
  var deslocamento  = ( parseInt( current.offsetHeight ) + 5 );
	
	 if( comentario.length > 50 )
	  altura  = Math.ceil( comentario.length / 50 );
	else
	  largura = Math.ceil( comentario.length * 10 );
 
	oPopupBody.innerHTML = comentario; 
	
	switch( current.type )
	{
		case 'select-one': 
		case 'select-multiple': 
			  deslocamento = ( altura == 1 )? ( -1 * ( parseInt( current.offsetHeight  )+ 5 ) ) : ( -1 * ( parseInt( current.offsetHeight ) + ( 10 * altura ) ) );
		break;
	}
	
   oPopup.show( 0 , deslocamento , largura, 15 * altura , current );
}

/**
 * @objetivo	: Fecha Modal e atualiza opener
 * @parametro	: sem parâmetros
 * @retorno		: void 
 * @autor       : Jefferson Petilo( jefferson@netdom.com.br )
 * @versão		: 1,  14 de Junho de 2004
 */			
function fnc_fecha_dialog()
{
  var janela = ( window.opener )?window.opener:window.dialogArguments; 
		
	  janela.location.reload();
	  window.close();
}

/**
 * @objetivo	: Retorna Posição Absoluta da Tela
 * @parametro	: el     : objeto. ( Requerido )
 * @retorno		: objeto * @autor       : Jefferson Petilo( jefferson@netdom.com.br )* @versão		: 1, 03 de Março de  2004
 */					
function getAbsolutePos( el )  
{
 var r = { x: el.offsetLeft, y: el.offsetTop };
	 if( el.offsetParent )
	 {
	   var tmp  = getAbsolutePos( el.offsetParent );
		   r.x += tmp.x;
		   r.y += tmp.y;
	 }
	   return ( r );
};

/**
 * @objetivo	: Retorna A Página Atual
 * @parametro	: sem parâmetros
 * @retorno		: string 
 * @autor       : Jefferson Petilo( jefferson@netdom.com.br )
 * @versão		: 1, 03 de Março de  2004
 */					
function getCurrentPage()
{
 var caminho = window.location.pathname;
 var pagina  = caminho.substring( caminho.lastIndexOf('/') + 1 );
 
 return ( pagina );
}
		
	
// Validate Form Lib 
/**
 * @objetivo	: Controla Campos do Formul' + String.fromCharCode( 224 ) + 'rio ( Validação )
 * @parametro	: num_forms   : objeto. ( Requerido )
 * @retorno		: void 
 * @autor       : Jefferson Petilo( jefferson@netdom.com.br )
 * @versão		: 1, 5 de Fevereiro  de  2003
 * @sintaxe 	: window.onload = function(){ fnc_controla_campos( 1 ); }
 */					
function fnc_controla_campos( num_forms )
{
  var v_funcao    = '';
  var v_tab_index = ( fnc_controla_campos.arguments.length > 1 )? true:false;
			
  for( var j = 0; j < num_forms; j++ ) 
  { 
	 var formulario = eval( document.forms[ j ] );
	 
	 for( var i = 0; i < formulario.length; i++ )
	 {		
		//inicializa contagem de tab_index
		if( v_tab_index )  formulario.elements[ i ].tabIndex = 0;		
		
		//OnFocus()
		if( formulario.elements[ i ].onfocus )
		{
			// adiciona nova função no evento onFocus() (caso já exista alguma função nela )
			formulario.elements[ i ].v_funcao_focus = formulario.elements[ i ].onfocus;
			formulario.elements[ i ].onfocus 		= function()
			{ 
				// adiciona nova função
				v_funcao = String( this.v_funcao_focus ).replace('function anonymous()','');
				v_funcao = String( v_funcao ).replace('}','');
				v_funcao = String( v_funcao ).replace('{','');																
				v_funcao = Trim( v_funcao ); 
				
				eval( v_funcao );											
				
				 // pinta a cor da célula
				 if( fnc_verifica_tipo( this ) ) event.srcElement.style.backgroundColor = cor_primaria ;  
				 
				 if( event.srcElement.hint )
				 {
					// cria layer caso navegador seja internet explorer atualizado, caso contrário utiliza a opção title html
					if( navigator.org == 'microsoft' && navigator.version >=6 ) 
						showPopup( event.srcElement , event , event.srcElement.hint );
						
					 else 
						event.srcElement.title = event.srcElement.hint;
					 
					 // mostra texto na barra de status
					 window.status 	 = event.srcElement.hint; 
				 }
			  }
 		 } else {

			// adiciona nova função no evento onFocus() 
			 formulario.elements[ i ].onfocus 		= function()
			 { 
				// pinta a cor da célula
				if( fnc_verifica_tipo( this ) )  event.srcElement.style.backgroundColor = cor_primaria; 
			    if( event.srcElement.hint )
				{
					// cria layer caso navegador seja internet explorer atualizado, caso contrário utiliza a opção title html
					if( navigator.org == 'microsoft' && navigator.version >=6 ) 
						showPopup( event.srcElement , event , event.srcElement.hint );
					else 
						event.srcElement.title = event.srcElement.hint;
					 
					 // mostra texto na barra de status
					 window.status 	 = event.srcElement.hint; 
			    }
			}
	 	}
		//OnBlur()
		if( fnc_verifica_tipo( formulario.elements[ i ] ) )
		{
			//incrementa contagem de tab_index
			if( v_tab_index ) formulario.elements[ i ].tabIndex = i + 1;   

			// quando pressiona help na showModal mostra popup customizado ou texto na barra de status 
			formulario.elements[ i ].onhelp = function()
			{ 
				// cria layer caso navegador seja internet explorer atualizado, caso contrário utiliza a opção title html
				if( navigator.org == 'microsoft' && navigator.version >=6 ) 
					showPopup( event.srcElement , event , event.srcElement.hint );
				else 
					window.status 	 = event.srcElement.hint; 
			}
					
			if ( formulario.elements[ i ].onblur )
			{
				// adiciona nova função no evento onBlur() (caso já exista alguma função nela )
				formulario.elements[ i ].v_funcao   = formulario.elements[ i ].onblur;
				formulario.elements[ i ].onblur 	= function()
				{ 
 				  // adiciona nova função
					v_funcao = String( this.v_funcao ).replace('function anonymous()','');
					v_funcao = String( v_funcao ).replace('}','');
					v_funcao = String( v_funcao ).replace('{','');																
					v_funcao = Trim( v_funcao );
					
					eval( v_funcao );																
					
					event.srcElement.style.backgroundColor = '';
				}
			}  else { 
				// adiciona nova função no evento onBlur() 
				formulario.elements[ i ].onblur = function()
				{ 
				  event.srcElement.style.backgroundColor = ''; 
				}															   
			}
  	     }										 
	 }	
  }
}	

/**
 * @objetivo	: Mostra Mensagem de Erro
 * @parametro	: p_mensagem  : string. ( Requerido )
 * @parametro	: p_campo     : objeto. ( Requerido )
 * @parametro	: form   	  : objeto. ( Requerido )
 * @retorno		: booleano
 * @autor       : Jefferson Petilo( jefferson@netdom.com.br )  
 * @versão		: 1, 5 de Fevereiro  de  2003
 */					
function fnc_erro( p_mensagem, p_campo, form )
{
  
  alert( p_mensagem );
  
  if( !p_campo.readOnly )
  {
    switch( p_campo.type )
    {
		case 'select-one' :
		case 'select-multiple' :
		case 'text' :
		case 'textarea' :
		case 'radio' 	   	   : 
		case 'checkbox' 	   : 
		case 'password' :
						 p_campo.focus();
		break;	
	}
  }
  return false;
}	

/**
 * @objetivo	: Descrição da Função
 * @parametro	: param1   : tipo. ( Requerido )
 * @retorno		: returntype 
 * @autor       : Jefferson Petilo( jefferson@netdom.com.br )
 * @versão		: 1, 31 de Março  de  2004
 */					
function fnc_verifica_tipo( p_campo )
{
  if( !p_campo.readOnly )
  {
	switch( p_campo.type ) 
	{
		case 'text' 		   : 
		case 'select-one' 	   : 
		case 'select-multiple' : 
		case 'textarea' 	   : 
		case 'radio' 	   	   : 
		case 'file'			   : 
		case 'checkbox' 	   : 
		case 'password' 	   : return ( true ); 	break;
		default 			   : return ( false );  break;
	}
  }
}

/**
 * @objetivo	: Valida Formul' + String.fromCharCode( 224 ) + 'rio
 * @parametro	: form   : objeto. ( Requerido )
 * @retorno		: void
 * @autor       : Jefferson Petilo( jefferson@netdom.com.br )
 * @versão		: 1, 5 de Fevereiro  de  2003
 */					
function fnc_verifica_form( formulario )
{
 var args	= fnc_verifica_form.arguments;
 var secao 	= false;
	
 if( args.length == 2 ) secao = true;	
	
	for( var i = 0; i < formulario.length; i++ )
	{
  	  if( secao )
	  {
	    if( args[ 1 ] == formulario.elements[ i ].secao ) 
			if( ( formulario.elements[ i ].obrigatorio == 1 ) && (! formulario.elements[ i ].value ) )
			{
			    mensagem = 'O campo ' + formulario.elements[ i ].display + ' ' + String.fromCharCode( 233 ) + '  requerido.';
				return 	 ( fnc_erro( mensagem , formulario.elements[ i ], formulario ) );
			}
	  } else {
		    if( ( formulario.elements[ i ].obrigatorio == 1 ) && ( !formulario.elements[ i ].value ) )
		    {
				mensagem = 'O campo ' + formulario.elements[ i ].display + ' ' +  String.fromCharCode( 233 ) + '  requerido.';
				return fnc_erro( mensagem , formulario.elements[ i ], formulario );
		     }
	  }
	  if( secao )
	  {
		 // verifica se existe seção
		 if( args[ 1 ] == formulario.elements[ i ].secao) 
		 {
			// verifica se é numérico 
			if( ( formulario.elements[ i ].value ) && ( formulario.elements[ i ].tipo == 'numerico') && ( !formulario.elements[ i ].value.isNumber() ) )
			{
				mensagem = 'O valor do campo ' + formulario.elements[ i ].display + ' deve ser num' + String.fromCharCode( 233 ) + 'rico.';
				return fnc_erro( mensagem , formulario.elements[ i ], formulario )
		    }			
			// verifica se é data
			if( ( formulario.elements[ i ].value) && ( formulario.elements[ i ].tipo == 'data') && (!formulario.elements[ i ].value.substr(0,10 ).isDate() ) )
			{
				mensagem = 'O valor do campo ' + formulario.elements[ i ].display + ' deve ser uma data v' + String.fromCharCode( 224 ) + 'lida.';
				return fnc_erro( mensagem , formulario.elements[ i ], formulario )
		    }			
			// verifica se é CPF
			if( ( formulario.elements[ i ].value ) && ( formulario.elements[ i ].tipo == 'cpf') && ( !formulario.elements[ i ].value.isCPF() ) )
			{
				mensagem = 'O valor do campo ' + formulario.elements[ i ].display + ' deve ser um nº v' + String.fromCharCode( 224 ) + 'lido de CPF.';
				return fnc_erro( mensagem , formulario.elements[ i ], formulario )
			}			

			// verifica se é CNPJ
			if( ( formulario.elements[ i ].value ) && ( formulario.elements[ i ].tipo == 'cnpj') && ( !formulario.elements[ i ].value.isCNPJ() ) )
			{
				mensagem = 'O valor do campo ' + formulario.elements[ i ].display + ' deve ser um nº v' + String.fromCharCode( 224 ) + 'lido de CNPJ.';
				return fnc_erro( mensagem , formulario.elements[ i ], formulario )
			}			

			// verifica se é e-mail
			if( ( formulario.elements[ i ].value ) && ( formulario.elements[ i ].tipo == 'email') && ( !formulario.elements[ i ].value.isMail() ) )
			{
				mensagem = 'O valor do campo ' + formulario.elements[ i ].display + ' deve ser um e-mail v'+ String.fromCharCode( 225 )+'lido.';
				return fnc_erro( mensagem , formulario.elements[ i ], formulario )
			}			
			// verifica se é CNPJ
			if( ( formulario.elements[ i ].value) && ( formulario.elements[ i ].tipo == 'cnpj') && ( !formulario.elements[ i ].value.isCNPJ() ) )
			{
				mensagem = 'O valor do campo ' + formulario.elements[ i ].display + ' deve ser um CNPJ v' + String.fromCharCode( 224 ) + 'lido.';
				return fnc_erro( mensagem , formulario.elements[ i ], formulario )
		    }	
			// verifica se é Endereço de IP
			if( ( formulario.elements[ i ].value ) && ( formulario.elements[ i ].tipo == 'ip') && ( !formulario.elements[ i ].value.isIP() ) )
			{
				mensagem = 'O valor do campo ' + formulario.elements[ i ].display + ' deve ser um endere' + String.fromCharCode( 231 ) + 'o de IP v' + String.fromCharCode( 224 ) + 'lido.';
				return fnc_erro( mensagem , formulario.elements[ i ], formulario )
			}	
		  }
	    } else {
		  // verifica se é numérico 
		  if( ( formulario.elements[ i ].value ) && ( !formulario.elements[ i ].secao ) && ( formulario.elements[ i ].tipo == 'numerico' ) && ( !formulario.elements[ i ].value.isNumber() ) )
	      {
				mensagem = 'O valor do campo ' + formulario.elements[ i ].display + ' deve ser num' + String.fromCharCode( 233 ) + 'rico.';
				return fnc_erro( mensagem , formulario.elements[ i ], formulario )
		  }			
		  // verifica se é data
		  if( ( formulario.elements[ i ].value ) && ( !formulario.elements[ i ].secao ) && ( formulario.elements[ i ].tipo == 'data') && (!formulario.elements[ i ].value.substr(0,10 ).isDate() ) )
		  {
				mensagem = 'O valor do campo ' + formulario.elements[ i ].display + ' deve ser uma data v' + String.fromCharCode( 224 ) + 'lida.';
				return fnc_erro( mensagem , formulario.elements[ i ], formulario )
	      }			
		 // verifica se é CPF
		  if( ( formulario.elements[ i ].value ) && ( !formulario.elements[ i ].secao ) && ( formulario.elements[ i ].tipo == 'cpf') && ( !formulario.elements[ i ].value.isCPF() ) )
		  {
				mensagem = 'O valor do campo '+formulario.elements[ i ].display+' deve ser um nº v' + String.fromCharCode( 224 ) + 'lido de CPF.';
				return fnc_erro(mensagem,formulario.elements[ i ], formulario)
		  }			

		// verifica se é e-mail
		 if( ( formulario.elements[ i ].value ) && ( !formulario.elements[ i ].secao ) && ( formulario.elements[ i ].tipo == 'email') && ( !formulario.elements[ i ].value.isMail() ) )
	     {
				mensagem = 'O valor do campo '+formulario.elements[ i ].display+' deve ser um e-mail.';
				return fnc_erro(mensagem,formulario.elements[ i ], formulario)
	     }			
		 // verifica se é CNPJ
		 if( ( formulario.elements[ i ].value ) && ( !formulario.elements[ i ].secao ) && ( formulario.elements[ i ].tipo == 'cnpj') && ( !formulario.elements[ i ].value.isCNPJ() ) )
		 {
				mensagem = 'O valor do campo '+formulario.elements[ i ].display+' deve ser um CNPJ v' + String.fromCharCode( 224 ) + 'lido.';
				return fnc_erro(mensagem,formulario.elements[ i ], formulario)
	     }		
		// verifica se é Endereço de IP
		 if( ( formulario.elements[ i ].value ) && ( formulario.elements[ i ].tipo == 'ip') && ( !formulario.elements[ i ].value.isIP() ) )
	     {
				mensagem = 'O valor do campo ' + formulario.elements[ i ].display + ' deve ser um endere' + String.fromCharCode( 231 ) + 'o de IP v' + String.fromCharCode( 224 ) + 'lido.';
				return fnc_erro( mensagem , formulario.elements[ i ], formulario )
	     }	
	   }
	}
  return ( true );
}

/**
 * @objetivo	: Retorna Radio Button Selecionado
 * @parametro	: p_grupo   : objeto. ( Requerido )
 * @retorno		: numero 
 * @autor       : Jefferson Petilo( jefferson@netdom.com.br )
 * @versão		: 1, 05 de Maio  de  2004
 */					
function getRadioSelecionado( p_grupo )
{
  if( p_grupo[ 0 ] )
  { 
    for(var i = 0; i < p_grupo.length; i++ )
	    if( p_grupo[ i ].checked ) return ( i ); // returna posição do elemento do array que est' + String.fromCharCode( 224 ) + ' selecionado
   } else 
	    if( p_grupo.checked ) return ( 0 );  // retorna posição do primeiro elemento
		   return ( -1 ); // retorna que não existe elemento selecionado
} 
	
/**
 * @objetivo	: Retorna Valor do Radio Button Selecionado
 * @paramero	: p_grupo   : objeto. ( Requerido )
 * @retorno		: numero 
 * @autor       : Jefferson Petilo( jefferson@netdom.com.br )
 * @versão		: 1, 05 de Maio  de  2004
 */					
function getRadioSelecionadoValor( p_grupo )
{
  var i = getRadioSelecionado( p_grupo );
  if( i == -1 ) 
  	 return ( 0 );
   else 
   {
	  if( p_grupo[ i ] ) 
		return ( p_grupo[ i ].value );
	  else 
		return ( p_grupo.value );
   }
}

/**
 * @objetivo	: Limpa Valor Padrão do Campo ( no foco )
 * @parametro	: p_campo     		: objeto. ( Requerido )
 * @parametro	: p_valor_padrao  	: objeto. ( Requerido )
 * @retorno		: booleano
 * @autor       : Jefferson Petilo( jefferson@netdom.com.br )
 * @versão		: 1, 5 de Fevereiro  de  2003
 * @sintaxe 	: onFocus="fnc_limpa_campo(this, '(00.000-000)')" 
 */					
function fnc_limpa_campo( p_campo, p_valor_padrao )
{
  if( p_campo.value == p_valor_padrao ) p_campo.value = '';
}

/**
 * @objetivo	: Preenche com o Valor Padrão do Campo ( no blur )
 * @parametro	: p_campo     		: objeto. ( Requerido )
 * @parametro	: p_valor_padrao  	: objeto. ( Requerido )
 * @retorno		: booleano
 * @autor       : Jefferson Petilo( jefferson@netdom.com.br )
 * @versão		: 1, 5 de Fevereiro  de  2003
 * @sintaxe 	: onBlur="fnc_volta_campo(this, '(00.000-000)')"
 */					
function fnc_volta_campo( p_campo, p_valor_padrao )
{
  if( !p_campo.value ) p_campo.value = p_valor_padrao;
}

/**
 * @objetivo	: Grava projeto selecionado em um cookie
 * @parametro	: p_form 	 : string. ( Requerido )
 				  p_campo    : string. ( Requerido )
 				  p_valor 	 : string  ( Requerido )
 * @retorno		: void 
 * @autor       : Jefferson Petilo( jefferson@netdom.com.br )
 * @versão		: 1, 23 de Agosto de 2004
 * @sintaxe 	: setFormVariavel('form_name','field_name', getCookie('field_name'));
 */
function setFormVariavel( p_form, p_campo, p_valor )
{
 var campo = eval('document.' + p_form + '.' + p_campo );
 

  // grava apenas campos que não forem somente leitura ou desativado
  if( campo && ( !campo.readOnly || !campo.disabled ) )
  {
	switch( campo.type ) 
	{
		// caso a opção seja campos do tipo texto
		case 'text'     : 
		case 'textarea' : 
		case 'password' : 
			 campo.value = p_valor;
		break;
		// caso a opção seja campos do tipo select box
		case 'select-one' 	   : 
		case 'select-multiple' : 
			 for( var q=1; q < campo.options.length; q++ )
			   if( campo.options[ q ].value  == p_valor)
				   campo.value = p_valor;
		break;
		
		case 'checkbox':
			  campo.checked = ( p_valor )?true:false;
		break;

        default :

			  if( campo[ 0 ].type == 'radio' || campo[ 1 ].type == 'radio' && campo[ 0 ] )
			  {
                  switch( campo[ 0 ].name )
                  {
				     case 'tipo_publicacao' : 

						 if( getCookie('tipo_publicacao') == 1 )
							   campo[ 0 ].checked = true;
						  else if ( getCookie('tipo_publicacao') == 2 )
							   campo[ 1 ].checked = true; 
							 
					 break;   

				     case 'modalidade_id' : 
						  if( getCookie('modalidade_id') == 1 )
							   campo[ 0 ].checked = true;
						  else if ( getCookie('modalidade_id') == 2 )
							   campo[ 1 ].checked = true;
                    break;			
                 }
			 }
        break;
	}
  }
}
 
// String Lib

/**
 * @objetivo	: Formata String no Formato de Hora
 * @parametro	: p_campo     : objeto. ( Requerido )
 * @parametro	: p_proximo   : objeto. ( Requerido )
 * @retorno		: booleano
 * @autor       : Jefferson Petilo( jefferson@netdom.com.br )
 * @modificado  : Jefferson de Araújo Petilo( jefferson@netdom.com.br )  
 * @versão		: 2, 05 de Maio de  2004 
 */					
function MM_data_key_up( p_campo , p_proximo )
{
   switch( window.event.keyCode )
   {		  
	case 8  :
	case 9  :
	case 19 :
	case 37 :
	case 39 : return ( false ); break;	
	
	default : 
				if( p_campo.value.length == 2 || p_campo.value.length == 5 ) p_campo.value += '/';
				if( p_campo.value.indexOf('//') != -1 ) p_campo.value = p_campo.substring( 0, p_campo.value.length -1 );
				if( p_proximo && p_campo.value.length == 10 ) p_proximo.focus();
				
				return ( true );
	break;
   }
}
   
/**
 * @objetivo	: Formata String no Formato de Hora
 * @parametro	: p_campo     : objeto. ( Requerido )
 * @retorno		: booleano 
 * @autor       : Jefferson Petilo( jefferson@netdom.com.br )
 * @versão		: 2, 05 de Maio de  2004
 */					
function MM_hora_key_up( p_campo )
{
  switch( window.event.keyCode )
  {		  
	case 8  :
	case 9  :
	case 19 :
	case 37 :
	case 39 :
			  return ( false );
	break;	
	default : 
			 if( p_campo.value.length == 2 ) p_campo.value += ':';
			 if( p_campo.value.indexOf('::') != -1 ) p_campo.value = p_campo.substring( 0, p_campo.value.length -1 );
				
			 return ( true );
	break;
  }
}

/**
 * @objetivo	: Formata CNPJ
 * @parametro	: p_campo     	: objeto. ( Requerido )
 * @parametro	: keypress 		: string. ( Requerido )
 * @retorno		: void 
 * @autor       : Jefferson Petilo( jefferson@netdom.com.br )
 * @versão		: 1, 5 de Março  de  2004
 */		
function FormataCNPJ(Campo, teclapres)
{
 var tecla = teclapres.keyCode;
 var vr    = new String(Campo.value);
	 vr    = vr.replace(".", "");
	 vr    = vr.replace(".", "");
	 vr    = vr.replace("/", "");
	 vr    = vr.replace("-", "");
	tam    = vr.length + 1 ;

  if(tecla != 9 && tecla != 8)
  {
	if( tam > 2 && tam < 6 )    Campo.value = vr.substr(0, 2) + '.' + vr.substr(2, tam);
	if( tam >= 6 && tam < 9 )   Campo.value = vr.substr(0,2) + '.' + vr.substr(2,3) + '.' + vr.substr(5,tam-5);
	if( tam >= 9 && tam < 13 )  Campo.value = vr.substr(0,2) + '.' + vr.substr(2,3) + '.' + vr.substr(5,3) + '/' + vr.substr(8,tam-8);
	if( tam >= 13 && tam < 15 ) Campo.value = vr.substr(0,2) + '.' + vr.substr(2,3) + '.' + vr.substr(5,3) + '/' + vr.substr(8,4)+ '-' + vr.substr(12,tam-12);
   }
}

/**
 * @objetivo	: Remove Espaços a Esquerda
 * @parametro	: p_string     : string. ( Requerido )
 * @retorno		: string
 * @autor       : Jefferson de Araújo Petilo ( jefferson@netdom.com.br ) 
 * @versão		: 1, 5 de Março  de  2004
 */					
function LTrim( p_string )
{
  var whitespace = new String(" \t\n\r");
  var objstring  = new String( p_string );
	
  if( whitespace.indexOf( objstring.charAt( 0 ) ) != -1 )
  {
	 var j = 0, i = objstring.length;
	 
	  while ( j < i && whitespace.indexOf( objstring.charAt( j ) ) != -1 )
	 		  j++;

	  objstring = objstring.substring( j , i );
   }
   return ( objstring );
}

/**
 * @objetivo	: Remove Espaços à Direita
 * @parametro	: p_string     : string. ( Requerido )
 * @retorno		: string
 * @autor       : Jefferson Petilo ( jefferson@netdom.com.br ) 
 * @versão		: 1, 5 de Março  de  2004
 */					
function RTrim( p_string )
{
  var whitespace = new String(" \t\n\r");
  var objstring  = new String( p_string );
	
   if( whitespace.indexOf( objstring.charAt( objstring.length-1 ) ) != -1 )
   {
	  var i = objstring.length - 1;
	  
	  while ( i >= 0 && whitespace.indexOf( objstring.charAt( i ) ) != -1 )
	          i--;

	  objstring = objstring.substring( 0,  i + 1 );
   }
   return ( p_string );
}

/**
 * @objetivo	: Remove Espaços à Direita e à Esquerda
 * @parametro	: p_string     : string. ( Requerido )
 * @retorno		: string
 * @autor       : Jefferson Petilo ( jefferson@netdom.com.br ) 
 * @versão		: 1, 5 de Março  de  2004
 */					
function Trim( p_string )
{
 return RTrim( LTrim ( p_string ) );
}	

// Date Lib 
/**
 * @objetivo	: Gravar Data da Consulta
 * @parametro	: sem parâmetros
 * @retorno		: Data 
 * @autor       : Jefferson Petilo( jefferson@netdom.com.br )
 * @versão		: 1, 5  de Dezembro de 2003
 */					
fnc_gravar_data = function()
{
	var td       = document.getElementById( 'show_data' );
	var hoje     = new Date();
	var horas    = hoje.getHours();
	var minutos  = hoje.getMinutes();
	var segundos = hoje.getSeconds();
	var dia      = hoje.getDate();
	var mes      = hoje.getMonth();
	var ano      = hoje.getFullYear();
	var semana   = [ 'Domingo' , 'Segunda' , 'Ter' + String.fromCharCode( 231 ) + 'a' , 'Quarta' , 'Quinta' , 'Sexta' , 'S' + String.fromCharCode( 225 ) + 'bado' ];
	var meses    = [ 'Janeiro' , 'Fereveiro' , 'Mar' + String.fromCharCode( 231 ) + 'o' , 'Abril' , 'Maio' , 'Junho' , 'Julho' , 'Agosto' , 'Setembro' , 'Outubro' , 'Novembro' , 'Dezembro' ];
	var str      = '';
	
	if( minutos  < 10 ) minutos  = '0' + minutos;
	if( segundos < 10 ) segundos = '0' + segundos;
	
	str += '<div align="center">Ultima consulta realizada em : ' + semana[ hoje.getDay() ] + ', ' + dia + ' de ' + meses[ mes ] + ' de ' + ano ;
	str += ' as '  + [ horas , minutos , segundos ].join( ':' ) +'</div>';
	
	td.innerHTML = str;
}

/**
 * @objetivo	: Incrementa Data  
 * @parametro	: p_data_inicial  : data.   ( Requerido )
 * @parametro	: p_p_intervalo	  : string  ( Requerido )
 * @parametro	: p_num_dias	  : nummero ( Requerido )   
 * @retorno		: data 
 * @autor       : Jefferson Petilo( jefferson@netdom.com.br )
 * @versão		: 1, 11 de Maio  de  2004
 */					
function DateAdd( p_data_inicial, p_intervalo , p_num_dias )
{
  var stDatams = Date.parse( p_data_inicial );
  
  switch ( p_intervalo.toUpperCase() )
  {
	case 'D': p_num_dias *=   24; 	// dias para horas
	case 'H': p_num_dias *=   60; 	// horas para minutos
	case 'M': p_num_dias *=   60;   // minutos para segundos
	case 'S': p_num_dias *= 1000;   // segundos para milisegundos
   }
	return ( new Date( stDatams + p_num_dias ) );
}	

// Cookie Lib

/**
 * @objetivo	: captura Cookie
 * @parametro	: nome : string. ( Requerido )
 * @retorno		: cookie 
 * @autor       : Jefferson Petilo( jefferson@netdom.com.br )
 * @versão		: 1, 2 de Dezembro de 2003 
 */					
function getCookie( nome )
{ 
  var index  = campos.indexOf( nome + '=');
	  if(index == -1 ) 
	  	  return ( null );
	
	  index  = campos.indexOf( '=', index ) + 1;
  var sfinal = campos.indexOf(';', index );  
	  if( sfinal == -1 ) 
	  	  sfinal = campos.length;
		
  return unescape( campos.substring( index, sfinal ) );
}	

/**
 * @objetivo	: Gravar Cookies
 * @parametro	: nome  : string. ( Requerido )
 * @retorno		: cookie 
 * @autor       : Jefferson Petilo( jefferson@netdom.com.br )
 * @versão		: 1, 2 de Dezembro de 2003 
 */					
function setCookie( nome, valor )
{ 
  if( valor != null )
    document.cookie = nome + '=' + escape( valor ) + '; expires=' + expirar.toGMTString();
				 
  campos = document.cookie; 
}

// ComboBox Lib
/**
 * @objetivo	: Limpa Select Box
 * @parametro	: sem parâmetros
 * @retorno		: Data 
 * @autor       : Jefferson Petilo( jefferson@netdom.com.br )
 * @versão		: 1, 06  de Junho de 2004
 */					
function fnc_limpa_select( p_select )
{
  for( var i = ( p_select.options.length - 1 ); i >= 0; i-- ) p_select.options[ i ] = null;
   p_select.selectedIndex = -1;
}

/** 
 * @objetivo	: Cria Option
 * @parametro	: sem parâmetros
 * @retorno		: Data 
 * @autor       : Jefferson Petilo( jefferson@netdom.com.br )
 * @versão		: 1, 06  de Junho de 2004
 */					
function fnc_cria_option( p_select, p_valor, p_texto, p_selected )
{
	if( p_select != null && p_select.options != null )
		p_select.options[ p_select.options.length ] = new Option( p_texto, p_valor, false, p_selected );
}  

/**
 * @objetivo	: Seleciona todos elementos do Select Box
 * @parametro	: p_select    : array. ( Requerido )
 * @retorno		: Data 
 * @autor       : Jefferson Petilo( jefferson@netdom.com.br )
 * @versão		: 1, 06  de Junho de 2004
 */					
function fnc_seleciona_todos( p_select )
{
 for( var i = 0; i < p_select.options.length;i++ )
     if( p_select.options[ i ].value.length > 0 )
	     p_select.options[ i ].selected = true;
     else 
	     p_select.options[ i ] = null;
}

/**
 * @objetivo	: Seleciona elemento do Grupo
 * @parametro	: p_select    : array. ( Requerido )
 * @retorno		: void 
 * @autor       : Jefferson Petilo( jefferson@netdom.com.br )
 * @versão		: 2, 07  de Julho de 2004
 */					
function fnc_seleciona_grupo( p_select )
{
 for( i = 0; i < p_select.options.length; i++ )
  {
	v_grupo = p_select.options[ i ].value.split('||');

	if( v_grupo.length == 2 )
	{
	 if( p_select.value == parseInt( v_grupo[ 0 ] ) )
		 p_select.options[ i ].selected = true;
    }
  }  
}	

/**
 * @objetivo	: Remove componente de um Combo para outro
 * @parametro	: p_obj_origem   : array.    ( Requerido )
				  j  			 : numerico. ( Requerido )
 * @retorno		: void 
 * @autor       : Jefferson Petilo( jefferson@netdom.com.br )
 * @versão		: 2, 21  de Junho de 2004
 */					
function fnc_deleta_componente( p_obj_origem , j )
{
   p_obj_origem.options[ j ] = null;
}

/**
 * @objetivo	: Adiciona componente 
 * @parametro	: p_obj_origem   : array.    ( Requerido )
				  p  			 : numerico. ( Requerido )
 * @retorno		: void 
 * @autor       : Jefferson Petilo( jefferson@netdom.com.br )
 * @versão		: 2, 21  de Junho de 2004
 */					
function fnc_adiciona_componente( p_obj_origem, p_texto, p_valor )
{
  var componente  = new Option( p_texto, p_valor, true, true );
	
  p_obj_origem.options[ p_obj_origem.length ] = componente;
}

/**
 * @objetivo	: Copia componente de um Combo para outro
 * @parametro	: p_obj_origem   : array. ( Requerido )
 				  p_obj_destino  : array. ( Requerido )
 * @retorno		: void 
 * @autor       : Jefferson Petilo( jefferson@netdom.com.br )
 * @versão		: 2, 21  de Junho de 2004
 */					
function fnc_copia_todos( p_obj_origem , p_obj_destino )
{
   for(var i = 0, l = p_obj_origem.options.length;i<l;i++)
	 fnc_adiciona_componente( p_obj_destino , p_obj_origem.options[ i ].text , p_obj_origem.options[ i ].value );
	  
   for(var i = p_obj_origem.options.length-1; i >-1; i-- )
	 fnc_deleta_componente( p_obj_origem , i );
}					

/**
* @objetivo	: Move componente de um Combo para outro
* @parametro	: p_obj_origem   : array. ( Requerido )
				  p_obj_destino  : array. ( Requerido )
* @retorno		: void 
* @autor        : Jefferson Petilo( jefferson@netdom.com.br )
* @versão		: 2, 21  de Junho de 2004
*/					
function fnc_adiciona_selecionado( p_obj_origem , p_obj_destino )
{
  for( var i = 0, l = p_obj_origem.options.length;i<l ; i++ )
	 if( p_obj_origem.options[ i ].selected )
		 fnc_adiciona_componente( p_obj_destino , p_obj_origem.options[ i ].text , p_obj_origem.options[ i ].value );

  for(var i = p_obj_origem.options.length-1;i>-1;i--)
	  if( p_obj_origem.options[ i ].selected  )
		   fnc_deleta_componente( p_obj_origem , i );
}

/**
 * @objetivo	: Move componente de um mesmo combo para cima 
 * @parametro	: p_combo    : array. ( Requerido )
 * @retorno		: void 
 * @autor       : Jefferson Petilo( jefferson@netdom.com.br )
 * @versão		: 2, 07  de Julho de 2004
 */					
function fnc_mover_cima( p_combo )
{
 for( i = 0; i < p_combo.options.length; i++ )
 {
   if( p_combo.options[ i ].selected ) 
   {
	 if( i != 0 && ! p_combo.options[ i-1 ].selected )
	 { 
		fnc_mudar_posicao( p_combo, i , i-1 );
		p_combo.options[ i-1 ].selected = true;
	 }
   }
  }
}

/**
 * @objetivo	: Move componente de um mesmo combo para baixo 
 * @parametro	: p_combo    : array. ( Requerido )
 * @retorno		: void 
 * @autor       : Jefferson Petilo( jefferson@netdom.com.br )
 * @versão		: 2, 07  de Julho de 2004
 */					
function fnc_mover_baixo( p_combo )
{
 for( i = p_combo.options.length -1; i >= 0; i-- )
 {
   if( p_combo.options[ i ].selected )
   { 
    if( i != ( p_combo.options.length - 1 ) && ! p_combo.options[ i+1 ].selected )
	 {
	  fnc_mudar_posicao( p_combo,  i , i+1 ); 
	  p_combo.options[ i + 1 ].selected = true;
	 }
   }
  }
}

/**
 * @objetivo	: Realiza a Reordenação dos Elementos dos Combos
 * @parametro	: p_combo    : array. ( Requerido )
 * @retorno		: void 
 * @autor       : Jefferson Petilo( jefferson@netdom.com.br )
 * @versão		: 2, 07  de Julho de 2004
 */					
function fnc_mudar_posicao( p_combo , i , j )
{ 
  var o 		      = p_combo.options;
  var i_selected 	  = o[ i ].selected;
  var j_selected 	  = o[ j ].selected;
  var temp 	   		  = new Option( o[ i ].text, o[ i ].value, o[ i ].defaultSelected, o[ i ].selected );
  var temp2	   		  = new Option( o[ j ].text, o[ j ].value, o[ j ].defaultSelected, o[ j ].selected );
	  o[ i ]     	  = temp2;
	  o[ j ] 	   	  = temp;
	  o[ i ].selected = j_selected;
	  o[ j ].selected = i_selected;
}
	 
// Security Lib 

/**
 * @objetivo	: Desabilita teclas nocivas ao assistente
 * @parametro	: sem parâmetros
 * @retorno		: void 
 * @autor       : Jefferson Petilo( jefferson@netdom.com.br )
 * @versão		: 1, 31 de Março  de  2004
 */					
function fnc_seguranca()
{
  document.onkeydown = function()
  { 
   	// caso seja pressionada a tecla control
	if( window.event.ctrlKey ) 
    {
	   switch( window.event.keyCode )
	   {	  
		   case  65 :  	// caso A ( select all )
		   case  69 :  	// caso E ( search )
		   case  70 :  	// caso F ( find )
		   case  72 :  	// caso H ( history )
		   case  73 :  	// caso I ( favorites )
		   case  78 :  	// caso N ( new window )
		   case  79 :  	// caso O ( open )
		   case  80 :  	// caso P ( print )
		   case  82 : 	// caso R ( refresh )
		   case  87 :  	// caso W ( close ) 
						 window.event.keyCode = 999; // remapeia tecla
		   break;    
		}
	// caso seja pressionada a tecla alt 		
	 } else if( window.event.altKey && window.event.keyCode == 115 ) {
		
  		window.event.keyCode = 999;    // alt + f4 
		
	 } else { 
	 
	    switch( window.event.keyCode ) // caso sejam pressionadas isoladamente algumas teclas
	    {	  
		   case  8   :  if( ( window.event.srcElement.type == 'text' || window.event.srcElement.type == 'password' || window.event.srcElement.type == 'textarea') )  break;	 // backspace
		   case  27  :  if( window.opener ) window.close();  break; //esc
		   case  112 : // f1
		   case  114 : // f3
		   case  116 : // f5
		   case  122 : // f11
					   return ( false ); 
		    break;   
	  	 }
 	  }
  }	
  // não mostra botão direito do mouse
  document.oncontextmenu = function(){ return false }

   // desabilita botão direito do mouse 
   if( document.layers )
   {
	  window.captureEvents( Event.MOUSEDOWN );
	  window.onmousedown  = function( e ){ if( e.target == document ) return ( false ); }
	  
   } else  {
		 
		 document.onmousedown   = function(){ return ( false );}
   }
}
// Misc Lib 
	
/**
 * @objetivo	: Inclui arquivo Javascript
 * @parametro	: p_campo     : objeto. ( Requerido )
 * @retorno		: void
 * @autor       : Jefferson Petilo( jefferson@netdom.com.br ) 
 * @versão		: 1, 01 de Junho de  2004
 */					
function fnc_include( p_nome_arquivo )
{
  document.writeln('<script type="text/javascript" src="'+p_nome_arquivo+'"></script>');
}   

/**
 * @objetivo	: swapBG
 * @parametro	: el     : objeto. ( Requerido )
 * @parametro	: bg1 	 : string. ( Requerido )
 * @parametro	: bg2  	 : string. ( Requerido )
 * @retorno		: void 
 * @autor       : Jefferson Petilo( jefferson@netdom.com.br )
 * @versão		: 1, 5 de Março  de  2004
 * @sintaxe 	: 
*/					
function swapBG( el, BG1, BG2 )
{
  el.style.backgroundColor = ( el.style.backgroundColor == BG1 ) ? BG2 : BG1;
}
/**
 * @objetivo	: Reordena cores da Célula de uma tabela com classificação ( tableSort )
 * @parametro	: p_id_tabela   : objeto. ( Requerido )
 * @retorno		: void 
 * @autor       : Jefferson Petilo( jefferson@netdom.com.br )
 * @versão		: 1, 30 de Agosto de  2004
*/					
function fnc_cor_tablesort( p_id_tabela )
{
 v_corpo   = document.getElementById( p_id_tabela ).getElementsByTagName('TBODY')[ 0 ];
	
 for ( i = 0; i < v_corpo.rows.length; i++ )
 {
	v_cor = v_corpo.rows[ i ].rowIndex;
	
	if ( v_cor % 2 == 1 )
	{
	  v_corpo.rows[ i ].style.background  = '#FFFFFF';
	  v_corpo.rows[ i ].title 	 	      = '#FFFFFF';
		
	} else {
	   v_corpo.rows[ i ].style.background = '#F1F1F1';
	   v_corpo.rows[ i ].title 		  	  = '#F1F1F1';
	}
  }
}	
   
/**
 * @objetivo	: Preenche gauge
 * @parametro	: p_barra     		: objeto. ( Requerido )
 * @parametro	: p_tabela  		: objeto. ( Requerido )
 * @parametro	: p_div  			: objeto. ( Requerido )
 * @parametro	: p_valor  			: objeto. ( Requerido )   
 * @retorno		: void 
 * @autor       : Jefferson Petilo( jefferson@netdom.com.br )
 * @versão		: 1, 5 de Março  de  2004
 */					
function fnc_preenche_gauge( p_barra , p_tabela, p_div , p_valor )
{
  if( p_valor > 0 )
  {
	if( p_div )  
		p_div.innerHTML = p_valor + '%';
		p_valor 	    = ( p_valor * 100 ) / p_barra.width;
		p_tabela.width  = p_valor + '%';
  }
}	
/**
 * @objetivo	: HighLightTR
 * @parametro	: cor_antiga     : string. ( Requerido )
 * @parametro	: cor_antiga 	 : string. ( Requerido )
 * @retorno		: void
 * @autor       : Jefferson Petilo ( jefferson@netdom.com.br )
 * @versão		: 1, 5 de Março  de  2004
*/					
function fnc_modifica_cor_linha( elemento ) 
{
elemento.parentNode.parentNode.style.backgroundColor = (elemento.parentNode.parentNode.style.backgroundColor != '#F1F1F1')? '#F1F1F1' : '';
}
/**
 * @objetivo	: Carrega imagens agilizando o carregamento da página
 * @parametro	: Sem parâmetros     : string. ( Requerido )
 * @retorno		: void
 * @autor       : Jefferson Petilo ( jefferson@netdom.com.br )
 * @versão		: 1, 30 de Novembro  de  2004
*/					
function fnc_carregar_imagens()
{
  var imagem  = [];
  for ( i = 0; i < fnc_carregar_imagens.arguments.length; i++ )
  {
	imagem[ i ] 	= new Image();
	imagem[ i ].src = fnc_carregar_imagens.arguments[ i ];
  }
}

/**
 * @objetivo	: Ao chegar no limite de caracteres do campo, avança para o próximo
 * @parametro	: p_campo_origem    : string ( Requerido )
 				  p_campo_destino	: string ( Requerido )
 * @retorno		: void
 * @autor       : Jefferson Petilo ( jefferson@netdom.com.br )
 * @versão		: 1, 20 de Dezembro de  2004
*/					
function fnc_tabnext( p_campo_origem , p_campo_destino )
{
  if ( p_campo_origem.getAttribute && p_campo_origem.value.length == p_campo_origem.getAttribute("maxlength") )
	   p_campo_destino.focus();
}
/**
 * @descritivo	: fnc_fecha_banner_suspenso
 * @parametro	: Sem parãmetros
 * @retorno		: void
 * @autor       : Jefferson Petilo ( jefferson@netdom.com.br )
 * @versão		: 1, 29 de Dezembro de  2004
*/					
fnc_fecha_banner_suspenso = function ()
{
  document.getElementById('banner_suspenso').style.visibility = "hidden";
}
/**
 * @descritivo	: fnc_mostrar_tooltip
 * @parametro	: p_id_elemento : String ( Requerido )
 * @retorno		: void
 * @autor       : Jefferson Petilo ( jefferson@netdom.com.br )
 * @versão		: 1, 29 de Dezembro de  2004
*/					
function fnc_mostrar_tooltip( p_id_elemento )
{
 document.getElementById( p_id_elemento ).style.visibility = "hidden";
}
/**
 * @descritivo	: fnc_ocultar_tooltip
 * @parametro	: p_id_elemento : String ( Requerido )
 * @retorno		: void
 * @autor       : Jefferson Petilo ( jefferson@netdom.com.br )
 * @versão		: 1, 29 de Dezembro de  2004
*/					
function fnc_ocultar_tooltip( p_id_elemento ) {
  document.getElementById( p_id_elemento ).style.visibility = "visible";
}

/**
 * @descritivo	: fnc_download
 * @parametro	: p_arquivo : String ( Requerido )
 * @retorno		: void
 * @autor       : Jefferson Petilo ( jefferson@netdom.com.br )
 * @versão		: 1, 29 de Dezembro de  2004
*/					

function fnc_download( p_arquivo )
{
  window.open( p_arquivo ,'visualizador','');
  /*
  w = window.open( p_arquivo ,'_blank','toolbar=0, location=0,directories=0,menuBar=0,status=1');
  w.resizeTo(screen.width-2,screen.height-2);
  w.moveTo(0,0);
 */
}

/**
 * @descritivo	: fnc_contar_caracteres
 * @parametro	: p_arquivo : String ( Requerido )
 * @retorno		: void
 * @autor       : Jefferson Petilo ( jefferson@netdom.com.br )
 * @versão		: 1, 29 de Dezembro de  2004
*/					

function fnc_contar_caracteres( p_campo, p_contador, p_max_char )
{
 if( p_campo.value.length > p_max_char )
 {
     p_campo.value     = p_campo.value.substr(0, p_max_char);
     p_contador.value = p_max_char - p_campo.value.length; 
 }
 else 
     p_contador.value = p_max_char - p_campo.value.length;
 
}

/**
 * @objetivo	: Formata qualquer campo com qualquer máscara
 * @parametro	: objForm
 				  strField
				  sMask
				  evtKeyPress
 * @retorno		: void
 * @autor       : Desconhecido
 * @versão		: 1, 20 de Dezembro de  2004
 * @sintaxe 	: onkeypress="return fnc_formata_campo(document.nome_form, 'nome_campo', '99999-999', event);"
 * @exemplos	: CEP -> 99.999-999 
 				  CPF -> 999.999.999-99 
				  CNPJ-> 99.999.999/9999-99 	  
				  C/C -> 999999-9
				  Tel -> (99) 9999-9999 
 */					
function fnc_formata_campo(objForm, strField, sMask, evtKeyPress)
{ 
  var i, nCount, sValue, fldLen, mskLen,bolMask, sCod, nTecla; 

 if(document.all) { // Internet Explorer 
   nTecla = evtKeyPress.keyCode; 
}  else if(document.layers) { // Nestcape 
   nTecla = evtKeyPress.which; 
 } 

 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( " ", "" ); 
 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) == "/")) 
   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; 
 } 
} 
