// Abre janelas de acordo com o tipo de anuncio
function abrir_enquete (url_janela){
    window.open(url_janela,"anuncio","width=240, height=240, scrollbars=no");
}


function include(id, url, metodo) {
/*
 id     -> Id do objeto a ser manipulado
 url    -> Url que sera chamada
 metodo -> GET ou POST
*/
    // Mozilla
    if (window.XMLHttpRequest)
        var req = new XMLHttpRequest();
    // IE
    else if (window.ActiveXObject)
        var req = new ActiveXObject("Microsoft.XMLHTTP")
    else
        alert('Seu navegador não suporta todos os recursos desta página');

    var conteudo = document.getElementById(id);

    if (req) {
        conteudo.innerHTML = "<p>Carregando...</p>";
        req.onreadystatechange = function() {
            if (req.readyState == 4 && req.status == 200) {
                conteudo.innerHTML = req.responseText;
            }
        };
        req.open(metodo, url, true);
    /*    req.open('POST', 'scripturl.cgi'); // Alguns scripts "server-side" precisam do Content-Type:
        req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
        req.send('var1=data1&var2=data2');
    */
        req.send(null);
    }
}

function mostrar_esconder(obj_id_mostrar, obj_id_esconder){
    mostrar(obj_id_mostrar);
    esconder(obj_id_esconder);
}

function mostrar(obj_id){
    document.getElementById(obj_id).style.display = 'block';
	document.getElementById("conteudo").style.opacity='0.45';
}

function esconder(obj_id){
    document.getElementById(obj_id).style.display = 'none';
	document.getElementById("conteudo").style.opacity='none';
}


function validaCadastroComunicador() {
    var elem;
    var errs=0;
    // execute all element validations in reverse order, so focus gets
    // set to the first one in error.
    if (!validatePresent(document.forms.adicionar.nome,  'inf_nome'))        errs += 1;

    if (errs>=1)
        alert('Existem campos que precisam ser corrigidos antes de serem salvos');
    else
        document.adicionar.submit();
};


function validaCadastroAnuncio() {
    var elem;
    var errs=0;
    // execute all element validations in reverse order, so focus gets
    // set to the first one in error.
    if (!validatePresent(document.forms.adicionar.inicio,  'inf_inicio'))        errs += 1;
    if (!validatePresent(document.forms.adicionar.fim,  'inf_fim'))        errs += 1;
    if (!validatePresent(document.forms.adicionar.titulo,  'inf_titulo'))        errs += 1;
    if (!validatePresent(document.forms.adicionar.texto,  'inf_texto'))        errs += 1;
    if (!validatePresent(document.forms.adicionar.endereco,   'inf_endereco')) errs += 1;
    if (!validatePresent(document.forms.adicionar.fone1, 'inf_fone1')) errs += 1;
    //if (!validatePresent(document.forms.adicionar.categoria,   'inf_categoria')) errs += 1;

    if (errs>=1)
        alert('Existem campos que precisam ser corrigidos antes de serem salvos');
    else
        document.adicionar.submit();
};


///////////////////////////////////////////////////////////////////////////////////////////////////

var nbsp = 160;    // non-breaking space char
var node_text = 3; // DOM text node-type
var emptyString = /^\s*$/
var glb_vfld;      // retain vfld for timer thread

// -----------------------------------------
//                  trim
// Trim leading/trailing whitespace off string
// -----------------------------------------

function trim(str)
{
  return str.replace(/^\s+|\s+$/g, '')
};


// -----------------------------------------
//                  setfocus
// Delayed focus setting to get around IE bug
// -----------------------------------------

function setFocusDelayed()
{
  glb_vfld.focus()
}

function setfocus(vfld)
{
  // save vfld in global variable so value retained when routine exits
  glb_vfld = vfld;
  setTimeout( 'setFocusDelayed()', 100 );
}


// -----------------------------------------
//                  msg
// Display warn/error message in HTML element
// commonCheck routine must have previously been called
// -----------------------------------------

function msg(fld,     // id of element to display message in
             msgtype, // class to give element ("warn" or "error")
             message) // string to display
{
  // setting an empty string can give problems if later set to a
  // non-empty string, so ensure a space present. (For Mozilla and Opera one could
  // simply use a space, but IE demands something more, like a non-breaking space.)
  var dispmessage;
  if (emptyString.test(message))
    dispmessage = String.fromCharCode(nbsp);
  else
    dispmessage = message;

  var elem = document.getElementById(fld);
  elem.firstChild.nodeValue = dispmessage;

  elem.className = msgtype;   // set the CSS class to adjust appearance of message
};

// -----------------------------------------
//            commonCheck
// Common code for all validation routines to:
// (a) check for older / less-equipped browsers
// (b) check if empty fields are required
// Returns true (validation passed),
//         false (validation failed) or
//         proceed (don't know yet)
// -----------------------------------------

var proceed = 2;

function commonCheck    (vfld,   // element to be validated
                         ifld,   // id of element to receive info/error msg
                         reqd)   // true if required
{
  if (!document.getElementById)
    return true;  // not available on this browser - leave validation to the server
  var elem = document.getElementById(ifld);
  if (!elem.firstChild)
    return true;  // not available on this browser
  if (elem.firstChild.nodeType != node_text)
    return true;  // ifld is wrong type of node

  if (emptyString.test(vfld.value)) {
    if (reqd) {
      msg (ifld, "error", "ERRO: campo obrigatorio");
      setfocus(vfld);
      return false;
    }
    else {
      msg (ifld, "warn", "");   // OK
      return true;
    }
  }
  return proceed;
}

// -----------------------------------------
//            validatePresent
// Validate if something has been entered
// Returns true if so
// -----------------------------------------

function validatePresent(vfld,   // element to be validated
                         ifld )  // id of element to receive info/error msg
{
  var stat = commonCheck (vfld, ifld, true);
  if (stat != proceed) return stat;

  msg (ifld, "warn", "");
  return true;
};

// -----------------------------------------
//               validateEmail
// Validate if e-mail address
// Returns true if so (and also if could not be executed because of old browser)
// -----------------------------------------

function validateEmail  (vfld,   // element to be validated
                         ifld,   // id of element to receive info/error msg
                         reqd)   // true if required
{
  var stat = commonCheck (vfld, ifld, reqd);
  if (stat != proceed) return stat;

  var tfld = trim(vfld.value);  // value of field with whitespace trimmed off
  var email = /^[^@]+@[^@.]+\.[^@]*\w\w$/
  if (!email.test(tfld)) {
    msg (ifld, "error", "ERRO: e-mail invalido");
    setfocus(vfld);
    return false;
  }

  var email2 = /^[A-Za-z][\w.-]+@\w[\w.-]+\.[\w.-]*[A-Za-z][A-Za-z]$/
  if (!email2.test(tfld))
    msg (ifld, "warn", "Unusual e-mail address - check if correct");
  else
    msg (ifld, "warn", "");
  return true;
};


// -----------------------------------------
//            validateTelnr
// Validate telephone number
// Returns true if so (and also if could not be executed because of old browser)
// Permits spaces, hyphens, brackets and leading +
// -----------------------------------------

function validateTelnr  (vfld,   // element to be validated
                         ifld,   // id of element to receive info/error msg
                         reqd)   // true if required
{
  var stat = commonCheck (vfld, ifld, reqd);
  if (stat != proceed) return stat;

  var tfld = trim(vfld.value);  // value of field with whitespace trimmed off
  var telnr = /^\+?[0-9 ()-]+[0-9]$/
  if (!telnr.test(tfld)) {
    msg (ifld, "error", "ERROR: telefone invalido. Sao permitidos, espacos,  (), - e numeros");
    setfocus(vfld);
    return false;
  }

  var numdigits = 0;
  for (var j=0; j<tfld.length; j++)
    if (tfld.charAt(j)>='0' && tfld.charAt(j)<='9') numdigits++;

  if (numdigits<8) {
    msg (ifld, "error", "ERRO: " + numdigits + " digitos eh muito pouco");
    setfocus(vfld);
    return false;
  }

  if (numdigits>14)
    msg (ifld, "warn", numdigits + " digitos? Telefone invalido.");
  else {
    if (numdigits<10)
      msg (ifld, "warn", "Only " + numdigits + " digitos? - Telefone invalido");
    else
      msg (ifld, "warn", "");
  }
  return true;
};

// -----------------------------------------
//             validateAge
// Validate person's age
// Returns true if OK
// -----------------------------------------

function validateAge    (vfld,   // element to be validated
                         ifld,   // id of element to receive info/error msg
                         reqd)   // true if required
{
  var stat = commonCheck (vfld, ifld, reqd);
  if (stat != proceed) return stat;

  var tfld = trim(vfld.value);
  var ageRE = /^[0-9]{1,3}$/
  if (!ageRE.test(tfld)) {
    msg (ifld, "error", "ERRO: Idade invalida ");
    setfocus(vfld);
    return false;
  }

  if (tfld>=200) {
    msg (ifld, "error", "ERRO: Idade invalida");
    setfocus(vfld);
    return false;
  }

  if (tfld>110) msg (ifld, "warn", "Mais velho que 110 anos? Idade invalida.");
  else {
    if (tfld<17) msg (ifld, "warn", "Muito novinho. Idade nao permitida");
    else        msg (ifld, "warn", "");
  }
  return true;
};

