window.addEvent('domready',function(){
	
	if($('login')) new Login();
		
});

var FormValidation = new Class({

	initialize: function(element, errorLabel, errorMsg){
	var that = this;

	this.form = element;
	this.form.fields = this.form.getElements('input[type=text]');
	this.form.fields = this.form.fields.extend(this.form.getElements('textarea'));
	this.form.submit = this.form.getElement('input[type=submit]');
	this.form.error = errorLabel;
	if(this.form.error) this.form.error.msg = errorMsg;
	this.validation = [];

	this.form.submit.addEvent('click',function(e){
		if(that.form.error) that.form.error.set('text','');
			if(!that.runValidation()){
				e.preventDefault();
				if(that.form.error) that.form.error.set('text',that.form.error.msg);
			}
		});
	},

	validate: function(valElement, valType, valMsg){
		this.validation.extend([{
			type: valType,
			element: valElement,
			label: valElement.getParent().getElement('label[for='+valElement.get('id')+']'), // tries to get the label which corresponds to the form field
			msg: valMsg
		}]);
	},
	
	runValidation: function(){
		var validated = true;
		this.validation.each(function(item){
			item.element.removeClass('invalid');

			if(item.type == 'presence'){
				if(item.error){
					item.error.destroy();
					item.error = null;
				}
				var value = item.element.get('value');
				if(value == ''){
					item.element.addClass('invalid');
					if(item.label && !item.error) item.error = new Element('span',{
						'text':item.msg ? item.msg : 'required',
						'class':'error'
					}).inject(item.label,'top');
					validated = false;
				}
			}
		});
		return validated;
	}

});

var Login = new Class({

	initialize: function(){
		var that = this;
		var url = new URI();
	
		this.login = $('login');
		this.login.size = this.login.getSize();
		this.login.fx = new Fx.Tween(this.login);
		this.login.fx.set('margin-top','-'+this.login.size.y);
		this.login.error = new Element('p',{
			'text':'Incorrect username or password. Please try again.',
			'class':'error'
		});
		
		this.toggler = $('login-toggler');
		this.toggler.removeClass('hide');
		this.toggler.toggled = false;
		this.toggler.addEvent('click',function(e){
			e.preventDefault();
			this.toggled ? that.hideLogin() : that.showLogin();
		});
		
		if(url.get('query') == 'e'){
			this.login.error.inject(this.login.getElement('form'),'top');	
			this.toggler.toggled = true;
			this.login.fx.set('margin-top',0);
		}
	},
	
	showLogin: function(){
	
		this.toggler.toggled = true;
		this.login.fx.start('margin-top',0);
	
	},
	
	hideLogin: function(){
	
		this.toggler.toggled = false;
		this.login.fx.start('margin-top','-'+this.login.size.y);
	
	}

});

var SmoothPages = new Class({

	initialize: function(element){
		var that = this;
		
		this.window = element.getElement('.content');
		this.window.scroll = new Fx.Scroll(this.window,{
			link: 'cancel',
			wheelStops: false
		});
		this.window.fx = new Fx.Tween(this.window,{
			link: 'cancel'
		});
		this.pages = this.window.getElements('.page');
		
		this.buttons = this.window.getElements('.nav a');
		this.buttons.each(function(item){
			item.addEvent('click',function(e){
				e.preventDefault();
				that.scrollToPage(this);
			});
		});
		
		this.tabs = element.getElements('ul.tabs a');
		this.tabs.each(function(item){			
			item.addEvent('click',function(e){
				e.preventDefault();
				that.scrollToPage(this);
			});
		});
		this.scrollToPage(this.tabs[0]);
	
	},
	
	scrollToPage: function(link){
		var that = this;

		this.tabs.each(function(item){
			item.removeClass('selected');
		});
		this.tabs.each(function(item){
			if(item.get('href') == link.get('href')) item.addClass('selected');
		});
		
		var href = link.get('href').toString().substr(1);
		this.page = $(href);
		var pos = this.page.getPosition(this.window.getElement('.pages')).x; // fixes an annoying bug in IE
		
		this.window.scroll.start(pos,0);
		this.resize();
	
	},
	
	resize: function(page){
		var that = this;
		
		var height = this.page.getSize().y;
		this.window.fx.start('height', height);
	}

});
function setFooter()
{
var footerCopy = null;
var currentYear = (new Date).getFullYear();
document.getElementById('footer').innerHTML = document.getElementById('footer').innerHTML.replace('2009', currentYear);
}
window.onload = setFooter;
