// Classe de Ajax
function GaJax_Comment () {
  var self = this ;
  var rReq = false ;
  var sUrl = null ;
  var sPrm = null ;

  self.setCallUrl = function (url) {
    this.sUrl = url ;
    this.sPrm = null ;
  }

  self.addParam = function (sParamName, sParamValue) {
    this.sPrm = this.sPrm + '&' + sParamName + '=' + encodeURI(sParamValue) ;
  }

  self.Request = function () {
    if (window.XMLHttpRequest) {
      rReq = new XMLHttpRequest() ;
      sMet = '' ;
    } else
    if (window.ActiveXObject) {
      rReq = new ActiveXObject("Microsoft.XMLHTTP") ;
      sMet = null ;
    }

    if (rReq) {
      rReq.onreadystatechange = function () {

        // Listagem dos dados quando finalizado
        if ((rReq.readyState == 4) && (rReq.status == 200)) {

            // Verifica Tipo de Requisição
            if (document.getElementById('page-method').value == 'select') {

              // Variaveis, pega os dados do feed array
              var dataArray = rReq.responseXML.getElementsByTagName("Comentario") ;
              var tableHTML = '' ;

              // contabiliza os elementos na de retorno do xml
              if (dataArray.length > 0) {

              // percorre o XML e recupera as informações
              for(var i = 0 ; i < dataArray.length ; i++) {
                var comments = dataArray[i] ;

                //contéudo dos campos no arquivo XML
                var AutorNome = comments.getElementsByTagName("AutorNome")[0].firstChild.nodeValue ;
                var AutorMail = comments.getElementsByTagName("AutorMail")[0].firstChild.nodeValue ;
                var DataEnvio = comments.getElementsByTagName("DataEnvio")[0].firstChild.nodeValue ;
                var CDATA_Msg = comments.getElementsByTagName("CDATA_Msg")[0].firstChild.nodeValue ;

                // Cria Tabela em HTML
                tableHTML += '<div id="comment">' ;
                tableHTML += "<strong>" + AutorNome + "</strong>" ;
                tableHTML += "<em>"     + DataEnvio + "</em>" ;
                tableHTML += "<span>"   + CDATA_Msg + "</span>" ;
                tableHTML += "</div>" ;
              }

              // Cria tabela em html
              document.getElementById("ListagemComentarios").innerHTML = tableHTML ;
            }
          } else
          if (document.getElementById('page-method').value == 'insert') {
            // Controle Visual
            ComentariosFormControl ('complete') ;
          }
        }
      }

      rReq.open("GET", this.sUrl + '?' + this.sPrm, true) ;
      rReq.send(sMet) ;
    }
  }
}

// Requisição Ajax
// Gerenciamento do Form
var GaJax_Comment ;
GaJax_Comment = new GaJax_Comment ;

// Listagem dos Comentarios
function ListarComentarios () {
  // Requisição Ajax
  // Gerenciamento do Form
  // Url de Chamada
  GaJax_Comment.setCallUrl ('modules.php') ;

  // Parametros
  GaJax_Comment.addParam ('name'       , 'actions') ;
  GaJax_Comment.addParam ('act'        , 'action-20') ;
  GaJax_Comment.addParam ('page-cod'   , sPageCod) ;
  GaJax_Comment.addParam ('page-method', 'select') ;

  // Definição do Parametro Simples
  document.getElementById('page-method').value = 'select' ;

  // Chamada
  GaJax_Comment.Request () ;
}

// Validação do Formulario
function formCheck () {
  if (document.getElementById('UsuarioNome').value == '') {
    alert('Informe seu nome.');
    return false;
  } else
  if (document.getElementById('UsuarioEmail').value == '') {
    alert('Infomorme seu email.');
    return false;
  } else
  if (document.getElementById('Mensagem').value == '') {
    alert('Escreva um comentário antes de enviar.');
    return false;
  } else {
    // Requisição Ajax
    // Gerenciamento do Form
    // Url de Chamada
    GaJax_Comment.setCallUrl ('modules.php') ;

    // Parametros
    GaJax_Comment.addParam ('name'        , 'actions') ;
    GaJax_Comment.addParam ('act'         , 'action-20') ;
    GaJax_Comment.addParam ('page-cod'    , sPageCod) ;
    GaJax_Comment.addParam ('page-method' , 'insert') ;
    GaJax_Comment.addParam ('UsuarioNome' , document.getElementById('UsuarioNome').value) ;
    GaJax_Comment.addParam ('UsuarioEmail', document.getElementById('UsuarioEmail').value) ;
    GaJax_Comment.addParam ('Mensagem'    , document.getElementById('Mensagem').value) ;

    // Definição do Parametro SImples
    document.getElementById('page-method').value = 'insert' ;

    // Controle Visual
    ComentariosFormControl ('start') ;

    // Chamada
    GaJax_Comment.Request () ;
  }
}

// Gerenciamento das Layers
function ComentariosFormControl (sCase) {
  switch (sCase) {
    case 'prepare' :
      document.getElementById('ComentariosForm').innerHTML = HtmlForm () ;
      break ;

    case 'start' :
      document.getElementById('ComentariosForm').innerHTML = HtmlAguarde () ;
      break ;

    case 'complete' :
      document.getElementById('ComentariosForm').innerHTML = HtmlConcluido () ;
      break ;

    case 'close' :
      document.getElementById('ComentariosForm').innerHTML = HtmlForm () ;
      break ;
  }
}

function HtmlForm () {
  html  = '' ;
  html += '<b>Deixe seus coment&aacute;rios</b>' ;
  html += '<label>Seu Nome:</label>' ;
  html += '<input type=text size="40" class="form_fields" name="UsuarioNome" id="UsuarioNome" />' ;
  html += '<label>Seu Email:</label>' ;
  html += '<input type="text" size="40" class="form_fields" name="UsuarioEmail" id="UsuarioEmail" />' ;
  html += '<label>Mensagem:</label>' ;
  html += '<textarea cols="30" class="form_fields" name="Mensagem" id="Mensagem" rows="3"></textarea>' ;
  html += '<label></label>' ;
  html += '<input name="submit" value="Enviar" id="btSubmit" type="submit" onclick="javascript:formCheck();" />' ;
  return (html) ;
}

function HtmlAguarde () {
  html  = '' ;
  html += '<div id="ComentariosTransicao">' ;
  html += '<p>' ;
  html += '<h2>Aguarde...</h2>' ;
  html += '<img src="images/ajax-loader.gif" />' ;
  html += '<br /><br />' ;
  html += '<span>estamos registrando seu comentário.</span>' ;
  html += '</p>' ;
  html += '</div>' ;
  return (html) ;
}

function HtmlConcluido () {
  // Atualizacao do Formulario
  ListarComentarios();

  // Htm dos Comentarios
  html  = '' ;
  html += '<div id="ComentariosTransicao">' ;
  html += '<p>' ;
  html += '<h2>Obrigado</h2>' ;
  html += '<br /><br />' ;
  html += '<span>seu comentário foi gravado com sucesso.</span>' ;
  html += '<br /><br />' ;
  html += '<a href="javascript:ComentariosFormControl(\'close\');">clique aqui para enviar outro comentário.</a>' ;
  html += '</p>' ;
  html += '</div>' ;
  return (html) ;
}