<!--
// Arquivo: functions.js
// Descricao: funcoes basicas e comuns para validacoes
// Autor: Leonardo Eiji Nakamura - nakamura@kankei.com.br
// Data: 20.03.2001
// Data ultima atualizacao: 28.11.2001
// Versao: 1.1.9
// Atualização: 2.0, maio/2004 por Rogério Ramos - rogerio@kankei.com.br
//              migração do Kankei Web para .NET
// Copyright: Kankei Software e Consultoria - http://www.kankei.com.br

var submited=false; // define se o objeto foi submetido
var aGrpSel=new Array();

function printPage(){
/*              Rotina: printPage
*               Descricao: abre janela de dialogo para impressao
*               Parametro: nenhum
*               Retorno: falso  */
	var wp = (window.print) ? 1 : 0;
	var da = (document.all) ? 1 : 0;
	var mac = (navigator.userAgent.indexOf("Mac") != -1);
	if (wp)
		window.print()
	else if (da && !mac)
		vbPrintPage()
	else
		alert("Sinto muito, mas o seu browser nao suporta impressao.\nAcesse o menu do seu browser para imprimir.");
	return false; 
}

function fChkForm()
/*
*               Rotina: fChkForm
*               Descricao: rotina para validacao basica dos campos
*       Parametro: o formulario
*               Retorno: falso ou verdadeiro
*               Observacao: Criar matriz com os titulos(nome) dos campos para gerar exibicao da mensagem
*/
{
    var fFrm = document.getElementsByTagName('form')[0];
    var oAcao= document.getElementById('acao');
    if( !oAcao ) return true;
    if( oAcao.value != "reg_post" ) return true;
    
	var aGrpName=new Array();
	var aGrpChecked=new Array();
	var iChecked=0;
	var j,id,blocated;
	var blnSilent= false;
	if( fFrm["silent"] != null )
	{
		blnSilent= fFrm["silent"].value == "1";
	}

	for(i=0;i<fFrm.elements.length;i++){
		// Verificar campos comuns requeridos vazios
		if ((fFrm[i].type=="text" || fFrm[i].type=="textarea") && fFrm[i].name.substring(0,3)=="cr_" && fFrm[i].value.length<1 && fFrm[i].name.length==6)
		{
			if( !blnSilent )
			{
				alert("Campo requerido.\nPor favor, preencha para prosseguir...");
			}
			fFrm[i].focus();
			return false;
		}
		// Verificar campos de selecao requeridos vazios
		else if (fFrm[i].type=="select-one" && fFrm[i].name.substring(0,3)=="cr_" && fFrm[i].selectedIndex==0 && fFrm[i].name.length==6)
		{
			if( !blnSilent )
			{
				alert("Campo requerido.\nPor favor, preencha para prosseguir...");
			}
			fFrm[i].focus();
			return false;
		}               
		else if (fFrm[i].type=="checkbox" && fFrm[i].name.substring(0,6)=="f_grp_")
		{
			aGrpName[aGrpName.length]= fFrm[i].name;
			aGrpChecked[aGrpChecked.length]= fFrm[i].checked;
			if (fFrm[i].checked)
			{
				iChecked+=1;
			}
		}
	}
	// Verifica se o formulario tem grupo e efetua a validacao	
	if (aGrpName.length>0){
		// Caso tenha somente um agrupamento, define o grupo padrão
		if (aGrpName.length==1)
		{
			eval('fFrm.'+aGrpName[0]+'.checked=true');
			fFrm.group_default.checked=true; // Define automaticamente o grupo como padrao
		} else
		{
			if (iChecked==0)
			{
				if (aGrpDef.length==0)
				{
					eval('fFrm.'+aGrpName[0]+'.focus()');
					if( !blnSilent )
					{
						alert("Não há GRUPO selecionado. Por favor, marque pelo menos 1(um) para continuar.");
					}
					return false;
				} else
				{
					fFrm.group_default.focus();
					var blnResp;
					if( blnSilent )
					{
						blnResp= false;
					} else
					{
						blnResp= confirm('O registro precisa estar vinculado a pelo menos um grupo.\nO grupo padrão está sinalizado com (*) antes do nome.\nDeseja vincular ao(s) grupo(s) padrão?');
					}
					if( blnResp )
					{
						for(iGrp=0;iGrp<aGrpDef.length;iGrp++)
						{
							eval('fFrm.f_grp_'+aGrpDef[iGrp]+'.checked=true');
						}
					} else
					{
						eval('fFrm.'+aGrpName[0]+'.focus()');
						return false;
					}
				}
			} else
			{
				if (aGrpDef.length==0)
				{
					fFrm.group_default.focus();
					if( !blnSilent )
					{
						if(confirm("Este formulário não contém grupo padrão.\nDeseja definir o(s) grupo(s) selecionado(s) como grupo padrão?"))
						{
							fFrm.group_default.checked= true;
						}
					}
				}
			}
		}
	}	
	return true;
}

function fValidUser(fFrm)
/*
*               Rotina: fValidUser
*       Descricao: valida o campo do usuario
*       Parametro: formulario
*               Retorno: falso ou verdadeiro
*/
{
	if (fFrm._form.usuario.value.length<1)
	{
		alert("Por favor informe o nome do usuário.");
		fFrm._form.usuario.focus();
		return false;
	}
	else return true;
}

function fClearForm()
{
	if (confirm('Deseja limpar todos os campos do formulário?'))
	{
	    var oForm= document.forms[0];
		for(var i= 0; i < oForm.elements.length; i++)
		{
			if( ! oForm.elements[i].disabled )
			{
				if( oForm.elements[i].type=="text" || 
					oForm.elements[i].type=="textarea" || 
					oForm.elements[i].type=="password" ) 
				{
					if( ! oForm.elements[i].readOnly )
					{
						oForm.elements[i].value= "";
					}
				} else if (oForm.elements[i].type=="select-one") 
				{
					oForm.elements[i].selectedIndex= 0;
				} else if (oForm.elements[i].type=="checkbox") 
				{
					oForm.elements[i].checked= false;
				}
			}
		}
	}
	return false;
}

function posicionaForm()
/*
*               Rotina: posicionaForm
*       Descricao: posiciona o foco no primeiro campo do primeiro formulario
*       Parametro: nenhum
*               Retorno: verdadeiro
*/
{
	if(document.forms.length > 0) 
		for(i=0;i<document.forms.length;i++) 
			for(j=0;j<document.forms[i].elements.length;j++)
			{
				try
				{
					document.forms[i][j].focus();
					return true;
				}
				catch(ex) {}
			}
	return true;
}

function disableFormButtons()
{
    var btn;
    btn= document.forms[0].elements['salvar'];
    if( btn != null ) btn.disabled= true;
	btn= document.forms[0].elements['excluir'];
	if( btn != null ) btn.disabled= true;
    btn= document.forms[0].elements['dlg_ok'];
    if( btn != null ) btn.disabled= true;
	btn= document.forms[0].elements['dlg_cancel'];
	if( btn != null ) btn.disabled= true;
}

function fconfirmaCadastro()
{
    if( submited ) return;
    var strAcao= document.forms[0].elements['acao'].value;
    var strDialogAction= "";
    var oDialogAction= document.forms[0].elements['DialogAction'];
    
    if( oDialogAction != null ) strDialogAction= oDialogAction.value;

    if (strDialogAction == "dlg_ok" || strDialogAction == "dlg_cancel")
    {
        submited= true;
    } else
    {
        switch( strAcao )
        {
            case "reg_post" :
			    submited= confirm("Confirma os dados digitados?"); 
			    break;
            case "reg_del" :
    		    submited= confirm("Deseja realmente excluir o registro?"); 
		        break;
		    case "reg_process_all" :
		    case "reg_process" :
		        submited= true;
		        break;
		    case "" :
		        submited= confirm("Podem haver dados não salvos. Deseja continuar?");
		        break;
        }
    }
    if( submited )
    {
        disableFormButtons();
    }
    return submited;
}

function fconfirmaParametro()
{
	return confirm("O processamento da estatística é um processo\ndemorado, em alguns casos podendo durar mais de 15 minutos.\nDeseja continuar?");
}

function fconfirmaRelatorio()
{
	if (!submited)
	{
		return submited=confirm("O processamento do relatório é um processo demorado.\nDeseja continuar?");
	} else 
	{
		return confirm("O relatório esta sendo processado.\nDeseja re-enviar?");
	}
}

function fonLoad()
{
	var ret= posicionaForm();

	KankeiAjax.start_interval(); // inicia notificacoes
	
	return ret;
};

function fExcluiItem(sItem)
/*
*               Rotina: fExcluiItem
*       Descricao: limpa todos os campos de uma determinada linha
*       Parametro: nome linha
*               Retorno: falso
*       Obs: Esta funcao somente funcionara quando for utilizado pelo primeiro formulario
*/
{
	var objForm,i;
	if (confirm('Deseja limpar os campos desta linha?'))
	{
		for(i=1;i<=parseInt(eval("document.forms[0]."+sItem.substring(0,11)+"tC.value"));i++)
		{
			objForm="document.forms[0]."+sItem+"_"+(i>9?"":"0")+i;
			if (eval(objForm+".type")=="text" || eval(objForm+".type")=="textarea" || eval(objForm+".type")=="password") eval(objForm+".value=''")
			else if (eval(objForm+".type")=="select-one") eval(objForm+".selectedIndex=0")
			else if (eval(objForm+".type")=="checkbox") eval(objForm+".checked=false")
		};
	}
	return false;
}

function fNextField(e,sField)
/*
*       Rotina: fNextField
*       Descricao: efetua avanco de linha evitando a tabulacao acidental em botoes de exclusao
*       Parametro: 
*               e: armazena o codigo do caracter pressionado
*               sField: nome do campo
*       Retorno: false
*       Obs: Esta funcao somente funcionara quando for utilizado pelo primeiro formulario
*/
{
	var intValue
	if (e.keyCode==9)
	{
		if (sField.length==14)
		{
			eval("document.forms[0]."+sField.substring(0,11)+((parseInt(sField.substring(11,14),10)+1<10)?"00":"0")+(parseInt(sField.substring(11,14),10)+1)+"_01.focus()");
			return false;
		}
	}
	return true;
}


function strZero(s,i)
{
	s=s.toString();
	while(s.length<i){s="0"+s}
	return s;
}

function DateValidatorEvaluateIsValid(source, args) 
{
    var value = ValidatorGetValue(source.controltovalidate);
    if (value == "")
        args.IsValid = true;        
	else
		args.IsValid = ValidateDate(value);
}

function ValidateDate(dateStr)
{
	var datePat = /^(\d{1,2})(\/|-)(\d{1,2})\2(\d{4})$/;
	var matchArray = dateStr.match(datePat);
		
	if (matchArray == null) 	return false;
	
	day = matchArray[1];
	month = matchArray[3];
	year = matchArray[4];

	if (month < 1 || month > 12) return false;
	if (day 	 < 1 || day    > 31) return false;

	if ((month==4 || month==6 || month==9 || month==11) && day==31) 
		return false;

	if (month == 2)  {
		var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
		if (day>29 || (day==29 && !isleap)) return false;
	}

	return true;
}

var already_centered=false;

function findPosX(obj)
{
	var curleft = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curleft += obj.offsetLeft
			obj = obj.offsetParent;
		}
	}
	else if (obj.x)
		curleft += obj.x;
	return curleft;
}

function findPosY(obj)
{
	var curtop = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curtop += obj.offsetTop
			obj = obj.offsetParent;
		}
	}
	else if (obj.y)
		curtop += obj.y;
	return curtop;
}
					
function CenterScreen(element0)
{
	var el = document.getElementById(element0);
	var w =  findPosX(el);
	var h =  findPosY(el);
	
	// centraliza
	if(!already_centered)
	{
		already_centered=true;
		var left = Math.floor( (screen.width - w) / 2);
 		var top = Math.floor( (screen.height - h) / 2);
		if(left>0 && top>0)
		{
		    try
		    {
			    window.moveTo(left,top);
			}
			catch(ex)
			{
			}
		}
	}
}

function chk_workarea(frm)
{
	if (frm.nome.value.length<1){
		alert("Nome da Area de Trabalho nao informado.");
		frm.nome.focus();
		return false;
	};
	if (frm.servidor.value.length<1){
		alert("Servidor nao informado.");
		frm.servidor.focus();
		return false;
	};
	if (frm.bancodados.value.length<1){
		alert("Nome do banco de dados nao informado.");
		frm.bancodados.focus();
		return false;
	};
	if (frm.usuario.value.length<1){
		alert("Usuario nao informado.");
		frm.usuario.focus();
		return false;
	};	
	if (frm.senha.value!=frm.senha2.value){
		alert("Senhas nao conferem.");
		frm.senha.focus();
		return false;
	};	
	return true;
}
//-->
