// JavaScript Document
function Validacao(itens,indiceForm){
		this.itens = itens;
		var corErro = "#FF0000";
	    var corDefault = "#DDDDDD";
		this.validaBranco = function(valor){
			if(arguments[0] == "")
				return false;
			else
				return true;
		}
		this.validaEmail = function(valor){
			 var RegExp = /^((([a-z]|[0-9]|!|#|$|%|&|'|\*|\+|\-|\/|=|\?|\^|_|`|\{|\||\}|~)+(\.([a-z]|[0-9]|!|#|$|%|&|'|\*|\+|\-|\/|=|\?|\^|_|`|\{|\||\}|~)+)*)@((((([a-z]|[0-9])([a-z]|[0-9]|\-){0,61}([a-z]|[0-9])\.))*([a-z]|[0-9])([a-z]|[0-9]|\-){0,61}([a-z]|[0-9])\.)[\w]{2,4}|(((([0-9]){1,3}\.){3}([0-9]){1,3}))|(\[((([0-9]){1,3}\.){3}([0-9]){1,3})\])))$/
		    if(RegExp.test(arguments[0])){
		        return true;
		    }else{
		        return false;
		    }
		}
		this.validaUrl = function(valor){
			var RegExp = /^(([\w]+:)?\/\/)?(([\d\w]|%[a-fA-f\d]{2,2})+(:([\d\w]|%[a-fA-f\d]{2,2})+)?@)?([\d\w][-\d\w]{0,253}[\d\w]\.)+[\w]{2,4}(:[\d]+)?(\/([-+_~.\d\w]|%[a-fA-f\d]{2,2})*)*(\?(&?([-+_~.\d\w]|%[a-fA-f\d]{2,2})=?)*)?(#([-+_~.\d\w]|%[a-fA-f\d]{2,2})*)?$/;
		    if(RegExp.test(arguments[0])){
		        return true;
		    }else{
		        return false;
		    }
		}
		this.validaData = function(valor){
            var reTipo =/^((0[1-9]|[12]\d)\/(0[1-9]|1[0-2])|30\/(0[13-9]|1[0-2])|31\/(0[13578]|1[02]))\/\d{4}$/;
			return reTipo.test(valor);
		}
		this.validaHora = function(valor){
            var reTipo =/^([0-1][0-9]|[2][0-3]):[0-5][0-9]$/;
			return reTipo.test(valor);
		}
		this.validaNumero = function(valor){
			if(isNaN(arguments[0]))
				return false;
			else
				return true;
		}
		this.validaMultiple = function(campo){
			if(campo.options.length == 0){
				return false;
			}
			selecionado = false;
			for(i = 0; i < campo.options.length; i++){
				if(campo.options[i].selected){
					selecionado = true;
					break;
				}
			}
			return selecionado;
		}
		this.validaFckEditor = function(campo){
			var oEditor = FCKeditorAPI.GetInstance(campo);
			if(oEditor.GetXHTML() == ""){
				return false;
			}else{
				return true;
			}
		}
		
		this.formatarErro = function(campo, mensagem){
			var li = document.createElement("li");
			$(campo).style.borderColor = corErro;
			li.appendChild(document.createTextNode(mensagem));
			document.getElementById("erro").appendChild(li);
		}
		this.validar = function(){
			var result = true;
			var cab = document.getElementById("cabecalhoObrigatorio");
			var erro = document.getElementById("erro");
			
			if(erro == null){
				erro = document.createElement("ul");
				erro.id = "erro";
				cab.parentNode.insertBefore(erro,cab);
			}
			removerFilhos(document.getElementById("erro"));
			var li = document.createElement("li");
			li.id = "mensagemErro";
			li.appendChild(document.createTextNode("Por favor, preencha corretamente os campos marcados com * abaixo."));
			erro.appendChild(li);
			
			
			for(var i = 0, elem; elem = itens[i];i++){
				if(document.getElementById(elem.campo)!= null){
					document.getElementById(elem.campo).style.borderColor = corDefault;
				}
			}
			for(var i = 0, elem; elem = itens[i];i++){
				if(document.getElementById(elem.campo)!= null){
					if(elem.validacao == "branco"){
						var campo = document.getElementById(elem.campo);
						if(!this.validaBranco(campo.value)){
							this.formatarErro(elem.campo,elem.mensagem);	
							result = false;
						}
					}
					if(elem.validacao == "email"){
						var campo = document.getElementById(elem.campo);
						if(!this.validaEmail(campo.value)){
							this.formatarErro(elem.campo,elem.mensagem);	
							result = false;						
						}
					}
					if(elem.validacao == "url"){
						var campo = document.getElementById(elem.campo);
						if(!this.validaUrl(campo.value)){
							this.formatarErro(elem.campo,elem.mensagem);	
							result = false;						
						}
					}
					if(elem.validacao == "numero"){
						var campo = document.getElementById(elem.campo);
						if(!this.validaNumero(campo.value)){
							this.formatarErro(elem.campo,elem.mensagem);	
							result = false;						
						}
					}
					if(elem.validacao == "data"){
						var campo = document.getElementById(elem.campo);
						if(!this.validaData(campo.value)){
							this.formatarErro(elem.campo,elem.mensagem);	
							result = false;						
						}
					}
					if(elem.validacao == "hora"){
						var campo = document.getElementById(elem.campo);
						if(!this.validaHora(campo.value)){
							this.formatarErro(elem.campo,elem.mensagem);	
							result = false;						
						}
					}
					if(elem.validacao == "funcao"){
						var campo = document.getElementById(elem.campo);
						if(!elem.funcao()){
							this.formatarErro(elem.campo,elem.mensagem);	
							result = false;						
						}
					}
					if(elem.validacao == "multiploVazio"){
						var campo = document.getElementById(elem.campo);
						if(!this.validaMultiple(campo)){
							this.formatarErro(elem.campo,elem.mensagem);	
							result = false;						
						}
					}
					if(elem.validacao == "fckeditor"){
						//var campo = document.getElementById(elem.campo);
						if(!this.validaFckEditor(elem.campo)){
							this.formatarErro(elem.campo,elem.mensagem);	
							result = false;						
						}
					}
				}
			}
			if(result){
				removerFilhos(erro);
			}else{
				 window.location = "#";
			}
			return result;
		}
}
