
var cache = {}

function getCachedElt( eltOrId ) {

   if ( 'object' == typeof eltOrId )
      return eltOrId

   var result
   result = cache[ eltOrId ]

   if ( !result) {
      cache[ eltOrId ] = document.getElementById( eltOrId )
      result = cache[ eltOrId ]
   }
   return result
}

function showMenu( eltOrId, addToLeft, addToTop ) {
   var elt = getCachedElt( eltOrId )
   positionMenu( elt, addToLeft, addToTop )
   hideComboBox( elt)
   elt.style.visibility = "visible"
}

function hideMenu( eltOrId ) {
   var elt = getCachedElt( eltOrId )
   elt = getCachedElt( elt )
   showComboBox( elt)
   elt.style.visibility = "hidden"
}

function menuItem(n, img) {
   n.src = img
}

function menuSubItem(n, color) {
   n.style.fontColor = color
}

function onKeyPress( event ) {
   if ( document.all ) {
      var keyCode = window.event.keyCode
   } else {
      var keyCode = event.which
   }
   if ( keyCode == 13 ) {
      return true
   }
}


function positionMenu( elt, addToLeft, addToTop ) {

   if (!addToTop)
      addToTop = 0

   if (!addToLeft)
      addToLeft = 0

   var iMn        = getCachedElt( elt.getAttribute('itemMenuId') )
   elt.style.top  = getTopNode( iMn )  + iMn.offsetHeight + addToTop
   elt.style.left = getLeftNode( iMn ) + addToLeft
}

function getTopNode( node ) {
   var result = node.offsetTop
   while ( node.offsetParent ) {
      result += node.offsetParent.offsetTop
      node    = node.offsetParent
   }

   return result
}

function getLeftNode( node ) {
   var result = node.offsetLeft
   while ( node.offsetParent ) {
      result += node.offsetParent.offsetLeft
      node    = node.offsetParent
   }
   return result
}

// Verifica se existem selects no caminho do elemento div/refElt para ocultar
function hideComboBox( refEltId ) {
   var refElt     = getCachedElt( refEltId)
   var refEltTop  = getTopNode( refElt )
   var refEltLeft = getLeftNode( refElt )
   //
   var elts = document.getElementsByTagName('SELECT')
   for ( var i = elts.length - 1; i >= 0; --i ) {
      var elt     = elts[i]
      var eltTop  = getTopNode( elt )
      var eltLeft = getLeftNode( elt )

      if ( refEltLeft < ( eltLeft + elt.offsetWidth ) && ( refEltTop + refElt.offsetHeight ) > eltTop ) {
         elt.style.visibility = 'hidden'
      }
   }
}

function showComboBox( refEltId ) {
   var elts   = document.getElementsByTagName('SELECT')
   var refElt = getCachedElt( refEltId)
   for ( var i = elts.length - 1; i >= 0; --i ) {
      elts[i].style.visibility = 'visible'
   }
}

// -----------------------------------------------------------------------------

function validaPalavra( palavra ) {
   if ( palavra.length < 4 || palavra == "    " ) {
      try {
         stringToInteger( palavra)
      } catch (e) {
         // Se deu exceção é porque PALAVRA contem string a pesquisar.
         alert( "A palavra digitada deve ter no mínimo 4 letras.")
         return false
      }
   }
   return true
}

function validaSubmit( form, ipt ) {
   var palavras = ipt.value
   if ( palavras == "") {
      validaPalavra( palavras)
   } else {
      while ( palavras != "" ) {
         i = palavras.indexOf(" e ")
         if ( i < 0 ) {
            i = palavras.indexOf(" E ")
         }
         if ( i < 0 ) {
            if ( ! validaPalavra( palavras) ) {
               return false
            }
            palavras = ""
         } else {
            if ( ! validaPalavra( palavras.substr( 0, i)) ) {
               return false
            }
            palavras = palavras.substr( i+3)
         }
      }
      var aux = form.action.split(';')
      location.href =  aux[0] + '&' + ipt.name + '=' + ipt.value + ( aux[1] ? ';' + aux[1] : '' )
   }
}

function openPopUp( url, width, height) {

   var pWin = window.open( url,'Win','toolbar=0,location=0,directories=0,status=1,menubar=1, scrollbars=1 ,resizable=1,width=' + width + ',height=' + height );

   // Evita erro em navegadores com bloqueador de poup-ups
   if ( pWin && pWin.focus )
      pWin.focus()

}

function validaNome( vNome ) {
   try {
      if ( vNome.value) {
         vNome.value = validateString( vNome.value, 'string', 100, 8 )
      }
   } catch ( e ) {
      vNome.focus();
      vNome.select();
      alert( e.message );
   }
}

function validaMail( vMail ) {
   try {
      if ( vMail.value ) {
         vMail.value = validateString( vMail.value, 'email' )
      }
   } catch ( e ) {
      vMail.focus();
      vMail.select();
      alert( e.message );
   }
}

function validaData( vData ) {
   try {
      if ( vData.value ) {
         vData.value = dateToString( validateString( vData.value, 'date' ) )
      }
   } catch ( e ) {
      vData.focus();
      vData.select();
      alert( e.message );
   }
}

function validaTime( vTime ) {
   try {
      if ( vTime.value ) {
         vTime.value = horaValida( vTime.value )
      }
   } catch ( e ) {
      vTime.focus();
      vTime.select();
      alert( e.message );
   }
}

function validaCep( vCep ) {
   try {
      if ( vCep.value ) {
         vCep.value = validateString( vCep.value, 'cep' )
      }
   } catch ( e ) {
      vCep.focus();
      vCep.select();
      alert( e.message );
   }
}

function validaFone( vFone ) {
   try {
      if ( vFone.value != "" ) {
         vFone.value = validateString( vFone.value, "integer")
      }
   } catch ( e ) {
      vFone.focus();
      vFone.select();
      alert( e.message );
   }
}

function focoPesquisa( field ) {
   if ( field.value == 'Nome dos Noivos' ) {
      field.value = ''
   }
}

function blurPesquisa( field ) {
   if ( field.value == '' ) {
      field.value = 'Nome dos Noivos'
   }
}

// Criado por Rodrigo para mudar o campo de pesquisa para "Digite o nome" - 30/06/2005
function focoPesquisaLista( field ) {
   if ( field.value == 'Digite o Nome' ) {
      field.value = ''
   }
}

function blurPesquisaLista( field ) {
   if ( field.value == '' ) {
      field.value = 'Digite o Nome'
   }
}
// Fim da alteração Rodrigo.

function getBrowserTop(element) {
   var offsetTop = element.offsetTop
   while ( element.offsetParent.nodeName.compare( "body" ) != 0 ) {
      offsetTop += element.offsetParent.offsetTop
      element      = element.offsetParent
   }
   return offsetTop
}

function getBrowserLeft( element ) {
   var offsetLeft = element.offsetLeft
   while ( element.offsetParent.nodeName.compare( "body" ) != 0 ) {
      offsetLeft += element.offsetParent.offsetLeft
      element       = element.offsetParent
   }
   return offsetLeft
}

/*function validaCpf( vCpf ) {
   if ( vCpf.value ) {
      try {
         if ( vCpf.value == "000.000.000-00" ||
              vCpf.value == "00.000.000/0000-00" ||
              vCpf.value == "111.111.111-11" ||
              vCpf.value == "11.111.111/1111-11"
            ) {
            alert( "CPF zerado! Favor digitar CPF correto.")
         }
      } catch ( e ) {
         alert( e.message )
      }
   }//if
}//validaCpf*/
