/** 
	@author - Fábio Miranda Costa <fabiomcosta@gmail.com>
	@version - 0.6
	Conjunto de funções que fazem praticamente tudo relacionado a ajax.
*/

var xmlHttp;
var id;

function callAjax(url,idObj,selectList,method,nForm){
	//faz com que a função tenha o method como uma variavel opcional
	if (typeof nForm == "undefined") nForm = 0;
	if (typeof method == "undefined") method = "GET";
	xmlHttp=createXMLHttp();
	id = idObj;
	if (xmlHttp==null){
		alert ("Browser does not support HTTP Request");
		return
	}
	//aqui é paz
	
	url += "?id_uf="+selectList.options[selectList.selectedIndex].value;
		
		

	if (method == "GET"){
		xmlHttp.onreadystatechange=stateChanged;
		xmlHttp.open( method , url , true);
		xmlHttp.send(null);
	}
	//aqui é que mora o perigo
	else{
		var params = getFormElements(nForm);
		alert(params);
        xmlHttp.onreadystatechange = stateChanged;
        xmlHttp.open(method, url , true);
        xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
        xmlHttp.setRequestHeader("Cache-Control", "no-store, no-cache, must-revalidate");
        xmlHttp.setRequestHeader("Cache-Control", "post-check=0, pre-check=0");
        xmlHttp.setRequestHeader("Pragma", "no-cache");
        xmlHttp.send(params);
    }   
}


function getFormElements(nForm){
	var tamanho = document.forms[nForm].length;
	var formItems = document.forms[nForm].elements;
	var vars="";
    for (var i = 0 ; i < tamanho ; i++){
		if( formItems[i].type == "text" || formItems[i].type == "password" || formItems[i].type == "textarea" || formItems[i].type == "hidden" ){
			if( i!=0 )
				vars+="&";
			vars+=formItems[i].name+"="+formItems[i].value;
		}
		else if(formItems[i].type == "radio" || formItems[i].type == "checkbox"){
			if(formItems[i].checked == true){
				if( i!=0 )
					vars+="&";
				vars+=formItems[i].name+"="+formItems[i].value;
			}
		}
	}
	return vars;
}

function stateChanged() {
	if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete"){
		select_innerHTML(document.getElementById(id),xmlHttp.responseText);
		//document.getElementById(id).innerHTML=xmlHttp.responseText;
	} 
} 

function createXMLHttp() {
    if (typeof XMLHttpRequest != "undefined") {
        return new XMLHttpRequest();
    } else if (window.ActiveXObject) {
      var aVersions = [ "MSXML2.XMLHttp.5.0",
        "MSXML2.XMLHttp.4.0","MSXML2.XMLHttp.3.0",
        "MSXML2.XMLHttp","Microsoft.XMLHttp"
      ];

      for (var i = 0; i < aVersions.length; i++) {
        try {
            var oXmlHttp = new ActiveXObject(aVersions[i]);
            return oXmlHttp;
        } catch (oError) {
            //Do nothing
        }
      }
    }
    throw new Error("XMLHttp object could be created.");
}


function getAjaxObject(){
	var objXMLHttp=null
	try{
		objXMLHttp=new ActiveXObject("Msxml2.XMLHTTP")
	}
	catch(e){
 		try{
 			objXMLHttp=new ActiveXObject("Microsoft.XMLHTTP")
 		}
 		catch(e){}
	}
	if (objXMLHttp==null){
		objXMLHttp=new XMLHttpRequest();
		if (objXMLHttp.overrideMimeType){
	    	objXMLHttp.overrideMimeType('text/xml');
	    }
	}
	return objXMLHttp;
}
function select_innerHTML(objeto,innerHTML){
/******
* select_innerHTML - altera o innerHTML de um select independente se é FF ou IE
* Corrige o problema de não ser possível usar o innerHTML no IE corretamente
* Veja o problema em: http://support.microsoft.com/default.aspx?scid=kb;en-us;276228
* Use a vontade mas coloque meu nome nos créditos. Dúvidas, me mande um email.
* Versão: 1.0 - 06/04/2006
* Autor: Micox - Náiron José C. Guimarães - micoxjcg@yahoo.com.br
* Parametros:
* objeto(tipo object): o select a ser alterado
* innerHTML(tipo string): o novo valor do innerHTML
*******/
    objeto.innerHTML = ""
    var selTemp = document.createElement("micoxselect")
    var opt;
    selTemp.id="micoxselect1"
    document.body.appendChild(selTemp)
    selTemp = document.getElementById("micoxselect1")
    selTemp.style.display="none"
    if(innerHTML.toLowerCase().indexOf("<option")<0){//se não é option eu converto
        innerHTML = "<option>" + innerHTML + "</option>"
    }
    innerHTML = innerHTML.replace(/<option/g,"<span").replace(/<\/option/g,"</span")
    selTemp.innerHTML = innerHTML
    for(var i=0;i<selTemp.childNodes.length;i++){
        if(selTemp.childNodes[i].tagName){
            opt = document.createElement("OPTION")
            for(var j=0;j<selTemp.childNodes[i].attributes.length;j++){
                opt.setAttributeNode(selTemp.childNodes[i].attributes[j].cloneNode(true))
            }
            opt.value = selTemp.childNodes[i].getAttribute("value")
            opt.text = selTemp.childNodes[i].innerHTML
            if(document.all){ //IEca
                objeto.add(opt)
            }else{
                objeto.appendChild(opt)
            }                    
        }    
    }
    document.body.removeChild(selTemp)
    selTemp = null
}