
	//Variaveis utilizadas por varias funcoes genericas
	//Utilizada para verificar se teve mudanca em alguma tela
	temMudanca = false;

	//bloqueia o uso da tecla enter para evitar submit acidental
	function bloquearEnter(e)
	{
		if (!e) e = window.event;

		if (e.keyCode==13)
		{
			if (document.all)
				e.returnValue = false;
			else
				e.preventDefault();
		}
	}

	disponibilidadeArr = new Array(
				new Array("m1", 0x1),
				new Array("m2", 0x2),
				new Array("m3", 0x4),
				new Array("m4", 0x8),
				new Array("m5", 0x10),
				new Array("m6", 0x20),
				new Array("m7", 0x40),

				new Array("t1", 0x100),
				new Array("t2", 0x200),
				new Array("t3", 0x400),
				new Array("t4", 0x800),
				new Array("t5", 0x1000),
				new Array("t6", 0x2000),
				new Array("t7", 0x4000),

				new Array("n1", 0x10000),
				new Array("n2", 0x20000),
				new Array("n3", 0x40000),
				new Array("n4", 0x80000),
				new Array("n5", 0x100000),
				new Array("n6", 0x200000),
				new Array("n7", 0x400000)
	);

	function carregaDisponibilidade()
	{
		/*
		for (i in disponibilidadeArr)
		{
			chkobj = eval(disponibilidadeArr[i][0]);
			if (top.colaborador['dadosad_disponibilidade'] & disponibilidadeArr[i][1])
				chkobj.check.checked = true;
			else
				chkobj.check.checked = false;
		}
		*/

		for (i in disponibilidadeArr)
		{
			chkobj = eval(disponibilidadeArr[i][0]);

			chkobj.setChecked(true);
			ischecked = false;

			if (top.colaborador['dadosad_disponibilidade'] & disponibilidadeArr[i][1])
				ischecked = true;

			chkobj.setChecked(ischecked);
		}

	}

	function leDisponibilidade()
	{
		dispvalor = 0x0;

		for (i in disponibilidadeArr)
		{
			chkobj = eval(disponibilidadeArr[i][0]);
			if (chkobj.check.checked)
				dispvalor |= disponibilidadeArr[i][1];
		}

		return dispvalor;
	}

	function limpaDisponibilidade()
	{
		for (i in disponibilidadeArr)
		{
			chkobj = eval(disponibilidadeArr[i][0]);
			chkobj.check.checked = false;
		}
	}

	//Funcoes JS genericas utilizadas em varios pontos da interface
	function carregaTela(e)
	{





		if (browserType == "ie")
		{
  			e = window.event;
  			obj = e.srcElement;
		}
		else
		{
			obj = e.target;
		}

		if (confirmaDescarte())
		{
			window.location.href = "index.php?pag_cod=" + obj.pag_cod;
		}
		return true;
	}

	function confirmaDescarte()
	{
		if (top.temMudanca)
		{
			if(confirm('Tem certeza que deseja descartar as alterações feitas?'))
			{
				top.temMudanca = false;
				return true;
			}
			else
				return false;
		}

		return true;
	}

	function confirmaApagar()
	{
		if(confirm('Tem certeza que deseja apagar o registro?\nOs dados não poderão mais ser recuperados.'))
			return true;

		return false;
	}

	//redefine a função setHasChanges do JsObjects utilizada nos eventos de alteraçao de campos
	//resumindo: define a global temMudanca para true.
	function setHasChanges(e)
	{
		top.temMudanca = true;
	}

	//Faz o dump dos dados de um objeto para poder enviá-lo via HTTP
	function dumpObj(obj, dataconnector)
	{
	}

	function formataDataParaISO(value)
	{
		var datas = value.split("/");
		if(datas.length > 1)
			return datas[2] + "-" + datas[1] + "-" + datas[0];
		else
			return "";
	}

	function formataData(value)
	{
		js_dia = value.substr(8,2);
		js_mes = value.substr(5,2);
		js_ano = value.substr(0,4);
		return js_dia + "/" + js_mes + "/" + js_ano;
	}

	function formataDataHora(value)
	{
		js_dia = value.substr(8,2);
		js_mes = value.substr(5,2);
		js_ano = value.substr(0,4);

		js_hor = value.substr(11,8);
		return js_dia + "/" + js_mes + "/" + js_ano + " " + js_hor;
	}

	//Faz validaçao de CPF e retorna true ou false
	function validaCPF(CPF)
	{
		var CPF = CPF.replace(".","");
		CPF = CPF.replace(".","");
		CPF = CPF.replace("-","");
		if (CPF.length != 11 || CPF == "00000000000" || CPF == "11111111111" ||
			CPF == "22222222222" ||	CPF == "33333333333" || CPF == "44444444444" ||
			CPF == "55555555555" || CPF == "66666666666" || CPF == "77777777777" ||
			CPF == "88888888888" || CPF == "99999999999"){
			return false;
			}
		soma = 0;
		for (i=0; i < 9; i ++)
			soma += parseInt(CPF.charAt(i)) * (10 - i);
		resto = 11 - (soma % 11);
		if (resto == 10 || resto == 11)
			resto = 0;
		if (resto != parseInt(CPF.charAt(9)))
			return false;
		soma = 0;
		for (i = 0; i < 10; i ++)
			soma += parseInt(CPF.charAt(i)) * (11 - i);
		resto = 11 - (soma % 11);
		if (resto == 10 || resto == 11)
			resto = 0;
		if (resto != parseInt(CPF.charAt(10)))
			return false;

		return true;
	}

	//Faz validaçao de CNPJ e retorna true ou false
	function validaCNPJ(valor)
	{
		if (!valor || (valor && valor.length != 14))
		{
			return false;
		}
		else
		{
			if (valor.length != 14 || valor == "00000000000000" || valor == "11111111111111" ||
			valor == "22222222222222" ||	valor == "33333333333333" || valor == "44444444444444" ||
			valor == "55555555555555" || valor == "66666666666666" || valor == "77777777777777" ||
			valor == "88888888888888" || valor == "99999999999999")
			{
				return false;
			}

			var a = [];
			var b = new Number;
			var c = [6,5,4,3,2,9,8,7,6,5,4,3,2];
			for (i=0; i<12; i++)
			{
				a[i] = valor.charAt(i);
				b += a[i] * c[i+1];
			}
			if ((x = b % 11) < 2) { a[12] = 0 } else { a[12] = 11-x }
			b = 0;
			for (y=0; y<13; y++)
			{
				b += (a[y] * c[y]);
			}
			if ((x = b % 11) < 2) { a[13] = 0; } else { a[13] = 11-x; }
			if ((valor.charAt(12) != a[12]) || (valor.charAt(13) != a[13]))
			{
				return false;
			}
		}

		return true;
	}

	var AreaWin;

	function showAreaDialog(e)
	{
		if (browserType == "ie")
		{
			e = window.event;
			obj = e.srcElement;
		}
		else
			obj = e.target;
		if (obj.lvname=="areaconcentracaole")
			AreaWin = window.open('index.php?pag_cod='+top.area_pag_cod+'&lvname=' + obj.lvname+'&tipo_area=0','AreasWin','height=600, width=400, alwaysRaised=1,location=0,menubar=0,status=1,toolbar=0,scrollbars=0');
		else
			AreaWin = window.open('index.php?pag_cod='+top.area_pag_cod+'&lvname=' + obj.lvname+'&tipo_area=1','AreasWin','height=600, width=400, alwaysRaised=1,location=0,menubar=0,status=1,toolbar=0,scrollbars=0');
	}

	function adicionaArea(cod,area,lvname)
	{
		lvobj = eval(lvname);
		for (i in lvobj.childList)
		{
			if (lvobj.childList[i].cells[0].js_realvalue == cod)
			{
				AreaWin.alert("Área já inserida.");
				return;
			}
		}
		if (lvobj.type == "JsListView")
		{
			lstitname = randomizer();
			str = lstitname + " = new JsListViewItem('" + lstitname + "');";
			obj = eval (str);
			lvobj.addItem(obj);
			obj.addItem(area);
			obj.cells[0].setAttribute("js_realvalue",cod);
		}
		else
		{
			lvobj.setValue(cod,area);
			AreaWin.close();
		}
	}

	//Funçao de apoio para a função salvar (cria os campos para post)
	function salvarListView (listview,arraydoscampos,buttons)
	{
		//primeiro pegamos os itens que foram removidos do listview
		for (j in listview.removedItens)
		{
			dc.setFieldValue(listview.name + "_remove[]",listview.removedItens[j]);
			dc.setFieldValue(listview.name + "_remove_indice[]",listview.removedIndice[j]);
		}

		//passar o botão para o controle
		if (listview.removedItens)
		{
			if (listview.removedItens.length > 0)
			{
				dc.setFieldValue("list_buttom",buttons.name);
			}
		}

		listview.removedItens = new Array();

		//Agora vemos os itens que sobraram
		for (i in listview.childList)
		{
			//enviamos o nome do listviewitem para associar o código ao mesmo, no caso de inserts
			dc.setFieldValue(listview.name + "[]",listview.childList[i].name);

			//enviamos o código do listviewitem, para ver se é insert ou update que deve ser feito
			if (listview.childList[i].cod)
				dc.setFieldValue(listview.name + "_cod[]",listview.childList[i].cod);
			else
				dc.setFieldValue(listview.name + "_cod[]","");

			//enviamos o código do listviewitem, para ver se é insert ou update que deve ser feito
			if (listview.childList[i].indice)
				dc.setFieldValue(listview.name + "_indice[]",listview.childList[i].indice);
			else
				dc.setFieldValue(listview.name + "_indice[]","");

			//Agora lemos os valores das células do listviewitem
			for (j in listview.childList[i].cells)
			{
				if (listview.childList[i].cells[j].js_realvalue)
				{
					if (listview.childList[i].cells[j].js_realvalue  == "" || listview.childList[i].cells[j].js_realvalue == null)
						dc.setFieldValue(arraydoscampos[j] + "[]","null");
					else
						dc.setFieldValue(arraydoscampos[j] + "[]",listview.childList[i].cells[j].js_realvalue);
				}
				else
				{
					if (listview.childList[i].cells[j].getValue() == "" || listview.childList[i].cells[j].getValue() == null)
						dc.setFieldValue(arraydoscampos[j] + "[]","null");
					else
						dc.setFieldValue(arraydoscampos[j] + "[]",listview.childList[i].cells[j].getValue());
				}
			}
		}
	}

	//Funçao de logout para todos os sistemas, pois o esqueleto básico é o mesmo

	function Logout()
	{
		if (confirm('Tem certeza que deseja sair?'))
		{
			window.onbeforeunload = "function(){}";

			msgdialog.setValue('Saindo do Sistema...');

			msgdialog.showDialog();

			dc.clearData();
			dc.setHandler("index.php?pag_cod=2");
			dc.postData();
		}
	}

	function abrirTela(e)
	{
		window.onbeforeunload = "function(){}";

		if (browserType == "ie")
		{
  			e = window.event;
  			obj = e.srcElement;
		}
		else
		{
			obj = e.target;
		}

		var pag_cod;
		var acao;

		pag_cod = obj.pag_cod;
		acao = obj.acao;
		tipo_acao = obj.tipo_acao;
		new_formato = obj.new_formato;

		if (self.pag_cod!=pag_cod)
		{
			//alert("index.php?pag_cod="+pag_cod+"&acao="+acao+"&tipo_acao="+tipo_acao);
			if (new_formato)
				window.location.href="index.php?pag_cod="+pag_cod+"&acao="+acao+"&tipo_acao="+tipo_acao+"&new_formato=true";
			else
				window.location.href="index.php?pag_cod="+pag_cod+"&acao="+acao+"&tipo_acao="+tipo_acao;
		}
		else
		{
			top.tipo_acao = tipo_acao;
			eval(acao);
		}
	}

	function carregaArvoreSimples(treelvobj,treeArr,eventStr)
	{
		var treeArr;
		var treelvobj;

		for (var js_ii in treeArr)
		{
			objname = randomizer();
			var lvitobj	= eval (objname + " =  new JsListViewItem('"+objname+"')")
			treelvobj.addItem(lvitobj);

			lvitobj.addItem(treeArr[js_ii][1]);
			if (treeArr[js_ii][0])
				lvitobj.setAttribute("cod",treeArr[js_ii][0]);
			if (eventStr)
				lvitobj.setEvent("click",eval(eventStr));
			if (treeArr[js_ii][2])
				carregaArvoreSimples(lvitobj,treeArr[js_ii][2],eventStr)
		}
	}

	function extends_class(original_class, new_class)
	{
		created_class = eval (new_class + " = function(){this.constructor();}")
		created_class.prototype = eval ("new "+original_class+"()");
	}

	/********************************************
				General use functions
	Some things we are always using, so why don't
	get then ready for use as part of the package?
	********************************************/
	/********************************************
	  Transfer itens from one listox to another
	********************************************/

	function transferListItens(sourceobj, targetobj)
	{
		var values = sourceobj.getValue();

		for (var i in values)
		{
			var allvalues = sourceobj.getAllValues();
			for (var j in allvalues)
			{
				if (values[i][0] == allvalues[j][0])
				{
					targetobj.addItem(values[i][0],values[i][1]);
					sourceobj.delItem(j);
				}
			}
		}
	}

	function mascaraValor(obj)
	{
		alert (obj);
		/*
		cur = self.input.value;
		len = self.input.maxLength;
		n = '__0123456789';
		d = self.input.value;
		l = self.input.value.length;
		r = '';

		if (l > 0)
		{
			z = d.substr(0,l-1);
			s = '';
			a = 2;
			for (i = 0; i < l; i++)
			{
			    c = d.charAt(i);
			    if (n.indexOf(c) > a)
			    {
			        a=1;
			        s+=c;
			    };
			};
			l = s.length;
			t = len-1;
			if (l > t)
			{
			    l = t;
			    s = s.substr(0,t);
			};
			if (l > 2)
			{
			    r = s.substr(0,l-2)+','+s.substr(l-2,2);
			}
			else
			{
			    if (l == 2)
			    {
			        r = '0,'+s;
			    }
			    else
			    {
			        if (l == 1)
			        {
			            r='0,0'+s;
			        };
			    };
			};
			if (r == '')
			{
			    r = '0,00';
			}
			else
			{
			    l = r.length;
			    if (l > 6)
			    {
			        j = l%3;
			        w = r.substr(0,j);
			        wa = r.substr(j,l-j-6);
			        wb = r.substr(l-6,6);
			        if (j > 0)
			        {
			            w += '.';
			        };
			        k = (l-j)/3-2;
			        for (i=0; i < k; i++)
			        {
			            w+=wa.substr(i*3,3)+'.';
			        };
			        r=w+wb;
			    };
			};
		};
		if (r.length <= len)
		{
			self.input.value = r;
		}
		else
		{
			self.input.value = z;
		};
		*/
	};


	function validaEmail(pStr)
	{
		var reEmail1 = /^[\w!#$%&'*+\/=?^`{|}~-]+(\.[\w!#$%&'*+\/=?^`{|}~-]+)*@(([\w-]+\.)+[A-Za-z]{2,6}|\[\d{1,3}(\.\d{1,3}){3}\])$/;
		var reEmail2 = /^[\w-]+(\.[\w-]+)*@(([\w-]{2,63}\.)+[A-Za-z]{2,6}|\[\d{1,3}(\.\d{1,3}){3}\])$/;
		var reEmail3 = /^[\w-]+(\.[\w-]+)*@(([A-Za-z\d][A-Za-z\d-]{0,61}[A-Za-z\d]\.)+[A-Za-z]{2,6}|\[\d{1,3}(\.\d{1,3}){3}\])$/;
		var reEmail = reEmail3;

		eval("reEmail = reEmail");
		if (reEmail.test(pStr)) {
			return true;
		} else if (pStr != null && pStr != "") {
			return false;
		}
	}


	function validaDataISO(data)
	{
		vday = data.substr(8,2);
		vmonth = data.substr(5,2);
		vyear = data.substr(0,4);

		if ((vday == '') || (vmonth == '') || (vyear == ''))
			return false;

		if (parseInt(data.substr(8,2)) > 31)
			return false;
		if (parseInt(data.substr(5,2)) > 12)
			return false;

		return true;
	}


	function trim(str)
	{
		s = str.replace(/^(\s)*/, '');
		s = s.replace(/(\s)*$/, '');
		return s;
	}

