// DynClick - Form
// Versao 0.93 - 19/06/2002

// Basics

function DFckForm(f, defOblig, disable) {
   return DFcheckForm(f, defOblig, disable);
}

function DFcheckForm(f,onlyObligatory,submitonce)
{
	clearClass(f);
	for(var i=0;i<f.length;i++){
		v=true;
		if(f[i].type=='text'||f[i].type=='textarea'||f[i].type=='password')v=f[i].value;
		else if(f[i].type=='select-one')v=f[i][f[i].selectedIndex].value;
		else if(f[i].type=='radio'){v=false;for(var j=0;j<f[f[i].name].length;j++){if(f[f[i].name][j].checked)v=f[f[i].name][j].value}}
		else if(f[i].type=='hidden'){v=true;for(var j=0;j<f.length;j++){if(f[i].name==f[j].getAttribute('target')){if(!f[j].value)v=false}}}
		if(!v){
			obligatory=(d.layers)?null:f[i].getAttribute('obligatory');
			if(f[i].type!='hidden'&&(((!onlyObligatory&&obligatory!='no')||(onlyObligatory&&obligatory=='yes'))||d.layers)){DFcheckFormAlert(f[i]);return false}
		}
		else{
			if(f[i].type=='text'||f[i].type=='textarea'||f[i].type=='password'){
				if(!DFcheckMinLength(f[i]))return false;
				if(!DFcheckFormPlus(f[i]))return false;
				if(f[i].type=='textarea'){
					maxlength=f[i].getAttribute('maxlength');
					if(maxlength) {
						if(!DFtextareaCheckLength(f[i], maxlength))return false;
					}
				}
			}
			else if(f[i].type=='hidden'&&!d.layers){
				for(var j=0;j<f.length;j++){if(f[i].name==f[j].getAttribute('target')){f[i].value='';break}}
				for(var j=0;j<f.length;j++){if(f[i].name==f[j].getAttribute('target'))f[i].value+=f[j].value+((f[j].getAttribute('separator'))?f[j].getAttribute('separator'):'')}
				for(var j=0;j<f.length;j++){if(f[i].name==f[j].getAttribute('target')){if(!DFcheckFormPlus(f[i]))return false}}
			}
		}
	}
	if(submitonce)DFsubmitonce(f);
	return true;
}

function DFscrollTopPosition(){return (is.ie)?d.body.scrollTop:pageYOffset}

function DFcheckFormAlert(f,plus)
{
	label=(d.layers)?f.name:f.getAttribute('label');
	label=(label)?label:f.name;
	var scrTop=DFscrollTopPosition();
	if(f.type=='select-one'||f.type=='radio')S='O campo '+label+' deve ser selecionado';
	else if(plus)S='O campo '+label+' está inválido';
	else S='O campo '+label+' deve ser preenchido.';
//	S+=label

	if(plus=='number')S='O campo '+label+' está inválido';
	if(plus=='password')S=label+' e sua confirmação não possuem os mesmos valores';
	if(plus=='minlength')S='O campo '+label+' deve ter no mínimo '+f.getAttribute('minlength')+' caracteres';
	if(f.type!='hidden'){
		if(!d.layers){
			
			alertStyle = f.getAttribute('alertStyle');
			if (!alertStyle)
				alertStyle = 'DF-alert';
						
			if(plus=='password'){for(var i=0;i<f.form.length;i++){if(f.form[i].getAttribute('xtype')=='password')f.form[i].className=alertStyle}}
			else if(f.type=="radio"){for(var i=0;i<f.form[f.name].length;i++){f.form[f.name][i].className=alertStyle}}
			else f.className=alertStyle;
		}
		f.focus();
	}
	else if(!d.layers){
		for(var i=0;i<f.form.length;i++){if(f.form[i].getAttribute('target')==f.name){f.form[i].className='DF-alert';}}
		for(var i=0;i<f.form.length;i++){if(f.form[i].getAttribute('target')==f.name){f.form[i].focus();break}}
	}
	if(scrTop!=DFscrollTopPosition())scrollBy(null,scrTop>DFscrollTopPosition()?-20:80);
	alert(S);
}

function DFcheckMinLength(f){
	minLength=(d.layers)?null:f.getAttribute('minlength');
	if(minLength){if(f.value.length<minLength){DFcheckFormAlert(f,'minlength');return false}}
	return true;
}

function DFcheckFormPlus(f){
	xtype=(d.layers)?null:f.getAttribute('xtype');
	if(xtype){
		S='DFcheck'+xtype.charAt(0).toUpperCase()+xtype.substring(1).toLowerCase();
		if(isDef(S)){if(!eval(S)((xtype=='password')?f:f.value)){DFcheckFormAlert(f,xtype);return false}}
	}
	return true;
}


// Plus Checks

function DFcheckNumber(v){if(!isNaN(v))return true}

function DFcheckDate(v){
	if(v.length!=10)return false;
	var date=v.split('/');
	var d=parseInt(date[0],10);
	var m=parseInt(date[1],10);
	var y=parseInt(date[2],10);
	if(!DFcheckDateDay(d))return false;
	else if(!DFcheckDateMonth(m))return false;
	else if(!DFcheckDateYear(y))return false;
	else if( (m==4||m==6||m==9||m==11) && (d==31)) return false;
	else if(m==2 && (d>29 || (d==29&&((y%4)!=0)))) return false;
	return true;
}

function DFcheckDateDay(v){if(v>=1&&v<=31)return true}
function DFcheckDateMonth(v){if(v>=1&&v<=12)return true}
function DFcheckDateYear(v){if(v>=1)return true}

function DFcheckBirthday(v){
	if(!DFcheckDate(v))return false;
	var date=v.split('/');
	var d=date[0];
	var m=date[1];
	var y=date[2];
	date=parseInt(date[2]+date[1]+date[0],10);
	if(date<18500102||date>((isDef('DFdate'))?DFdate:20020101))return false;
	return true;
}

function DFcheckEmail(v){
	var a=0;
	var p=0;
	for(var i=1;i<v.length;i++){
		if(!v.charAt(i))return false;
		else if(v.charAt(i)=='@'){a++;if(v.charAt(i+1)=='')return false}
		else if(v.charAt(i)=='.'){p++;if(v.charAt(i+1)==''||v.charAt(i+1)=='@'||v.charAt(i-1)=='@')return false}
	}
	if(a==1&&p)return true;
}

function DFcheckCpf(v){
	var s=null;
	var r=null;
	if(v.length!=11||
		v=='00000000000'||v=='11111111111'||v=='22222222222'||v=='33333333333'||v=='44444444444'||
		v=='55555555555'||v=='66666666666'||v=='77777777777'||v=='88888888888'||v=='99999999999')return false;
	s=0;
	for(var i=0;i<9;i++)s+=parseInt(v.charAt(i))*(10-i);
	r=11-(s%11);
	if(r==10||r==11)r=0;
	if(r!=parseInt(v.charAt(9)))return false;
	s=0;
	for(var i=0;i<10;i++)s+=parseInt(v.charAt(i))*(11-i);
	r=11-(s%11);
	if(r==10||r==11)r=0;
	if(r!=parseInt(v.charAt(10)))return false;
	return true;
}

function DFcheckCnpj(v) {
	var m=['543298765432','6543298765432'];
	var d=[0,0];
	
	for(var t=0;t<2;t++) {
		for(x=0;x<13;x++) {
			if((t==0&&x!=12)||t==1) {
				d[t]+=(parseInt(v.slice(x,x+1)) * parseInt(m[t].slice(x,x+1)));
			}
		}
		d[t]=(d[t]*10)% 11;
		if(d[t]==10)d[t]=0;
	}
	
	return(d[0]==parseInt(v.slice(12,13)) && d[1]==parseInt(v.slice(13,14)));
}

function DFcheckCpforcnpj(v){
	return (DFcheckCpf(v) || DFcheckCnpj(v));
}

function DFcheckPassword(f){
	for(var i=0;i<f.form.length;i++){
		if(f.form[i].getAttribute('xtype')=='password'&&f.form[i]!=f){
			if(f.form[i].value&&f.value!=f.form[i].value)return false;
		}
	}
	return true;
}

function DFcheckName(v){
	reg1=/[^ A-ZáàãâäéèêëíìîïóòõôöúùûüçýÝ.´]/i;
	reg2=/[ ]{2}/;
	if(v.substr(0,1)==' ')return false;
	else if((v.search(reg1)!=-1)||(v.search(reg2)!=-1))return false;
	else if(v.substr(v.lastIndexOf(' '))==' ')return false;
	else return true;
}

function DFcheckFullname(v){
        v = trim(v);
	if(!DFcheckName(v))return false;
	if(v.indexOf(' ')==-1)return false;
	else return true;
}

function DFcheckCep(v){
	if(v.length!=9)return false;
	reg=/[^0-9-]/;
	if(v.search(reg)!=-1)return false;
	var codp=v.split('-');
	var cod1=parseInt(codp[0],10);
	var cod2=parseInt(codp[1],10);
	return true;
}


// Tools

function DFselectRadio(radio,i){eval(radio)[parseInt(i)].checked='true'}

function DFtextareaMaxLength(f,length,e){
	if(is.ns){if(e.which==0||e.which==8)return true}
	if(f.value.length>=length)return false;
}

function DFtextareaCheckLength(f,len){
	if(f.value.length>len){
		label=(d.layers)?f.name:f.getAttribute('label');
		label=(label)?label:f.name;
		alert('O campo '+label+' deve ter no máximo '+len+' caracteres.');
		return false;
	}
	return true;
}

function DFtextareaCounter(f,counter){eval('f.form.'+counter).value=f.value.length}

function DFchangeField(f){
	if(f.value.length==f.maxLength){
  	for(var i=0;i<f.form.length;i++){
    	if(f.form[i]==f&&f.form[i+1]){f.form[i+1].focus();break}
		}
	}
}

function DFonlyThisChars(numbers,letters,others,e){
	if(window.event)key=window.event.keyCode;
	else if(e)key=e.which;
	else return true;
	S=(others)?others:'';
	if(numbers)S+='0123456789';
	if(letters)S+='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
	if(key==null||key==0||key==8||key==9||key==13||key==27)return true;
	else if(S.indexOf(String.fromCharCode(key))!=-1)return true;
	else return false;
}

function DFnotOnlyThisChars(S,e){
	if(window.event)key=window.event.keyCode;
	else if(e)key=e.which;
	else return true;
	if(!S)return false;
	else if(key==null||key==0||key==8||key==9||key==13||key==27)return true;
	else if(S.indexOf(String.fromCharCode(key))!=-1)return false;
	else return true;
}

function DFonlyThisChars(numbers,letters,others,e,disableCopy)
{	
	if (disableCopy == true) {
		//list all CTRL + key combinations you want to disable
		var forbiddenKeys = new Array('c', 'x', 'v');
		var key;
		var isCtrl;
		
		if (window.event) {
			key = window.event.keyCode; //IE
			if (window.event.ctrlKey) {
				isCtrl = true;
			}
			else {
				isCtrl = false;
			}
		}
		else {
			key = e.which; //firefox
			if (e.ctrlKey) {
				isCtrl = true;
			}
			else {
				isCtrl = false;
			}
		}
		
		//if ctrl is pressed check if other key is in forbidenKeys array
		if (isCtrl) {
			for (i = 0; i < forbiddenKeys.length; i++) {
				//case-insensitive comparation
				if (forbiddenKeys[i].toLowerCase() == String.fromCharCode(key).toLowerCase()) {
					return false;
				}
			}
		}
	}
	if(window.event)key=window.event.keyCode;
	else if(e)key=e.which;
	else return true;
	S=(others)?others:'';
	if(numbers)S+='0123456789';
	if(letters)S+='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
	if(key==null||key==0||key==8||key==9||key==13||key==27)return true;
	else if(S.indexOf(String.fromCharCode(key))!=-1)return true;
	else return false;
}


function DFsubmitonce(f){
	if(!d.layers){
		for(var i=0;i<f.length;i++){
			if(f[i].type=='submit'||f[i].type=='reset'||f[i].type=='image')f[i].disabled=true;
		}
	}
}

function DFchangeClassFocus(a,c){
	alert(a);
	clearClass(c.form);
	if(!d.layers){
		if(c.type=="radio"){for(var i=0;i<c.form[c.name].length;i++){c.form[c.name][i].className='DF-alert'}}
		else c.className='DF-alert';
	}
	c.focus();
	return false;
}

function clearClass(f){
	for(var i=0;i<f.length;i++){
		if(!d.layers){
			if(!f[i].classNameOld)f[i].classNameOld=f[i].className||'df-null';
			else f[i].className=f[i].classNameOld;
		}
	}
}

function clearClassForms(){
	for(var i=0;i<document.forms.length;i++){
		clearClass(document.forms[i]);
	}
}

function DFgetDateObject(){
	var T=this;
	var d=T.v[0];
	var m=T.v[1];
	var a=T.v[2];
	if(d==''||m==''||a=='')return null;
	m--;
	if(!T.ckDateDay(d))return false;
	else if(!T.ckDateMonth(m))return false;
	else if(!T.ckDateYear(a))return false;
	else if((m==3||m==5||m==8||m==10)&&(d==31))return false;
	else if(m==1&&(d>29||(d==29&&((a%4)!=0))))return false;
	return new Date(a,m,d);
}

function DFgetValSel(c,ind){
	var i=c.selectedIndex;return(ind)? i : c[i].value;
}

function DFalert(a,cArr){
	var c1=((cArr[0].length>0)? cArr[0][0] : cArr[0]);
	DFclrClass(c1.form);
	for(var i=0;i<cArr.length;i++){
		var T=cArr[i];
		if(T.length > 0){
			if(T[0].type=='radio'||T[0].type=='checkbox'){
				for(var j=0;j<T.length;j++){T[0].form[T[0].name][j].className='DF-alert';}
			}else{
				T.className='DF-alert';
			}
		}else{
			T.className='DF-alert';
		}
	}
	c1.focus();
	alert(a);
	DFsbm=false;
	return false;
}

function DFclrClass(f){
	for(var i=0;i<f.length;i++){
		if(!f[i].classNameOld){f[i].classNameOld=f[i].className||'DF-null';
		}else{
			f[i].className=f[i].classNameOld;
		}
	}
}


// Retorna o indice ou o valor de um campo
var retValue=false;
function valSel(c,retValue){
	if(retValue) return c[c.selectedIndex].value;
	else return c.selectedIndex;
}

