	/*	
		----------------------------- Ajax Functions ------------------------------------
		readyState codes:
				
		0 = uninitialized
		1 = loading
		2 = loaded
		3 = interactive
		4 = complete	
		
		status codes:
		O status 200 siginifica OK, ou seja, a requisição foi sucedida.
		Mais informações: http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
		
	*/
	
	var READY_STATE_UNINITIALIZED 	= 0;
	var READY_STATE_LOADING 		= 1;
	var READY_STATE_LOADED 			= 2;
	var READY_STATE_INTERACTIVE 	= 3;
	var READY_STATE_COMPLETE 		= 4;
	
	var STATUS_SUCCESSFUL = 200;
	
	var IE = document.all?true:false	
	
	var ajax = null;
	
	function doAjaxPost(method,url,isAsynchronous,myFunction,args, encoding) {
	    if (window.XMLHttpRequest) {
	        ajax = new XMLHttpRequest();
	    } else if (window.ActiveXObject) {
	        try {
				ajax = new ActiveXObject("Msxml2.XMLHTTP");
		    } catch (e) {
				try {
				    ajax = new ActiveXObject("Microsoft.XMLHTTP");
				} catch (e) {}
		    }	               
	    }		    
	    if(ajax != null){
	    	if(myFunction!=null && IE ){
	    		ajax.onreadystatechange = myFunction;
	    	}else if(myFunction!=null && !IE ){
				ajax.onload = ajax.onerror = ajax.onabort = myFunction;				
			}
			
	        ajax.open(method, url, isAsynchronous);

			if(encoding != null) {
			    ajax.setRequestHeader("Cache-Control", "no-store, no-cache, must-revalidate");
		  		ajax.setRequestHeader("Cache-Control", "post-check=0, pre-check=0");
		  		ajax.setRequestHeader("Pragma", "no-cache");
				ajax.setRequestHeader('encoding', encoding);
				ajax.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=' + encoding );
			} else {
				ajax.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
			}
			
        	ajax.send(args);
			
	    }else{
	    	alert('Error: Cannot create an XMLHTTP instance');
	    } 
	}	
	
	function isAjaxResponseOk(){
		var response = false;	
		if(ajax.readyState == READY_STATE_COMPLETE){
			if(ajax.status == STATUS_SUCCESSFUL){
				response = true;
			}
		}				
		return response;
	}
	
	// adiciona novos elementos num select
	function appendToSelect(selectId, value, content,index) {
		opt = new Option(content,value,false,false);
	    selectId[index] = opt;
	}		
	
	// limpa lista de elementos
	function clearSelect(selectId) {
	    var select = document.getElementById(selectId);
	    while (select.length > 0) {
	        select.remove(0);
	    }
	}
	