//---------------------------------------------------------
// @function   janela
// @desc       Configura e abre uma janela no Browser
// @param      url       url a ser aberta na janela
// @param      wid       largura da nova janela
// @param      hei       altura da nova janela
// @param      posx      posição x de abertura da janela
// @param      posy      posição y de abertura da janela
// @param      tit       nome da janela
// @param      type      tipo da janela (definição abaixo)
//---------------------------------------------------------

function janela (url, wid, hei, posx, posy, tit, type, evt)
{
  var w = (wid > screen.width) ? screen.width : wid;
  var h = (hei > screen.height) ? screen.height : hei;
  var x = (posx != null && posx >= 0 && evt == null) ? posx : (evt != null) ? getFromSrcElement("x",evt) : getCenterPosition("x",w);
  var y = (posy != null && posy >= 0 && evt == null) ? posy : (evt != null) ? getFromSrcElement("y",evt) : getCenterPosition("y",h);
  switch(type) {
    // SEM NADA
    case 1 : str = ('toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=no,copyhistory=no,width=' + w + ',height=' + h + ',left=' + x + ',top=' + y);
             break;
    // SCROLLBARS
    case 2 : str = ('toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=no,copyhistory=no,width=' + w + ',height=' + h + ',left=' + x + ',top=' + y);
             break;
    // SCROLLBARS, STATUSBAR
    case 3 : str = ('toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=no,copyhistory=no,width=' + w + ',height=' + h + ',left=' + x + ',top=' + y);
             break;
    // SCROLLBARS, STATUSBAR, TOOLBAR
    case 4 : str = ('toolbar=yes,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=no,copyhistory=no,width=' + w + ',height=' + h + ',left=' + x + ',top=' + y);
             break;
  }
  window.open(url, tit, str);
}

//---------------------------------------------------------
// @function   getCenterPosition
// @desc       Retorna uma posição centralizada
// @param      axis      eixo a ser centralizado
// @param      ref       valor a ser usado como referência
// @returns    result    valor centralizado
//---------------------------------------------------------
function getCenterPosition(axis,ref) {
  var result = 0;
  switch(axis) {
    case "x" : result = parseInt((screen.width-ref)/2);
               break;
    case "y" : result = parseInt((screen.height-ref)/2);
               break;
  }
  return result;
}

//---------------------------------------------------------
// @function   getFromSrcElement
// @desc       Retorna uma posição a partir de um evento
// @obs        Exibe a janela ao lado do objeto clicado
//             com um offset de 5 pixels para a direita
// @param      axis      eixo solicitado
// @param      evt       evento ocorrido na página
// @returns    result    valor calculado para o eixo 'axis'
//---------------------------------------------------------
function getFromSrcElement(axis,evt) {
  var result = 0;
  var ie = document.all;
  var ns = (document.layers || document.getElementById) && !document.all;
  switch(axis) {
    case "x" : if (ie) {
                 result = evt.screenX-evt.offsetX+evt.srcElement.width+5;
               }
               else if (ns) {
                 result = evt.target.x+evt.target.width+5;
               }
               break;
    case "y" : if (ie) {
                 result = evt.screenY-evt.offsetY;
               }
               else if (ns) {
                 result = evt.screenY-5;
               }
               break;
  }
  return result;
}
