var FAF = {
	"init": function(options){ // @ param {'form': objForm}
		FAF.form = options.form;
		FAF.primeiroErro = '';
		FAF.checkbox = [];
		FAF.radio = [];
		FAF.formValido = true;
		for(var i=0; i<FAF.form.elements.length; i++) {
			var el = FAF.form.elements[i];
			if(el.type == "text" && el.name.indexOf("email") != -1) {
				isMail(el);
			}
			var reg = $(el).attr("alt");
			if(reg != undefined && el.type != "radio" && el.type != "checkbox") {
				if(!FAF.eValido({"campo": el, "exp": new RegExp(reg)})) {
					mudaCor(el, "#f00");
					el.style.color = "#f00";
					FAF.formValido = false;
					if(FAF.primeiroErro == '')
						FAF.primeiroErro = el;
				} else {
					mudaCor(el, "#ccc");
					el.style.color = "#00f";
				}
			}
			if(el.type == "radio") {
				FAF.radio.push(el);
			} else if(el.type == "checkbox") {
				FAF.checkbox.push(el);
			}
		}
		if(FAF.radio.length > 0)
			FAF._radio();
		if (FAF.formValido && FAF.primeiroErro == '') {
			if(!options.send) {
				mandaInf(FAF.form, "post", alertaLight);
			} else if (options.send == "pedido_cartao") {
				mandaInf(FAF.form, "post", exibeForm);
			} else if(options.send.run){
				mandaInf(FAF.form, "post", options.send.run);
			} else {
				options.run();
			}
		} else if (FAF.primeiroErro != '') {
			var b = pID("boxContent");
			var topE = FAF.primeiroErro.offsetTop;
			var topB = b.offsetTop;
			b.scrollTop = (topE - (topE - topB));
			FAF.primeiroErro.focus();
		}
	},
	"_radio": function(){
		var R = FAF.radio;
		var n = [];
		for(var i=0; i<R.length; i++){
			var r = R[i];
			if(!in_array($(r).attr("name")+"_"+$(r).attr("rel"), n) && r.checked == true){
				n.push($(r).attr("name")+"_"+$(r).attr("rel"));
			}
		}
		$(R).each(function(i, e){
			if(in_array($(e).attr("name")+"_"+$(e).attr("rel"), n)){
				mudaCor(e.parentNode, "#ddd");
			} else {
				mudaCor(e.parentNode, "#f00");
				e.style.borderColor = "#f00";
				if(FAF.primeiroErro == '')
					FAF.primeiroErro = e;
				FAF.formValido = false;
			}
		});
	},
	"_checkbox": function(){
		if(FAF.checkbox.lenght < 3){
			FAF.formValido = false;
		}
	},
	"eValido": function(options){ // @ param {'campo': objCampo, 'exp': objRegExp}
		return options.exp.test(options.campo.value);
	}
}
