var FormMessage1 = 'Rejeitado devido o# seguinte# erro#:\n';
var FormMessage2 = '\n\n******** Observação ********\n';
var numbers_list = '0123456789';
var lowercaseLetters = ' abcdefghijklmnopqrstuvwxyzâãáàäêéèëîíìïôõóòöûúùüç';
var uppercaseLetters = ' ABCDEFGHIJKLMNOPQRSTUVWXYZÂÃÁÀÄÊÉÈËÎÍÌÏÔÕÓÒÖÛÚÙÜÇ';
var letter_list = lowercaseLetters + uppercaseLetters;
var err_msg = '';
var err_obs = '';
var err_suf = '';
var prefix = new Array();
function setFocus(o){ o.focus(); selectField(o); }
function deselectField(o){ selectField(o); }
function selectField(o, p, l){
	if(!p) p = o.value.length;
	if(!l) l = o.value.length;
	if(o.createTextRange){
		try{
			var oRange = o.createTextRange();
			oRange.moveStart('character', p);
			oRange.moveEnd('character', l);
			oRange.select();
		}catch(e){};
	}else if(o.setSelectionRange){
		try{ o.setSelectionRange(p, l); }catch(e){};
	}
}
function getIndex(o){ var i = -1; while(i < o.form.length) if(o.form[++i] == o) return(i); return false; }
function nextField(o, fw){
	if(o.jump){
		var i = (getIndex(o) + (fw ? fw : 1)) % o.form.length;
		while(i < o.form.length && in_array(o.form[i].type, ['a','image','hidden']) != -1){ i++; }
		try{ setFocus(o.form[i]); }catch(e){};
	return false;
	}
}
function moveNext(o){ o.jump = true; nextField(o); }
function autoTab(o, l, e){
	var k = (Netscape) ? e.which : e.keyCode;
	var filter = (Netscape) ? [0,8,9] : [0,8,9,16,17,18,37,38,39,40,46];
	if(o.value.length >= l && in_array(k, filter) == -1){ o.value = o.value.slice(0, l); moveNext(o); }
return true;
}
function formatStr(str, mask){
	var s = (mask && (mask == 'CPF' || mask == 'CC')) ? '' : ' ';
	str = str.replace(new RegExp('[^0-9' + letter_list.replace(/\s+/g, s) + ']', 'g'), '');
	switch(mask){
		case 'CC': s = str, str = s.slice(0, 4); for(var i = 4; i < 16; i += 4) str += ' ' + s.substring(i, i + 4); break;
		case 'DOC': str = str.substring(0, str.length - 2) + '-' + str.substring(str.length - 2); break;
	}
return(str);
}
function formatDay(d){ return(d && d.toString().length < 2 ? '0' + d : d); }
function formatMonth(m){ return(m && m.toString().length < 2 ? '0' + m : m); }
function formatYear(n){ var y = parseInt(n, 10); if(y && n.toString().length == 2) y += (y >= 50 ? 1900 : 2000); return(y); }
function formatDate(s, y, m, d){
	var dt = (s.value ? s.value : s).toString().split('/');
	var ts = new Date(parseInt(formatYear(dt[2]), 10), parseInt(formatMonth(dt[1]) - 1, 10), parseInt(formatDay(dt[0]), 10));
	if(d) ts.setDate(ts.getDate() + parseInt(d, 10));
	if(m) ts.setMonth(ts.getMonth() + parseInt(m, 10));
	if(y) ts.setFullYear(ts.getFullYear() + parseInt(y, 10));
return parseInt('' + formatYear(ts.getFullYear()) + formatMonth(ts.getMonth() + 1) + formatDay(ts.getDate()), 10);
}
function formatTime(s){
	var ts = (s.value ? s.value : s).toString().split(':');
	var hm = parseInt(ts[0], 10) * 100 + parseInt(ts[1], 10);
return isNaN(hm) ? 0 : hm;
}
function SndFrmFull(frm, msg){
	var e = frm.elements, last = '', x = 0;
	for(var i = 0; i < e.length; i++){ if(last != e[i].name){ last = e[i].name; if(!checkEntry(e, i, last)) x++; } }
	if(x == 0) return(SndFrm(null, true));
	alert(msg);
return false;
}
function SndFrmSuffix(frm){
	function glue(ary){ var str = ary.join(', ').replace(/^(, )+|(, )+$/g, ''); return(str.replace(/(, )+/g, ', ')); }
	var e = frm.elements, last, suffix, tst;
	for(var i = 0; i < e.length; i++){
		if(last != (suffix = getStrSuffix(e[i])) && !specialEntry(e[i]) && e[i].name.substr(0, 2).match(/^[esif]_/)){
			var fld = new Array(new Array(prefix.length), new Array(prefix.length));
			if(prefix.length == 4){
				if(e[i].value == '' && e[i + 3].value != ''){
					fld[0][0] = prefix[0];
					fld[1][3] = prefix[3];
				}
				if(e[i].value != '' && e[i + 3].value == ''){
					fld[0][3] = prefix[3];
					fld[1][0] = prefix[0];
				}
				if(e[i].value == '' && (e[i + 1].value != '' || e[i + 2].value != '')){
					fld[0][0] = prefix[0];
					fld[(e[i + 1].value == '' ? 0 : 1)][1] = prefix[1];
					fld[(e[i + 2].value == '' ? 0 : 1)][2] = prefix[2];
				}
				if(e[i + 3].value == '' && (e[i + 1].value != '' || e[i + 2].value != '')){
					fld[(e[i + 1].value == '' ? 0 : 1)][1] = prefix[1];
					fld[(e[i + 2].value == '' ? 0 : 1)][2] = prefix[2];
					fld[0][3] = prefix[3];
				}
			}else{
				if(e[i].value == '' && e[i + 1].value != ''){
					fld[0][0] = prefix[0];
					fld[1][1] = prefix[1];
					fld[(e[i + 2].value == '' ? 0 : 1)][2] = prefix[2];
				}else	if(e[i].value != '' && e[i + 1].value == ''){
					fld[0][1] = prefix[1];
					fld[1][0] = prefix[0];
					fld[(e[i + 2].value == '' ? 0 : 1)][2] = prefix[2];
				}else	if(e[i + 2].value != '' && (e[i].value == '' && e[i + 1].value == '')){
					fld[0][0] = prefix[0];
					fld[0][1] = prefix[1];
					fld[1][2] = prefix[2];
				}
			}
			i += prefix.length;
			if(fld[1].join('').length != 0)
				err_msg += '\n -' + glue(fld[1]) + ' de ' + getDateSuffix(suffix) + ', pois não foi informado: ' + glue(fld[0]);
		}
	}
return SndFrm();
}
function SndFrm(){ currentField = null; return trigger_msg(); }
function isOk(){ return(err_msg == '' && err_obs == '' && err_suf == ''); }
function trigger_msg(){
	if(!isOk()){
		var str = FormMessage1.replace(/#/g, err_msg.split('\n').length > 2 ? 's' : '');
		alert(str + err_msg + (err_obs != '' ? (err_msg != '' ? FormMessage2 : '') + err_obs : ''));
	return AbortSndFrm();
	}
return true;
}
function AbortSndFrm(){ err_msg = err_obs = err_suf = ''; return false; }
function SendForm(frm){ return SndFrm(frm); }
function setAction(frm, act){ frm.action = act; }
function setActionSend(frm, act){ setAction(frm, act); if(SendForm(frm) && is_object(frm)) frm.submit(); }
function repetir(cpo, skip){
	if(cpo.form){
		if(!skip) skip = 1;
		var i, frm = cpo.form, x = cpo.name.replace(/\[[0-9]\]+$/, ''), ok = false;
		if(!frm.autorepetir || !frm.autorepetir.checked)
			return;
		for(i = 0; i < frm.elements.length; i += skip){
			if(frm.elements[i]){
				if(frm.elements[i].name == cpo.name) ok = true;
				if(ok && frm.elements[i].name.search(new RegExp('^' + x + '\[[0-9]+\]$','gi')) == 0) frm.elements[i].value = cpo.value;
			}
		}
	}
}
function autoFill(src, hlp){
	var i = parseInt(src.value ? src.value : 0, 10);
	eval('var tgt = src.form.txt_' + src.name + ';');
	eval('var txt = ' + src.name + '[' + i + '];');
	if(hlp && hlp[i]) chgLabel('lblTAcp' + src.name, hlp[i]);
	tgt.value = txt != undefined ? txt : 'Código não cadastrado';
return false;
}
function dspPwd(o){
	var i, j, p = getParent(getParent(o, o.type == 'checkbox' ? 'LABEL' : 'P'), 'DIV'), idx = {'chk':0,'pwd':[],'on':'','off':''};
	var input = gebt('input', p), span = gebt('span', p);
	for(i = 0; i < input.length; i++){
		switch(input[i].type){
			case 'password': idx.pwd[parseInt(input[i].id.replace(/[^0-9]/g, ''), 10) - 1] = i; break;
			case 'checkbox': if(input[i].id.match(/^(.+?\[)?sp\]?$/)) idx.chk = i; break;
		}
	}
	for(i = 0, j = 0; i < span.length && j < idx.pwd.length; i++){
		if(span[i].id && span[i].id.match(/^(.+?\[)?sp[12]\]?$/)){
			input[idx.chk]['s' + j] = input[idx.pwd[j]];
			input[idx.chk]['t' + j] = span[i];
			input[idx.pwd[j]].flag = input[idx.chk];
			input[idx.pwd[j]].target = span[i];
			span[i].style.display = input[idx.chk].checked ? 'block' : 'none';
			j++;
		}
	}
	for(i = 0; i < idx.pwd.length; i++){
		idx.on+= 'this.t' + i + '.innerHTML = this.s' + i + '.value;';
		idx.off+= 'this.t' + i + '.innerHTML = "";';
		input[idx.pwd[i]].onkeyup = function(){ this.target.innerHTML = this.flag.checked ? this.value : ''; };
	}
	input[idx.chk].onclick = function(){ dspPwd(this); if(this.checked) eval(idx.on); else eval(idx.off); }
return false;
}
function mailAsUsr(a){
	var f = getParent(a, 'FORM');
	f.useMailAsLogin = true;
	try{ if(f.usr.value == '' && f.email.value != '' && isMail(f.email, 'E-mail')) f.usr.value = f.email.value; }catch(e){}
}
