function OpenerReload()
{
	window.opener.location.reload()
}

function getBrowserVersion()
{
	var brw_version = "0";
	var browserVer = parseInt(navigator.appVersion);
	var browserInfo = navigator.appVersion;  
	if (navigator.appName == "Microsoft Internet Explorer")
	{    
		var brw_array;
		brw_array = browserInfo.split("MSIE ")
		brw_array = brw_array[1].split(";")
		brw_version = brw_array[0];
	}
	return brw_version;
}

function Voltar()
{
	window.history.back();
}

function Imprimir()
{
  window.print();
}

function StringOfChar(Char, N)
{
	var Str = '';
	for (var i = 0; i < N; i++)
		Str = Str + Char;
	return Str;
}

function FormatFloat(Value, N)
{
	Str = String(TruncEx(Value, N));
	i = Str.indexOf(".");
	if (i > -1)
	{
		i = Str.length - i - 1;
		Str = Str + StringOfChar("0", N - i);
	}
	Str = Str.replace('.', ',');
	return Str;
}

function AdjustFloat(Value)
{
	Str = String(Value);
	Str = Str.replace(',', '.');
	Value = parseFloat(Str);
	return Value;
}

function TruncEx(Value, N)
{
	Value = AdjustFloat(Value);
	return Math.round(Value * Math.pow(10, N)) / Math.pow(10, N);
}

function NewWindow(URL, Width, Height)
{
	var Left = (screen.width - Width) / 2;
	var Top = (screen.height - Height) / 2 - 50;
	window.open(URL,'','left=' + Left + ", top=" + Top + ', width=' + Width + ', height=' + Height + ", status=1, resizable=1, scrollbars=1");

	/*var sFeatures = "dialogHeight: " + Height + "px; dialogWidth: " + Width + "px; edge: Raised; center: Yes; help: No; resizable: Yes; status: Yes;";
	var sFeatures = "dialogHeight: " + Height + "px; dialogWidth: " + Width + "px; center: yes; resizable: yes; status: yes;";
	window.showModalDialog(URL, "", sFeatures);*/
}

function GotoURL(URL)
{
	window.location.href = URL;
}
function Fechar()
{
	window.close();
}

function decodeKey(AFormatedKey)
{
	var keys;
	
	keys = AFormatedKey.split(".");
	return keys;
}

function SetarCheckBox(CheckBox, Valor)
{
	CheckBox.checked = (Valor == "1");
}


function SetarRadio(Radio, Valor)
{
	for (var i =0; i < Radio.length; i++)
	{
		if (Radio[i].value == Valor) 
		{
			Radio[i].checked = true;
			break;
		}
	}
}

function getValorRadio(radio)
{
	var i, valor = -1;
	for (i = 0; i < radio.length; i++)
	{
		if (radio[i].checked)
		{
			valor = radio[i].value;
			break;
		}
	}
	return valor;
}

function LimparCombo(Combo)
{
	for (var i = Combo.length - 1; i >= 0; i--)
		Combo.options[i] = null;
}

function AddItemCombo(Combo, OptValue, OptDesc)
{
	Combo.options[Combo.length] = new Option(OptDesc, OptValue);
}

function SelecionarValorCombo(Combo, ValorSelecionado)
{
	for (var i=0; i<Combo.length; i++)
	{
		if (Combo.options[i].value == ValorSelecionado)
		{
			Combo.selectedIndex = i;
			break;
		}
	}
}

function PreencherComboUF(Combo, ValorSelecionado)
{
	LimparCombo(Combo);
			
	Combo.options[Combo.length] = new Option("Acre","AC");
	Combo.options[Combo.length] = new Option("Alagoas","AL");
	Combo.options[Combo.length] = new Option("Amapá", "AP");
	Combo.options[Combo.length] = new Option("Amazonas", "AM");
	Combo.options[Combo.length] = new Option("Bahia", "BA");
	Combo.options[Combo.length] = new Option("Ceará", "CE");
	Combo.options[Combo.length] = new Option("Distrito Federal", "DF");
	Combo.options[Combo.length] = new Option("Espírito Santo", "ES");
	Combo.options[Combo.length] = new Option("Goiás", "GO");
	Combo.options[Combo.length] = new Option("Maranhão", "MA");
	Combo.options[Combo.length] = new Option("Mato Grosso", "MT");
	Combo.options[Combo.length] = new Option("Mato Grosso do Sul", "MS");
	Combo.options[Combo.length] = new Option("Minas Gerais", "MG");
	Combo.options[Combo.length] = new Option("Pará", "PA");
	Combo.options[Combo.length] = new Option("Paraíba", "PB");
	Combo.options[Combo.length] = new Option("Paraná", "PR");
	Combo.options[Combo.length] = new Option("Pernambuco", "PE");
	Combo.options[Combo.length] = new Option("Piauí", "PI");
	Combo.options[Combo.length] = new Option("Rio de Janeiro", "RJ");
	Combo.options[Combo.length] = new Option("Rio Grande do Norte", "RN");
	Combo.options[Combo.length] = new Option("Rio Grande do Sul", "RS");
	Combo.options[Combo.length] = new Option("Rondônia", "RO");
	Combo.options[Combo.length] = new Option("Roraima", "RR");
	Combo.options[Combo.length] = new Option("Santa Catarina", "SC");
	Combo.options[Combo.length] = new Option("São Paulo", "SP");
	Combo.options[Combo.length] = new Option("Sergipe", "SE");
	Combo.options[Combo.length] = new Option("Tocantins", "TO");
	
	if (ValorSelecionado) 
		SelecionarValorCombo(Combo, ValorSelecionado);
}

function getCookieVal (offset) {  
	var endstr = document.cookie.indexOf (";", offset);  
	if (endstr == -1)    
		endstr = document.cookie.length;  
		return unescape(document.cookie.substring(offset, endstr));
}

function GetCookie (name) {  
	var arg = name + "=";  
	var alen = arg.length;  
	var clen = document.cookie.length;  
	var i = 0;  
	while (i < clen) {    
	var j = i + alen;    
	if (document.cookie.substring(i, j) == arg)      
		return getCookieVal (j);    
		i = document.cookie.indexOf(" ", i) + 1;    
		if (i == 0) break;   
	}  
	return null;
}

function SetCookie (name, value) {  
	var argv = SetCookie.arguments;  
	var argc = SetCookie.arguments.length;  
	var expires = (argc > 2) ? argv[2] : null;  
	var path = (argc > 3) ? argv[3] : null;  
	var domain = (argc > 4) ? argv[4] : null;  
	var secure = (argc > 5) ? argv[5] : false;  
	document.cookie = name + "=" + escape (value) + 
	((expires == null) ? "" : ("; expires=" + expires.toGMTString())) + 
	((path == null) ? "" : ("; path=" + path)) +  
	((domain == null) ? "" : ("; domain=" + domain)) +    
	((secure == true) ? "; secure" : "");
}

function DeleteCookie (name) {  
	var exp = new Date();  
	exp.setTime (exp.getTime() - 1);  
	// This cookie is history  
	var cval = GetCookie (name);  
	document.cookie = name + "=" + cval + "; expires=" + exp.toGMTString();

}



/*    var dayName=new Array("Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday") 	
	var monthName=new Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"); 

	function putCookie(cookie_name,value) {
		if(document.cookie != document.cookie) 
			{index = document.cookie.indexOf(cookie_name);}
		else 
			{ index = -1;}
	
		if (index == -1)
			{
			now = new Date()
			DtExpira = dayName[now.getDay()] + ", " + now.getDate() + "-" + monthName[now.getMonth()+1] + "-" + now.getYear() + " " + now.getHours() +":"+ now.getMinutes() +":"+ now.getSeconds() + " GMT";
				document.cookie=cookie_name+"="+value+"; expires=" + DtExpira;
			}
	}
	
	function getName(cookie_name) {
		if(document.cookie)
		{
			index = document.cookie.indexOf(cookie_name);
			if (index != -1)
			{
				namestart = (document.cookie.indexOf("=", index) + 1);
				nameend = document.cookie.indexOf(";", index);
				if (nameend == -1) {nameend = document.cookie.length;}
				YouWrote = document.cookie.substring(namestart, nameend);
				return YouWrote;
			}else{
				return "";
			}
		
		}
	}	*/
	
// 0 = esquerda / 1 = direita
function CompletaZeros(num, tam, dir)
{
  len = tam - num.length;
  str = '';
  
  for (var i=0; i<len; i++)
    str += '0';
  
  Boolean(dir) ? str += num : str = num + str;
  
  return str;
}

// retorna no formato 00/00000 (ano/doc)
function encodeDoc(aadoacao, nudoacao)
{
  valor = aadoacao.substr(2,2) + '/' + CompletaZeros(nudoacao,5,1);
  return valor;
}

// retorna um Array[ano,doc,qtd, tpdocume] 
// input -> <ano>/<nro>-tipo_qtde
// <tipo> -> doação = 0 e transf. entrada = 4
function decodeDoc(doc)
{
	var lote = [];
	var strFloat = new String();
	
	var posNum = doc.indexOf("/");
	var posTipo = doc.indexOf("-");
	var posQtd = doc.indexOf("_");			

	var ano = doc.substr(0,4);
	var num = doc.substring(posNum+1,posTipo);
	var tipo = doc.substring(posTipo+1, posQtd);
		
	strFloat = doc.substring(posQtd+1);
	strFloat = StrToFloat(strFloat);
	
	lote[0] = ano;
	lote[1] = num;
	lote[2] = tipo;
	lote[3] = strFloat;
  
  return lote;
}

function montaBotaoDefault(valor,altura,largura)
{
  oTable = document.createElement('table');
  oTable.cellPadding = 0;
  oTable.cellSpacing = 0;
  oTable.border = 0;
  oTable.style.border = '1px solid #000000';
  oTable.width = largura;
  oTable.height = altura;
  
  oTr = oTable.insertRow();
  oTd = oTr.insertCell();
  oTd.className = 'BotaoCinza';
  oTd.onmouseover = new Function("this.className='BotaoCinzaHover';");
  oTd.onmouseout = new Function("this.className='BotaoCinza';");
  oTd.onmousedown = new Function("this.className='BotaoDown'");
  oTd.onmouseup = new Function("this.className='BotaoHover';");
  oTd.innerHTML = valor;
  
  return oTable;
}
  
function $(oId) 
{
  var obj;
  try {
    obj = document.getElementById(oId);
  }
  catch(e) {
    obj = null;
  }     
      
  return obj;
}

// p/ elementos acima do document atual
function $P(oId) 
{
  var obj;
  try {
    obj = parent.document.getElementById(oId);
  }
  catch(e) {
    obj = null;
  }   
  
  return obj;
}

// coleção de objectos 
function $CO(oTagName) 
{
  var objList;
  try {
    objList = document.getElementsByTagName(oTagName);
  }
  catch(e) {
    objList = null;
  }
  
  return objList;
}

function $PCO(oTagName)
{
  var objList;
  try {
    objList = parent.getElementsByTagName(oTagName);
  }
  catch(e) {
    objList = null;
  }
  
  return objList;
}

function getErrorMessage(E)
{
  try {
    var msg = '';

		if (!E) throw 'Erro indefinido.';
    
    msg = 'Erro: ' + E.name + '\n' +
          'Descrição : ' + E.description;
  }
  catch(er) {
    msg = 'Erro: ' + er.name + '\n' +
          'Descrição : ' + er.description;
  }
  finally {
    return msg;
  }  
}

function NewWindowModal(sURL, sArgs, sFeatures) {
	window.showModalDialog(sURL, sArgs, sFeatures);
}

function KeyPress(obj) { 
  if (window.event.keyCode == 13) 
    obj.blur(); 
}

/*
  input: 01.003.0013_1/2008/2 (usado na gravação da cessão, quando um documento é associado)
  output: Array[01.003.0013_1, 2008, 2]
*/
function getArrayList(strList, separator) {
  return strList.split(separator);  
}
/*
  Retorna o array sem itens em branco ou undefined.
*/
function getNoEmptyArray(objList)
{
  var list = objList;
  
  for (var i = 0; i < list.length; i++)
  {
    var obj = list[i];
    
    if (((typeof obj) == 'undefined') || (obj == ''))
      list.splice(i, 1);
  }
  
  return list;
}

//----------- FUNÇÕES ASSSOCIAR DOCUMENTO -----------//
  
// remove o sequencial do item
function RemoveCodItemSequence(coditem)
{
  pos = coditem.indexOf('_');
  res = coditem.substring(0,pos);
  
  return res;
}

function GetItemSeq(coditem)
{
  pos = coditem.indexOf('_');
  res = parseInt(coditem.substr(pos+1));
  
  return res;
}

function objItem(coditem, aadoacao, nudoacao, qtdmaxdoacao, tpdoacao)
{
  this.codItem = coditem;
  this.anoDoacao = aadoacao;
  this.numDoacao = nudoacao;
	this.tpDoacao = tpdoacao;
  this.qtdMaxDoacao = qtdmaxdoacao;
}

function ItensAssoc()
{
  this.itens = [];
  
  this.count = function() { return this.itens.length; }

	// Retorna um item na lista pelo seu índice
  this.getItemByIndex = function(Index) { return this.itens[Index]; }
  
	// Retorna a 1a ocorrência de determinado codItem na lista.
	this.hasObjItem = function(coditem) 
  {
    var obj = null;
    var itemAux = null;
    
    for (var i = 0; i < this.count(); i++)
    {
      itemAux = this.getItemByIndex(i);
      
      if (itemAux.codItem == coditem)
      {
        obj = itemAux;
        break;
      }
    }
    
    return obj;
  }
  
  this.add = function(obj, isMax)
  {
    tmp = this.hasObjItem(obj.codItem);
    
    if (!isMax) 
      isMax = false;
    
    if (tmp)
    {
      doc1 = tmp.anoDoacao + '/' + tmp.numDoacao + '/' + tmp.tpDoacao;
      doc2 = obj.anoDoacao + '/' + obj.numDoacao + '/' + obj.tpDoacao;
      
      if (doc1 != doc2) 
        this.itens[this.count()] = obj;
      else if (!isMax)
				tmp.qtdMaxDoacao += obj.qtdMaxDoacao;
    } 
    else {
			this.itens[this.count()] = obj;
    }
  }
}

// Adicionado em 25/09/2008
// Duplica o item na lista, sem necessidade de acesso ao botão incluir.
function AdicionarItem(oItem)
{				
	// Retorna o incremento do sequencial da lista. 
	function GetMaxSeqItem()
	{
		var oTable = $('tblDados');
		var oRows = oTable.tBodies[0].rows;	
		var maxseq = oRows.length + 1;

		return maxseq;
	}

	// Retorna o <div> com o botão de associar documento
	function GetDivAssociarDocumento()
	{
		oDiv = document.createElement("div");
		oDiv.className = "ItemTabela";
		oDiv.id = "div" + codItemSeq;
		oLink = montaIncluirDoc(codItemSeq);
		oDiv.appendChild(oLink);

		return oDiv;
	}

	// Retorna o elemento <img> com a imagem para replicação de item
	function GetImgAddItem()
	{
		oImg = document.createElement("img");
		oImg.src = "/mb-imagens/copy.gif";
		oImg.onclick = new Function("AdicionarItem('" + codItemSeq + "');");

		return oImg;
	}
	
	// --------------------------------- INÍCIO --------------------------------- //

	oCurrentCell = event.srcElement.parentElement;
	oCurrentRow = oCurrentCell.parentElement;

	oTable = $('tblDados');
	codItem = RemoveCodItemSequence(oItem);
	
	seq = GetMaxSeqItem();
	codItemSeq = codItem + "_" + seq;

	oRow = oTable.insertRow();
	oRow.className = "ItemTabela";
	oRow.coditem = codItemSeq;
	oRow.onmouseover = new Function("MouseOver(this);");
	oRow.onmouseout = new Function("MouseOut(this);");

	oTdImgAddItem = oRow.insertCell();
	oTdImgAddItem.align = "center";
	oTdImgAddItem.title = "Duplicar item";
	
	oImgAdd = GetImgAddItem();
	oTdImgAddItem.appendChild(oImgAdd);
	
	oTdItem = oRow.insertCell();
	oTdItem.height = 18;
	oTdItem.innerText = codItem;

	oTdDescItem = oRow.insertCell();
	oTdDescItem.innerText = oCurrentRow.cells[2].innerText;

	oTdQtdItem = oRow.insertCell();
	oTdQtdItem.style.cursor = "hand";

	oInputHidden = document.createElement("input");
	oInputHidden.type = "hidden";
	oInputHidden.name = "alt" + codItemSeq;
	oInputHidden.value = "0,000";

	oTdQtdItem.appendChild(oInputHidden);

	oInputQtdItem = document.createElement("input");
	oInputQtdItem.id = "edt" + codItemSeq;
	oInputQtdItem.name = "edt" + codItemSeq;
	oInputQtdItem["maxQtdRast"] = "0,000";	// é o mesmo que oInputQtdItem."maxQtdRast" = "0,000";
	oInputQtdItem.className = "EditSimplesTransparente";
	oInputQtdItem.style.width = "70px";
	oInputQtdItem.style.textAlign = "right";
	oInputQtdItem.style.marginRight = "5px";
	oInputQtdItem.style.marginLeft = "5px";
	oInputQtdItem.value = "0,000";
	oInputQtdItem.onfocus = new Function("this.className='EditSimples'; this.select();");
	oInputQtdItem.onblur = new Function("this.className='EditSimplesTransparente';");
	oInputQtdItem.onkeypress = new Function("SomenteNumeros(true); KeyPress(this);");
	oTdQtdItem.appendChild(oInputQtdItem);

	oImg = document.createElement("img");
	oImg.src = "/mb-imagens/edit.gif";
	oImg.align = "absmiddle";
	oImg.border = "0";
	oImg.style.marginLeft = "2px";
	oImg.onclick = new Function("EditarItem('" + codItemSeq + "');");
	oTdQtdItem.appendChild(oImg);

	oTdQtdEstoque = oRow.insertCell();
	oTdQtdEstoque.align = "right";
	oTdQtdEstoque.innerText = oCurrentRow.cells[4].innerText;

	oTdAssociarItem = oRow.insertCell();
	oTdAssociarItem["item"] = codItemSeq;
	oTdAssociarItem.align = "center";

	oInputAssociarItem = document.createElement("input");
	oInputAssociarItem.type = "hidden";
	oInputAssociarItem.name = "doc" + codItem;
	oInputAssociarItem.id = "doc" + codItemSeq;
	oInputAssociarItem.value = "";
	
	oTdAssociarItem.appendChild(oInputAssociarItem);
	
	oDivAssociarItem = GetDivAssociarDocumento();
	oTdAssociarItem.appendChild(oDivAssociarItem);

	oRow.scrollIntoView(false);
}

// ------------------------------------------------ //

function TiraCaracter(str, ch)
{
  res = new String();
  i = 0;
  
  try {
    if (str.length == 0) throw "";
    
    for (i = 0; i < str.length; i++)
    {
      c = str.charAt(i);
      
      if (c != ch)
        res = res + c;
    }
  }
  catch(e) {}
  finally {
    return res;
  }
}

// Converte um valor string no formato 0.000.000,000 para float.
function StrToFloat(Value)
{
	var res = parseFloat("0");
	
	try {
		if ((Value.length == 0) || (!Value)) throw "Número inválido.";
		
		while (Value.indexOf(".") != -1)
			Value = Value.replace(".", "");
		
		res = Value;
		res = res.replace(",", ".");
	}
	catch(e) {
		E = new Error(e);
		E.name = "StrToFloatError";
		
		msg = getErrorMessage(E);
		alert(msg);
	}
	finally {
		return res;
	}
}
			
// Para ser usado em eventos onkeypress para números
function SomenteNumeros(haveComma) 
{	
	if (haveComma)
	{
		if (!(event.keyCode >= 48 && event.keyCode <= 57 || event.keyCode == 44 || event.keyCode == 46))
			event.returnValue = false;
		else 
			SubstituiCaracter('.', ',');
	}
	else if (!(event.keyCode >= 48 && event.keyCode <= 57))
		event.returnValue = false;
}

// Substitui determinado caracter em tempo de execução
function SubstituiCaracter(chOri, chSub)
{
	var chOriKey = chOri.charCodeAt(0);
	var chSubKey = chSub.charCodeAt(0);

	if (event.keyCode == chOriKey)
		event.keyCode = chSubKey;
}

// Formato de entrada 'dd/mm/aaaa'
function isDate(strData)
{
  var dia = strData.substr(0,2);
  var mes = strData.substr(3,2);
  var ano = strData.substr(6,4);
  var result = false;
  
  try {
    var dt = new Date(ano, mes,dia);
    result = true;
  }
  catch(e) {
		alert(e.description);
  }
	finally {  
	  return result;
	}
}

function StrToDate(strData)
{
	var data = null;

	try
	{
		formato = /\d{2}|\d{1}[/]\d{2}|\d{1}[/]\d{4}/;
    
		if (!formato.test(strData)) throw "Formato de data inválido.";

		dia = parseInt(strData.substr(0, 2), 10);
		mes = parseInt(strData.substr(strData.indexOf("/")+1, 2), 10);
		ano = parseInt(strData.substr(strData.length-4, 4), 10);

		data = new Date(ano, mes-1, dia);
	}
	catch(e) {
		alert(e);
	}
	finally {
		return data;
	}
}
