//includes
sb.include('sb.timer');

app.help = {

	attachEvents : function(){
		
		var t = app.help;	
		
		
		if(app.remail){
			app.events.submitRemail =  app.remail.event('submit', function(e){ 
				sb.events.preventDefault(e);	
				t.form = app.remail;
				if(t.noEmpties()){	t.submitRemail(e)};
				app.remail_dsiplay.innerHTML = "";
				
			});
		}		
		
		/* disabled
		if(app.issue){
			app.events.submitIssue = app.issue.event('submit', function(e){
				sb.events.preventDefault(e);	
				t.form = app.issue;
				if(t.noEmpties()){t.submitIssue(e)};
			});	
			app.events.messagelimit = sb.events.add(app.issue.issue, 'change', t.issuechange);	
			app.events.messagelimit = sb.events.add(app.issue.message, 'keypress', t.messagelimit);	
			app.events.messagelimit = sb.events.add(app.issue.message, 'keyup', t.messagereport);	
		}
		*/
		
	},
			
	init : function(){
		if(app.remail || app.issue){
			this.attachEvents();
		}			
	},
	
	submitIssue : function(e){
	var t = this;
	
		//check username validity
		this.ajax = new ajax({
			data : "c=issues_checkuser&uname=" + escape(t.form.uname.value),
			method : 'get',
			handler: function(data){
				if(data == 1){				
					app.errlog.add({
							message : "Sorry, but it dosen't appear that <u>" + 
							t.form.uname.value + "</u> is a valid user name",
							targ : t.form.uname,
							id : t.form.uname.id + '_err'
					});
				}else{
					app.errlog.remove(t.form.uname.id + '_err');
					t.finishIssue.call(t.form, e);
				}
			}			
		}).fetch();
		
		delete this.ajax;
		
	},
	
	finishIssue : function(e){
		
		this.ajax = new ajax({			
			data  : sb.forms.serialize(this),
			method : 'get',
			format : 'json',
			handler : function(data){								
				if(data.success == 1){
					app.other_display.innerHTML = "<strong>Thank You!</strong>Your concern has been submitted." +
					" We'll be in touch with you as soon as possible.  This message will dissapear in 8 seconds";	
				
					this.timer = new sb.timer({
						seconds: 8,
						handler: function(){app.other_display.innerHTML = ""; app.issue.reset(); this.end();}					
					}).begin();
				}
				
			}
		}).fetch();	
	}, 
	
	submitRemail : function(e){		
		this.ajax = new ajax({
			data : sb.forms.serialize(app.remail),
			method : 'get',
			format : 'json',
			handler : function(data){		
				app.remail_dsiplay.innerHTML = data.message;
				if(data.success ==1){app.remail.reset();}else{app.remail.email.focus();}
				this.timer = new sb.timer({
					seconds: 8,
					handler: function(){app.remail_dsiplay.innerHTML = "";this.end();}					
				}).begin();
			
			}
		}).fetch();
	},
	
	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;
	},
	
	messlimit : 0,
	
	messagelimit : function(e){
		var limit = 255;			
		if(this.value.length >= limit){
			sb.events.preventDefault(e);			
			app.help.messlimit++;
			this.value = this.value.substr(0,limit - 1);
			if(app.help.messlimit % 5 == 0){
				app.warn('You have entered too many charcters.')
			}
		}
	},
	
	messagereport : function(e){
		var mess = $('#messlimit');
		if(mess){
			if(this.value.length > 0){
				mess.innerHTML = this.value.length;
			}else{
				mess.innerHTML = '';
			}
		}
	},
	
	issuechange : function(e){		
		
		var label = $(this.form, '@'+ ((sb.browser.agent == 'ie')?'htmlFor':'for') +'='+ this.form.message.id)[0];
		
		
		if(/other/gi.test(this.value)){			
			this.form.message.className = label.className = "show required";
			this.form.message.disabled = false;
			this.form.message.focus();
		}else{
			this.form.message.className = label.className = "hide";
			this.form.message.value = "";
			this.form.message.disabled = true;
			$('#messlimit').innerHTML = "";
			this.focus();
		}
	}
};