// Captura o evento de teclado.
document.onkeydown = getDocumentKey;

/**
 * Realiza tratamentos de atalhos de teclado.
 */
function getDocumentKey(e) {
	if(window.event)
		keycode = window.event.keyCode;
	else if (e)
		keycode = e.which;

	var ev = e || window.event;

	if(ev.ctrlKey && ev.shiftKey && keycode == 81) {
		var url = pathWeb + '/js/firebug-lite.js';

		iniciaLoading();

		new Ajax.Request(url, {onComplete: function(objectResponse) {
			eval(objectResponse.responseText);
			firebug.init(firebug.env.css);
			firebug.win.minimize();

			encerraLoading();
		}});

		return false;
	}

	if(keycode == 116) {
		if(window.event)
			window.event.keyCode = 0;

		if(parent.$('framePrincipal')) {
			parent.$('framePrincipal').src = parent.$('framePrincipal').src;
			return false;
		} else
			return true;
	}
}

/**
 * Tratamento personalizado de erros.
 */
window.onerror = function (errorMessage, fileName, lineNumber)
				{
					// Excessões (mensagens do browser sem interferência no funcionamento do script).
					var arrayException = [];
					arrayException[0] = fileName.indexOf('xbl-marquee.xml') != -1;
					arrayException[1] = fileName.indexOf('dhtmlXTree.js') != -1;
					arrayException[2] = errorMessage.indexOf('parentObject._r_logic') != -1;
					arrayException[3] = errorMessage.indexOf('non-chrome context') != -1;
					
					for (i = 0; i < arrayException.length; i++)
					{
						if (arrayException[i])
						{
							return true;
						}
					}
						
					alert('Qualitor.\n\nJavascript error occurred:\n\nMessage: ' + errorMessage + '\nFile: ' + fileName + '\nLine: ' + lineNumber);	
					return true;
				}

// Controla resets de multi-empresa.
var hasResetMultiEmpresa = false;

/**
 * Controla foco da página.
 */
window.onfocus = function ()
				{
					if (typeof(hasMultiEmpresaCadastro) != 'undefined' && typeof(hasMultiEmpresaPesquisa) != 'undefined')
					{
						if (hasResetMultiEmpresa == false)
						{
							// Reseta empresa de cadastro.
							if (hasMultiEmpresaCadastro == true)
							{
								processChangeCompany(false, true);
							}
							
							// Reseta empresa de pesquisa.
							if (hasMultiEmpresaPesquisa == true)
							{
								processChangeCompany(true, true);
							}
							
							hasResetMultiEmpresa = true;
						}
					}
				}

/**
 * Controla blur da página.
 */
window.onblur = function ()
				{
					hasResetMultiEmpresa = false;
				}

/**
 * Retorna a janela de origem de uma pop-up.
 * @param actualWindow
 * @return window Janela de origem
 */
function getMainWindow(actualWindow)
{
	var mainWindow = actualWindow;
	
	while (mainWindow.opener)
	{
		mainWindow = mainWindow.opener;
	}
	
	if (mainWindow.parent)
	{
		mainWindow = mainWindow.parent;
	}
	
	return mainWindow;
}

/**
* VARIÁVEL QUE CONTROLA O CLICK NOS PROCESSAR DO FORM.
**/
var hasSubmitedForm = false;

/**
* FUNÇÃO QUE ABRE POP UP DE DETERMINADA SOLICITAÇÃO.
* --------------------------------------------------
* dsUrl - CAMINHO
* idPopUp - INDICA SE É POP-UP
* 	idMax - STATUS DE MAXIMIZAÇÃO
* 	idScroll - STATUS DE SCROLL
* 	vlHeight - STATUS DE ALTURA
* 	vlWidth - STATUS DE LARGURA
**/
function executarLink(dsUrl, idPopUp, idMax, idScroll, vlHeight, vlWidth){
	// INICIALIZA AS VARIÁVEIS
	if(!idPopUp) idPopUp = false;
	if(!idScroll) idScroll = false;
	if(!idMax) idMax = false;
	// ALTURA E LARGURA
	if(!vlHeight) vlHeight = 600;
	if(!vlWidth) vlWidth = 800;

	// TRATAMENTO TEMPORÁRIO PARA O LOGOUT PELO MENU ARQUIVO
	if(dsUrl == "../logout.php")
		window.location.href = dsUrl;

	// Verifica se é pop up ou está iframe principal.
	if (idPopUp)
	{
		window.open(dsUrl, "_blank", "height=" + vlHeight + ",width=" + vlWidth + ",scrollbars=" + (idScroll ? "yes" : "no") + ",status=no,toolbar=no,menubar=no,location=no,resizable=" + (idMax ? "yes" : "no") + ",top=60,left=60");
	}
	else
	{
		if ($("framePrincipal"))
		{
			$("framePrincipal").src = dsUrl;
		}
		else if (parent.$("framePrincipal"))
		{
			parent.$("framePrincipal").src = dsUrl;
		}
		else
		{
			window.location.href = dsUrl;
		}
	}
}


/**
 * Abre uma nova janela
 * 
 * @param pars.url - endereço de destino
 * @param pars.method - submeter o formulário por POST ou GET
 * @param pars.formid - id do formulário, se não for informado irá buscar o primeiro formulário da pagina
 * 
 * @return false
 */
function openWindow(pars) {
	var form = pars.formid ? $(pars.formid) : document.getElementsByTagName('form')[0];
	var tmpAction = (form.action || '');
	var tmpOnsubmit = (form.onsubmit || '');
	var tmpTarget = (form.target || '');
	var tmpMethod = (form.method || '');

	form.action = pars.url;
	form.method = pars.method;
	form.target = '_blank';
	form.onsubmit = function() {
		window.open('', '_blank', 'width=400,height=500,scrollbars=yes,resizable=yes,status=no,toolbar=no,menubar=no,location=no');
		return false;
	}
	
	// adiciona os parametros extra no form
	var newPars = (pars.extraparameters ? pars.extraparameters : '') + (typeof(SearchProfile) != 'undefined' ? '&' + SearchProfile.getFormValue() : '');
	newPars = newPars.split('&');
	for (var i = 0; i < newPars.length; i++) {
		if (newPars[i] != '') {
			var field = newPars[i].split('=');
			$j('#' + form.id).append('<input type="hidden" id="' + (field[0] || '') + '_tmp" name="' + (field[0] || '') + '" value="' + decodificarHTML(field[1] || '') + '" />');
		}
	}

	form.submit();

	// remove os parametros extra do form
	for (var i = 0; i < newPars.length; i++) {
		if (newPars[i] != '') {
			var field = newPars[i].split('=');
			$j('#' + field[0] + '_tmp').remove();
		}
	}
	form.action = tmpAction;
	form.method = tmpMethod;
	form.target = tmpTarget;
	form.onsubmit = tmpOnsubmit;

	return false;
}

/**
 * Remove valores duplicados de um array
 * @param a
 * @return
 */
function unique(a) {
   var r = new Array();
   o:for (var i = 0, n = a.length; i < n; i++) {
      for(var x = i + 1 ; x < n; x++) {
         if (a[x]==a[i]) continue o;
      }
      r[r.length] = a[i];
   }
   
   return r;
}

/**
* FUNÇÃO EXECUTADA QUANDO É APERTADO ENTER.
* RETIRADO A POSSIBILIDADE DE MANIPULAÇÃO DE OUTRO EVENTO.
**/
function enterExec(nmFuncao){
	var keyCode;
	if(window.event)
		keyCode = window.event.keyCode;
	//else if(localEvent)
	//	keyCode = localEvent.which;
	else
		return true;

	if(keyCode == 13)
		eval(nmFuncao);
}

/**
* LIMPA OS CAMPOS NA TELA, EX: arrayCampos = ("cdcliente,nmcliente,cdcontato,nmcontato") -> SEPARADOR POR VÍRGULA.
**/
function limpaCampos(strCampos){
	var arrayCampos = strCampos.split(',');
	// TRATAMENTO DE ERRO.
	try{
		for(var i = 0; i < arrayCampos.length; i++)
			$(arrayCampos[i]).value = '';
	}catch(e){
		showQAlert('INTERNAL ERROR: Campo inexistente ou passagem de parâmetros inválida.', {type: 'critical'});
	}
}

/**
* FUNÇÃO QUE LIMPA INNER HTML DE ELEMENTOS.
**/
function clearHTML(nmElement){
	$(nmElement).innerHTML = '';
}

/**
* VERIFICA SE UM ÍTEM EXISTE DENTRO DE UM ARRAY
**/
function inArray(dsItem, arraySearch){
	if(!arraySearch) return false;
	for(var i = 0; i < arraySearch.length; i++){
		if(dsItem == arraySearch[i])
			return i;
	}

	return false;
}

/**
* FUNÇÃO QUE DELETA O ARQUIVO DO SERVIDOR.
**/
function deleteFileFromServer(fileName){
	var url = pathWeb + "/framework/qupload/request/deleteFileFromServer.php";
	var pars = "fileName=" + fileName;
	new Ajax.Request(url, {parameters: pars, method: "get"});
}

/**
* ALTERA A IMAGEM DE UM ELEMENTO.
**/
function setObjectImage(object, imageName){
	object.src = pathWeb + "/framework/images/default/" + imageName;
}

/**
* CAPTURA AS COORDENADAS DO MOUSE.
**/
document.onmousemove = getMouseCoords;

function getMouseCoords(ev){
	if(window.event){
		mousePos = {
			x: window.event.clientX,
			y: window.event.clientY
		};
	}else{
		mousePos = {
			x: ev.pageX,
			y: ev.pageY
		};
	}
}

/**
* VERIFICA SE UM OBJETO É MULTIPLE-SELECT.
**/
function isMultipleSelect(objectName){
	return eval('typeof(multipleSelect' + objectName + ') == "object";');
}

/**
* ADAPTAÇÃO DA FUNÇÃO DE FOREACH PARA O QUALITOR.
**/
function foreach(object, block, context){
	var countIndex = 0;
	if (typeof object != 'undefined') {
		for(var i = 0; i < object.length; i++){
			if(typeof(object[i]) == 'undefined')
				continue;
	
			block.call(context, object[i], countIndex, object);
			countIndex++;
		}
	}
}

/**
* CAPTURA O TEXTO DO ÍTEM SELECIONADO DE UM COMBO.
**/
function getComboText(comboName){
	var objectCombo = $(comboName);

	if(objectCombo.options.length > 0)
		return objectCombo.options[objectCombo.options.selectedIndex].text;
	else
		return "";
}

/**
* CAPTURA O LABEL DE UM CAMPO.
**/
function getFieldLabel(fieldName){
	var object = $('label_' + fieldName);
	if(!object)	return;
	return object.innerHTML.unescapeHTML();
}

/**
* MÉTODO QUE COPIA UM COMBO PARA O OUTRO
**/
function copyCombo(oldCombo, newCombo) {
	// ATRIBUI COMBOS DE TRABALHO
	oldCombo = $(oldCombo);
	newCombo = $(newCombo);

	// LIMPA O NEW COMBO
	for(var i = newCombo.length - 1; i >= 0; i--) {
		newCombo.options[newCombo.length - 1] = null;
	}

	// ATRIBUI VALORES DO OLD COMBO PARA O NEW COMBO
	foreach(oldCombo.options, function(oldOption) {
		newCombo.options[newCombo.length] = new Option(oldOption.text, oldOption.value);
	});

	// ATRIBUI VALOR FINAL PARA O NEWCOMBO
	newCombo.value = oldCombo.value;
}

/**
* VARIÁVEL DE CONTROLE DE ÍTENS INATIVOS DE COMBOS.
**/
var inactiveComboItens = [];

/**
* DEFINE O ÍTEM DE UM COMBO NO ARRAY DE ÍTENS INATIVOS.
**/
function addInactiveComboItem(comboName, itemValue){
	inactiveComboItens.push({comboName: comboName, itemValue: itemValue});
}

/**
* LIMPA OS ÍTENS INATIVOS DOS COMBOS.
**/
function deleteInactiveComboItens(){
	foreach(inactiveComboItens, function(arrayCombo){
		var objectCombo = $(arrayCombo.comboName);
		foreach(objectCombo.options, function(comboItem, itemIndex){
			if(comboItem.value == arrayCombo.itemValue){
				objectCombo.options[itemIndex] = null;
				return;
			}
		});
	});
}

/**
* FUNÇÃO QUE TRATA E BUSCA O VALOR DE UM RADIO
**/
function $RV(radioName) {
	var arrayElement = document.getElementsByTagName("input");
	var returnValue = null;

	// VARRE INPUTS EM BUSCA DO RADIO
	foreach(arrayElement, function(myElement){
		if(myElement.name == radioName) {
			if(myElement.checked) {
				returnValue = myElement.value;
				return;
			}
		}
	});

	return returnValue;
}

/**
* FUNÇÃO QUE RETORNA UM ARRAY COM OS RADIOS INFORMADOS
**/
function $RO(radioName) {
	// BUSCA TODOS OS INPUTS
	var myElements = document.getElementsByTagName("input");
	var myRadios = [];

	// VARRE INPUTS EM BUSCA DO RADIO
	foreach(myElements, function(myElement){
		if(myElement.name == radioName)
			myRadios.push(myElement);
	});

	return myRadios;
}

/**
 * Trata o valor de entidades HTML para dados povoados por Ajax utilizando JavaScript.
 */
function entityDecode(myArg) {
	var textArea = document.createElement('textarea');
	textArea.innerHTML = myArg;
	textArea.parentNode.removeChild(textArea);
	return textArea.value;
}

/**
 * Classe para drag de objetos na página
 */

// Determina versão do navegador
function Browser() {

  var ua, s, i;

  this.isIE    = false;
  this.isNS    = false;
  this.version = null;

  ua = navigator.userAgent;

  s = "MSIE";
  if ((i = ua.indexOf(s)) >= 0) {
    this.isIE = true;
    this.version = parseFloat(ua.substr(i + s.length));
    return;
  }

  s = "Netscape6/";
  if ((i = ua.indexOf(s)) >= 0) {
    this.isNS = true;
    this.version = parseFloat(ua.substr(i + s.length));
    return;
  }

  // Treat any other "Gecko" browser as NS 6.1.

  s = "Gecko";
  if ((i = ua.indexOf(s)) >= 0) {
    this.isNS = true;
    this.version = 6.1;
    return;
  }
}

var browser = new Browser();

// Objeto global para armazenar informação do drag.

var dragObj = new Object();
//dragObj.zIndex = 0;

function dragStart(event, id) {

  var el;
  var x, y;

  // Se um elemento é dado, encontrá-lo, senão, usar o elemento clicado

  if (id)
    dragObj.elNode = document.getElementById(id);
  else {
    if (browser.isIE)
      dragObj.elNode = window.event.srcElement;
    if (browser.isNS)
      dragObj.elNode = event.target;

    // Se for um text node, usar seu elemento pai (parentNode)

    if (dragObj.elNode.nodeType == 3)
      dragObj.elNode = dragObj.elNode.parentNode;
  }

  // Obtém a posição do cursor em relação a página.

  if (browser.isIE) {
    x = window.event.clientX + document.documentElement.scrollLeft
      + document.body.scrollLeft;
    y = window.event.clientY + document.documentElement.scrollTop
      + document.body.scrollTop;
  }
  if (browser.isNS) {
    x = event.clientX + window.scrollX;
    y = event.clientY + window.scrollY;
  }

  // Salva as posições iniciais de cursor e elemento.

  dragObj.cursorStartX = x;
  dragObj.cursorStartY = y;
  dragObj.elStartLeft  = parseInt(dragObj.elNode.style.left, 10);
  dragObj.elStartTop   = parseInt(dragObj.elNode.style.top,  10);

  if (isNaN(dragObj.elStartLeft)) dragObj.elStartLeft = 0;
  if (isNaN(dragObj.elStartTop))  dragObj.elStartTop  = 0;

  // Atualiza o z-index do elemento

  //dragObj.elNode.style.zIndex = ++dragObj.zIndex;

  // Captura os eventos mousemove e mouseup events da página.

  if (browser.isIE) {
    document.attachEvent("onmousemove", dragGo);
    document.attachEvent("onmouseup",   dragStop);
    window.event.cancelBubble = true;
    window.event.returnValue = false;
  }
  if (browser.isNS) {
    document.addEventListener("mousemove", dragGo,   true);
    document.addEventListener("mouseup",   dragStop, true);
    event.preventDefault();
  }
}

function dragGo(event) {

  var x, y;

  // Pega a posição do cursor em relação a página

  if (browser.isIE) {
    x = window.event.clientX + document.documentElement.scrollLeft
      + document.body.scrollLeft;
    y = window.event.clientY + document.documentElement.scrollTop
      + document.body.scrollTop;
  }
  if (browser.isNS) {
    x = event.clientX + window.scrollX;
    y = event.clientY + window.scrollY;
  }

  // Move o elemento o mesmo montante que o cursor do mouse se moveu.

  dragObj.elNode.style.left = (dragObj.elStartLeft + x - dragObj.cursorStartX) + "px";
  dragObj.elNode.style.top  = (dragObj.elStartTop  + y - dragObj.cursorStartY) + "px";

  if (browser.isIE) {
    window.event.cancelBubble = true;
    window.event.returnValue = false;
  }
  if (browser.isNS)
    event.preventDefault();
}

function dragStop(event) {

  // Para de capturar eventos mouseup e mousedown.
  if (browser.isIE) {
    document.detachEvent("onmousemove", dragGo);
    document.detachEvent("onmouseup",   dragStop);
  }
  if (browser.isNS) {
    document.removeEventListener("mousemove", dragGo,   true);
    document.removeEventListener("mouseup",   dragStop, true);
  }
}


/**
 * Retorna a quantidade de atributos de um objeto
 *
 */
function size(obj) {
	var count = 0;
	if (typeof obj == 'object')
		for (var i in obj)
			count++;
	return count;
}

/**
 * Cria e configura os objetos RTF.
 */
function createRichTextObject(arrayTextArea, idLanguage, objectParameters, idprint) {
	// Trata o idioma.
	switch(idLanguage) {
		case 'pt-br' :
			idLanguage = 'pt';
			break;
		case 'es-ar' :
			idLanguage = 'es';
			break;
		default :
			idLanguage = 'en';
	}

	// Trata os parametros default.
	var defaultOptions = {
		mode: 'exact',
		readonly: false
	}

	if(!objectParameters)
		objectParameters = defaultOptions;
	else {
		for(var parameter in defaultOptions) {
			if(typeof(objectParameters[parameter]) == 'undefined')
				objectParameters[parameter] = defaultOptions[parameter];
		}
	}

	// Tratamentos de modo read-only.
	if(objectParameters.readonly) {
		objectParameters.theme_advanced_buttons1 = (idprint ? 'print,|,' : '') + 'fullscreen';
		objectParameters.theme_advanced_buttons2 = '';
		objectParameters.theme_advanced_buttons3 = '';
		objectParameters.theme_advanced_buttons4 = '';
	} else {
		objectParameters.theme_advanced_buttons1 = 'bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,formatselect,fontselect,fontsizeselect';
		objectParameters.theme_advanced_buttons2 = 'cut,copy,paste,pastetext,pasteword,|,search,replace,|,bullist,numlist,|,outdent,indent,blockquote,|,undo,redo,|,link,unlink,anchor,image,cleanup,|,insertdate,inserttime,|,forecolor,backcolor';
		objectParameters.theme_advanced_buttons3 = 'tablecontrols,|,hr,removeformat,visualaid,|,sub,sup,|,charmap,media,advhr,|,'+ (idprint ? 'print,|,' : '') +'ltr,rtl,|,fullscreen';
		objectParameters.theme_advanced_buttons4 = 'insertlayer,moveforward,movebackward,absolute,|,styleprops,|,cite,abbr,acronym,del,ins,attribs,|,visualchars,nonbreaking,pagebreak';
	}

	tinyMCE.init({
		// Configurações básicas.
		button_tile_map: true,
		mode: objectParameters.mode,
		elements: typeof(arrayTextArea) == 'string' ? arrayTextArea : arrayTextArea.join(','),
		theme: 'advanced',
		entity_encoding: 'raw',
		language: idLanguage,
		readonly: false,
		relative_urls: false,

		// Plugins.
		plugins: 'pagebreak,style,layer,table,save,advhr,advimage,advlink,iespell,inlinepopups,insertdatetime,media,searchreplace,'+ (idprint ? 'print,' : '') +'contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras',

		// Configurações do tema.
		theme_advanced_buttons1: objectParameters.theme_advanced_buttons1,
		theme_advanced_buttons2: objectParameters.theme_advanced_buttons2,
		theme_advanced_buttons3: objectParameters.theme_advanced_buttons3,
		theme_advanced_buttons4: objectParameters.theme_advanced_buttons4,
		theme_advanced_toolbar_location: 'top',
		theme_advanced_toolbar_align: 'left'
	});
}

/**
 * Remove a instância do objeto Rich Text.
 * (Apenas necessário quando utilizar o componente em janelas auxiliares (QWindow).
 */
function unloadRichTextObject(textareaName) {
	if(tinyMCE.getInstanceById(textareaName) == null)
		tinyMCE.execCommand('mceAddControl', false, textareaName);
	else
		tinyMCE.execCommand('mceRemoveControl', false, textareaName);
}

/**
 * Verifica se um elemento textarea é RTF.
 */
function isRichText(objectName) {
	return typeof(tinyMCE) != 'undefined' && typeof(tinyMCE.get(objectName)) != 'undefined';
}

/**
 * Retorna o valor (html / texto) de um objeto RTF.
 */
function getRichTextValue(objectName, objectParameters) {
	// Captura o valor do objeto.
	var objectContent = tinyMCE.get(objectName).getContent();

	// Monta o objeto de retorno.
	var objectValue = {
		html: codificarHTML(objectContent),
		text: codificarHTML(objectContent.replace(/<br \/>/g, '\n').replace(/<\/?[^>]+>/g, ''))
	};

	if(objectParameters) {
		// Trata o tipo de retorno.
		switch(objectParameters.type) {
			case 'html' :
				return objectValue.html;
			case 'text' :
				return objectValue.text;
			default :
				return null;
		}
	} else
		// Retorna o objeto com os valores de html e texto.
		return objectValue;
}

/**
 * Reseta um campo Rich Text.
 */
function resetRichText(objectName) {
	tinyMCE.get(objectName).setContent('');
}


/**
 * Busca o endereço completo no sistema/web service através do CEP.
 */
function searchCep(web) {
	if ($('nrcep').value.length != 8 && $('nrcep').value.length != 9) {
		$('nrcep').focus();
		showQAlert(QLabel[48], {type: "exclamation"});
		return;
	}

	var url = pathWeb + '/html/ad/adcep/request/searchCep.php';
	var pars = 'nrcep=' + $F('nrcep') + '&web=' + web;

	new Ajax.Request(url, {parameters: pars, showDivQ: true});
}

/**
 * Atribui os valores aos campos de endereço na pesquisa por CEP.
 */
function populateAddressValues(addressValues) {
	var addressValues = addressValues.toQueryParams();

	if ($('dsendereco'))
		$('dsendereco').value = addressValues.nmendereco;
	else if ($('nmendereco'))
		$('nmendereco').value = addressValues.nmendereco;

	if ($('sguf'))
		$('sguf').value = addressValues.sguf;

	$('nmbairro').value = addressValues.nmbairro;
	$('cdcidade').value = addressValues.cdcidade;
	$('nmcidade').value = addressValues.nmcidade;
}

// Confirma renovação de licença online.
function confirmRenovacaoLicenca() {
	if ($('divAlert'))
		closeAlert('divAlert');
		
	showQAlert(QLabel[62], {type: 'confirm', funYes: 'renovaLicenca();'});
}

// Renova licença do cliente online.
function renovaLicenca() {
	var url = pathWeb + '/html/ad/adparametrogeral/request/updateLicenseOnline.php';
	new Ajax.Request(url, {showDivQ: true});
}

/**
 * Exibe a descrição de um evento de erro.
 */
function getErrorDescription(errorCode) {
	var url = pathWeb + '/html/ad/adeventoerro/request/getErrorDescription.php';
	var pars = 'nrsequencia=' + errorCode;
	var windowTitle = QLabel[67].replace('%s', errorCode);

	showQWindow(url, {name: 'viewErrorDescription', title: windowTitle, parameters: pars, width: 550, height: 369});
}

/**
 * Multi-empresa.
 */

var divCompany = '';

function toggleEmpresaCadastro(toggle)
{
	if (divCompany == 'divMultiCompany')
	{
		toggleEmpresaPesquisa();
	}
	
	$j("#divCompany").toggle('fast');
	
	divCompany = divCompany == '' ? 'divCompany' : '';
}

function toggleEmpresaPesquisa(toggle)
{
	if (divCompany == 'divCompany')
	{
		toggleEmpresaCadastro();
	}
	
	$j("#divMultiCompany").toggle('fast');
	divCompany = divCompany == '' ? 'divMultiCompany' : '';
}

// Altera empresa do usuário.
function processChangeCompany(multiple, reset)
{	
	if (multiple)
	{
		var nmmulticompany = multipleSelectcdmulticompany.getComboItens();
		if (nmmulticompany != '')
		{
			var url = pathWeb + '/html/ad/adempresa/request/multiempresa/changeCompany.php';
			var pars = 'acao=2&' + (reset ? '&idreset=T&cdmulticompany=' + $F('cdmulticompanyload') : multipleSelectcdmulticompany.getMultipleValue()) + '&nmmulticompany=' + codificarHTML(reset ? $F('nmmulticompanyload') : nmmulticompany);
			new Ajax.Request(url, {parameters: pars, showDivQ: true});
		}
	}
	else
	{
		if (!isEmpty('cdcompany'))
		{
			var url = pathWeb + '/html/ad/adempresa/request/multiempresa/changeCompany.php';
			var pars = 'acao=1&cdempresa=' + (reset ? $F('cdcompanyload') : $F('cdcompany')) + (reset ? '&idreset=T' : '');
			new Ajax.Request(url, {parameters: pars, showDivQ: true});
		}
	}
}

// Criptografa parâmetros das requisições.
function cryptPars(pars)
{
	if (typeof QCrypt == 'undefined')
	{
		return pars;
	}

	var crypt = 'cryptget=';
	
	if (pars != '')
	{
		crypt += new QCrypt().cryptArrayDados(pars.split('&'));
	}

	return crypt;
}


/**
 * Serializa campos em formato de URL.
 * Pode ser utilizado em qualquer elemento HTML
 * 
 * @author Inácio Gomes Klassmann
 * @param oForm - id do elemento
 * @return String
 */
function qSerialize(oForm) {
	var oForm = $(oForm);
	if (oForm) {
	    var aParams = [];
	    var types = ['input', 'textarea', 'select'];

	    for (var i = 0; i < types.length; i++) {
	    	var input = oForm.getElementsByTagName(types[i]);
	    	for (var j = 0; j < input.length; j++) {
	    		var element = input[j];

	    		if (element.type == 'radio' && element.checked == false)
	    			continue;
	    		if (element.type == 'checkbox' && element.checked == false)
	    			continue;
	    		if (element.type == 'select-multiple') {
	    			for (j in element.options) {
	    				if (element.options[j].selected) {
	    					sParam = element.name + "=" + element.options[j].value;
	    					aParams.push(sParam);
	    				}
	    			}
	    		} else {
	    			// tratamento para os multiple-select do qualitor
	    			if (types[i] == 'select' && element.value == 'ALL') {
	    				var values = [];
	    				for (var k = 1; k < element.options.length; k++)
	    					values.push(element.options[k].value);
	    				sParam = element.name + "=" + values.join(',');
	    			} else {
		    			sParam = element.name + "=" + codificarHTML(element.value);
	    			}
	    			aParams.push(sParam);
	    		}
	    	}
	    }

	    return aParams.join('&');
	}

	return '';
}

/**
 * Redimenciona uma imagem
 */
function fitImage(img, destine, orientation, width, height) {
	var img = $(img);
	var destine = $(destine);

	if (!img || !destine)
		return;

	var imgWidth = img.width;
	var imgHeight = img.height;
	var destineWidth = destine.style.width;
	var destineHeight = destine.style.height;

	// Tratamento para o #!$@#$ do IE com imagens hide
	if (imgWidth == 0 && imgHeight == 0) {
		imgWidth = width;
		imgHeight = height;
	}
	
	if (destineWidth.charAt(destineWidth.length-1) == "%")
		destineWidth = imgWidth;
	else
		destineWidth = (parseInt(destineWidth.split('px')[0]) || 0);
	
	switch (orientation) {
		case 'vertical':
			// TODO - implementar resize vertical...
			break;
		case 'horizontal':
		default:
			if (imgWidth > destineWidth) {
				img.width = destineWidth - 20;
				img.height = (destineWidth - 20) / (imgWidth / imgHeight);    
			}
	}
}

/**
 * Atribui um valor para o radiobutom e o seleciona
 */
function setRadioValue(radio, value) {
	radio = $(radio);
	if (radio) {
		var por = [];
		var inputs = document.getElementsByTagName("input");
	
		for (var i in inputs) {
			if (inputs[i].id == radio.id && inputs[i].value == value) {
				inputs[i].checked = true;
				return true;
			}
		}
	}
	
	return false;
}

/**
 * Controla posição da legenda em gráficos de relatórios.
 * @return void
 */
function preparaChartRpt()
{
    $j('#idangulolegenda').change(
    	function()
    	{
		      if ($('idangulolegenda').checked == true)
		      {
		    	  $('nralturalegenda').disabled = false;
		      }
		      else
		      {
		    	  $('nralturalegenda').value = '';
		    	  $('nralturalegenda').disabled = true;
		      }
    	}
    );
}