function Utils()
{
	this.className = 'Utils';
	this.error = false;
}

Utils.prototype.showHide = function(objId)
{
	var object = document.getElementById(objId);
	if (object.style.display == 'none')
	{
		object.style.display = '';
	}
	else
	{
		object.style.display = 'none';
	}
}

Utils.prototype.stringReplace = function(sp, rp, ss)
{
	if (ss.indexOf(sp) < 0)
	{
		return ss;
	}
	else
	{
		fp = ss.indexOf(sp);
		
		if (fp==0)
		{
			first = true;
		}
		else
		{
			first = false;
		}
		
		if (sp == ss.substr(-(sp.length)))
		{
			last = true;
		}
		else 
		{
			last = false;
		}
		
		rest = ss.split(sp);
		
		if (first == true)
		{
			fs = rp;
		}
		else
		{
			fs = '';
		}
				
		for (i = 0; i < rest.length; i++)
		{
			if (rest[i]!='')
			{
				fs = fs + rest[i] + rp;
			}
		}
		
		if (!last)
		{
			fs = fs.substr(0, (fs.length - rp.length));
		}
		
		return fs;
	}
}

Utils.prototype.showMessage = function(responseText, xmlDocument)
{
	if (responseText.indexOf('xml') > -1)
	{
		response = xmlDocument.getElementsByTagName('response')[0];

		messages = response.getElementsByTagName('message');
		message = messages[0].firstChild.nodeValue;
		
		errors = response.getElementsByTagName('error');
		error = errors[0].firstChild.nodeValue;
		
		if (error != '1')
		{
			this.showSuccessMessage(message);
		}
		else
		{
			this.showErrorMessage(message);
		}
	}
	else
	{	
		this.showErrorMessage('Ocorreu um erro desconhecido. Detalhes do erro: '+responseText.substring(0,100)+'...');
	}
}

Utils.prototype.showSuccessMessage = function(message)
{
	alert(message);
}

Utils.prototype.showErrorMessage = function(message)
{
	alert('Erro: '+message);
	this.error = true;
}

Utils.prototype.formatDate = function(dateSQL)
{
	var dateSQL = dateSQL.toString();
	var arrayDate = dateSQL.split("-");
	
	var year = arrayDate[0];
	var month = arrayDate[1];
	var day = arrayDate[2];
	
	var dateFormated = day+"/"+month+"/"+year;
	
	return dateFormated;
}

Utils.prototype.allTrim = function(sString)
{
	while (sString.substring(0,1) == ' ')
	{
		sString = sString.substring(1, sString.length);
	}
	while (sString.substring(sString.length-1, sString.length) == ' ')
	{
		sString = sString.substring(0,sString.length-1);
	}
	return sString;
}

Utils.prototype.countChar = function(description, spanCount, limit)
{
	var spanCount = document.getElementById(spanCount);
	var description = document.getElementById(description);
	
	if(spanCount && description)
	{
		var lengthDescription = description.value.length;
		if(lengthDescription>limit)
		{
			description.value = description.value.substring(0,limit);	
		}
		else
		{
			oDOMUtils.removeChilds(spanCount);
			spanCount.appendChild(document.createTextNode(lengthDescription));
		}
	}
}

Utils.prototype.setNextPrev = function(id, tipo)
{
	var link = document.getElementById(id);
	
	if(tipo=="proximo")
	{
		var linkNext = document.getElementById('linkNext');
		if(linkNext!=null)
		{
			var linkPaginate = linkNext.getAttribute('href');
			link.setAttribute("href", linkPaginate);
		}
	}
	else if("anterior")
	{
		var linkPrev = document.getElementById('linkPrev');
		if(linkPrev!=null)
		{
			var linkPaginate = linkPrev.getAttribute('href');
			link.setAttribute("href", linkPaginate);
		}
	}
}

Utils.prototype.confirmDelete = function(url)
{
	if(confirm("Você tem certeza ?"))
	{
		window.location.href = url;
	}
}


Utils.prototype.in_array = function(x, matriz)
{
	var txt = "¬" + matriz.join("¬") + "¬";
	var er = new RegExp ("¬" + x + "¬", "gim");
	return ( (txt.match (er)) ? true : false );
}
Utils.prototype.ocultaExibeNovo = function(nome1, nome2, oLink)
{
	 var elemento = document.getElementById(nome1);
	 var div = document.getElementById(nome2);
	 
	 if(elemento.style.display=='')
	 {
		 if(document.getElementById(nome2))
		  {
		  	var oDOMUtils = new DOMUtils();
		  	oDOMUtils.removeChilds(div);
		  }
		  if(document.getElementById(nome1).value)
		  {
		  	document.getElementById(nome1).value = "";
		  }
		  
		  elemento.style.display='none'; 
		  document.getElementById(nome2).style.display='';
		  
		  var tipoProduto2 = document.getElementById(nome2);
		  var input = document.createElement('input');
		  input.setAttribute('id', nome1+2);
		  input.setAttribute('name', nome1+2); 
		  tipoProduto2.appendChild(input);
		  oLink.innerHTML = "Voltar";
	 } 
	 else 
	 {
		  if(document.getElementById(nome2))
		  {
		  	var oDOMUtils = new DOMUtils();
		  	oDOMUtils.removeChilds(div);
		  }
		  
		  if(document.getElementById(nome1).value)
		  {
		  	document.getElementById(nome1).value = "";
		  }
					  
		  elemento.style.display='';
		  
		  document.getElementById(nome2).style.display='none';
		  oLink.innerHTML = "Novo";
	 }
}

Utils.prototype.validateFilters = function()
{
	var form = document.getElementById("filters");
	var validate = false;
	
	if(document.getElementById("partNumber"))
	{
		if(document.getElementById("partNumber").value != "")
		{
			validate = true;
		}
	}
	
	if(document.getElementById("tipoMontagem"))
	{
		if(document.getElementById("tipoMontagem").value != "")
		{
			validate = true;
		}
	}
	
	if(document.getElementById("materialFaceSensora"))
	{
		if(document.getElementById("materialFaceSensora").value != "")
		{
			validate = true;
		}
	}
	
	if(document.getElementById("distanciaSensora"))
	{
		if(document.getElementById("distanciaSensora").value != "")
		{
			validate = true;
		}
	}
	
	if(document.getElementById("aplicacao"))
	{
		if(document.getElementById("aplicacao").value != "")
		{
			validate = true;
		}
	}
	
	if(document.getElementById("entrada"))
	{
		if(document.getElementById("entrada").value != "")
		{
			validate = true;
		}
	}
	
	if(document.getElementById("temporizacao"))
	{
		if(document.getElementById("temporizacao").value != "")
		{
			validate = true;
		}
	}
	
	if(document.getElementById("tipoCircuitoSaida"))
	{
		if(document.getElementById("tipoCircuitoSaida").value != "")
		{
			validate = true;
		}
	}
	
	if(document.getElementById("tipoContatoRele"))
	{
		if(document.getElementById("tipoContatoRele").value != "")
		{
			validate = true;
		}
	}
	
	if(document.getElementById("tipoFixacao"))
	{
		if(document.getElementById("tipoFixacao").value != "")
		{
			validate = true;
		}
	}
	
	if(document.getElementById("tensaoEntradaNominal"))
	{
		if(document.getElementById("tensaoEntradaNominal").value != "")
		{
			validate = true;
		}
	}
	
	if(document.getElementById("tensaoSaida"))
	{
		if(document.getElementById("tensaoSaida").value != "")
		{
			validate = true;
		}
	}
	
	if(document.getElementById("correnteSaida"))
	{
		if(document.getElementById("correnteSaida").value != "")
		{
			validate = true;
		}
	}
	
	if(document.getElementById("potenciaSaida"))
	{
		if(document.getElementById("potenciaSaida").value != "")
		{
			validate = true;
		}
	}
	
	if(document.getElementById("dimensoesLxAxP"))
	{
		if(document.getElementById("dimensoesLxAxP").value != "")
		{
			validate = true;
		}
	}
	
	if(document.getElementById("fixacao"))
	{
		if(document.getElementById("fixacao").value != "")
		{
			validate = true;
		}
	}
	
	if(document.getElementById("involucro"))
	{
		if(document.getElementById("involucro").value != "")
		{
			validate = true;
		}
	}
	
	if(document.getElementById("classeProtecao"))
	{
		if(document.getElementById("classeProtecao").value != "")
		{
			validate = true;
		}
	}
	
	if(document.getElementById("tipoProduto"))
	{
		if(document.getElementById("tipoProduto").value != "")
		{
			validate = true;
		}
	}
	
	if(document.getElementById("modelo"))
	{
		if(document.getElementById("modelo").value != "")
		{
			validate = true;
		}
	}
	
	if(document.getElementById("quantidadePinos"))
	{
		if(document.getElementById("quantidadePinos").value != "")
		{
			validate = true;
		}
	}
	
	if(document.getElementById("temperaturaOperacao"))
	{
		if(document.getElementById("temperaturaOperacao").value != "")
		{
			validate = true;
		}
	}
	
	if(document.getElementById("grauProtecao"))
	{
		if(document.getElementById("grauProtecao").value != "")
		{
			validate = true;
		}
	}
	
	if(document.getElementById("tensaoOperacao"))
	{
		if(document.getElementById("tensaoOperacao").value != "")
		{
			validate = true;
		}
	}
	
	if(document.getElementById("materialCorpo"))
	{
		if(document.getElementById("materialCorpo").value != "")
		{
			validate = true;
		}
	}
	
	if(document.getElementById("tipoConexao"))
	{
		if(document.getElementById("tipoConexao").value != "")
		{
			validate = true;
		}
	}
	
	if(document.getElementById("comprimentoCabo"))
	{
		if(document.getElementById("comprimentoCabo").value != "")
		{
			validate = true;
		}
	}
	
	if(document.getElementById("corCabo"))
	{
		if(document.getElementById("corCabo").value != "")
		{
			validate = true;
		}
	}
	
	if(document.getElementById("funcao"))
	{
		if(document.getElementById("funcao").value != "")
		{
			validate = true;
		}
	}
	
	if(document.getElementById("ledSinalizacao"))
	{
		if(document.getElementById("ledSinalizacao").value != "")
		{
			validate = true;
		}
	}
	
	if(document.getElementById("tipoSensoramento"))
	{
		if(document.getElementById("tipoSensoramento").value != "")
		{
			validate = true;
		}
	}
	
	if(document.getElementById("diametroSensor"))
	{
		if(document.getElementById("diametroSensor").value != "")
		{
			validate = true;
		}
	}
	
	if(document.getElementById("tipoInvolucro"))
	{
		if(document.getElementById("tipoInvolucro").value != "")
		{
			validate = true;
		}
	}
	
	if(document.getElementById("materialInvolucro"))
	{
		if(document.getElementById("materialInvolucro").value != "")
		{
			validate = true;
		}
	}
	
	if(document.getElementById("tipoConexaoEletrica"))
	{
		if(document.getElementById("tipoConexaoEletrica").value != "")
		{
			validate = true;
		}
	}
	
	if(document.getElementById("tensaoAlimentacao"))
	{
		if(document.getElementById("tensaoAlimentacao").value != "")
		{
			validate = true;
		}
	}
	
	if(document.getElementById("tipoChaveamento"))
	{
		if(document.getElementById("tipoChaveamento").value != "")
		{
			validate = true;
		}
	}
	
	if(document.getElementById("funcaoSaida"))
	{
		if(document.getElementById("funcaoSaida").value != "")
		{
			validate = true;
		}
	}
	
	if(document.getElementById("capacidadeCarga"))
	{
		if(document.getElementById("capacidadeCarga").value != "")
		{
			validate = true;
		}
	}
	
	if(document.getElementById("quedaTensaoSaida"))
	{
		if(document.getElementById("quedaTensaoSaida").value != "")
		{
			validate = true;
		}
	}
	
	if(document.getElementById("frequenciaComutacao"))
	{
		if(document.getElementById("frequenciaComutacao").value != "")
		{
			validate = true;
		}
	}
	
	if(document.getElementById("protecaoContraCurtoCircuitoCarga"))
	{
		if(document.getElementById("protecaoContraCurtoCircuitoCarga").value != "")
		{
			validate = true;
		}
	}
	
	if(document.getElementById("ledIndicacao"))
	{
		if(document.getElementById("ledIndicacao").value != "")
		{
			validate = true;
		}
	}
	
	if(document.getElementById("frequenciaMaximaChaveamento"))
	{
		if(document.getElementById("frequenciaMaximaChaveamento").value != "")
		{
			validate = true;
		}
	}
	
	if(document.getElementById("correnteMinimaChaveamento"))
	{
		if(document.getElementById("correnteMinimaChaveamento").value != "")
		{
			validate = true;
		}
	}
	
	if(document.getElementById("formato"))
	{
		if(document.getElementById("formato").value != "")
		{
			validate = true;
		}
	}
	
	if(document.getElementById("tipoRosca"))
	{
		if(document.getElementById("tipoRosca").value != "")
		{
			validate = true;
		}
	}
	
	if(document.getElementById("resistenciaInterna"))
	{
		if(document.getElementById("resistenciaInterna").value != "")
		{
			validate = true;
		}
	}
	
	if(document.getElementById("tipoContato"))
	{
		if(document.getElementById("tipoContato").value != "")
		{
			validate = true;
		}
	}
	
	if(document.getElementById("pontenciaMaximaComutacao"))
	{
		if(document.getElementById("pontenciaMaximaComutacao").value != "")
		{
			validate = true;
		}
	}
	
	if(document.getElementById("tensaoComutacao"))
	{
		if(document.getElementById("tensaoComutacao").value != "")
		{
			validate = true;
		}
	}
	
	if(document.getElementById("correnteComutacao"))
	{
		if(document.getElementById("correnteComutacao").value != "")
		{
			validate = true;
		}
	}
	
	if(document.getElementById("chaveamento"))
	{
		if(document.getElementById("chaveamento").value != "")
		{
			validate = true;
		}
	}
	
	if(document.getElementById("frequencia"))
	{
		if(document.getElementById("frequencia").value != "")
		{
			validate = true;
		}
	}
	
	if(document.getElementById("tipoProduto"))
	{
		if(document.getElementById("tipoProduto").value != "")
		{
			validate = true;
		}
	}
	
	if(document.getElementById("descricao"))
	{
		if(document.getElementById("descricao").value != "")
		{
			validate = true;
		}
	}
	
	if(document.getElementById("funcao"))
	{
		if(document.getElementById("funcao").value != "")
		{
			validate = true;
		}
	}
	
	if(validate)
	{
		form.submit();
	}
	else
	{
		alert("Preencha pelo menos um campo.");
	}
}

Utils.prototype.setFilter = function(field, type, POST, controller)
{
	if(POST)
	{
		document.getElementById("field").value = field;
		document.getElementById("type").value = type;
		this.validateFilters();
	}
	else
	{
		window.location.href = "/admin/"+controller+"/getAll/"+field+"/"+type;
	}
}
	
Utils.prototype.checkAll = function(form, checkMaster)
{
	if(form.elements.length>0)
	{
		for(var f=0; f<form.elements.length; f++)
		{
			if(form.elements[f].type == "checkbox")
			{
				if(checkMaster.checked == true)
				{
					form.elements[f].checked = true;
				}
				else
				{
					form.elements[f].checked = false;
				}
			}
		}
	}
}

Utils.prototype.printPDF = function(type, id, session)
{
	window.location.href = "/"+type+"/printPDF/"+id+"/"+session;
}

Utils.prototype.showSub = function(type)
{
	switch(type)
	{
		case "sensores":
		this.showHide("sensores");
		break;
		
		case "sensoresSub":
		this.showHide("sensoresSub");
		break;
	}
}

oUtils = new Utils();

over = function()
{
	if(document.getElementById('menuProdutos'))
	{
		var sfEls = document.getElementById('menuProdutos').getElementsByTagName("LI");
		
		for (var i=0; i<sfEls.length; i++) 
		{
			sfEls[i].onmouseover = function()
			{
				this.className+=" over";
			}
			
			sfEls[i].onmouseout=function()
			{
				this.className=this.className.replace(new RegExp(" over\\b"), "");
			}
		}
	}
}

if (window.attachEvent) window.attachEvent("onload", over);