
var aCampos = Array(1);
var aGrupos;
var flValidarGrupos = false;
var flCPF = false; // alteradas em cpf_cnpj.js
var flCNPJ = false;
var sAlphaNum = "0123456789abcdefghijklmnopqrstuvwxyz";
var sNum = "0123456789";

function aCamposInit(frm)
{
var ctype = "";
var FieldType = "";
var FieldName = "";
var ifrm = 0, ifld = 0;
var flskip, flrequired;

	frm = eval(frm);
	for(ifrm=0;ifrm < frm.length;ifrm++)
	{
		ctype = frm[ifrm].type;
		ctype = ctype.toLowerCase();
		if((ctype != "text") && (ctype != "password") && (ctype != "file") && (ctype!="textarea") && (ctype!="select-one")) continue;

		FieldName = frm[ifrm].name;
		flrequired = false;
		flskip = false;

		FieldType = FieldName.substr(0, 1);
		FieldType = FieldType.toLowerCase();
		switch(FieldType) {
			case "s":
			case "d":
			case "n":
			case "p":
			case "h":
			case "m":
			case "f":
			case "a":
			case "i":
				flrequired = (FieldName.substr(1,1) == "r");
				break;
			case "v":
			case "l":
				flrequired = true;
				break;
			default : 
				flskip = true;
				break;
		}
		if (flskip) {
			FieldType = FieldName.substr(0,3);
			FieldType = FieldType.toLowerCase();
			
			if (FieldType == 'cmb') {
					flrequired = (FieldName.substr(3,1) == "r");
					flskip = (!flrequired);															
			} 
			if (FieldType == 'cpf') {
				flrequired = (FieldName.substr(3,1) == "r");
				flskip = false;
			}
			if (FieldType == 'cnp') {
				flrequired = (FieldName.substr(4,1) == "r");
				flskip = false;
			}
		}
		if (!flskip) {
			aCampos[ifld] = new Array(4);
			aCampos[ifld][0] = frm[ifrm];
			aCampos[ifld][1] = flrequired;
			aCampos[ifld][2] = ctype;
			aCampos[ifld][3] = FieldType;
			++ifld;
		}
	}
}	

function SubmitForm(frm,BlankImg,ErroImg,url) {
	cleanQuote(frm);
	if (Validate(BlankImg,ErroImg)){ 
		if(url != "") window.open(url, "WndSend", "width=300, height=150, top=300,left=300,resizable=no,status=yes,toolbar=no,menubar=no,location=no, scrollbars=no"); 
		frm.submit(); 
	}
	return;
}

function Validate(BlankImg,ErrorImg) {	
	var i = 0;
	var Result = true, fldValid = false;
	var FieldName = "", FieldType = "";
	var Field;
	var FirstControl = null;
	var ctype = '';
	var pwdmatch = true
	var oPwd = null;
	var emptyfield = false;
	var v;
	var oImg;

	if (flValidarGrupos) PreparaGrupos();

	flCPF = false;
	flCNPJ = false;
	for(i=0;i < aCampos.length;i++)	{
		Field = aCampos[i][0];
		FieldName = Field.name;
		ctype = aCampos[i][2];
		if(ctype != "file")
			Field.value = stripQuote(Field.value);
		v = Field.value;
		emptyfield = ((v == null) || (v == ''));
		FieldType = aCampos[i][3];

		fldValid = true;
		switch(FieldType) {
			case "n":
				fldValid = ValidateNumber(v);
				break;
			case "s":
				fldValid = ((aCampos[i][1]) && (v != '')) || (!aCampos[i][1]);
				break;
			case "f":
				fldValid = ValidateDecimal(v);
				break;
			case "d":
				fldValid = ValidateDate(v);
				break;
			case "h":
				fldValid = ValidateHour(v);
				break;
			case "m":
				fldValid = ValidateMail(v);
				break;	
			case "l":
				fldValid = ValidateLogin(v);
				break;
			case "p":
				fldValid = ValidatePhone(v);
				break;				
			case "a":
				fldValid = ValidateArquivo(v);
				break;
			case "i":
				fldValid = ValidateImagem(v);
				break;
				
			case "cpf":
				if (emptyfield && !aCampos[i][1])
					fldValid = true;
				else {
					if (v == 0)
						fldValid = false;
					else
						fldValid = ValidateCPF(v); 
				}
				break;
			case "cmb":
				if(!Field.disabled)
					fldValid = (Field.value != 0);
				else
					fldValid = true;
				break;
			case "cnp":
				if (emptyfield && !aCampos[i][1])
					fldValid = true;
				else
					fldValid = ValidateCNPJ(v);
				break;
			case "v": 
				if (!oPwd) {
					oPwd = aCampos[i][0];
					fldValid = ValidatePassword(v);
				} else {
					if (emptyfield)
						fldValid = false;
					else {
						fldValid = (oPwd.value == aCampos[i][0].value);
						if (!fldValid) window.alert("A senha não confere com a verificação");
					}
				}
				break;
		}
		if(!fldValid) {
			if (!emptyfield || aCampos[i][1]) {
				if (!FirstControl) FirstControl = Field;
				Result = false;
			} else 
				fldValid = true;
		}
		//problema com W3C
		//oImg = eval(Field.form.name + ".l"+FieldName);
		
		oImg = eval("document.getElementById('l" + FieldName + "')");
		if (oImg) oImg.src= (fldValid)?BlankImg:ErrorImg;
	}
	if (FirstControl) {
		alert('Os campos assinalados são obrigatórios ou não foram preenchidos corretamente.');
		FirstControl.focus();
	}
	return Result;
}

function PreparaGrupos() {
	var ivg = 0;
	var ig = 0;
	var g;
	var flreq = false;
	var v;
	var ic = 0;
	for (ivg=0;ivg<aGrupos.length;ivg++) {
		flreq = false;
		g = aGrupos[ivg];
		for (ig=0;ig<g.length;ig++) {
			v = g[ig].value;
			if (v == null) v = '';
			if (v != '') flreq = true;
		}
		for (ig=0;ig<g.length;ig++) {
			for (ic=0;ic<aCampos.length;ic++) if (aCampos[ic][0].name == g[ig].name) aCampos[ic][1] = flreq;
		}
	}
}

function ValidateNumber(n) {
	var pos = 0;
	if( n == '') 
		return false;

	if( (n.indexOf('.') > -1) && (n.indexOf(',') > -1) && (n.indexOf(',') < n.indexOf('.')) )
		return false;
	
	pos = n.indexOf('.');
	if(pos != -1){
		if( n.indexOf(',', pos+1) == -1){
			var aux = n.substr(pos + 1);
			if( aux.length < 3 ) return false;
		}
		else{
			
			if((n.indexOf(',', pos+1) - pos) < 4)
				return false;
		}
	}
	else{
		pos = n.indexOf(',');
		if(pos != -1){
			for(;pos<n.length;pos++) 
				if(isNaN(n.substr(pos+1,1)))
					return false;
		}
		else if(isNaN(n))
			return false;
	}

	if(n.indexOf(',') == 0)
		return true;
	else
		return (parseInt(n) > -1);
}

function ValidatePhone(n) {
var pos = 0;
	for (pos=0;pos<n.length;pos++) {
		if (isNaN(n.substr(pos,1)) && (n.substr(pos,1) != '-') && (n.substr(pos,1) != '(') && (n.substr(pos,1) != ')')) return false;
	}
	//return (parseInt(n) > 0 && (n.length > 6));
	return (n.length > 6);
}

function ValidateUid(v, title) {
var pos = 0;
	v = v.toLowerCase();
	
	if ((v.length < 5) || (v.length > 16)) {
		alert(title + ' deve ter no mínimo 5 e no máximo 16 caracteres .');
		return false;
	}
	
	for (pos=0;pos<v.length;pos++) {
		if (sAlphaNum.indexOf(v.substr(pos,1)) == -1) {
			alert(title + ' deve conter apenas letras e dígitos.');
			return false;
		}
	}
	return true;
}

function ValidateLogin(v) {
	return ValidateUid(v,'O login');
}

function ValidatePassword(v) {
	return ValidateUid(v,'A senha');
}

function ValidateDate(d) {
	if(d=="") return false;
	var datearray = datearray = d.split('/');
	if (datearray.length != 3) return false;
	
	for (i=0;i < 3;i++){
		for (pos = 0;pos < datearray[i].length; pos++) {
			if (isNaN(datearray[i].substr(pos,1)) || (datearray[i].substr(pos,1) == ' ')) return false;
		}
	}
	var dt = new Date(datearray[2], datearray[1], datearray[0]);
	return (dt != null);
}

function ValidateHour(d) {
	if(d=="") return false;
	var hourarray = hourarray = d.split(':');
	if (hourarray.length != 2) return false;
	
	if (hourarray[0].substr(0,2) > 23) return false;
	if (hourarray[1].substr(0,2) > 59) return false;
	
	for (i=0;i < 2;i++){
		for (pos = 0;pos < hourarray[i].length; pos++) {
			if (isNaN(hourarray[i].substr(pos,1)) || (hourarray[i].substr(pos,1) == ' ')) return false;
		}
	}
	var dt = new Date(hourarray[1], hourarray[0]);
	return (dt != null);
}

function ValidateMail(m) {
	if(m=="") return false;
	
	var arrobaarray = arrobaarray = m.split('@');
	
	if (arrobaarray.length != 2){
		return false;
	}
	else
		if(!arrobaarray[0]) return false;
			
	var pontoarray = pontoarray = m.split('.');
	if (pontoarray.length < 2){
		return false;
	}
	else{
		for(i=1; i<pontoarray.length; i++)
			if(!pontoarray[i]) return false;
	}
	return true;
}

function ValidateArquivo(a) {
	if(a=="") return false;
	a = a.toLowerCase();
	var types = ".txt.pdf.doc.rtf";
	dots = a.split(".")
	ext = "." + dots[dots.length-1];

	return (types.indexOf(ext) != -1) ? true :false;
}

function ValidateImagem(i) {
	if(i=="") return false;
	i = i.toLowerCase();
	var types = ".jpg.gif.png.jpeg.bmp.swf";
	dots = i.split(".")
	ext = "." + dots[dots.length-1];

	return (types.indexOf(ext) != -1) ? true :false;
}

function ValidateDecimal(d){
	if (d == '') return false;
	var pos, IntPart, DecimalPart;
	pos = d.indexOf(',');
	if(pos != -1){
		IntPart = d.substr(0,pos);
		if (isNaN(IntPart) || IntPart == '') return false;
		DecimalPart = d.substr(pos+1);
		if (isNaN(DecimalPart) || DecimalPart == '') return false;
	}
	else{
		if (isNaN(d)) return false;
	}
	return (d.replace(',','.') >= 0);
}

function ChangeActiveDiv(CurrentDiv,NewDiv){
		eval(NewDiv+'.style.display=""');
		eval(CurrentDiv+'.style.display="none"');
}

function EraseTextFields(frm) {
	var i = 0;
	var ctype = "";
	for(i=0;i<frm.length;i++) {
		ctype = frm[i].type;
		ctype = ctype.toLowerCase();
		if(ctype == "text" || ctype == "password" || frm[i].tagName == "TEXTAREA") 
			frm[i].value = ""; 
	}
	return ; 
}

function Back(golink){
	location.href = golink;
}

function EraseSameData(aDataFields){
	var i=0;
	for(i=0;i<aDataFields.length;i++){
		aDataFields[i].value = "";
		if (aDataFields[i].name.substr(0,3) == "cmb")
			aDataFields[i].selectedIndex = 0;
   }
}	

function SetSameData(aSourceFields,aTargetFields){	
	var i=0;
	for(i=0;i<aSourceFields.length;i++)
		aTargetFields[i].value = aSourceFields[i].value;
}

function validaEstado(objPais, objEstado) {
	if(objPais.value == 'Brasil') {
		if (objEstado.value == '--') {
			alert('Necessário informar o Estado.');
			objEstado.selectedIndex = 0;
		}
	} else {
		objEstado.value = '--';
	}
	return;
}

