app.mvalid = {

	attachEvents : function(){
		var t = app.mvalid;	
		app.events.profilereport = sb.events.add(t.form.profile, 'keyup', t.profilereport);	
		app.events.profilelimit = sb.events.add(t.form.profile, 'keypress', t.profilelimit);	
		app.events.profilelimit = sb.events.add(t.form, 'click', function(e){t.imageShift(e);});
		if(app.upload){
			var filecount = 0; var ufile;
			app.events.sendavatar = sb.events.add(app.upload, 'click', function(){
				
				sb.sticker.upload('*.jpg', '../data/upload.php?c=avatar_upload&s='+
				sb.cookies.recall('PHPSESSID'));
				
				sb.uploadHandlers.onstart = function(file){
						filecount++; 
						app.upload.disabled = true;
						app.upload.value = "Loading...";
						if(filecount ==1){ufile = file;}
				};
				
				sb.uploadHandlers.onprogress = function(file){
					app.progress.innerHTML = Math.round((file.bytesLoaded/file.bytesTotal)*100)+' %';
				}
				
				sb.uploadHandlers.onallcomplete = function(){
					
					
					//get username
					var sUname = (s$('#uname').nodeName == 'SPAN')?$('#uname').innerHTML.trim():'';
					
					var nRandy = Math.floor(Math.random() * 1000000 );					
					var sImgPath = "../data/process.php?c=ua&x=" + (app.mvalid.filex + nRandy);
					
					//create option 
					var choice = new sb.element({
						nodeName: 'span',
						id : 'neo_avatar',
						innerHTML : "<input type='radio' id='custom_avatar' name='avatar' value='" +
								 	app.approot + "media/avatar/rpci/" + sUname + ".jpg' checked />" +
								 	"<label for='custom_avatar'><img src='" + sImgPath + "' height='15px' /> custom avatar</label><br />"			
						});
						
					//uncheck old ones		 
					for(var i in app.mvalid.form['avatar']){
						app.mvalid.form['avatar'][i].checked = false;
					}
					

					
					//add new one and check				
					if($('#neo_avatar')){
						replace(choice, '#neo_avatar');
					}else{
						choice.appendToTop(app.avatarlist);						
					}
					
					app.full_size.src = sImgPath;	
					app.mvalid.form['avatar'][0].focus();					//update upkeep things				
					app.mvalid.filex++;
					app.upload.disabled = false;
					app.progress.innerHTML = "";
					app.upload.value = "Replace Your File";
					filecount = 0;
				}
				
							
			});
		}
	},

	filex : 0,
	
	init : function(){
				
		if(app.mform){
			this.form = app.mform;
			this.attachEvents();
			this.profilereport.call(this.form.profile);
			
		}	
	},	
	
	imageShift : function(e){ 
		if(app.full_size){
			var targ = sb.events.target(e);		
			if(targ.type != 'undefined' && targ.type == 'radio'){
				app.full_size.src = targ.value;
			}
		}		
	},	
	
	matchPasswords : function(e){
		var pass2 = this.form.pass2.value;
		var pass = this.form.pass.value;
		var args = {
			targ : this.form.pass,
			id : 'pass_err'
		}

		
		//not matching
		if(pass2 != pass){
			args.message = 'The values for "Password" and "Password Confirm" must match';			
			app.errlog.add(args);					
			return false;
		}
				
		app.errlog.remove('pass_err');
		return true;
	},
	
	profilelimit : function(e){
		var limit = 255;	
		
		if(this.value.length >= limit){
			sb.events.preventDefault(e);			
			app.mvalid.plimithit++;
			this.value = this.value.substr(0,limit - 1);
			if(app.mvalid.plimithit % 5 == 0){
				app.warn('You have entered too many charcters.')
			}
		}
		
		
	},
	
	profilereport : function(e){
		if($('#prolimit')){
			if(this.value.length > 0){
				$('#prolimit').innerHTML = this.value.length;
			}else{
				$('#prolimit').innerHTML = '';
			}
		}
	},
	
	checkCaptcha : function(keepGoing, e){
		var t = this;		
		
		var getter = new sb.ajax({ 
			format : 'json',
			data : 'c=check_captcha&captcha=' + this.form.captcha.value,
			handler : function(data){ 
								
				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;
	}

};