// JavaScript Document
var Home = new Class({
	Extends: Page,
	
	messageObj: null,
	
	setBanner: null,
	setNewsList: null,
	setNewsSignupForm: null,
	
	initialize: function(pageState) {
		this.parent('home', pageState);
		
		this.messageObj = new Message();
		
		this.setBanner = this.setBlock.pass(['abBanner', 'banner'], this);
		this.setNewsList = this.setBlock.pass(['divNewsList', 'newsList'], this);
		this.setNewsSignupForm = this.setBlock.pass(['abNewsSignUp', 'newsSignupForm'], this);
	},

	requestBanner: function(id) {
		return {
			server: 'HomeServer',
			handler: 'banner',
			params: [id]
		};
	},
	requestPersistNewsSignup: function(formValues) {
		return {
			server: 'HomeServer',
			handler: 'persistNewsSignup',
			params: [formValues]
		};
	},
	
	banner: function(id) {
		this.addRequest(this.requestBanner(id));
		this.sendRequests();
	},
	persistNewsSignup: function(form) {
		if (Validation.validateForm(form)) {
			this.addRequest(this.requestPersistNewsSignup(form.getFormValues()));
			this.sendRequests();
			form.reset();
		} else {
			this.messageObj.message('The form contains validation errors. Please correct and resend.', true);
		}
	},
	attachNewsListScrollbar: function() {
		var content = $$('.newsList .left .scroll')[0];
		var scrollbar = $('newsListArea');
		var handle = $('newsListKnob');
		//var steps = content.getScrollSize().y - content.getSize().y + 15
		var steps = content.getScrollSize().y + 30;
		
		var slider = new Slider(scrollbar, handle, {	
			steps: steps,
			mode: 'vertical',
			onChange: function(step){
				var x = 0;
				var y = step;
				content.scrollTo(x,y);
			}
		});
		slider.set(0);
	},
	afterContentUpdate: function(responseClass) {
		switch (responseClass) {
			case 'newsList':
				this.attachNewsListScrollbar();
				break;
		}
	}
});
