
var DivisionSelect = {

		emailCounter: null,
		
		// initialzize function, watch for an onchange event on the state, evaluate the form submission, this is hack for olgivy assigning a submit class
		init: function(){
		
			if(!$('divisionselect')) return;
			
			Event.observe('divisionStates','change',DivisionSelect.updateDivisionSelect);
			
			Event.observe('divisionemailaddress','focus',DivisionSelect.clearDivisionSelect);
						
			$('divisionselect').evaluate = DivisionSelect.validateSubmission;						
	
		},

		// get the associated division systems
		updateDivisionSelect: function(){
				
			$('divisionselect').divisionemailaddress.value = '';
			
			new Ajax.Request('/assets/javascript/ajax/data.cfm?method=divisionSystemAJAXRequest&stateid=' + $F('divisionStates') , {
				method: 'get', 
				onSuccess: function(transport){
				
					var json = transport.responseText.evalJSON();
					
					DivisionSelect.buildSelectOptions(json);
																			
				}
			});
		
		},	 
		
		clearDivisionSelect: function(){		

 			while ($('divisionSystem').childNodes.length > 0) {
 			
 				$('divisionSystem').removeChild($('divisionSystem').childNodes[0]);
 				
  			}
 
 			var option = new Element('option',{'value':''}).update('Please Select A State From Above');
					
			$('divisionSystem').appendChild(option);
			
			$('divisionselect').divisionStates.value = '';
					
		},
		
		//check to see if we have a one to one match on email domain
		checkEmailDomain: function(emailaddress){
				
			new Ajax.Request('/assets/javascript/ajax/data.cfm?method=checkEmailDomainAJAXRequest&emailaddress=' + DivisionSelect.getEmailDomain(emailaddress) , {
				method: 'get', 
				onComplete: function(transport){					 
					 
					 json = transport.responseText.evalJSON();			
					 
					 DivisionSelect.setDomainCounter(json);
 				}
 				
			});
		
		},
		
		setDomainCounter: function(count){
						 
			DivisionSelect.emailCounter = count;
							
				$('errorMessageDisplay').innerHTML = '';
				
				if(DivisionSelect.emailCounter == 1){
			
					$('divisionemailaddress').value = '';
					
					$('errorMessageDisplay').innerHTML = 'Your email address is associated to multiple divisions. Please select your state and division below.';
				
					return false;
			
				}
				
				else if(DivisionSelect.emailCounter == 0){
			
					$('divisionemailaddress').value = '';
					
					$('errorMessageDisplay').innerHTML = 'Your email address was not recogonized by our system. Please try again or select your state and division below.';
				
					return false;
			
				}		
			
				else{
			
					window.location.href = '/division/' + count;
								
				}	 
			
		},
		 		
		// push options to the division system select
		buildSelectOptions: function(jsonObject){ 			
 			
			while ($('divisionSystem').childNodes.length > 0 ){
			
				$('divisionSystem').removeChild($('divisionSystem').childNodes[0]);			
			
			}					
			
			//loop over json object to build options
			jsonObject.data.division_system_id.each(
				
				function(ele,i){							 
					 					
					var option = new Element('option',{'value':ele}).update(jsonObject.data.division_system_name[i]);
					
					$('divisionSystem').appendChild(option);
									
			});
							
		},
		
		//start validating the users input
		validateSubmission: function(){		
						
			if($('divisionselect').divisionStates.value != '' && $('divisionselect').divisionSystem.value != '') {
			
				window.location.href = '/division/' + $('divisionselect').divisionSystem.value;
							
			}
			
			if($('divisionselect').divisionemailaddress.value == '' && $('divisionselect').divisionStates.value == ''){
				
				$('errorMessageDisplay').innerHTML = 'Please enter your email address or select your state and division.';
								
				return false;
			
			}
											
			if($('divisionselect').divisionemailaddress.value != ''){
								
				if(!DivisionSelect.validateEmail($('divisionselect').divisionemailaddress.value)) {
 			
 					$('errorMessageDisplay').innerHTML = 'Please enter a valid email address.';
 				
 					$('divisionselect').divisionemailaddress.value = '';
 					
 					$('divisionselect').divisionemailaddress.focus();
 				
 					return false;
 				 				
 				}
				else{
					
					$('errorMessageDisplay').innerHTML = '';
					
				}
			
			}				
			
			if($('divisionselect').divisionemailaddress.value != ''){
				
				DivisionSelect.checkEmailDomain($('divisionselect').divisionemailaddress.value);
							
			}	
			
			return false;
			 								
		},
		
		validateEmail: function(email) {
		
			var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
			
			return (filter.test(email));
			
		},
		
		getEmailDomain: function(email){
		 			
			return email.split('@')[1];
		
		}
		
	}
	
document.observe('dom:loaded',DivisionSelect.init);
