<!--
var objBrow,LAST_ERR_VALUE="",errorCode=0;
var ERRO=REPET_ERR=false;
var LAST_FIELD=CURRENT_FIELD=LAST_ERR_FIELD=null;
var SZ_DATE=8,
SZ_CEP=8,
SZ_MONEY=20,
SZ_FLOAT=20,
SZ_CPF=11,
SZ_CNPJ=14,
SZ_CPF_CNPJ=SZ_CNPJ,
SZ_PERCENT=6,
SZ_MONTH_YEAR=6,
SZ_TIME=4,
MAX_VALUE=999999999999999.99;
function formatCamp(campo,tp,par1,bloqueia,par2,par3){
var ie=(brow().isIE()&&!brow().isMac()),v=brow().getVersion();
var b=parent.buttons;
//if (!ie) return false;
if(ie&&(v>=5 && v<5.2)&&b&&b.myBarra&&b.myBarra.clicked==true){
	parent.buttons.myBarra.clicked=false;
	eval("try{campo.focus();}catch(e){}");
	return false;
}
var nArg=formatCamp.arguments.length;
ERRO=false;
var vr=trim(campo.value);
if(!campo|| !vr ||vr.length==0){
	if(/^(neg_)?(money|money2)$/.test(tp))campo.value="0,00";
	return false;
}
if(nArg==3)par1="";
if(tp=="interval"){
	if(nArg<=5)par3="";
	return formatType(campo,tp,par3,bloqueia,par1,par2);
}else return formatType(campo,tp,par1,bloqueia);
}
function formatType(f,tp,msgErr,bloqueia,adarg1,adarg2){
if(tp=="none"){f.value=removeSpcChars(f.value);return true;}
var vr=unformatField(f.value,tp,f.type);
LAST_FIELD=f;
var ret=isValidValue(vr,tp,adarg1,adarg2);
if(!ret){showError(tp,msgErr,bloqueia);return false;}
else if(!_isRE(tp))f.value=getFmtValue((typeof ret=="boolean")?vr:ret,tp);
ERRO=false;
return true;
}
function removeSpcChars(vr,type){
var ret="",re=/197|198|208|215|216|222|223|229|230|240|247|248/,c=0,s=String(vr);
for(var i=0;i<s.length;i++){
	c=s.charCodeAt(i);
	if((c>31&&c<253&&(c<127||c>191)&&!re.test(c))||(type=="textarea"&& (c==9||c==13||c==10)))ret+=s.charAt(i);
}
return ret;
}
function validaConteudo(event,el,tp){
var t=(typeof event.which!="undefined"&& event.which!=null?event.which:event.keyCode),key;
// Desconsidera enter
if (t == 13)
   return false;
if(tp=='none' || t<20)return true;
key=removeSpcChars(String.fromCharCode(t),el.type);
if(key=="")return false;
var tp_sp=/^sp_/.test(tp);
if(_isRE(tp))return tp.test(key);
else if(/^(percent|(neg_)?(numeric|float(\d{0,1})|money(\d{0,1})))$/.test(tp)){
	return isNumeric(key)||(!/numeric/.test(tp)&&key==","&&el.value.indexOf(",")==-1)||(/^neg_/.test(tp)&&key=="-" && el.value.indexOf("-")==-1);
}else if(/^(sp_)?alfanumeric$/.test(tp))
	return isAlfaNumeric(key)||(tp_sp && key==" ");
else if(/^(sp_)?textnumber$/.test(tp))
	return isTextNumber(key)||(tp_sp && key==" ");
else{
	switch(tp){
	case "email":return true;
	case "uppercase":return !/[\'\"]/.test(key);
	case "text":case "full_name":return isAlfa(key)|| /[ ]/.test(key);
	case "text_entry":return isTextNumber(key)||/[\.\-\/\,=]|\s/.test(key);
	case "default":return !/'|"/.test(key);
	default:return isNumeric(key);
	}
}
}
function _getNDec(t){
	var arr=t.match(/(\d+)\s*$/);
	return arr?parseInt(arr[1],10):2;
}
function unformatField(valor,tipo,inputType){
var t=(arguments.length<1)?"default":String(tipo),
vr=trim(removeSpcChars((typeof valor=="object"?valor.value:valor),(inputType?inputType:valor.type)));
if(!vr||vr.length==0)return "";
if(/^(date|month_year|time|cep|(neg_)?numeric|interval)$/.test(t))
	vr=(/^neg_/.test(t)&&vr.indexOf("-")==0?"-":"")+justNumbersStr(vr);
else if(/^(percent|(neg_)?(float(\d{0,1})|money(\d{0,1})))$/.test(t))vr=toFloat(vr,_getNDec(t));
else{
	if(/^(cpf|cnpj|cpf_cnpj)$/.test(t)){
		vr=justNumbersStr(vr);
		var isCPF=tipo=="cpf"||(tipo=="cpf_cnpj" && vr.length<=SZ_CPF);
		vr=repeatStr(vr,"0",isCPF?SZ_CPF:SZ_CNPJ);
		if(parseInt(vr,10)==0)vr="";
	}else if(t=="email")vr=trim(vr)
}
if(typeof valor=="object")valor.value=vr;
return vr;
}
function removeCaracs(f,type){
if(_isRE(type))return;
var vr=unformatField(f.value,type,f.type);
if(f.value!=vr)f.value=vr;
focusNetscape(f);
}
function _isRE(re){return typeof re=="object" && typeof re.test=="function";}
function isValidValue(vr,tp,adarg1,adarg2){
var re,isNum=isNumeric(vr);
if(_isRE(tp))return tp.test(vr);
else if(/^(cep)$/.test(tp))
	return isNum && vr.length==eval("SZ_"+tp.toUpperCase());
else if(/^percent$/.test(tp))
	return isFloatNumber(vr)&& Number(String(vr).replace(/,/g,"."))<1000;
else if(/^(percent|(neg_)?(float(\d{0,1})|money(\d{0,1})))$/.test(tp))
	return (!/^neg_/.test(tp)&&vr.indexOf("-")!=-1?false:isFloatNumber(vr));
else if(/textnumber$/.test(tp))
	return isTextNumber((tp.indexOf("sp_")==0)?removeStr(vr," "):vr);
else if(/text_entry$/.test(tp))
	return isTextNumber(vr.replace(/[\.\-\/\,=]|\s/g,""));
else if(/alfanumeric$/.test(tp))
	return isAlfaNumeric((tp.indexOf("sp_")==0)?removeStr(vr," "):vr);
else{
	switch(tp){
	case "time":
		switch(vr.length){
		case 1:vr="0"+vr+"00";break;
		case 2:vr+="00";break;
		case 3:vr="0"+vr+"0";break;
		}
		vr=repeatStr(vr,"0",4,"right");
		return(isNum && /^([0-1]\d[0-5]\d)|(2[0-3][0-5]\d)$/.test(vr))?vr:null;
	case "date":var obj=new DateValidation(vr);return (isNum && obj.isDate())?obj:null;
	case "month_year":var obj=new DateValidation("01"+vr);return (isNum && obj.isDate())?obj:null;
	case "text":return isAlfa(vr.replace(/[ ]/g,""));
	case "full_name":return isFullName(vr);
	case "email":return isEmail(vr);
	case "cpf":return isCPF(vr);
	case "cnpj":return isCNPJ(vr);
	case "cpf_cnpj":return (vr.length <=SZ_CPF)?isCPF(vr):isCNPJ(vr);
	case "interval":vr=parseInt(vr,10);return vr>=adarg1 && vr<=adarg2;
	case "default":return !/'|"/.test(vr);
	default:return true;
	}
}
}
function getFmtValue(vr,tp){
	if(tp=="cpf_cnpj")tp=(vr.length <=SZ_CPF)?"cpf":"cnpj";
	if(/^(neg_)?money/.test(tp))return fmtMoney(vr,_getNDec(tp));
	else{
		switch(tp){
		case "time":return vr.slice(0,2)+":"+vr.slice(2,4); 
		case "date":return vr.getDateValue();
		case "month_year":return vr.getMonthDateValue();
		case "cep":return vr.slice(0,5)+"-"+vr.slice(5,8);
		case "uppercase":case "full_name": return vr.toUpperCase();
		case "cpf":return vr.slice(0,3)+"."+vr.slice(3,6)+"."+ vr.slice(6,9)+ "-"+vr.slice(9,11);
		case "cnpj":return vr.slice(0,2)+"."+vr.slice(2,5)+"."+vr.slice(5,8)+"/"+vr.slice(8,12)+"-"+vr.slice(12,14);
		default:return vr;
		}
	}
}
function fmtMoney(vr,ndec){
var neg=vr.indexOf("-")==0;
if(verifyMaxValue(vr)){ERRO=true;return "0,00";}
vr=toFloat(vr,ndec);
var vraux="",p,pDec=vr.indexOf(","),vrDec=vr.slice(pDec+1);
for(var i=pDec;i>(neg?1:0);i--){
	p=i-pDec;
	if(i!=pDec&&(p%3==0))vraux+=".";
	vraux+=vr.charAt(i-1);
}
return (neg?"-":"")+invertStr(vraux)+","+vrDec;
}
function setMaxValue(vr){MAX_VALUE=vr;}
function verifyMaxValue(vr){return vr.length>0 &&(parseFloat(vr)>MAX_VALUE);}
function toFloat(src,ndec){
src=trim(src);
if(!/^\-?([0-9]|\.)*\,{0,1}[0-9]*$/.test(src)||src.charAt(0)==".")return src;
var tam=src.length,pDec=src.indexOf(",");
if(src.length==0)src="0";
if(pDec==-1){
	var p=src.indexOf(".");
	if(p!=-1&&p==(tam-ndec-1))src=src.replace(/\.(\d*)$/,",$1");
	else return removeStr(src,".")+","+repeatNStr("0",ndec);
	pDec=src.indexOf(",");
}
src=removeStr(src,".");
if(pDec==0)return "0"+src+repeatNStr("0",ndec+1-src.length);
else{
	if(pDec>(tam-ndec-1))src+=repeatNStr("0",pDec-(tam-ndec-1));
	pDec=src.indexOf(",");
	return parseInt(src.slice(0,pDec),10)+src.slice(pDec,pDec+ndec+1);
}
}
function saltaCampo(ev,field,tp,size){
var tc,max=field.maxLength,nargs=saltaCampo.arguments.length;
if(/^(neg_)?float/.test(tp))
	{//max=(nargs>3)?size:SZ_FLOAT;
   }
else if(/^(neg_)?money/.test(tp)){
	if(!verifyMaxValue(field.value))
	{//max=(nargs>3)?size:SZ_MONEY;
	}
	else field.value="0,00";
}else if(/^(date|month_year|time|cpf|cnpj|cpf_cnpj|cep|percent)$/.test(tp))
	max=eval("SZ_"+tp.toUpperCase());
tc=brow().isNetscape()?ev.which:ev.keyCode;
if ((size != null) && (size != '0'))
    max = size;
if((String(field.value).length>=max && tc>=48) || (tc==13))
	{autoSkip(field);return true;}
else return false;
}
function showError(type,msgU,bloqueia){
ERRO=true;
var b=brow(),canShow=true;
if(typeof type=="object" && !_isRE(type)){alert(msgU);focusCamp(type);return;}
if(b.isIE() && parseInt(b.getMajorver(),10)<5){
	if(CURRENT_FIELD && LAST_ERR_FIELD==CURRENT_FIELD && LAST_ERR_VALUE==CURRENT_FIELD.value){
		REPET_ERR=true;
		CURRENT_FIELD.value=LAST_ERR_VALUE="";
		LAST_ERR_FIELD=null;
		canShow=false;
	}else{
		LAST_ERR_FIELD=CURRENT_FIELD;
		LAST_ERR_VALUE=(CURRENT_FIELD?CURRENT_FIELD.value:null);
		REPET_ERR=false;
	}
}
if(canShow){
	var m=(bloqueia)?". Digite novamente!":". Continuar mesmo assim?";
	switch(type){
	case "date":msg="Data incorreta"+m;break;
	case "time":msg="Hora incorreta"+m;break;
	case "cep":msg="CEP incorreto"+m;break;
	case "email":msg="E-mail incorreto"+m;break;
	case "cpf":msg="CPF incorreto"+m;break;
	case "cnpj":msg="CNPJ incorreto"+m;break;
	case "cpf_cnpj":msg="CPF/CNPJ incorreto"+m;break;
	case "month_year":msg="Mês e ano incorreto"+m;break;
	case "full_name":
		switch(errorCode){
			case 0:msg="Nome inv&aacute;lido."+m;break;
			case 1:msg="Informe sobrenome.";break;
			case 2:msg="Informe primeiro nome com mais de 2 caracteres.";break;
			case 3:msg="Informe nome sem caracteres repetidos mais de 3 vezes.";break;
		}
		break;
	default:
		if(/money/.test(type))msg="Valor incorreto"+m;
		else msg="Dados incorretos"+m;
	}
	var x;
	if (bloqueia) {
		alert((!msgU || msgU=="")?msg:msgU);
		x = false;
	} else {
		x = confirm((!msgU || msgU=="")?msg:msgU);
	}
}
	if (!x) {
		if(brow().isNetscape())LAST_FIELD.value="";
		if(LAST_FIELD)LAST_FIELD.focus();
	}
}
function focusCamp(f){
if(brow().isNetscape())f.value="";
else f.focus();
ERRO=true;
}
function focusNetscape(f){
CURRENT_FIELD=f;
var b=brow();
if(b.isNetscape()){
	if(ERRO){LAST_FIELD.focus();ERRO=false;}
}else if(b.isIE()&& parseInt(b.getMajorver(),10)>4)if(f.select)f.select();
}
function focusField(f){
if(!f){alert("focusField: Campo não encontrado.");return;}
var ie=(brow().isIE()&&!brow().isMac()),v=brow().getVersion(),b=parent.buttons;
if(ie&&(v>=5 && v<5.2)&&b&&b.myBarra){
	var tp=f.type;
	if(tp && /^(text|password)$/.test(tp)&& f.onblur&&/formatCamp\(/.test(f.onblur)){
	  if(!window.event)window.focus();
	}else b.myBarra.clicked=false; 
}
if(f.type!="hidden" && !f.disabled)f.focus();
}
function brow(){if(typeof objBrow!="object")objBrow=new Browser();return objBrow;}
function repeatNStr(vr,n){
var r="",i;
for(i=0;i<n;i++)r+=vr;
return r;
}
function unformatFields(form){
var f,i,tp;
if(!form)return;
for(i=0;i<form.length;i++){
	f=form.elements[i];
	if(f.type=="text"){
		tp=getFieldType(f);
		if(tp){vr=unformatField(f.value,tp);f.value=(!vr?"":vr);}
	}
}
}
function getFieldType(f){
var blur=f.onblur;
if(!blur)return null;
var c=changeStr(removeStr(blur.toString()," "),"\'","\"");
c=c.replace(/[\n\t]/g,"").toLowerCase();
var ret=/^.*formatcamp\((.*)\).*$/.exec(c)[1];
return ret.split("\"")[1];
}
function isTextNumber(v){return /^[0-9a-zA-ZáéíóúçãõâêôàÁÉÍÓÚÇÃÕÂÊÔÀ]+$/.test(v);}
function isFloatNumber(n){return /^\-?\d+(,\d+|\d*)$/.test(n);}
function isCNPJ(cnpj) 
{
	if(cnpj.length==0) return false;
	cnpj= trim(cnpj);
	var digs=[],i;
	for(i=0; i<14; i++)
		digs[i]= parseInt(cnpj.charAt(i),10);
	var sDig=0,soma=0,resto=0,dVer1=-1,dVer2=-1;
	var fat1=[5,4,3,2,9,8,7,6,5,4,3,2];
	var fat2=[6,5,4,3,2,9,8,7,6,5,4,3,2];
	for(var i=0; i<12; i++)
		sDig+= (digs[i]*fat1[i]);
	resto= sDig % 11;
	dVer1= (resto==0)?0:(11 - resto)%10;
	if(digs[12]==dVer1) 
	{
		sDig=resto=0;
		for(i=0;i<13;i++) 
			sDig+= (digs[i]*fat2[i]);
		resto=sDig%11;
		dVer2=(resto==0)?0:(11-resto)%10;
	}
	return digs[12]==dVer1 && digs[13]==dVer2;
}
function isCPF(cpf)
{
	var OK;
	cpf= justNumbersStr(trim(cpf));
	if(onlySameNumber(cpf)) return false;
	var size=cpf.length;
	if(size>10)
	{
		var vr=cpf.substring(0,size-2)
		var resto= getVerificationDigit(vr);
		OK= resto==parseInt(cpf.charAt(size-2));
		if(OK)
		{
			vr+=resto;
			resto=getVerificationDigit(vr);
			OK= resto==parseInt(cpf.charAt(size-1));
		}
	}
	return OK;
}
function getVerificationDigit(S)
{
	var s=0,i;
	var inv=invertStr(justNumbersStr(S));
   for(i=0;i<inv.length;i++)
        s+=(i+2)*parseInt(inv.charAt(i));
   s*=10;
   return (s%11)%10;
}
function DateValidation(d){
	this.dtSrc=d;
	this.dtValue="";
	this.isDate=_isDate;
	this.getDateValue=function() {return(this.dtValue);};
	this.getMonthDateValue=function() {return(this.dtValue.slice(3));} 
}
function _isDate(){
	var vrs=/^(0[1-9]|[1-2][0-9]|3[0-1])(0[1-9]|1[0-2])(\d{2}|19\d{2}|20\d{2})$/.exec(justNumbersStr(this.dtSrc));
	if(!vrs || vrs.length<4)return false;
	var d=parseInt(vrs[1],10),m=parseInt(vrs[2],10),a=parseInt(vrs[3],10);		
	if(a<100)a+=(a<30?2000:1900);
	if(/^(4|6|9|11)$/.test(m) && d==31)return false;
	if(m==2){
		var bissexto=(((a%4==0)&&a%100!=0)||a%400==0);
		if(d>29 ||(d==29 && !bissexto))return false;
	}
	this.dtValue=repeatStr(d,"0",2)+"/"+repeatStr(m,"0",2)+"/"+a;
	return true;
}
function DateObj(d){
	d=trim(d);
	if(!d)return;
	var t=d.length,tamDia=2,tamMes=2;
	if(t==10||t==8||t==6||t==9){
		this.isValid=true;
		this.srcDate=d;
		this.setDay=function(d){this.day=repeatStr(d,"0",2);}
		this.setMonth=function(m){this.month=repeatStr(m,"0",2);}
		this.setYear=function(a){
			var nAno=parseInt(a,10);
                	if(nAno<100){
				nAno+=(nAno<30?2000:1900);
				this.year=String(nAno);
			}else this.year=String(a);
		}
		this.date=d.replace(/\//g,"");
		this.day=this.month=this.year='';
		if(t==8 && /^\d\/\d\/\d{4}$/.test(d)){
			tamDia=1;
			tamMes=1;
		}else if( t==9 && /^\d\/\d{2}\/\d{4}$/.test(d)){
			tamDia=1;
			tamMes=2;
		}
		this.setDay(this.date.slice(0,tamDia));
		this.setMonth(this.date.slice(tamDia,tamDia+tamMes));
		this.setYear(this.date.slice(tamDia+tamMes));
		this.daysTo=_DaysTo;
		this.lesserThan=function(d){return Number(this.year+this.month+this.day) < Number(d.year+d.month+d.day)};
		this.biggerThan=function(d){return (!this.lesserThan(d)&& !this.equal(d));}
		this.equal=function(d){return (Number(this.day)==Number(d.day)&& Number(this.month)==Number(d.month) && Number(this.year)==Number(d.year));}
		this.biggerOrEqualThan=function(d){return this.biggerThan(d)||this.equal(d)};
		this.lesserOrEqualThan=function(d){return this.lesserThan(d)||this.equal(d)};
		this.add=_DOAdd;
		this.formatDate=_DOFormat;
	}else this.isValid=false;
}
function _DOFormat(d){
if(!d)d="dd/mm/aaaa";
var t=d.length,i=0,s="",m=["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],tk;
	while(i<t){
		tk=d.substring(i,i+2);
		if(/^aa|mm|dd|MM$/.test(tk)){
			switch(tk){
			case "dd":s+=this.day;break;
			case "mm":s+=this.month;break;
			case "MM":s+=m[Number(this.month)-1];break;
			case "aa":
				if(d.substring(i+2,i+4)=="aa"){s+=this.year;i+=2;}
				else s+=String(this.year).substring(2,4);
				break;
			}
			i+=2;
		}else{s+=d.substring(i,i+1);i+=1;}
	}
	return s;
}
function _DOAdd(d){
	if(typeof d!="number")return;
	var dA=new Date(this.month+"/"+this.day+"/"+this.year);
	dA.setDate(Number(d)+Number(this.day));
	this.day=repeatStr(dA.getDate(),"0",2);
	this.month=repeatStr(dA.getMonth()+1,"0",2);
	this.year=dA.getUTCFullYear();
}
function _DaysTo(d){
	var msDay=24*60*60*1000;
	var s=new Date(this.month+"/"+this.day+"/"+this.year);
	var f=new Date(d.month+"/"+d.day+"/"+d.year);
	return Math.floor((f.getTime()-s.getTime())/msDay);
}
function isInInterval(dtIn,dtFi,pIn,pFi,msg1,msg2,msg3){
	var iDt=new DateObj(dtIn),fDt=new DateObj(dtFi);
	var iPer=new DateObj(pIn),fPer=new DateObj(pFi);
	if(!msg1||msg1=="")msg1='Data inicial maior que a data final. Digite novamente.';
	if(!msg2||msg2=="")msg2='Data inicial fora do período disponível. Digite novamente.';
	if(!msg3||msg3=="")msg3='Data final fora do período disponível. Digite novamente.';
	if(iDt.isValid&&fDt.isValid&&iPer.isValid&&fPer.isValid){
		if(fDt.lesserThan(iDt)){alert(msg1);return false;}
		else if(iDt.lesserThan(iPer)){alert(msg2);return false;}
		else if(fPer.lesserThan(fDt)){alert(msg3);return false;}
		return true;
	}
}

function isToday(dtObj){
	var iDt=new DateObj(dtObj);
	var dA=new Date();
	var hDt=new DateObj(repeatStr(dA.getDate(),"0",2)+"/"+repeatStr(dA.getMonth()+1,"0",2)+"/"+dA.getUTCFullYear());
	if(iDt.isValid){
		if(iDt.equal(hDt)){return true;}
		return false;
	}
}

function isPast(dtObj){
	var iDt=new DateObj(dtObj);
	var dA=new Date();
	var hDt=new DateObj(repeatStr(dA.getDate(),"0",2)+"/"+repeatStr(dA.getMonth()+1,"0",2)+"/"+dA.getUTCFullYear());
	if(iDt.isValid){
		if(iDt.lesserThan(hDt)){return true;}
		return false;
	}
}

function isInDaysLimit(dtIn,dtFi,dias,msg){
	if(!msg)msg="O intervalo entre as datas não pode ultrapassar "+dias+(dias>1?" dias":" dia")+". Digite novamente.";
	var sDt=new DateObj(dtIn),fDt=new DateObj(dtFi);
	if(sDt.isValid && fDt.isValid){
		if((sDt.daysTo(fDt)+1)>dias){alert(msg);return false;}
		return true;
	}
}

function Formata_Data(vData)
{
   if(vData=="")return "";

   if(vData.indexOf('/')<0)
   {
      var vDia=vData.substring(0,2),vMes=vData.substring(2,4),vAno = vData.substring(4,8);
   }
   else
   {
      var vDia = vData.substring(0,2),vMes=vData.substring(3,5),vAno=vData.substring(6,10);
   }
   return vAno+vMes+vDia;
}

function isEmail(email)
{
	var v=trim(email);
	// exp1: Trata erros grosseiros (@...@ , .. , .@ , etc.)
	// exp2: Garante carac. validos e estrutura: <usuario>@<maquina>
	// exp3: Garante no minimo um ponto depois do "@" 
	var exp1= /(\@.*\@)|(.*\.\..*)|(.*\@\..*)|(^\.)|(\.$)|(\@\/)|(.*\@\-.*)|(.*\.$)/;
	var exp2= /^[_\w\d][\w\d\_\/\-\.]*\@[\d\w\-\.]+[0-9A-z]$/;
	var exp3= /.*\@.*[\.].*/;
	return(!exp1.test(v)&& exp2.test(v)&& exp3.test(v));
}

function Browser(){
this.name=this.platform="Unknown";
this.majorver=this.version=this.minorver="";
this.mozilla=false;
this.init=_Init;
this.getName=function(){return this.name};
this.getMinorver=function(){return this.minorver};
this.getMajorver=function(){return this.majorver};
this.getVersion=function(){return parseFloat(this.version,10)};
this.getPlatform=function(){return this.platform}; 
this.isIE=function(){return(this.name=="IE")};
this.isNetscape=function(){return(this.name=="Netscape")};
this.isMozilla=function(){return this.mozilla};
this.isWindows=function(){return _has(this.platform,["Windows","WinNT"])};
this.isWinNT=function(){return _has(this.platform,["WinNT","Windows NT"])};
this.isWin95=function(){return _has(this.platform,["Win95","Windows 95"])};
this.isWin98=function(){return _has(this.platform,["Win98","Windows 98"])};
this.isLinux=function(){return _has(this.platform,"Unix")};
this.isMac=function(){return _has(this.platform,"Mac");};
this.init();
}
function _Init(){
var ua=navigator.userAgent,t="",ts="",i,bv;
bv=ua.slice(0,ua.indexOf("("));
ts=ua.slice(ua.indexOf("(")+1,ua.indexOf(")")).split(";");
for(i=0;i<ts.length;i++){
	t=ts[i].trim();
	if(_has(t,["MSIE","Opera"]))bv=t;
	else if(_has(t,["X11","SunOS","Linux"]))this.platform="Unix";
	else if(_has(t,["Mac","PPC","Win"]))this.platform=t;
}
var idx=bv.indexOf("MSIE"),lo="";
if(idx>=0)bv=bv.slice(idx);
if(bv.slice(0,7)=="Mozilla"){
	lo="";
	this.name="Netscape";
	if(ua.indexOf("Gecko/")!=-1){
		if(/Netscape/.test(ua)){
			var v=/([^\/]+)\s*$/.exec(ua);
			if(v&&v.length>1)lo=v[1]+" ";
		}else{
			this.mozilla=true;
			var v=/rv:([^\)]+)\)/.exec(ua);
			if(v&&v.length>1)lo=v[1]+" ";
		}
	}
	if(lo=="")lo=bv.slice(8);
}else if (bv.slice(0,4)=="MSIE"){
	this.name="IE";lo=bv.slice(5);
}else if (bv.slice(0,27)=="Microsoft Internet Explorer"){
	this.name="IE";lo=bv.slice(28);
}else if (bv.slice(0,5)=="Opera"){
	this.name="Opera";lo=bv.slice(6);
}
lo=lo.trim();
i=lo.indexOf(" ");
if(i>=0)this.version=lo.slice(0,i);
else this.version=lo;
j=this.version.indexOf(".");
if(j>=0){
	this.majorver=this.version.slice(0,j);
	this.minorver=this.version.slice(j+1);
}else this.majorver=this.version;
}
function _has(s,a){
s=String(s);
if(typeof(a)=="string")return s.indexOf(a)!=-1;
else{
	for(var i=0;i<a.length;i++)if(s.indexOf(a[i])!=-1)return true;
	return false;
}
}
function _TRIM(){
var s=0,e=this.length;
while(s<e&&this.charAt(s)==' ')s++;
while(e>0&&this.charAt(e-1)==' ')e--;
return this.slice(s,e);
}
String.prototype.trim=_TRIM;
function trim(s){return String(s).replace(/^\s+/,"").replace(/\s+$/,"");}
function autoSkip(field,orient){
	var ind=-1,f=field.form;
	for(i=0;i<f.elements.length;i++)
		if(field==f.elements[i]){ind=i;break;}
	focusCampByPos(f,ind,orient);
}
function autoFocus(f){focusCampByPos((arguments.length==0?document.forms[0]:f),-1);}
function focusCampByPos(fr,ind,orient){
	orient=orient?orient:"down";
	var iNext=(orient=="down"?1:-1),el;
	if((typeof fr.elements[ind+iNext])=="undefined"){
      if(ind!=-1)if(fr.elements[ind]&&fr.elements[ind].blur)fr.elements[ind].blur();
		return;
   }
	for(var i=ind+iNext;i<fr.elements.length;i+=iNext){
		el=fr.elements[i];
		if(/^(button|text|textarea|password|select.*|radio|checkbox.*)$/.test(el.type) && !el.disabled)
		{
			try
			{			
				el.focus(); return;
			}
			catch(er)
			{
			}
		}
   }
	if(fr.elements[ind]&&fr.elements[ind].blur)fr.elements[ind].blur();
}
function isNumeric(v){return /^[0-9]+$/.test(v);}
function isAlfa(v){return /^[a-zA-ZáéíóúçãõâêôàÁÉÍÓÚÇÃÕÂÊÔÀ]+$/.test(v);}
function isAlfaNumeric(v){return /^[0-9a-zA-Z]+$/.test(v);}
function invertStr(s){
	var t="",i;
	for(i=0;i<s.length;i++)t=s.charAt(i)+t;
	return t;
}
function removeStr(src,arg){
	var v=(typeof arg=="string")?[arg]:arg;
	var r="";
	for(var i=0;i<v.length;i++)r=changeStr(src,v[i],"");
	return r;
}
function repeatStr(src,str,size,orient){
	var r=String(src);
	if(!orient)orient="left";
	while(r.length < size)r=orient.toLowerCase()=="right"?(r+str):(str+r);
	return r;
}
function changeStr(src,from,to)
{
	src=String(src);
	var i,li=0,lFrom= from.length,dst="";
	while((i=src.indexOf(from,li))!=-1){
		dst+=src.substring(li,i)+to;
		li=i+lFrom;
	}
	dst+=src.substring(li);
	return dst;
}
function justNumbersStr(s){return String(s).replace(/\D*/g,"");}
function onlySameNumber(s){return isNumeric(s)&& (new RegExp("^("+s.charAt(0)+")(\\1)*$")).test(s);}
function StrToFloat(valor)
{
	if (valor == '')
		return parseFloat('0')
	else
		return parseFloat(changeStr(changeStr(valor, '.',''),',','.'));
}

function Round(Numero, decimais)
{
  Valor = Numero;
  ndecimais = Math.pow(10, decimais);
  Valor = Valor * ndecimais;

  Valor = Math.round(Valor);
  Valor = Valor /ndecimais

  return Valor;
}

function checkCamposObrig(form,nomes,headers,msgF){
  var numV=0,indV,v,obj,field=null,check=true;
  var CV=(msgF && typeof msgF=="string")?msgF+"\n\n":"\nVocê deve preencher o(s) campo(s):\n\n";
	if(checkCamposObrig.arguments.length<3){
		alert("No. de arg. incorretos.");
		return false;
	}
	if(!form || !form.elements){
		alert("O objeto Form não foi especificado.\n");
		return false;
	}
	for(var i=0;i<nomes.length;i++){
		obj=$(nomes[i]);
		if(typeof obj=="undefined")alert("O campo "+nomes[i]+" não foi encontrado.");
		else{
			if(isSelect(obj)){
				ind=obj.selectedIndex;
				v=(obj.length==0 || ind==-1)?"":obj.options[ind].value;
			}else if(isRadio(obj))v=getRadioValue(obj);
			else v=obj.value;
			if(isNull(v)){
				CV+=headers[i]+"\n";
				check=false;
				if(!field)field=obj;
				numV++;
				if(numV==1)indV=nomes[i];
			}
		}
	}
	if(!check){
		alert(CV);
		if(!isRadio(field)&&(typeof field!="undefined")&&(typeof field.type!="undefined" && field.type!="hidden"))
			window.focusField?focusField(field):field.focus();
		else if(isRadio(field) && typeof field.length=="number" && field.length>0)field[0].focus();
	}
	return check;
}

function checkNumericosObrig(form,nomes,headers,msgF){
  var numV=0,indV,v,obj,field=null,check=true;
  var CV=(msgF && typeof msgF=="string")?msgF+"\n\n":"\nVocê deve preencher o(s) campo(s):\n\n";
	if(checkNumericosObrig.arguments.length<3){
		alert("No. de arg. incorretos.");
		return false;
	}
	if(!form || !form.elements){
		alert("O objeto Form não foi especificado.\n");
		return false;
	}
	for(var i=0;i<nomes.length;i++){
		obj=form.elements[nomes[i]];
		if(typeof obj=="undefined")alert("O campo "+nomes[i]+" não foi encontrado.");
		else{
		   v=obj.value;
		   vvlr=false;
			vvlr=(vvlr||(obj.value.indexOf('1')!=-1));
			vvlr=(vvlr||(obj.value.indexOf('2')!=-1));
			vvlr=(vvlr||(obj.value.indexOf('3')!=-1));
			vvlr=(vvlr||(obj.value.indexOf('4')!=-1));
			vvlr=(vvlr||(obj.value.indexOf('5')!=-1));
			vvlr=(vvlr||(obj.value.indexOf('6')!=-1));
			vvlr=(vvlr||(obj.value.indexOf('7')!=-1));
			vvlr=(vvlr||(obj.value.indexOf('8')!=-1));
			vvlr=(vvlr||(obj.value.indexOf('9')!=-1));
			if(isNull(v) || (!vvlr)){
				CV+=headers[i]+"\n";
				check=false;
				if(!field)field=obj;
				numV++;
				if(numV==1)indV=nomes[i];
			}
		}
	}
	if(!check){
		alert(CV);
		if(!isRadio(field)&&(typeof field!="undefined")&&(typeof field.type!="undefined" && field.type!="hidden"))
			window.focusField?focusField(field):field.focus();
		else if(isRadio(field) && typeof field.length=="number" && field.length>0)field[0].focus();
	}
	return check;
}

function isNull(s){
	var c;s=String(s);
	if(!s ||s.length==0)return true;
	else{
		for(i=0;i<s.length;i++){
			c=s.charAt(i);
			if(c!='\r'&&c!='\n'&&c!=' ')return false;
		}
		return true;
	}
}   
function isSelect(obj){return /^(select-one|select-multiple)$/.test(obj.type);}
function isRadio(obj){return typeof obj.type=="undefined" && obj.length>1;}
function getRadioValue(obj){
	for(var i=0;i<obj.length;i++)if(obj[i].checked)return obj[i].value;
	return "";
}

function impValEmail(field, bMsg){
	if (field.value=='') 
	{
		if(bMsg) alert ("O endereço de email não foi informado!")
		return false;
	}
	if (!EmailValidate(field.value)){// formato não reconhecido
	 	 	if(bMsg) alert ("O endereço de email informado não é valido!")
			field.select();field.focus();
			return false 
			}
	else {return true }
}

function EmailValidate(val) {
    if(val==""){
        return true;
        //Can be return false; if you want to validate "cannot be blank value"
    }
    var value = Trim(val);
    var emailPat=/^(.+)@(.+)$/;
    var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]";
    var validChars="\[^\\s" + specialChars + "\]";
    var quotedUser="(\"[^\"]*\")";
    var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
    var atom=validChars + '+';
    var word="(" + atom + "|" + quotedUser + ")";
    var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
    var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");
    var matchArray=value.match(emailPat);
    if (matchArray==null) {
        return false;
    }
    var user=matchArray[1];
    var domain=matchArray[2];
    if (user.match(userPat)==null){
        return false;
    }
    return true;
}

function IsDate(data, tit)
{

var aux = String("0;Janeiro;Fevereiro;Março;Abril;Maio;Junho;Julho;Agosto;Setembro;Outubro;Novembro;Dezembro");
var mes = aux.split(";");

var dtarray = data.split("/");
var dd = dtarray[0].toString();		// dia 
var mm = dtarray[1].toString();		// mes
var aaaa = dtarray[2].toString();	// ano
var dtaux = dd + mm + aaaa;

if (mm=="04" || mm=="06" || mm=="09" || mm=="11")
	{
	if (dd > 30)
		{
		var i = parseInt(mm);
		alert("Dia incorreto para " + tit + ". O último dia do mês '" + mes[i].toString() + "' é 30");
		return false;
		}
	}
if (mm=="02")
	{
	if (dd > 29)
		{
		alert("Dia incorreto para " + tit + " no mês de fevereiro.");
		return false;
		}
	if (dd == 29)
		{
		if (aaaa % 4 != 0)
			{
			alert("Dia incorreto para " + tit + " no mês de fevereiro. O ano '" + aaaa + "' não é um ano bissexto.");
			return false;
			}
		}
	}
return true;
}

//Define posiç&atilde;o da janela no centro da tela
function Centraliza(Url, Titulo, iW, iH) {
  PosX = ((screen.availWidth - iW)/2);
  PosY = ((screen.availHeight - iH)/2);
  Janela=AbreJanelaAvisaBlock(Url,Titulo,"toolbar= 0,location= 0,directories= 0,status= 1,menubar= 0,scrollbars= 1,resizable= 0,copyhistory= 1,width=" + iW + ",height=" + iH + ",left=" + PosX + ",top=" + PosY + ",screenX=" + PosX + ",screenY=" + PosY);
  Janela.focus();
}

//Define posiç&atilde;o da janela no centro da tela
function Maximiza(Url, Titulo) {
	Janela=AbreJanelaAvisaBlock(Url,Titulo,"toolbar= 0,location= 0,directories= 0,status= 1,menubar= 0,scrollbars=1,resizable=1,copyhistory=0,left=0,top=0,screenX=0,screenY=0");
	Janela.moveTo(-4,-4)
	Janela.resizeTo(screen.availWidth + 8, screen.availHeight + 8)
	Janela.focus();
}

//Define o site como p&aacute;gina inicial do IE
function SetHomeSite(olink) {
    Endereco = window.location;
    olink.style.behavior='url(#default#homepage)'
    olink.setHomePage(Endereco);
    return false;
}

//Funç&atilde;o para adicionar o Site atual ao Favoritos do IE
function AddBookmark() {
    Titulo = document.title;
    Endereco = window.location;
    window.external.AddFavorite(Endereco, Titulo);
}

function AbreJanelaAvisaBlock(pagina, titulo, opcoes) {
	var newWin = window.open(pagina,titulo,opcoes);
	if (!(newWin && newWin.top)) {
		alert("Você está com um bloqueador de janelas ativado, favor desbloquear este site para sua melhor navegação!")
	} 
		else return newWin;
}

String.prototype.capitalize = function(){ //v1.0
    return this.replace(/\w+/g, function(a){
        return a.charAt(0).toUpperCase() + a.substr(1).toLowerCase();
    });
};
//-->