/*
	w3FormValidation (2.0) - 25/11/2006
	Por Leandro Vieira Pinho - http://leandro.w3invent.com.br
	
	Para informações de uso deste add-on visite:
	http://leandro.w3invent.com.br/addons/w3FormValidation/

	Nota: Este add-on requer a Mtzlib 0.2.6 ou superior.
	Mtzlib: http://metzen.com.br/mtzlib/

	Parâmetros que podem ser utilizados para ATIVAR ou DESATIVAR recursos deste add-on
	var valida = new w3FormValidation(param1,param2,param3,param4,param5);
	param1 {Array}    = Campos a serem validados.
	param2 {string}   = Título do box das mensagens de erro. Padrão: Observações!
	param3 {integer}  = Distância que o box terá em relação ao topo da página. Padrão: 0
	param4 {boolean}  = Coloque false para não utilizar o "overlay" sobre o body. Padrão: true
	param5 {boolean}  = Coloque false para o box não acompanhar a rolagem da página. Padrão: true

	O código HTML gerado para exibir o box com as mensagens é o seguinte:
	
	<div id="w3ShowMsgToUser">
		<h3>Observações!</h3>
		<ol>
			<li>Mensagem</li>
			<li>...</li>
		</ol>
		<input id="w3ShowMsgToUserBtnOk" value="Ok" type="button">
	</div>
	
	Você pode estilizá-lo através das CSS e deixá-lo como desejar.
	
	Funções de terceiros utlizadas neste add-on
	
	Função: getPageSize Autor: PPK
	Função: getScrollingPosition Autor: James Edwards/Cameron Adams

*/
function w3FormValidation(c,l,I,O,i){
	var C=this;
	C.arrInfoVal=c;
	if(typeof l=="undefined"){
		C.strTitleMsgToUser='Observações!'
	}else{
		C.strTitleMsgToUser=l
	}
	if(typeof I=="undefined"){
		I=0
	}
	C.top=I;
//	if(typeof O=="undefined"){
//		C.boolEncobrirBody=true
//	}
	var o=C.getScrollingPosition();
	C.atualScrollingPositionY=o[1];
	if(typeof i=="undefined"){
		i=true
	}
	if(i){
		addEvent(window,'scroll',C.fixMsgToUserInViewPort,false,[C.top])
	}
}
w3FormValidation.prototype.fixMsgToUserInViewPort=function(l){
	var i=w3FormValidation.prototype.getScrollingPosition(),I=i[1];
	if($('w3ShowMsgToUser')){
		$('w3ShowMsgToUser').style.top=I+parseInt(l,'')+'px'
	}
}
;
w3FormValidation.prototype.start=function(){
	var I=this,i=I.validation(I.arrInfoVal);
	return i
}
;
w3FormValidation.prototype.validation=function(v){
	var z=this,o=[],c=[],I=true;
	for(i=0;i<v.length;i++){
		var l=v[i].split(','),V=l[0],C=l[1],O='';
		if(l.length==4){
			var x=l[2];
			O=l[3]
		}else{
			O=l[2]
		}switch(V){

case 'req':removeClass($(C),'w3FieldError');
if(!$(C).value){
	o.push(O);
	c.push($(C));
	I=false
}
break;
			
case 'req_chk':removeClass($(C),'w3FieldError');
var x=0;
if (!(document.getElementById('formpg').checked==true || document.getElementById('formpg1').checked==true || document.getElementById('formpg2').checked==true)){
	x = 1;
}

if (!x == 0){
	o.push(O);
	c.push($(C));
	I=false
}
break;

case 'email':removeClass($(C),'w3FieldError');
if(!z.isEmail($(C).value)){
	o.push(O);
	c.push($(C));
	I=false
}
break;

case 'url':removeClass($(C),'w3FieldError');
if(!z.isURL($(C).value)){
	o.push(O);
	c.push($(C));
	I=false
}
break;

case 'dia':removeClass($(C), 'w3FieldError');
if(!z.isDia($(C).value)){
	o.push(O);
	c.push($(C));
	I=false
}
break;

case 'real':removeClass($(C), 'w3FieldError');
if((!z.isReal($(C).value))||($(C).value=='0,00')){
	o.push(O);
	c.push($(C));
	I=false
}
break;

case 'igual':removeClass($(C),'w3FieldError');
if($(C).value!=$(x).value){
	o.push(O);
	c.push($(C));
	I=false
}
break;


default:alert('O tipo de validação desejado não é suportado ou desconhecido por este programa.\nTipo de validação: '+V+'\nConsule a documentação do programa para maiores detalhes.');
return false
}
}

if(I){return true}else{for(var X=0;X<c.length;X++){addClass(c[X],'w3FieldError')}z.showMsgToUser(o);return false}};

w3FormValidation.prototype.isEmail=function(i){
	return i.search(/(\w[\w\.\+]+)@(.+)\.(\w+)$/)==0
}
;

w3FormValidation.prototype.isURL=function(i){
	return i.search(/www.([\w]+)(\.\w{2,4})+$/)==0
}
;

w3FormValidation.prototype.isDia=function(i){
	return i.search(/(\d\d)\/(\d\d)\/(\d\d)/)==0
}
;

w3FormValidation.prototype.isReal=function(i){
	return i.search(/(\d{1,}),(\d{2}$)/)==0 
}
;

w3FormValidation.prototype.showMsgToUser=function(I){
	var O=this;
	O.closeMsgToUser('noFade');
	if(O.boolEncobrirBody){
		O.encobrirBody()
	}var l=[];
	for(i=0;i<I.length;i++){
		l.push($new('li',I[i]))
	}
	$append($new('div','id=w3ShowMsgToUser',[$new('h3',O.strTitleMsgToUser),$new('ol',l),$new('form',$new('input',["type=button","value=Ok","id=w3ShowMsgToUserBtnOk"],""))]));
	var o=new w3FadingOpacity('w3ShowMsgToUser',0,100,100);
	o.start();
	$('w3ShowMsgToUser').style.top=O.atualScrollingPositionY+O.top+'px';
	addEvent($('w3ShowMsgToUserBtnOk'),'click',O.closeMsgToUser,false);
	$('w3ShowMsgToUserBtnOk').focus()
}
;

w3FormValidation.prototype.encobrirBody=function(){
	var I=getPageSize();
	$append($new("div","id=w3BodyOverlay",''));
	$('w3BodyOverlay').style.height=arrayPageSize[1]+'px';
	var i=new w3FadingOpacity('w3BodyOverlay',0,80,50);
	i.start()};
	w3FormValidation.prototype.closeMsgToUser=function(l){
		if(l!='noFade'){
			var i=new w3FadingOpacity('w3ShowMsgToUser',100,0,100,I);
			i.start()}function I(){
				$remove($('w3ShowMsgToUser'));
				$remove($('w3BodyOverlay'))
			}
		}
		;
		
		w3FormValidation.prototype.getScrollingPosition=function(){
			var i=[0,0];
			if(typeof window.pageYOffset!='undefined'){
				i=[window.pageXOffset,window.pageYOffset]
			}else if(typeof document.documentElement.scrollTop!='undefined'&&document.documentElement.scrollTop>0){
				i=[document.documentElement.scrollLeft,document.documentElement.scrollTop]
			}else if(typeof document.body.scrollTop!='undefined'){
				i=[document.body.scrollLeft,document.body.scrollTop]
			}
			return i
		}
		;
		
		function getPageSize(){
			var o,l;
			if(window.innerHeight&&window.scrollMaxY){
				o=document.body.scrollWidth;
				l=window.innerHeight+window.scrollMaxY
			}else if(document.body.scrollHeight>document.body.offsetHeight){
				o=document.body.scrollWidth;
				l=document.body.scrollHeight
			}else{
				o=document.body.offsetWidth;
				l=document.body.offsetHeight
			}
			var I,i;
			if(self.innerHeight){
				I=self.innerWidth;
				i=self.innerHeight
			}else if(document.documentElement&&document.documentElement.clientHeight){
				I=document.documentElement.clientWidth;
				i=document.documentElement.clientHeight
			}else if(document.body){
				I=document.body.clientWidth;
				i=document.body.clientHeight
			}if(l<i){
				pageHeight=i
			}else{
				pageHeight=l
			}if(o<I){
				pageWidth=I
			}else{
				pageWidth=o
			}
			arrayPageSize=new Array(pageWidth,pageHeight,I,i)
		}
		;
		
		function w3FadingOpacity(O,i,l,I,o){var c=this;c.intOffset=10;c.strID=O;c.intOpacityStart=i;c.intOpacityEnd=l;c.intFadeDuration=I;c.fnAfterFaded=o;c.intInterval=0};w3FadingOpacity.prototype.start=function(){var thisClass=this;this.intInterval=setInterval(function(){thisClass.fadeCycle()},(this.intFadeDuration/this.intOffset))};w3FadingOpacity.prototype.fadeCycle=function(){var i=this;if(i.intOpacityEnd<i.intOpacityStart){if(i.intOpacityStart>i.intOpacityEnd){i.intOpacityStart-=i.intOffset}else{i.finalize()}}else{if(i.intOpacityStart<i.intOpacityEnd){i.intOpacityStart+=i.intOffset}else{i.finalize()}}i.setOpacity(i.intOpacityStart/100)};w3FadingOpacity.prototype.setOpacity=function(i){var I=this;if($(I.strID)){$(I.strID).style.opacity=i;$(I.strID).style.filter="alpha(opacity="+(i*100)+")"}};w3FadingOpacity.prototype.finalize=function(){var i=this;i.intOpacityStart=i.intOpacityEnd;clearInterval(i.intInterval);if(i.fnAfterFaded){i.fnAfterFaded()}};