var AjaxControle = {
	cont : 0,
	cf   : 0,
	enviar: function (form){
		var oForm   = form;
		var sBody   = AjaxControle.getRequestBody(oForm);
		var xmlhttp = AjaxControle.Ajax_Open();
		xmlhttp.open("POST", form.action, true);
		xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		xmlhttp.onreadystatechange = function () {
			if (xmlhttp.readyState == 4) {
				if (xmlhttp.status == 200) {
					retorno = xmlhttp.responseText
					AjaxControle.valida_retorno(retorno);
					recebe_dados(retorno);
				}
			}
		}
		xmlhttp.send(sBody);
	},
	enviar1: function (form){
		var oForm   = form;
		var sBody   = AjaxControle.getRequestBody(oForm);
		var xmlhttp = AjaxControle.Ajax_Open();
		xmlhttp.open("POST", form.action, true);
		xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		xmlhttp.onreadystatechange = function () {
			if (xmlhttp.readyState == 4) {
				if (xmlhttp.status == 200) {
					retorno = xmlhttp.responseText
					AjaxControle.valida_retorno(retorno);
					recebe_dados1(retorno);
				}
			}
		}
		xmlhttp.send(sBody);
	},
	enviar2: function (form){
		var oForm   = form;
		var sBody   = AjaxControle.getRequestBody(oForm);
		var xmlhttp = AjaxControle.Ajax_Open();
		xmlhttp.open("POST", form.action, true);
		xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		xmlhttp.onreadystatechange = function () {
			if (xmlhttp.readyState == 4) {
				if (xmlhttp.status == 200) {
					retorno = xmlhttp.responseText
					AjaxControle.valida_retorno(retorno);
					recebe_dados2(retorno);
				}
			}
		}
		xmlhttp.send(sBody);
	},
	valida_retorno: function(dados_retorno){
		try {
			AjaxControle.dados = eval("("+dados_retorno+")");
		} catch (erro) {
			alert('Erro!' + dados_retorno);
		}
	},
	getRequestBody : function (oForm) {
		var aParams = new Array();
		for (AjaxControle.cont=0 ; AjaxControle.cont < oForm.elements.length; AjaxControle.cont++) {
		   if (oForm.elements[AjaxControle.cont].value == "") continue;
			if (oForm.elements[AjaxControle.cont].type == "radio"){
				if (oForm.elements[AjaxControle.cont].checked == true){
					var sParam = encodeURIComponent(oForm.elements[AjaxControle.cont].name);
					sParam += "=";
					sParam += encodeURIComponent(oForm.elements[AjaxControle.cont].value);
					aParams.push(sParam);
				}
			}else if (oForm.elements[AjaxControle.cont].type == "checkbox"){
					if (oForm.elements[AjaxControle.cont].checked == true){
						var sParam = encodeURIComponent(oForm.elements[AjaxControle.cont].name);
						sParam += "=";
						sParam += encodeURIComponent(oForm.elements[AjaxControle.cont].value);
						aParams.push(sParam);
					}
					//utilizado para pesquisar select com multiplos valores.
					//o nome da variavel é repetido e o sistema o lerá em multivalores.
			}else if (oForm.elements[AjaxControle.cont].type == "select-multiple"){
				campo = oForm.elements[AjaxControle.cont]
				for (AjaxControle.lcselect = 0;AjaxControle.lcselect < campo.options.length;AjaxControle.lcselect++){
					if (campo.options[AjaxControle.lcselect].selected){
						var sParam = encodeURIComponent(oForm.elements[AjaxControle.cont].name);
						sParam += "=";
						sParam += encodeURIComponent(oForm.elements[AjaxControle.cont].options[AjaxControle.lcselect].value);
						aParams.push(sParam);
					}//fim do if
				}//fim do for								
			}else{
					var sParam = encodeURIComponent(oForm.elements[AjaxControle.cont].name);
					sParam += "=";
					sParam += encodeURIComponent(oForm.elements[AjaxControle.cont].value);
					aParams.push(sParam);
			}
		}
		aParams.push("ajax=1");
		return aParams.join("&");
	},
	//form -> NOME DO FORMULARIO
	//dados -> STRING DO FORMULARIO VINDA 
	getdados:function (form, dados){
	    //passa por todos os campos do formulario
		for (AjaxControle.cf = 0;AjaxControle.cf <= form.elements.length; AjaxControle.cf++){		   
		       //se o campo do formulario nao for nulo
				if (form.elements[AjaxControle.cf]!= null){
				//se o campo do formulario possuir nome
				if (form.elements[AjaxControle.cf].name != null){
					//se os campos do formulario nao for botao ou campo do tipo file
					if (form.elements[AjaxControle.cf].type == "button") continue;
					if (form.elements[AjaxControle.cf].type == "submit") continue;
					if (form.elements[AjaxControle.cf].type == "file") continue;
					//se contiver o nome do formulario na string vinda do ajax
					if (eval("dados."+form.elements[AjaxControle.cf].name) != null) {									
					   //tipos de insercao especial(select radio e checkbox) tera os dados cadastrado de outra maneira
						if (form.elements[AjaxControle.cf].type == "select")
							AjaxControle.setSelect(form.elements[AjaxControle.cf],eval("dados."+form.elements[AjaxControle.cf].name));
						else if (form.elements[AjaxControle.cf].type == "radio"){
							AjaxControle.setRadio(form.elements[AjaxControle.cf],eval("dados."+form.elements[AjaxControle.cf].name));
						}else if (form.elements[AjaxControle.cf].type == "checkbox")
							form.elements[AjaxControle.cf].checked = true;
						else form.elements[AjaxControle.cf].value = eval("dados."+form.elements[AjaxControle.cf].name);
						//caso seja um campo normal de insercao de dados.
					}
				}
			    }
         
		}//fim do for
	},
	Ajax_Open: function(){
		var obj_ajax; 
		try {
			obj_ajax = new XMLHttpRequest(); // XMLHttpRequest para browsers mais populares, como: Firefox, Safari, dentre outros. 
		}catch(ee) { 
			try {
				obj_ajax = new ActiveXObject("Msxml2.XMLHTTP"); // Para o IE da MS 
			}catch(e) { 
				try {
					obj_ajax = new ActiveXObject("Microsoft.XMLHTTP"); // Para o IE da MS 
				}catch(e) {
					obj_ajax = false; 
				} 
			} 
		} 
		return obj_ajax; 
	}
}

function Left(str, n){
	if (n <= 0)
	    return "";
	else if (n > String(str).length)
	    return str;
	else
	    return String(str).substring(0,n);
}

function Right(str, n){
    if (n <= 0)
       return "";
    else if (n > String(str).length)
       return str;
    else {
       var iLen = String(str).length;
       return String(str).substring(iLen, iLen - n);
    }
}

