//### events.js
function addEvent(obj, evType, fn){
	if(obj.addEventListener)obj.addEventListener(evType,fn,true)
	if(obj.attachEvent)obj.attachEvent("on"+evType,fn)
}

function getSource(e){
	if(typeof e=='undefined')var e=window.event;
	var source=typeof e.target!='undefined'?e.target:typeof e.srcElement!='undefined'?e.srcElement:true
	if(source.nodeType == 3)source=source.parentNode;
	return source
}


//### xmlhttp.js
try{
    xmlhttp = new XMLHttpRequest();
}catch(ee){
    try{
        xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
    }catch(e){
        try{
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        }catch(E){
            xmlhttp = false;
        }
    }
}

// ### AJAX ###
var varEnd = 2;
var inicio = 0;
function Atrasa(){
	//var data = new Date();
	//tempo.innerHTML = data;
	//alert("ola");
	//inicio += 1;
	//if (inicio <= varEnd){setTimeout("Atrasa()",1000)}	
}

function createXMLHttpRequest() {
	/*
		Interface genérica para acesso ao conector remoto.
	*/
    try{ return new ActiveXObject("Msxml2.XMLHTTP"); }catch(e){}
    try{ return new ActiveXObject("Microsoft.XMLHTTP"); }catch(e){}
    try{ return new XMLHttpRequest(); }catch(e){}
    alert("XMLHttpRequest not supported");
    return null;
}

// contem objeto para solicitar recursos remotos.
var xhReq = createXMLHttpRequest();

function xhSend(url,valor){
    
	/*
		envia a requisicao para o servidor, e tudo o que eh
		retornado eh passado a funcao do_readyStateChange
	*/
	var form = document.getElementById('formulario');
	var form_string = get(form);
	
	if (valor == 11){            
        url = unescape(url);
        //alert("depois = " + url);
	} 
	
	xhReq.open("get",url,true);
	xhReq.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
	//xhReq.setRequestHeader('Content-Lenght',form_string.lenght);
	
	if (valor == 1){
        xhReq.onreadystatechange = do_SystemLogin;
	} else if (valor == 101){
        xhReq.onreadystatechange = do_ajaxAction;
    } else if (valor == 102){
        xhReq.onreadystatechange = do_Execute;
    } else if (valor == 103){
        xhReq.onreadystatechange = do_carregaResultado;
    } else if (valor == 104){
		xhReq.onreadystatechange = do_carregaResultadoExtra;
	} else if (valor == 105){
		xhReq.onreadystatechange = do_executaRefresh;
	}    
    xhReq.send(form_string);
}

//###########
//### 001 ###

function do_SystemLogin(){

	if(xhReq.readyState!=4){return;}
    
    var tmp = "", dados = "";
    dados = xhReq.responseText;
    array = dados.split("|");

	if (array[0] == "1"){
		location.href = array[1];
	} else {
		document.getElementById(array[3]).innerHTML = array[1];
	}

}

//###########
//### 101 ###

function do_ajaxAction(){

	if(xhReq.readyState!=4){return;}
    
    var tmp = "", dados = "";
    dados = xhReq.responseText;
    array = dados.split("|");

	//alert("\n0="+array[0]+"\n1="+array[1]+"\n2="+array[2]+"\n3="+array[3]);
	if (array[0] == "1"){
	    //location.href = document.formulario.varRefresh.value;
		//                     ( DIV ID )           = CONTEUDO
		document.getElementById(array[3]).innerHTML = array[1];
	} 		
}

//###########
//### 102 ###

function do_Execute(){
	if(xhReq.readyState!=4){return;}
    
    var tmp = "", dados = "", total;
    dados = xhReq.responseText;
    array = dados.split("|");
    
    //alert(array[0]);
}

//###########
//### 103 ###

function do_carregaResultado(){
	if(xhReq.readyState!=4){return;}
    
    var tmp = "", dados = "", total;
    dados = xhReq.responseText;
    array = dados.split("|");    
    
    if (array[0] == "1"){
	    document.getElementById(array[3]).innerHTML = array[1];	    
	    document.getElementById(array[3]).style.display = 'inline';
	}
}

//###########
//### 104 ###

function do_carregaResultadoExtra(){
	if(xhReq.readyState!=4){return;}
    
    var tmp = "", dados = "", total;
    dados = xhReq.responseText;
    array = dados.split("|");

	//alert("array[0]="+array[0]+"\narray[1]="+array[1]+"\narray[2]="+array[2]+"\narray[3]="+array[3]);
    
    if (array[0] == "1"){
	    document.getElementById(array[3]).innerHTML = array[1];	    
	    document.getElementById(array[2]).style.display = 'inline';
	}
}


//###########
//### 105 ###

function do_executaRefresh(){
	if(xhReq.readyState!=4){return;}
    
    var tmp = "", dados = "", total;
    dados = xhReq.responseText;
    array = dados.split("|");
    
	//alert(array[0]);

    if (array[0] == "1"){
	    alert(array[1]);
		location.reload();
	}
}

//#######################################################################

function get(obj) {
    // come from: http://www.captain.at/howto-ajax-form-post-get.php
    var getstr = "";
    for (i=0; i<obj.childNodes.length; i++) {
        if (obj.childNodes[i].tagName == "INPUT") {
		    if (obj.childNodes[i].type == "text") {
		        getstr += obj.childNodes[i].name + "=" + obj.childNodes[i].value + "&";
		    }
		    if (obj.childNodes[i].type == "checkbox") {
		        if (obj.childNodes[i].checked) {
			        getstr += obj.childNodes[i].name + "=" + obj.childNodes[i].value + "&";
		        } else {
                    getstr += obj.childNodes[i].name + "=&";
		        }
		    }
		    if (obj.childNodes[i].type == "radio") {
                if (obj.childNodes[i].checked) {
			        getstr += obj.childNodes[i].name + "=" + obj.childNodes[i].value + "&";
		        }
            }
	    }   
	    if (obj.childNodes[i].tagName == "SELECT") {
		    var sel = obj.childNodes[i];
		    getstr += sel.name + "=" + sel.options[sel.selectedIndex].value + "&";
	    }    	 
    }
     return getstr;
}
