Obrigatorios = ({
	forms: [],
	cssErro: "labelE",
	cssNormal: "labelN",
	carregar: function(parte){
		this.forms = [];
		var Tags = ['input','textarea','select'];
		if (typeof parte == "undefined") parte = document;
		for(var z=0;z<Tags.length;z++){
			var Inputs=parte.getElementsByTagName(Tags[z]);
			for(var i=0;i<Inputs.length;i++)
				if(('button,image,submit,reset').indexOf(Inputs[i].type.toLowerCase())==-1)
					this.aplicar(Inputs[i]);
		}
	},
	aplicar: function(obj, aplForm){
		var obr = obj.getAttribute('obrigatorio');
		if (obr == "s" || obr == "S"){
			var formName = obj.form.name;
			if (typeof this.forms[formName] == "undefined"){
				this.forms[formName] = ({ campos: [], nomes: [] });
				if (aplForm == true)
					obj.form.onsubmit = function(){ return Obrigatorios.validar(obj.form.name) };
			}
			if (typeof this.forms[formName].nomes[obj.name] == "undefined"){
				this.forms[formName].nomes[obj.name] = obj.name;
				this.forms[obj.form.name].campos[this.forms[obj.form.name].campos.length] = ({
					nome: obj.getAttribute('name'),
					objLabel: document.getElementById("label_"+obj.name),
					label: obj.getAttribute('label')
				});
			}
		}
	},
	validar: function(nome){
		var erro = false;
		var serro = "Os seguintes campos devem ser preenchidos:\n";
		var primeiro = "";
		var campos = [];
		if (typeof this.forms[nome] == "object")
			campos = this.forms[nome].campos;
		for (var xi=0;xi<campos.length;xi++){
			if (campos[xi] == null)
				continue;
			var obj = document.getElementsByName(campos[xi].nome);
			if(typeof obj != 'undefined'){
				for(var x=0;x<obj.length;x++){
					var valor = "";
					var obj2 = obj[x];
					if (('file,text,input,textarea,password,hidden').indexOf(obj2.type.toLowerCase()) !=-1){
						var dh = obj2.getAttribute("datahora");
						var ed = obj2.getAttribute("editor");
						if (dh && dh.toLowerCase() == "datahora"){
							valor = this.valorDataHora(obj2.value);
						}else if (ed && ed.toLowerCase() == "s"){
							var oEditor = FCKeditorAPI.GetInstance(obj2.name);
							valor = oEditor.GetXHTML();
						}else{
							valor = obj2.value; 
						}
					}else if (obj2.type == 'select-one'){
						valor = obj2.options[obj2.selectedIndex].value;
					}else if (('checkbox,radio').indexOf(obj2.type.toLowerCase()) !=-1){
						for (t=0;t<obj.length;t++){
							if (obj[t].checked){
								valor = obj[t].value;
								break;
							}
						}
						x = obj.length;
					}
					valor = (valor.replace(/^(\s)*/, '')).replace(/(\s)*$/, '');
					if (valor == ""){
						if (!erro){
							erro = true;
							primeiro = obj2;
						}
						var m = " - "+ campos[xi].label + "\n";
						if (serro.indexOf(m) == -1)
							serro += m;
					}
					if (campos[xi].objLabel != null)
						campos[xi].objLabel.className = (valor == "" ? this.cssErro : this.cssNormal);
				}		
			}
		}
		if (erro){
			alert(serro)
			if (primeiro.style.display != 'none' && primeiro.type.toLowerCase() != "hidden")
				primeiro.focus();
			return false;
		}
		return true;
	},
	valorDataHora: function(valor){
		valor = valor.split(" ");
		if (valor.length < 2) return "";
		if (valor[0] == "" || valor[1] == "") return;
		return "1";
	},
	adicionaObrigatorio: function(obj, label){
		if (typeof obj != "object")
			obj = document.getElementsByName(obj)[0];
		if (typeof label != "undefined")
			obj.setAttribute("label", label);
		var objLabel = document.getElementById("label_"+obj.name); 
		try{
			if (typeof objLabel == "object" && objLabel.innerHTML.lastIndexOf("*")==-1)
       	        objLabel.innerHTML += " *";
		}catch(erro){
		}
		if (typeof this.forms[obj.form.name] == "undefined")
			this.forms[obj.form.name] = ({ campos: [], nomes: [] });
		for (var i = 0; i<this.forms[obj.form.name].campos.length;i++){
			if (this.forms[obj.form.name].campos[i] == null)
				continue;
			if (this.forms[obj.form.name].campos[i].nome == obj.getAttribute('name'))
				return;
		}
		this.forms[obj.form.name].campos[this.forms[obj.form.name].campos.length] = ({
			nome: obj.getAttribute('name'),
			objLabel: objLabel,
			label: obj.getAttribute('label')
		});
	},
	removeObrigatorio: function(obj){
		if (typeof obj != "object")
			obj = document.getElementsByName(obj)[0];
		var objLabel = document.getElementById("label_" + obj.name); 
		try{
			if (typeof objLabel == "object" && objLabel.innerHTML.substr(-1) == "*")
				objLabel.innerHTML = objLabel.innerHTML.replace(" *", "");
		}catch(erro){
		}
		if (typeof this.forms[obj.form.name] == "undefined")
			this.forms[obj.form.name] = ({ campos: [], nomes: [] });
		for (var i = 0; i<this.forms[obj.form.name].campos.length;i++){
			if (this.forms[obj.form.name].campos[i] == null)
				continue;
			if (this.forms[obj.form.name].campos[i].nome == obj.getAttribute('name')){
				this.forms[obj.form.name].campos[i] = null;
				break;
			}
		}
	}
});
