var d=document;
var isIE=(document.all&&navigator.userAgent.indexOf("MSIE")>0)?true:false;
var isW3=(document.getElementById)?true:false;
listen("load", window, startUp);

/* OnLoad Function
***************************************************************************************************************/

function startUp(evt) {
	if(!isW3) { return false; }
	for (i=0;i<d.forms.length;i++) {
//		window.alert(d.forms[i].id);	
		node = d.forms[i]; for (z=0;z<node.length;z++) {
				zn = node[z];
                if(zn.type=="text"||zn.type=="password"||zn.nodeName=="SELECT") { listen("keypress",zn,cancelOnEnterPress); }
			 	if(zn.type=="submit"&&(zn.name=="doSave"||zn.name=="doSubmit")) { listen("click",zn,autoCheckForm); }
		}
		
	
	
	}



}








function autoCheckForm(event) {
//	window.alert(event.currentTarget.form.name);
//	window.alert(event.keyCode);
	var t=event.currentTarget.form,minChrs;
//	if(event.currentTarget) { t=event.currentTarget; }
	if(!event.preventDefault) { return true; }
	for (i=0;i<d.forms.length;i++) { /* Procura checkbox valor ALL e binda evento */
			node = d.forms[i]; for (z=0;z<node.length;z++) {
			    n=node[z]; minChrs=false;
			 	if(isRequiredInput(n)&&!n.value) { n.focus(); setRequiredClassName(n); event.preventDefault(); return false; }
				else if(isRequiredInput(n)&&n.value) { setFilledClassName(n); }
                if(minChrs=isRequiredMinLenInput(n)) {
					if(n.value.length<minChrs) {
     					n.focus(); setRequiredClassName(n);
                        window.alert("O campo \""+getTitleName(n.title)+"\" deve conter "+minChrs+" carácteres"+(n.maxLength==minChrs?".":" ou mais."));
                        event.preventDefault(); return false;
					} else { setFilledClassName(n); }
				}
			}
	}
	if(t.login) {
		var lt=t.login,loginchrw_reg = new RegExp('^.{0,'+(CFG_MINLOGINCHRS-1)+'}$', 'i');
		if(loginchrw_reg.test(lt.value)) {
				window.alert('O Login escolhido deve conter no mínimo '+(CFG_MINLOGINCHRS)+' carácteres!');
				lt.value=''; lt.focus(); event.preventDefault(); lt.className+=" required"; return false;
		}

	}
	if(t.newpass&&t.newpass2) {
		var np=t.newpass,np2=t.newpass2;
		if(np.value!==np2.value) { window.alert("As duas senhas digitadas não conferem. Por favor redigite-as"); event.preventDefault(); np2.value=''; np.value=''; np.focus(); setRequiredClassName(np); return false; }
        setFilledClassName(np); setFilledClassName(np2);
	}
}






/* Form Functions
***************************************************************************************************************/

function isRequiredInput(elem) { return ((getElem(elem).title.split(' ').has("(!)"))?(true):(false)); }

function isRequiredMinLenInput(elem) {
	elem=getElem(elem);
	elemt=elem.type;
	if(elemt=="text"||elemt=="password") {
		//	window.alert(elem.name);
		var mlreg = new RegExp('\\((Min)\\:(\\d{1,2})\\)', 'gi');
		if(reg=mlreg.exec(elem.title)) {
			reg=reg.toString().split(',');
			if(reg[2]&&parseInt(reg[2])) { return parseInt(reg[2]); }
		}
		//	if(mlreg.test(elem.title)) { window.alert(elem.name+" is power true !!!!!: "+mlreg.lastMatch); }
	}
//	return ((getElem(elem).title.split(' ').has("(!)"))?(true):(false));
	return false;
}


function cancelOnEnterPress(event) {
    var charCode = (event.charCode)?event.charCode:((event.which)?event.which:event.keyCode);
    if (charCode==13||charCode==3) {
		event.preventDefault();
		if(event.target) {
			if(!event.target.value&&isRequiredInput(event.target)) { return false; }
	        nexelm=getNextFormElem(event.target,"doSave");
			if(nexelm.focus) { nexelm.focus(); autoResetInputFormBorders(event.target.form); }
		}
	 	return false; }
    return true;
}

function getFirstTextInputFormElem(f) {
	if(f && f.elements.length) {
		for(i=0;i<f.elements.length;i++) {
			ft=f.elements[i].type;
		    if(ft=="text"||ft=="password"||ft=="textarea") { return f.elements[i]; }
		}
	}
	return false;
}

function getNextFormElem(el,defaultElemName) {
	var f=el.form,i,n,zl;
	defaultElem = (!isUndefined(defaultElemName)?(f[defaultElemName]?f[defaultElemName]:false):false);
	if(f && f.elements.length>2) {
		for(i=0;i<f.elements.length;i++) {
			if(f.elements[i]===el) {
				n=(i>=(f.elements.length-1)?0:++i);
				if(n==0&&defaultElem) { return defaultElem; }
				 /* window.alert("N: "+n+" LEN: "+f.elements.length); */
				 break;
				}
		}
		zl=2;
		while(f.elements[n].type=="hidden") { ++n; if(n==f.elements.length) { n=0; --zl; if(!zl) { break; } } }
	return f.elements[n];
	}
	return false;
}
function autoResetInputFormBorders(event) {
	if(event.currentTarget) { t=event.currentTarget; }
	else if(event.elements) { t=event; }
	else { return true; } node = t;
	for (z=0;z<node.length;z++) { n=node[z]; if(isRequiredInput(n)) { n.className=n.className.replace("required", ""); } }
}
function autoFocusFirstTextElem(event) {
	if(event.currentTarget) { t=event.currentTarget; }
	else { return false; }
	xel=getFirstTextInputFormElem(t);
	if(xel && xel.focus) { xel.focus(); return true; }
	return false;
}
function setRequiredClassName(el) { nc=el.className; el.className=nc.replace("nowfilled", ""); if(!hasClass(el,"required")) { el.className+=" required"; } }
function setFilledClassName(el) { nc=el.className; el.className=nc.replace("required", ""); if(!hasClass(el,"filled")) { el.className+=" filled"; } }
function getTitleName(title) { x=title.indexOf('('); if(x==-1) { return ""; } else { return title.substring(0,(x-1)); } }









function getCookiesArray() {
	n_array = new Array();
	strcook = document.cookie.split(';');
	if(strcook[0]) {
		for (i=0; i<strcook.length; i++) {
		s_key = strcook[i].substring(0,strcook[i].indexOf('='));
		s_val = strcook[i].substr((strcook[i].indexOf('=')+1));
		n_array[s_key] = s_val;
		}
	}
return n_array;
}
//cookiez = new Array();
function prldImg(ar) {
  var d=document; if(d.images){ if(!d.p) { d.p=new Array(); }
  var i,j=d.p.length,a=prldImg.arguments;
  for(i=0; i<a.length; i++) if (a[i].indexOf("#")!=0){ d.p[j]=new Image; d.p[j++].src=a[i];} }
}

var myimages=new Array()
function preloadimages(){ for (i=0;i<preloadimages.arguments.length;i++){ myimages[i]=new Image(); myimages[i].src=preloadimages.arguments[i]; } }


function abreFoto(popUrl) {
	var popH    = 480;	var popW    = 640;
	var fromTop = (screen.height/2)-(popH/2);
	var fromLeft = (screen.width/2)-(popW/2);
	var currentFoto = window.open(popUrl,'Malhasoft','top='+fromTop+',left='+fromLeft+',toolbar=no,location=no,status=no,menubar=no,scrollbars=no,resizable=0,ontop=true,titlebar=0,width='+popW+',height='+popH+'');
	if (currentFoto) { currentFoto.focus(); } return false;
}



/* Library :) */
/***************************************************************************************************************
*/
Array.prototype.has = function(value) { return this.find(value)!==-1; }
Array.prototype.find = function(value, start) { start = start || 0; for (var i=start; i<this.length; i++) if (this[i]==value) return i; return -1; }
if(!Array.prototype.push) Array.prototype.push = function() { for (var i=0; i<arguments.length; i++) this[this.length] = arguments[i]; return this.length; }
function listen(event, elem, func) { elem = getElem(elem); if (elem.addEventListener) { /* W3C DOM */ elem.addEventListener(event,func,false); } else if(elem.attachEvent) { /* IE DOM */ elem.attachEvent('on'+event, function() { func(new W3CDOM_Event(elem)) } ); } else throw 'cannot add event listener'; }
function W3CDOM_Event(currentTarget) { this.currentTarget  = currentTarget; this.preventDefault = function() { window.event.returnValue = false; }; return this; }
function isUndefined(v) { var undef; return v===undef; }
function getElem(elem) { if (document.getElementById) { if (typeof elem == "string") { elem = document.getElementById(elem); if (elem===null) throw 'cannot get element: element does not exist'; } else if (typeof elem != "object") { throw 'cannot get element: invalid datatype'; } } else throw 'cannot get element: unsupported DOM'; return elem; }
function hasClass(elem, className) { return getElem(elem).className.split(' ').has(className); }






