var sliders = new Array();

function addSlider(id) {
	if(window.ie) {
		$('a-'+id).addClass('hidden');
		$('q-'+id).addEvent('click', function(e){
				e = new Event(e); $('a-'+id).toggleClass('hidden'); e.stop(); 
		});
	} else {
		sliders[id] = new Fx.Slide('a-'+id);
		if(window.location.hash != '#q-'+id) { sliders[id].hide(); }
		$('q-'+id).addEvent('click', function(e){
				e = new Event(e); sliders[id].toggle(); e.stop(); 
		});
	}
} 

/* Academy related javascript */
var registration;

window.addEvent('domready', function() {
	if($('academy_register_form')) {
		registration = new AcademyRegistration();
		registration.username.setProperty('onBlur','registration.checkUsername()');
		registration.surname.setProperty('onChange','registration.checkName(\'surname\')');
		registration.givenname.setProperty('onChange','registration.checkName(\'givenname\')');
		registration.email.setProperty('onBlur','registration.checkEmail()');
		registration.password_confirm.setProperty('onBlur','registration.checkPasswords()');
		registration.registration_form.setProperty('onSubmit', 'return registration.validate()');
	}
});

var AcademyRegistration = new Class({
	
	initialize: function(){
		// Get the username
		this.username  = $('academy_username');
		this.surname   = $('academy_surname');
		this.givenname = $('academy_givenname');
		this.email     = $('academy_email');
		this.password  = $('academy_password');
		this.password_confirm  = $('academy_password_confirm');
		this.registration_form = $('academy_register');
	},
	validate: function(){
		
		// No errors to start with
		var errors = 0;
		
		if(this.checkUsername()        == false) { errors =+	1; }
		if(this.checkName('surname')   == false) { errors =+	1; }
		if(this.checkName('givenname') == false) { errors =+	1; }
		if(this.checkEmail()           == false) { errors =+	1; }
		if(this.checkPasswords()       == false) { errors =+	1; }
		
		return this.generalError();
	},
	generalError: function(){
		
		oops_count = 0;
		
		$$('div.oops').each(function(el, i){
			if(el.id != 'general-error') {
				oops_count =+ 1;
			}
		});
		
		// Show or hide the general-error section
		if(oops_count) { $('general-error').removeClass('hidden'); return false; } 
			else { $('general-error').addClass('hidden'); return true; }
	},
	checkUsername: function(){
		var return_value = false;
		if(this.username.value.length > 3) {
		 	var url = '/ajax/?method=academy_user&username=' + $('academy_username').value + 
			'&surname=' + $('academy_surname').value + '&givenname=' + $('academy_givenname').value;		
		  new Ajax(url, {
		 		method: 'get',
		 		update: $('username_links'),
		 		onComplete: function(){
			
					var registration = new AcademyRegistration();
		 			var children = $('username_links').getChildren();
		 			if(children.length) {
		 				
		 				children.each(function(el, i) {
		 				  el.setProperty('onClick','registration.setUsername(this.getText())');
		 				});
						
						$('general-error').removeClass('hidden');
						$('warn-username').removeClass('hidden');					
		 				$('grp-username').addClass('oops');
						registration.generalError();
						return false;
		 			} else {
		 				$('grp-username').removeClass('oops');
		 				registration.generalError();
						return true;
					}
				}
			}).request();
		} else {
			$('general-error').removeClass('hidden');
			$('warn-username').addClass('hidden');
			$('grp-username').addClass('oops');
		}
		registration.generalError();
		return return_value;
	},
	
	checkName: function(type) {
		var return_value = false;
		if($('academy_' + type).value.length) {
			$('grp-' + type).removeClass('oops');
			return_value = true;
		} else { 
			$('grp-' + type).addClass('oops');
			$('general-error').removeClass('hidden');
		}
		
		this.generalError();
		return return_value;
	},
	
	checkEmail: function() {
		var return_value = false;
		var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
		
		if(reg.test(this.email.value) == true || this.email.value.length == 0) {
			$('grp-email').removeClass('oops');
			return_value = true;
		} else { 
			$('grp-email').addClass('oops');
			$('general-error').removeClass('hidden');
		}
		this.generalError();
		return return_value;
	},
	checkPasswords: function() {
		var return_value = false;
		if(this.password.value == this.password_confirm.value 
			&& this.password.value.length > 5) {
			$('passwords').removeClass('oops');
			return_value = true;
		} else {
			$('passwords').addClass('oops');
			$('general-error').removeClass('hidden');
		}
		this.generalError();
		return return_value;
	},
	setField: function(field, value){
		$(field).value = value;
	},
	
	setUsername: function(name){
		this.setField('academy_username', name); 
		this.checkUsername();
	}
});



