var elReady=new Class({initialize:function(el,func){if($$(el)[0]){func();}else{this.timer=this.check.periodical(10,this,[el,func]);}
window.addEvent('domready',function(){$clear(this.timer);}.bind(this))},check:function(el,func){if($$(el)[0]){$clear(this.timer);func();}}});var rc=new Class({Implements:[Options],getOptions:function(){return{};},initialize:function(els,options){this.setOptions(options);this.boxes=$$(els);this.boxes.each(function(el,i){el.addClass('rc');var tl=new Element('div',{'class':'tl'});var tr=new Element('div',{'class':'tr'});var c=new Element('div',{'class':'c'});var bl=new Element('div',{'class':'bl'});var br=new Element('div',{'class':'br'});var children=el.getChildren();c.inject(el,'top');children.inject(c);tl.inject(c,'before');tr.inject(tl,'after');bl.inject(c,'after');br.inject(bl,'after');},this);}});Swiff=new Class({Extends:Swiff,options:{version:8},initialize:function(path,options){this.setOptions(options);if(Browser.Plugins.Flash.version>=this.options.version){$(this.options.container).getChildren().destroy();this.parent(path,options);}else{return false;}}});Swiff.CallBacks={};Swiff.remote=function(obj,fn){var rs=obj.CallFunction('<invoke name="'+fn+'" returntype="javascript">'+__flash__argumentsToXML(arguments,2)+'</invoke>');return eval(rs);};var textResizeDetector=new Class({getOptions:function(){return{delay:200};},initialize:function(options){this.setOptions(this.getOptions(),options);this.funcs=[];this.num=0
this.element=new Element('div').set({'id':'textResizeController_'+$time(),'styles':{'position':'absolute','left':'-9999px','top':0,'width':'1em','height':'20em'}}).inject(document.body);this.oldSize=this.element.getCoordinates().height;this.defaultSize=this.oldSize;this.start();},add:function(func){this.funcs.push(func);},defaultCheck:function(){if(this.defaultSize/16!=20){this.defaultSize=20*16;this.funcs.each(function(el,i){el.attempt(this.defaultSize,this.oldSize);},this);}},check:function(){var newSize=this.element.getCoordinates().height;if(this.oldSize!=newSize){this.funcs.each(function(el,i){el.attempt(this.defaultSize,newSize,this.oldSize);},this);this.oldSize=newSize;}},start:function(){this.timer=this.check.periodical(this.options.delay,this);},stop:function(){$clear(this.timer);}});textResizeDetector.implement(new Events);textResizeDetector.implement(new Options);var flashText=new Class({Implements:[Options,Events],getOptions:function(){return{font:'/_common/swf/custom.swf',version:8,resizer:null};},initialize:function(elements,options){this.setOptions(this.getOptions(),options);this.elements=$$(elements);this.properties=[];if(Browser.Plugins.Flash.version>=this.options.version){$(document.body).addClass('flashText');this.elements.each(function(el,i){var size=el.getStyle('font-size').toInt();if(this.options.size){size=this.options.size;}
var props={'colour':el.getStyle('color').replace('#',''),'size':size,'text':el.get('html').clean(),'height':el.getStyle('height').toInt()};this.properties.push(props);this.addFlash(el,props);new Element('span',{'html':props.text,'class':'flashText'}).inject(el);},this);this.options.resizer.add();}},addFlash:function(el,props){var obj=new Swiff(this.options.font,{container:el,version:this.options.version,width:'100%',height:props.height+5,params:{wMode:'transparent'},vars:{text:props.text,color:props.colour,size:props.size},properties:{style:'outline:none;'}});},update:function(defaultSize,newSize,oldSize){console.log(newSize);var percent=((newSize/oldSize)*100).toInt();if(oldSize){this.elements.each(function(el,i){el.getChildren().destroy();var props=this.properties[i];props.size=((percent/100)*props.size);this.addFlash(el,props);},this);}}});


/**************************************************************

	Script		: Drawers
	Version		: 1.0
	Authors		: Matt Robinson

**************************************************************/

var Drawers = new Class({
	
	Implements: [Options, Events],
	
	getOptions: function(){
		var options = {
			toggleClass: null,
			toggleText: null,
			openDrawer: null,
			drawSpeed: 500,
			autoClose: false,
			_onOpen: null,
			_onClose: null
		};
			
		return options;
	},
	
	initialize: function(_hiddenElements, _triggerElements, options)
	{
		this.setOptions(this.getOptions(), options);
		
		this.hiddenElements = $$(_hiddenElements);
		this.triggerElements = $$(_triggerElements);
		this.activeDrawer = null;
		
		if(this.hiddenElements && this.triggerElements)
		{	
			this.drawerArr = new Array();
			
			this.hiddenElements.each(function(el, i)
			{
				if(this.triggerElements[i])
				{
					var drawer = new Drawer(el, this.triggerElements[i], this.options);
					this.drawerArr.push(drawer);
					
					drawer.addEvent('drawerOpen', this.setActiveDrawer.bind(this))
				}
				
			}.bind(this));
			
			if((this.options.openDrawer > 0) && (this.options.openDrawer <= (this.drawerArr.length - 1)))
			{
				this.drawerArr[this.options.openDrawer - 1].openDrawer(true);
			}
		}	
	},
	
	setActiveDrawer: function(drawer)
	{
		if(this.activeDrawer && (this.activeDrawer != drawer))
		{
			this.activeDrawer.closeDrawer();
		}
		
		this.activeDrawer = drawer;
	}
});

/**************************************************************

	Script		: Drawer
	Version		: 1.0
	Authors		: Matt Robinson

**************************************************************/

var Drawer = new Class({
	
	Implements: [Options, Events],
	
	getOptions: function(){
		var options = {
			toggleClass: null,
			toggleText: null,
			drawSpeed: 500	
			};
			
		return options;
	},
	
	initialize: function(_hiddenElement, _triggerElement, options)
	{
		this.setOptions(this.getOptions(), options);
		
		this.open = false;
		this.hiddenElement = _hiddenElement;
		this.hiddenElementOpenHeight = this.hiddenElement.getSize().y;

		this.triggerElement = _triggerElement;	
		
		if(this.options.toggleText)
		{
			this.originalText = this.triggerElement.get('html');
		}
		
		this.drawerTween = new Fx.Morph(this.hiddenElement,{duration: this.options.drawSpeed, transition:Fx.Transitions.Sine.easeInOut});
		
		this.resetStyles();
		this.attachEvents();
	},
	
	resetStyles: function()
	{
		this.hiddenElement.setStyles({
			display: 'block',
			overflow: 'hidden',
			height: '0px'		
		});
	},
	
	attachEvents: function()
	{
		this.triggerElement.addEvent('click', function(evt)
		{
			if(!this.open)
			{
				this.openDrawer();
				if(this.options._onOpen) this.options._onOpen();
			}
			else
			{
				this.closeDrawer();
				if(this.options._onClose) this.options._onClose();
			}
				
		}.bind(this));
	},
	
	openDrawer: function(setOpen)
	{
		if(this.options.autoClose) this.fireEvent('drawerOpen', this);
		
		this.open = true;
		
		if(this.options.toggleClass)
		{
			this.triggerElement.addClass(this.options.toggleClass);
		}
		
		if(this.options.toggleText)
		{
			this.triggerElement.set('html', this.options.toggleText);
		}
		
		if(!setOpen)
		{
			this.drawerTween.cancel();
			this.drawerTween.start({
				'height' : String(this.hiddenElementOpenHeight + 'px')	
			});
		}
		else
		{
			this.hiddenElement.setStyle('height', String(this.hiddenElementOpenHeight + 'px'));
		}
	},
	
	closeDrawer: function()
	{
		this.open = false;
		
		if(this.options.toggleClass)
		{
			this.triggerElement.removeClass(this.options.toggleClass);
		}
		
		if(this.options.toggleText)
		{
			this.triggerElement.set('html', this.originalText);
		}
		
		this.drawerTween.cancel();
		this.drawerTween.start({
			'height' : '0px'	
		});
	}
});
