Pod = new Class({
	initialize: function(id)
	{
		this.pod_element = $(id);
		
		this.inner_box = this.pod_element.getElement('.inner_box');
		this.working_img = this.pod_element.getElement('.working');
		this.abort_option = this.pod_element.getElement('.abort');
		this.title_div = this.pod_element.getElement('.title');
		
		this.timer = null;
		
		this.expandable = false;
		
		this.initPageSet();
	},
	
	initPageSet: function()
	{
		// Get page set elements
		var pagesets = this.pod_element.getElements('.pageset');
		
		if(pagesets.length > 0)
		{
			this.pageSet = new Array();
			for(var i = 0; i < pagesets.length; i++)
			{
				this.pageSet[i] = new PageSet(pagesets[i], this, null);
			}
		}
	},
	
	makeExpandable: function()
	{
		if(!this.expandable)
		{
			this.inner_size = this.inner_box.getSize();
			this.expanded = false;
			
			if(this.inner_size.size.y < this.inner_size.scrollSize.y)
			{
				var me = this;
				
				this.more = new Element('div', {'class': 'more'});
				
				
				var view_button = new Element('a', {
					events: {
						click: function(){me.toggleExpand();}
					},
					href: "javascript:void(0);"
				});
				view_button.setHTML("- Continue Reading");
				view_button.injectInside(this.more);
				
				this.more.injectAfter(this.inner_box);
				
				this.expandable = true;
				
				// My way of preping the elements mootools
				// effects will be using.
				this.collapse();
			}
		}
	},
	
	showWorking: function(show, abortCallback)
	{
		try
		{
			if(this.timer != null) {
				$clear(this.timer);
				this.timer = null;
			}
			this.working_img.setStyle("visibility", (show ? "visible" : "hidden"));
			this.abort_option.setStyle("display", "none");
			
			if(abortCallback) {
				var me = this;
				this.abort_option.addEvent('click', function() {
					me.showWorking(false, null);
					abortCallback();
				});
				
				this.timer = (function(){me.abort_option.setStyle('display', 'block')}).delay(45000);
			}
		}
		catch(e)
		{
			// Failed silently.
		}
	},
	
	toggleExpand: function()
	{
		if(this.expanded)
		{
			this.collapse();
		}
		else
		{
			this.expand(this.inner_size.scrollSize.y);
		}
	},
	
	expand: function(height)
	{
		if(this.expandable)
		{
			options = {
				duration: 1000, 
				transition: Fx.Transitions.Bounce.easeOut
			};
			
			if(height < this.inner_box.getSize().size.y)
			{
				options.transition = Fx.Transitions.Quad.easeOut;
			}
			
			this.inner_box.effect('height', options).start(height);
			this.expanded = true;
		}
	},
	
	collapse: function()
	{
		this.expand(this.inner_size.size.y);
		this.expanded = false;
	},
	
	setTitle: function(title)
	{
		/*var me = this;
		
		fade_in = {
			duration: 1000,
			transition: Fx.Transitions.linear
		};
		
		fade_out = {
			duration: 1000,
			transition: Fx.Transitions.linear,
			onComplete: function(){
				me.title_div.setHTML(title);
				me.title_div.effect('opacity', fade_in).start(0);
			}
		};
		this.title_div.effect('opacity', fade_out).start(100);*/
		
		this.title_div.setHTML(title);
	}
});
