app.fvalid = {

	attachEvents : function(){
		var t = app.fvalid;	
		app.events.submitform = this.form.event('submit', function(e){ 
			sb.events.preventDefault(e);	
			t.checkCaptcha(t.sendForm, e);
		});
	},
			
	init : function(){
		
		if(app.fform){
			this.form = app.fform;
			this.events = app.events;
			this.attachEvents();
		}	
		
	},
	
	sendForm : function(e){				
		if(!this.noEmpties()){if(bGood){bGood = false};}		
		this.lastStep();
	}, 
	
	lastStep : function(){				
		var getter = new sb.ajax({
			data : sb.forms.serialize(this.form),
			format : 'json',
			handler : function(data){	

				
				if(data.found ==1){
					window.location = "../app/?f=found";
				}else{		
					app.errlog.add({
						message : 'Sorry, but some of your credentials don\'t check out',
						id :'cred_err'
					});
				}
			}
		}).fetch();
				
		delete getter;
	},		
	
		
	noEmpties : function(e){
		var bAllFull = true;
		
		
		$(this.form, '.required').forEach(function(v,k,a){						
			if(v.nodeName != 'LABEL'){ 
								
				if(v.nodeName == 'SPAN'){
					switch(v.className.replace(/required/, '').trim()){
						case 'dategroup':
							var attr = (sb.browser.agent == 'ie')?'htmlFor':'for';
							var label = $(app.page, '@'+attr+'='+v.id)[0];	
							var dobbad = false;
							var tar = null;
															
								for(var i in v.childNodes){
									var item = v.childNodes[i];
									
									if(item.nodeName == 'SELECT'){
										if(item.value.trim() == ''){ 
											tar = item;
											dobbad = true;
										}	
									}
									
								}
								
								if(dobbad){
									bAllFull = false;
									app.errlog.add({
										message : label.innerHTML + ' is not complete.  Please select a DAY, MONTH, & YEAR',
										targ : tar,
										id : v.id + '_err'
									});
								}else{
									app.errlog.remove(v.id + '_err');
								}
						break;
					}					
				}else{
					
					if(v.value.trim() == ''){
						var attr = (sb.browser.agent == 'ie')?'htmlFor':'for';
						var label = $(app.page, '@'+attr+'='+v.id)[0];			
										
						app.errlog.add({
							message : label.innerHTML + ' requires a value',
							targ : v,
							id : v.id + '_err'
						});
						
						bAllFull = false;
					}else{
						app.errlog.remove(v.id + '_err');
					}					
				}
			}	
		});
			
		
		return bAllFull;
	},
		
	checkCaptcha : function(keepGoing, e){
		var t = this;		
		sb.events.preventDefault(e);
		
		var getter = new sb.ajax({ 
			format : 'json',
			data : 'c=check_captcha&captcha=' + this.form.captcha.value,
			times : 0,
			handler : function(data){ 

				this.times++;
							
				if(data.human == 1){
					app.errlog.remove('captcha_err');
					keepGoing.call(t, e);				
				}else{					
					t.form.captcha.value = '';	
					app.captcha_img.src = (/(\d)$/.test(app.captcha_img.src))?app.captcha_img.src.replace(/(\d)$/, app.times++):app.captcha_img.src + "?x=1";	
					app.errlog.add({
							message : 'Please retype your validation text',
							targ : t.form.captcha,
							id : 'captcha_err'
					});
				}
			}
		}).fetch();
		
		delete getter;
	}
};