﻿/**
 *
 * Objeto literal Ajax. Documentacao completa disponivel em: 
 * http://code.google.com/p/jscomponentes/wiki/Ajax
 *
 * Ajax.js
 * http://jscomponentes.googlecode.com/svn/trunk/Ajax/js/Ajax/Ajax.js
 * @author: Edy Segura - edy@segura.pro.br
 *
 */
 
 
function createXMLHTTP()
		{
	  if (typeof XMLHttpRequest != "undefined") {
	    return new XMLHttpRequest();
	  } else if (window.ActiveXObject) {
	   var arrVersions = [ "MSXML2.XMLHttp.5.0",
	    "MSXML2.XMLHttp.4.0","MSXML2.XMLHttp.3.0",
	    "MSXML2.XMLHttp","Microsoft.XMLHttp"
	   ];
	   for (var i = 0; i < arrVersions.length; i++) {
	    try {
	      var oXmlHttp = new ActiveXObject(arrVersions[i]);
	      return oXmlHttp;
	    } catch (oError) {
	      //Do nothing
	    }
	   }
	  }
	  throw new Error("XMLHttp object could be created.");
		}
 

var Ajax = {

	loading: null,
	
	getXHR: function() {
		var httpRequest;
		
		//instanciando o objeto XMLHttpRequest
		try {
			httpRequest = new XMLHttpRequest();
		}
		catch(e1) {
			try {
				httpRequest = new ActiveXObject("Msxml2.XMLHTTP");
			}
			catch(e2) {
				try {
					httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
				}
				catch(e3) {
					httpRequest = false; 
				}
			}
		}
		
		return httpRequest;
	},
	
	
	createLoading: function() {
		var loading = document.createElement('p');
		
		loading.id = "ajax-loading";
		loading.className = "loading";
		loading.innerHTML = "Carregando...";
		document.body.appendChild(loading);
		
		Ajax.loading = loading;
	},
	
	
	removeLoading: function() {
		if(Ajax.loading) {
			Ajax.loading.parentNode.removeChild(Ajax.loading);
			Ajax.loading = null;
		}
	},
	

	addRequest: function(params) {
	},
	
	
	//old alias (deprecated)
	run: function(params) {
		Ajax.request(params);
	},
	

	request: function(params) {
		var httpRequest = Ajax.getXHR();
		var result = true;
		
		if(httpRequest) {
			var method = (params.method) ? params.method : "GET";
			var async  = (typeof params.async == 'boolean') ? params.async : true;
			if(params.loading) Ajax.createLoading();
			
			httpRequest.open(method, params.url, async);
			httpRequest.setRequestHeader("Cache-Control", "no-cache, must-revalidate");
			httpRequest.setRequestHeader("Pragma", "no-cache");
			
			if(method.toUpperCase() == "POST") {
				httpRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
			}
			
			if(params.response == "xml" && httpRequest.overrideMimeType) {
				httpRequest.overrideMimeType('text/xml');
			}
			
			httpRequest.onreadystatechange = function() {
				if(httpRequest.readyState == 4) {
					if(httpRequest.status == 200 || params.update) {
						
						if(params.callback) {
							params.callback(
								(params.response == "xml") ? httpRequest.responseXML : httpRequest.responseText, 
								(params.params) ? params.params : null
							);
						}
						
						if(params.loading) Ajax.removeLoading();
					}
					else {
						
						if(params.callerro) {
							params.callerro(
								httpRequest.status, 
								httpRequest.statusText, 
								(params.params) ? params.params : null
							);
						}
						else {
							var message = new String();
							
							message += "HTTP Status: " + httpRequest.status + "\n";
							message += "Message: ";
							message += (httpRequest.statusText) ? httpRequest.statusText : "Unknown";
							
							alert(message);
						}
						
						if(params.loading) Ajax.removeLoading();	
					}
				}
			};
			
			httpRequest.send((params.send) ? params.send : null);
			delete httpRequest;
		}
		else {
			throw new Error("Your browser does not support XMLHttpRequest");
			result = false;
		}
		
		return result;
	}

};

 function processadados()
 {
        var Ajax = createXMLHTTP();
        var url ="envia2.asp";
        
        // pegando os campos do formulário
        var nomeV = escape(document.getElementById('nome').value);
        var telefoneV = escape(document.getElementById('telefone').value);
        var aniversarioV = escape(document.getElementById('aniversario').value);		
        var emailV = escape(document.getElementById('email').value);
        var eventoV = escape(document.getElementById('evento').value);
        var dtV = escape(document.getElementById('dt').value);		
        var localV = escape(document.getElementById('local').value);		
        var horarioV = escape(document.getElementById('horario').value);		
        var pessoasV = escape(document.getElementById('pessoas').value);		
        var msgV = escape(document.getElementById('msg').value);		
         
        //parâmetros a serem enviados
        var params = "nome="+nomeV+"&telefone="+telefoneV+"&aniversario="+aniversarioV+"&email="+emailV+"&evento="+eventoV+"&Data="+dtV+"&Local="+localV+"&horario="+horarioV+"&pessoas="+pessoasV+"&msg="+msgV; 
         
        //envia para a página que fará o select do que foi digitado e responderá com o status da ação
        Ajax.open("post", url, true);
		
		//Limpa o formulário
		
		document.getElementById('nome').value = '';
        document.getElementById('telefone').value = '';
        document.getElementById('aniversario').value = '';		
        document.getElementById('email').value = '';
        document.getElementById('evento').value = '';
        document.getElementById('dt').value = '';		
        document.getElementById('local').value = '';		
        document.getElementById('horario').value = '';		
        document.getElementById('pessoas').value = '';		
        document.getElementById('msg').value = '';		
				
         
           // para solicitações utilizando o metodo post deve-se acrescentar este cabecalho HTTP,
           // mas não entendi se devo mesmo colocar o charset, pois na página CADASTRA.ASP tem o Response.Header 
           // que resolve o problema da acentuação
           Ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=iso-8859-1");

        // essa função é executada sempre que o estado do objeto muda (onreadystatechange)
        Ajax.onreadystatechange=function(){
        
        // condição que exibe a informação "Enviando os dados..." enquanto estiver carregando (1)
        if(Ajax.readyState == 1) { 
        divResposta.innerHTML = ' Enviando os dados...';}

        // quando retornar o valor (4) significa que o objeto ja completou a solicitacao
        if (Ajax.readyState==4){
          
        // exibe o texto gerado no arquivo cadastra.asp e colocado dentro da divResposta
        divResposta.innerHTML = Ajax.responseText;}}
        
        //envia os parametros setados acima
        Ajax.send(params);
 }
 
