/*	SWFObject v2.0 <http://code.google.com/p/swfobject/>
	Copyright (c) 2007 Geoff Stearns, Michael Williams, and Bobby van der Sluis
	This software is released under the MIT License <http://www.opensource.org/licenses/mit-license.php>
*/
var swfobject=function(){var Z="undefined",P="object",B="Shockwave Flash",h="ShockwaveFlash.ShockwaveFlash",W="application/x-shockwave-flash",K="SWFObjectExprInst",G=window,g=document,N=navigator,f=[],H=[],Q=null,L=null,T=null,S=false,C=false;var a=function(){var l=typeof g.getElementById!=Z&&typeof g.getElementsByTagName!=Z&&typeof g.createElement!=Z&&typeof g.appendChild!=Z&&typeof g.replaceChild!=Z&&typeof g.removeChild!=Z&&typeof g.cloneNode!=Z,t=[0,0,0],n=null;if(typeof N.plugins!=Z&&typeof N.plugins[B]==P){n=N.plugins[B].description;if(n){n=n.replace(/^.*\s+(\S+\s+\S+$)/,"$1");t[0]=parseInt(n.replace(/^(.*)\..*$/,"$1"),10);t[1]=parseInt(n.replace(/^.*\.(.*)\s.*$/,"$1"),10);t[2]=/r/.test(n)?parseInt(n.replace(/^.*r(.*)$/,"$1"),10):0}}else{if(typeof G.ActiveXObject!=Z){var o=null,s=false;try{o=new ActiveXObject(h+".7")}catch(k){try{o=new ActiveXObject(h+".6");t=[6,0,21];o.AllowScriptAccess="always"}catch(k){if(t[0]==6){s=true}}if(!s){try{o=new ActiveXObject(h)}catch(k){}}}if(!s&&o){try{n=o.GetVariable("$version");if(n){n=n.split(" ")[1].split(",");t=[parseInt(n[0],10),parseInt(n[1],10),parseInt(n[2],10)]}}catch(k){}}}}var v=N.userAgent.toLowerCase(),j=N.platform.toLowerCase(),r=/webkit/.test(v)?parseFloat(v.replace(/^.*webkit\/(\d+(\.\d+)?).*$/,"$1")):false,i=false,q=j?/win/.test(j):/win/.test(v),m=j?/mac/.test(j):/mac/.test(v);/*@cc_on i=true;@if(@_win32)q=true;@elif(@_mac)m=true;@end@*/return{w3cdom:l,pv:t,webkit:r,ie:i,win:q,mac:m}}();var e=function(){if(!a.w3cdom){return }J(I);if(a.ie&&a.win){try{g.write("<script id=__ie_ondomload defer=true src=//:><\/script>");var i=c("__ie_ondomload");if(i){i.onreadystatechange=function(){if(this.readyState=="complete"){this.parentNode.removeChild(this);V()}}}}catch(j){}}if(a.webkit&&typeof g.readyState!=Z){Q=setInterval(function(){if(/loaded|complete/.test(g.readyState)){V()}},10)}if(typeof g.addEventListener!=Z){g.addEventListener("DOMContentLoaded",V,null)}M(V)}();function V(){if(S){return }if(a.ie&&a.win){var m=Y("span");try{var l=g.getElementsByTagName("body")[0].appendChild(m);l.parentNode.removeChild(l)}catch(n){return }}S=true;if(Q){clearInterval(Q);Q=null}var j=f.length;for(var k=0;k<j;k++){f[k]()}}function J(i){if(S){i()}else{f[f.length]=i}}function M(j){if(typeof G.addEventListener!=Z){G.addEventListener("load",j,false)}else{if(typeof g.addEventListener!=Z){g.addEventListener("load",j,false)}else{if(typeof G.attachEvent!=Z){G.attachEvent("onload",j)}else{if(typeof G.onload=="function"){var i=G.onload;G.onload=function(){i();j()}}else{G.onload=j}}}}}function I(){var l=H.length;for(var j=0;j<l;j++){var m=H[j].id;if(a.pv[0]>0){var k=c(m);if(k){H[j].width=k.getAttribute("width")?k.getAttribute("width"):"0";H[j].height=k.getAttribute("height")?k.getAttribute("height"):"0";if(O(H[j].swfVersion)){if(a.webkit&&a.webkit<312){U(k)}X(m,true)}else{if(H[j].expressInstall&&!C&&O("6.0.65")&&(a.win||a.mac)){D(H[j])}else{d(k)}}}}else{X(m,true)}}}function U(m){var k=m.getElementsByTagName(P)[0];if(k){var p=Y("embed"),r=k.attributes;if(r){var o=r.length;for(var n=0;n<o;n++){if(r[n].nodeName.toLowerCase()=="data"){p.setAttribute("src",r[n].nodeValue)}else{p.setAttribute(r[n].nodeName,r[n].nodeValue)}}}var q=k.childNodes;if(q){var s=q.length;for(var l=0;l<s;l++){if(q[l].nodeType==1&&q[l].nodeName.toLowerCase()=="param"){p.setAttribute(q[l].getAttribute("name"),q[l].getAttribute("value"))}}}m.parentNode.replaceChild(p,m)}}function F(i){if(a.ie&&a.win&&O("8.0.0")){G.attachEvent("onunload",function(){var k=c(i);if(k){for(var j in k){if(typeof k[j]=="function"){k[j]=function(){}}}k.parentNode.removeChild(k)}})}}function D(j){C=true;var o=c(j.id);if(o){if(j.altContentId){var l=c(j.altContentId);if(l){L=l;T=j.altContentId}}else{L=b(o)}if(!(/%$/.test(j.width))&&parseInt(j.width,10)<310){j.width="310"}if(!(/%$/.test(j.height))&&parseInt(j.height,10)<137){j.height="137"}g.title=g.title.slice(0,47)+" - Flash Player Installation";var n=a.ie&&a.win?"ActiveX":"PlugIn",k=g.title,m="MMredirectURL="+G.location+"&MMplayerType="+n+"&MMdoctitle="+k,p=j.id;if(a.ie&&a.win&&o.readyState!=4){var i=Y("div");p+="SWFObjectNew";i.setAttribute("id",p);o.parentNode.insertBefore(i,o);o.style.display="none";G.attachEvent("onload",function(){o.parentNode.removeChild(o)})}R({data:j.expressInstall,id:K,width:j.width,height:j.height},{flashvars:m},p)}}function d(j){if(a.ie&&a.win&&j.readyState!=4){var i=Y("div");j.parentNode.insertBefore(i,j);i.parentNode.replaceChild(b(j),i);j.style.display="none";G.attachEvent("onload",function(){j.parentNode.removeChild(j)})}else{j.parentNode.replaceChild(b(j),j)}}function b(n){var m=Y("div");if(a.win&&a.ie){m.innerHTML=n.innerHTML}else{var k=n.getElementsByTagName(P)[0];if(k){var o=k.childNodes;if(o){var j=o.length;for(var l=0;l<j;l++){if(!(o[l].nodeType==1&&o[l].nodeName.toLowerCase()=="param")&&!(o[l].nodeType==8)){m.appendChild(o[l].cloneNode(true))}}}}}return m}function R(AE,AC,q){var p,t=c(q);if(typeof AE.id==Z){AE.id=q}if(a.ie&&a.win){var AD="";for(var z in AE){if(AE[z]!=Object.prototype[z]){if(z=="data"){AC.movie=AE[z]}else{if(z.toLowerCase()=="styleclass"){AD+=' class="'+AE[z]+'"'}else{if(z!="classid"){AD+=" "+z+'="'+AE[z]+'"'}}}}}var AB="";for(var y in AC){if(AC[y]!=Object.prototype[y]){AB+='<param name="'+y+'" value="'+AC[y]+'" />'}}t.outerHTML='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"'+AD+">"+AB+"</object>";F(AE.id);p=c(AE.id)}else{if(a.webkit&&a.webkit<312){var AA=Y("embed");AA.setAttribute("type",W);for(var x in AE){if(AE[x]!=Object.prototype[x]){if(x=="data"){AA.setAttribute("src",AE[x])}else{if(x.toLowerCase()=="styleclass"){AA.setAttribute("class",AE[x])}else{if(x!="classid"){AA.setAttribute(x,AE[x])}}}}}for(var w in AC){if(AC[w]!=Object.prototype[w]){if(w!="movie"){AA.setAttribute(w,AC[w])}}}t.parentNode.replaceChild(AA,t);p=AA}else{var s=Y(P);s.setAttribute("type",W);for(var v in AE){if(AE[v]!=Object.prototype[v]){if(v.toLowerCase()=="styleclass"){s.setAttribute("class",AE[v])}else{if(v!="classid"){s.setAttribute(v,AE[v])}}}}for(var u in AC){if(AC[u]!=Object.prototype[u]&&u!="movie"){E(s,u,AC[u])}}t.parentNode.replaceChild(s,t);p=s}}return p}function E(k,i,j){var l=Y("param");l.setAttribute("name",i);l.setAttribute("value",j);k.appendChild(l)}function c(i){return g.getElementById(i)}function Y(i){return g.createElement(i)}function O(k){var j=a.pv,i=k.split(".");i[0]=parseInt(i[0],10);i[1]=parseInt(i[1],10);i[2]=parseInt(i[2],10);return(j[0]>i[0]||(j[0]==i[0]&&j[1]>i[1])||(j[0]==i[0]&&j[1]==i[1]&&j[2]>=i[2]))?true:false}function A(m,j){if(a.ie&&a.mac){return }var l=g.getElementsByTagName("head")[0],k=Y("style");k.setAttribute("type","text/css");k.setAttribute("media","screen");if(!(a.ie&&a.win)&&typeof g.createTextNode!=Z){k.appendChild(g.createTextNode(m+" {"+j+"}"))}l.appendChild(k);if(a.ie&&a.win&&typeof g.styleSheets!=Z&&g.styleSheets.length>0){var i=g.styleSheets[g.styleSheets.length-1];if(typeof i.addRule==P){i.addRule(m,j)}}}function X(k,i){var j=i?"visible":"hidden";if(S){c(k).style.visibility=j}else{A("#"+k,"visibility:"+j)}}return{registerObject:function(l,i,k){if(!a.w3cdom||!l||!i){return }var j={};j.id=l;j.swfVersion=i;j.expressInstall=k?k:false;H[H.length]=j;X(l,false)},getObjectById:function(l){var i=null;if(a.w3cdom&&S){var j=c(l);if(j){var k=j.getElementsByTagName(P)[0];if(!k||(k&&typeof j.SetVariable!=Z)){i=j}else{if(typeof k.SetVariable!=Z){i=k}}}}return i},embedSWF:function(n,u,r,t,j,m,k,p,s){if(!a.w3cdom||!n||!u||!r||!t||!j){return }r+="";t+="";if(O(j)){X(u,false);var q=(typeof s==P)?s:{};q.data=n;q.width=r;q.height=t;var o=(typeof p==P)?p:{};if(typeof k==P){for(var l in k){if(k[l]!=Object.prototype[l]){if(typeof o.flashvars!=Z){o.flashvars+="&"+l+"="+k[l]}else{o.flashvars=l+"="+k[l]}}}}J(function(){R(q,o,u);if(q.id==u){X(u,true)}})}else{if(m&&!C&&O("6.0.65")&&(a.win||a.mac)){X(u,false);J(function(){var i={};i.id=i.altContentId=u;i.width=r;i.height=t;i.expressInstall=m;D(i)})}}},getFlashPlayerVersion:function(){return{major:a.pv[0],minor:a.pv[1],release:a.pv[2]}},hasFlashPlayerVersion:O,createSWF:function(k,j,i){if(a.w3cdom&&S){return R(k,j,i)}else{return undefined}},createCSS:function(j,i){if(a.w3cdom){A(j,i)}},addDomLoadEvent:J,addLoadEvent:M,getQueryParamValue:function(m){var l=g.location.search||g.location.hash;if(m==null){return l}if(l){var k=l.substring(1).split("&");for(var j=0;j<k.length;j++){if(k[j].substring(0,k[j].indexOf("="))==m){return k[j].substring((k[j].indexOf("=")+1))}}}return""},expressInstallCallback:function(){if(C&&L){var i=c(K);if(i){i.parentNode.replaceChild(L,i);if(T){X(T,true);if(a.ie&&a.win){L.style.display="block"}}L=null;T=null;C=false}}}}}();
	
	
/*
Script: IframeShim.js
	Defines IframeShim, a class for obscuring select lists and flash objects in IE.

License:
	http://clientside.cnet.com/wiki/cnet-libraries#license
*/	
var IframeShim=new Class({Implements:[Options,Events],options:{name:'',className:'iframeShim',display:false,zindex:null,margin:0,offset:{x:0,y:0},browsers:(Browser.Engine.trident4||(Browser.Engine.gecko&&!Browser.Engine.gecko19&&Browser.Platform.mac))},initialize:function(element,options){this.setOptions(options);if(this.options.offset&&this.options.offset.top)this.options.offset.y=this.options.offset.top;if(this.options.offset&&this.options.offset.left)this.options.offset.x=this.options.offset.left;this.element=$(element);this.makeShim();return;},makeShim:function(){this.shim=new Element('iframe');this.id=this.options.name||new Date().getTime()+"_shim";if(this.element.getStyle('z-Index').toInt()<1||isNaN(this.element.getStyle('z-Index').toInt()))
this.element.setStyle('z-Index',5);var z=this.element.getStyle('z-Index')-1;if($chk(this.options.zindex)&&this.element.getStyle('z-Index').toInt()>this.options.zindex)
z=this.options.zindex;this.shim.setStyles({'position':'absolute','zIndex':z,'border':'none','filter':'progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=0)'}).setProperties({'src':'javascript:void(0);','frameborder':'0','scrolling':'no','id':this.id}).addClass(this.options.className);this.element.store('shim',this);var inject=function(){this.shim.inject(this.element,'after');if(this.options.display)this.show();else this.hide();this.fireEvent('onInject');};if(this.options.browsers){if(Browser.Engine.trident&&!IframeShim.ready){window.addEvent('load',inject.bind(this));}else{inject.run(null,this);}}},position:function(shim){if(!this.options.browsers||!IframeShim.ready)return this;var before=this.element.getStyles('display','visibility','position');this.element.setStyles({display:'block',position:'absolute',visibility:'hidden'});var size=this.element.getSize();this.element.setStyles(before);if($type(this.options.margin)){size.x=size.x-(this.options.margin*2);size.y=size.y-(this.options.margin*2);this.options.offset.x+=this.options.margin;this.options.offset.y+=this.options.margin;}
this.shim.setStyles({'width':size.x,'height':size.y}).setPosition({relativeTo:this.element,offset:this.options.offset});return this;},hide:function(){if(this.options.browsers)this.shim.setStyle('display','none');return this;},show:function(){if(!this.options.browsers)return this;this.shim.setStyle('display','block');return this.position();},dispose:function(){if(this.options.browsers)this.shim.dispose();return this;}});window.addEvent('load',function(){IframeShim.ready=true;});


/*
	Slimbox v1.69 - The ultimate lightweight Lightbox clone
	(c) 2007-2009 Christophe Beyls <http://www.digitalia.be>
	MIT-style license.
*/
var Slimbox=(function(){var F=window,n=Browser.Engine.trident4,u,g,G=-1,o,w,E,v,y,M,s,m={},t=new Image(),K=new Image(),I,a,h,q,J,e,H,c,A,L,x,i,d,C;F.addEvent("domready",function(){$(document.body).adopt($$(I=new Element("div",{id:"lbOverlay",events:{click:D}}),a=new Element("div",{id:"lbCenter"}),H=new Element("div",{id:"lbBottomContainer"})).setStyle("display","none"));h=new Element("div",{id:"lbImage"}).injectInside(a).adopt(q=new Element("div",{styles:{position:"relative"}}).adopt(J=new Element("a",{id:"lbPrevLink",href:"#",events:{click:B}}),e=new Element("a",{id:"lbNextLink",href:"#",events:{click:f}})));c=new Element("div",{id:"lbBottom"}).injectInside(H).adopt(new Element("a",{id:"lbCloseLink",href:"#",events:{click:D}}),A=new Element("div",{id:"lbCaption"}),L=new Element("div",{id:"lbNumber"}),new Element("div",{styles:{clear:"both"}}))});function z(){var N=F.getScroll(),O=F.getSize();$$(a,H).setStyle("left",N.x+(O.x/2));if(v){I.setStyles({left:N.x,top:N.y,width:O.x,height:O.y})}}function l(N){["object",n?"select":"embed"].forEach(function(P){Array.forEach(document.getElementsByTagName(P),function(Q){if(N){Q._slimbox=Q.style.visibility}Q.style.visibility=N?"hidden":Q._slimbox})});I.style.display=N?"":"none";var O=N?"addEvent":"removeEvent";F[O]("scroll",z)[O]("resize",z);document[O]("keydown",p)}function p(O){var N=O.code;return u.closeKeys.contains(N)?D():u.nextKeys.contains(N)?f():u.previousKeys.contains(N)?B():false}function B(){return b(w)}function f(){return b(E)}function b(N){if(N>=0){G=N;o=g[N][0];w=(G||(u.loop?g.length:0))-1;E=((G+1)%g.length)||(u.loop?0:-1);r();a.className="lbLoading";m=new Image();m.onload=k;m.src=o}return false}function k(){a.className="";d.set(0);h.setStyles({backgroundImage:"url("+o+")",display:""});q.setStyle("width",m.width);$$(q,J,e).setStyle("height",m.height);A.set("html",g[G][1]||"");L.set("html",(((g.length>1)&&u.counterText)||"").replace(/{x}/,G+1).replace(/{y}/,g.length));if(w>=0){t.src=g[w][0]}if(E>=0){K.src=g[E][0]}M=h.offsetWidth;s=h.offsetHeight;var O=Math.max(0,y-(s/2)),N;if(a.offsetHeight!=s){i.start({height:s,top:O})}if(a.offsetWidth!=M){i.start({width:M,marginLeft:-M/2})}N=function(){H.setStyles({width:M,top:O+s,marginLeft:-M/2,visibility:"hidden",display:""});d.start(1)};if(i.check(N)){N()}}function j(){if(w>=0){J.style.display=""}if(E>=0){e.style.display=""}C.set(-c.offsetHeight).start(0);H.style.visibility=""}function r(){m.onload=$empty;m.src=t.src=K.src=o;i.cancel();d.cancel();C.cancel();$$(J,e,h,H).setStyle("display","none")}function D(){if(G>=0){r();G=w=E=-1;a.style.display="none";x.cancel().chain(l).start(0)}return false}Element.implement({slimbox:function(N,O){$$(this).slimbox(N,O);return this}});Elements.implement({slimbox:function(N,Q,P){Q=Q||function(R){return[R.href,R.title]};P=P||function(){return true};var O=this;O.removeEvents("click").addEvent("click",function(){var R=O.filter(P,this);return Slimbox.open(R.map(Q),R.indexOf(this),N)});return O}});return{open:function(P,O,N){u=$extend({loop:false,overlayOpacity:0.8,overlayFadeDuration:400,resizeDuration:400,resizeTransition:false,initialWidth:250,initialHeight:250,imageFadeDuration:400,captionAnimationDuration:400,counterText:"Image {x} of {y}",closeKeys:[27,88,67],previousKeys:[37,80],nextKeys:[39,78]},N||{});x=new Fx.Tween(I,{property:"opacity",duration:u.overlayFadeDuration});i=new Fx.Morph(a,$extend({duration:u.resizeDuration,link:"chain"},u.resizeTransition?{transition:u.resizeTransition}:{}));d=new Fx.Tween(h,{property:"opacity",duration:u.imageFadeDuration,onComplete:j});C=new Fx.Tween(c,{property:"margin-top",duration:u.captionAnimationDuration});if(typeof P=="string"){P=[[P,O]];O=0}y=F.getScrollTop()+(F.getHeight()/2);M=u.initialWidth;s=u.initialHeight;a.setStyles({top:Math.max(0,y-(s/2)),width:M,height:s,marginLeft:-M/2,display:""});v=n||(I.currentStyle&&(I.currentStyle.position!="fixed"));if(v){I.style.position="absolute"}x.set(0).start(u.overlayOpacity);z();l(1);g=P;u.loop=u.loop&&(g.length>1);return b(O)}}})();

// AUTOLOAD CODE BLOCK (MAY BE CHANGED OR REMOVED)
Slimbox.scanPage = function() {
	$$(document.links).filter(function(el) {
		return el.rel && el.rel.test(/^lightbox/i);
	}).slimbox({/* Put custom options here */}, null, function(el) {
		return (this == el) || ((this.rel.length > 8) && (this.rel == el.rel));
	});
};
window.addEvent("domready", Slimbox.scanPage);


/* ----------------------------------------------------------------------------------------------- modalBox class */

//Display modal overlay box
var modalBox = new Class({
	
	Implements: Options,

	options: {
		closeOnClick:   true,
		showCloseButton:true,
		overlayOpacity: 0.8,
		titleText:      'Message',
		content:        $empty,
		width:          '500'
	},
	
	
	initialize: function(options){
		this.setOptions(options);
		this.closeOnClick    = this.options.closeOnClick;
		this.showCloseButton = this.options.showCloseButton;
		this.overlayOpacity  = this.options.overlayOpacity;
		this.titleText       = this.options.titleText;
		this.width           = this.options.width;
		this.overlay         = $empty;
		this.contentBox      = $empty;
	},
	
	
	//Show the current modalBox
	show: function(){
		
		//Create an overlay
		this.overlay = new Element('div',{
		'id':'modalOverlay', 
		'class':'modalOverlay', 
		'styles':{
			'width':'100%',
			'height':window.getScrollSize().y,
			'position':'absolute',
			'top':0,
			'left':0,
			'z-index':1000,
			'opacity':0
			}
		});
		
		//Inject overlay into document body
		this.overlay.inject(document.body);
		
		//Create title bar
		var titleBar = new Element('div',{'id':'modalTitleBar'});
		
		//Create title
		var title = new Element('h1',{'id':'modalTitle','html':this.titleText});
		
		//Check if including close button
		if(this.showCloseButton){
		
			//Create close button
			var closeButton = new Element('a',{
				'id':'modalCloseButton',
				'href':'#',
				'html':'<span>Close</span>',
				'events':{
					'click': function(e){
						e.stop();
						this.hide();
					}.bind(this)
				}
			});
			//Inject close button into title bar
			titleBar.adopt(title, closeButton);
		}
		
		//Create content box
		this.contentBox = new Element('div',{
		'id':'modalContentBox',
		'styles':{
			'width':this.width,
			'position':'absolute',
			'z-index':1001
			}
		});
		
		//Inject title bar
		this.contentBox.adopt(titleBar);
		
		//Check if content is just a string
		if($type(this.options.content) == "string"){
			this.options.content = '<p>'+this.options.content+'</p>';
		}
		
		//Inject content into box
		this.contentBox.adopt(this.options.content);
		
		//Inject content box into document body
		this.contentBox.inject(document.body);
		
		//Get size of content box
		var contentBoxSize = this.contentBox.getSize();

		//Update content box position
		this.contentBox.setStyles({
			'top': (window.getScroll().y+((window.getSize().y/2)-(contentBoxSize.y/2))),
			'left': (window.getSize().x/2)-(this.width/2)
		});
		
		//Hide things like select lists and embeded flash
		this.iframeShim(0);

		//Show the overlay
		this.overlay.set('opacity',this.overlayOpacity);
		
		//If closeOnClick is set to true
		if(this.closeOnClick){
			//Add click event to overlay
			this.overlay.addEvent('click',function(el){
				this.hide();
			}.bind(this));
		}
	
	},//End show the current modalBox
	
	
	//Hide (destroy) modalBox
	hide: function(){
		//Destroy content and overlay
		this.contentBox.destroy();
		this.overlay.destroy();
		//Bring select lists and embeded flash back
		this.iframeShim(1);
	},
	
	
	//Set the opacity of iframe shim objects
	iframeShim: function(overlayOpacity){
		if(Browser.Engine.trident4 || (Browser.Engine.gecko && Browser.Platform.mac)) {
			$$('select').each(function(select){
				select.setStyle('opacity', overlayOpacity);
			});
		}
	}
	
});//End modalBox



/* ----------------------------------------------------------------------------------------------- confirmationDialog class */

//Confirmation dialog, displays a modal box with a message and Yes/No buttons
var confirmationDialog = new Class({
	
	Implements: Options,

	options: {
		onConfirm: $empty,
		onDeny:    $empty
	},
	
	initialize: function(message,options){
		this.setOptions(options);
		this.message   = message;
		this.modal     = new modalBox({'closeOnClick':false,'titleText':'Are you sure?','width':'300'});
	},
	
	
	//Show the dialog
	show: function(){

		var dialogWrapper = new Element('div');
		
		var messageContainer = new Element('p',{'html':this.message});
		
		var yesButton = new Element('button',{
			'id':'confirmButtonYes',
			'name':'confirmButtonYes',
			'class':'dialogButton',
			'html':'<span>Yes</span>',
			'events':{
				'click':this.options.onConfirm
			}
		});
		
		var noButton = new Element('button',{
			'id':'confirmButtonNo',
			'name':'confirmButtonNo',
			'class':'dialogButton',
			'html':'<span>No</span>',
			'events':{
				'click':this.options.onDeny
			}
		});

		messageContainer.inject(dialogWrapper);
		yesButton.inject(dialogWrapper);
		noButton.inject(dialogWrapper);
		
		this.modal.setOptions({'content':dialogWrapper});
		this.modal.show();
		
	},//End show the dialog
	
	
	//Hide (destroy) dialog
	hide: function(){
		this.modal.hide();
	}
	
});//End confirmationDialog


//Setup cs functions
var csFunctions = {//Start csFunctions
	
	//User shortcuts dropdown container
	shortcutsDropdown: function(){//Start shortcutsDropdown
		
		//Get shortcuts wrapper
		var userShortcutsWrapper = $('userShortcutsWrapper');
		
		//Get shortcuts container
		var userShortcuts = $('userShortcuts');
		
		//Get shortcuts link
		var toggleShortCuts = $('toggleShortCuts');
		
		//Check if all the required elements exist.
		if((userShortcutsWrapper) && (userShortcuts) && (toggleShortCuts)){//Start check elements exist
			
			//All elements exists
			
			//Add the necessary styles to move the shortcuts wrapper to the top of the page
			userShortcutsWrapper.setStyles({
				position: 'absolute',
				top: '0px',
				right: '0px',
				'z-index': '10',
				color: '#FFFFFF'
			});
			
			
			//Remove #shortcuts href
			toggleShortCuts.removeProperty('href');
			
			//Create shortcuts slide
			var shortcutsSlide = new Fx.Slide(userShortcuts,{
				//Nice transition
				transition:Fx.Transitions.Quart.easeOut,
				
				//Each time we complete the slide
				onComplete: function(){		
					//Get the current inner text of the toggle link
					var statusLinkText = toggleShortCuts.get('text');
					//If open
					if(statusLinkText == 'open shortcuts'){
						//Set to close
						toggleShortCuts.set('text','close shortcuts');
						toggleShortCuts.setProperty('title','Close the shortcuts panel');
					}else{
						//Set to open
						toggleShortCuts.set('text','open shortcuts');
						toggleShortCuts.setProperty('title','Open the shortcuts panel');
					}			
				}						  
			});
			
			//Hide initially
			shortcutsSlide.hide();
			//Set toggle text and title to open
			toggleShortCuts.set('text','open shortcuts');
			toggleShortCuts.setProperty('title','Open the shortcuts panel');
			
			//Set onclick event for toggle link
			toggleShortCuts.addEvent('click', function(){//Start click event
					shortcutsSlide.toggle();							 
			});
			
		}//End check container and link exists
		
	},//End shortcutsDropdown

/* ----------------------------------------------------------------------------------------------- quickLogin function */

	//User shortcuts dropdown container
	quickLogin: function(){//Start quickLogin
		
		//Get elements
		var quickLoginForm  = $('form_quick_login');
		var quickLogin      = $('quickLogin');
		
		//Check for quick login form
		if((quickLoginForm) && (quickLogin)){//Start cehck login form
			
			//Create new slide fx
			var loginSlide = new Fx.Slide(quickLoginForm,{transition:Fx.Transitions.Quart.easeOut});
			
			loginSlide.hide();
			
			//Create new button link
			var loginToggle = new Element('a',{
				'id':'loginToggle',
				'class':'linkButton',
				'html':'<span>Login</span>'
			});
			
			loginToggle.inject(quickLogin,'after');
			
			loginToggle.addEvent('click',function(){
				loginSlide.slideIn();
				loginToggle.destroy();
			});
			
		}//End check login form
		
	},//End quickLogin


	
/* ----------------------------------------------------------------------------------------------- waitDialog function */
	
	//Display the please wait dialog
	waitDialog: function(triggers,message){
		
		//Stick message in paragraph
		var dialogMessage = new Element('p',{'html':message});
		
		//Create confirmation dialog
		var waitModal = new modalBox({'closeOnClick':false,'closeButton':false,'content':dialogMessage,'width':'100'});
		
		triggers.each(function(el){
			el.addEvent('click',function(e){	
				waitModal.show();		   
			});					 
		});
	},
	
	

/* ----------------------------------------------------------------------------------------------- confirmDialog function */
	
	//Display a dialog confirming the user's choice
	confirmDialog: function(triggers,message){

		//Create confirmation dialog
		var confirmDialog = new confirmationDialog(message,{});
		
		triggers.each(function(el){
			el.addEvent('click',function(e){
				
				e.stop();
				
				confirmDialog.setOptions({
					'onConfirm':function(){ 
						//Continue to original link
						window.location = el.getProperty('href');
					},
					'onDeny':function(){ 
						confirmDialog.hide();
					}
				});
				
				confirmDialog.show();		   
			});					 
		});
		
	},//End confirmDialog
	
	//Create custom map icon
	customMapIcon: function(){//Start custom map icon
			
			//Create custom marker icon
			var icon              = new GIcon();
			icon.image            = "http://www.freestylebmx.com.au/_themes/default/images/icon_map_cog.png";
			icon.shadow           = "http://www.freestylebmx.com.au/_themes/default/images/icon_map_cog_shadow.png";
			icon.iconSize         = new GSize(30.0, 46.0);
			icon.shadowSize       = new GSize(54.0, 46.0);
			icon.iconAnchor       = new GPoint(15.0, 46.0);
			icon.infoWindowAnchor = new GPoint(15.0, 23.0);
	
			return icon;
			
	},
	
	//Admin riding spot map
	adminRidingSpotMap: function(container,target_lat,target_lon){//Start load admin riding spot map
		
		//Check container exists
		if(container && target_lat && target_lon && GBrowserIsCompatible()){//Start check container

			//Create new map
			var map = new GMap2(container,{draggableCursor: 'crosshair'});
			
			//Set center and zoom out to 4
			map.setCenter(new GLatLng(-28,133), 4);
			
			//Add controls
			map.addControl(new GLargeMapControl());
			map.addControl(new GMapTypeControl());
			
			//Get custom icon
			var icon = this.customMapIcon();
			
			//Set marker function
			function setMarker(point){//Start setMarker()
					
					//Clear existing markers
					map.clearOverlays();
					
					//Add new marker
					map.addOverlay(new GMarker(point,{icon:icon,draggable:true}));
					
					//Center map on marker point
					map.setCenter(new GLatLng(point.y,point.x));
					
			}//End setMarker()
			
			//Get existing lat and lon
			var ex_lat = target_lat.getProperty('value');
			var ex_lon = target_lon.getProperty('value');
			
			//Check for existing maker point
			if($chk(ex_lat) && $chk(ex_lon)){
				
				//Set point
				var point = new GLatLng(ex_lat,ex_lon);
				
				//Set marker
				setMarker(point);
				
			}
			
			//Set map click event
			GEvent.addListener(map, "click", function(marker, point){//Start click event
				
				//Check if marker exists
				if(!marker){//Start check for marker
					
					//Set marker
					setMarker(point);
					
					//Set target values to hidden form fields
					target_lat.set('value',point.y);
					target_lon.set('value',point.x);
					
				}//End check for marker
				
			});//End click event
		
		}//End check container
	
	},//End load admin riding spot map
	
	//Riding spots map
	ridingSpotsMap: function(container){//Start load riding spots map
		
		//Check container exists
		if(container && GBrowserIsCompatible()){//Start check container

			//Create new map
			var map = new GMap2(container);
			
			//Set center and zoom out to 4
			map.setCenter(new GLatLng(-28,133), 4);
			
			//Add controls
			map.addControl(new GLargeMapControl());
			map.addControl(new GMapTypeControl());
			
			//Get custom icon
			var icon = this.customMapIcon();
			
			function createMarker(point, name, link, description){
			  var marker = new GMarker(point, icon);
			  var html = '<b><a href="' + link + '">' + name + '</a></b><br />' + description;
			  GEvent.addListener(marker, 'click', function() {
				marker.openInfoWindowHtml(html);
			  });
			  return marker;
			}
			
			GDownloadUrl("http://www.freestylebmx.com.au/file/rss/riding_spots_markers", function(data) {
				var xml = GXml.parse(data);
				var markers = xml.documentElement.getElementsByTagName("marker");
				for (var i = 0; i < markers.length; i++) {
					var name = markers[i].getAttribute("name");
					var link = markers[i].getAttribute("link");
					var description = markers[i].getAttribute("description");
					var point = new GLatLng(parseFloat(markers[i].getAttribute("lat")),parseFloat(markers[i].getAttribute("lng")));
					var marker = createMarker(point, name,link,description);
					map.addOverlay(marker);
				}
			});
		
		}//End check container
	
	},//End load riding spots map
	
	//Riding spot map
	ridingSpotMap: function(container,latitude,longitude){//Start load riding spot map
		
		//Check container exists
		if(container && GBrowserIsCompatible()){//Start check container

			//Create new map
			var map = new GMap2(container);
			
			//Add controls
			map.addControl(new GSmallMapControl());
			map.addControl(new GMapTypeControl());
			
			//Get custom icon
			var icon = this.customMapIcon();
			
			//Set center and zoom in
			map.setCenter(new GLatLng(parseFloat(latitude),parseFloat(longitude)), 15);
			
			//Set point
			var point = new GLatLng(parseFloat(latitude),parseFloat(longitude));
			
			//Set marker
			var marker = new GMarker(point, icon);
			
			//Add overlay
			map.addOverlay(marker);
		
		}//End check container
	
	},//End load riding spot map
	
	/* ----------------------------------------------------------------------------------------------- initWysiwygs function */
	
	//Initialise wysiwyg editors
	initWysiwygs: function(textarea,type){
		
		//Get textarea id
		var textAreaId = textarea.get('id');
		
		//Switch editor type
		switch(type){
			
			//Advanced editor, full functionality
			/*case 'advanced':
				var editor = new tinymce.Editor(textAreaId, {
					
					theme:       'advanced',
					convert_urls: false,
					width:       '100%',

					//Include plugins
					plugins: 'safari,style,table,advimage,emotions,inlinepopups,preview,media,contextmenu,paste,fullscreen,noneditable,xhtmlxtras,codeprotect',
				
					//Theme options
					theme_advanced_buttons1:         'undo,redo,preview,fullscreen,cleanup,code,visualaid,|,pastetext,pasteword,|,removeformat',
					theme_advanced_buttons2:         'bold,italic,underline,strikethrough,sub,sup,|,justifyleft,justifycenter,justifyright,justifyfull,|,styleprops,forecolor,backcolor,styleselect,formatselect,fontsizeselect',
					theme_advanced_buttons3:         'link,unlink,image,bullist,numlist,outdent,indent,blockquote,tablecontrols,emotions,charmap,media',
					theme_advanced_blockformats :    'p,div,h1,h2,h3,h4,h5,h6,blockquote,dt,dd,code,samp',
					theme_advanced_toolbar_location: 'top',
					theme_advanced_toolbar_align:    'left',
				
					//Content CSS
					content_css: 'http://www.freestylebmx.com.au/_themes/default/css/wysiwyg_content.css',
					
					//Popup dialogs skin
					inlinepopups_skin: 'cs_cms',
					
					//Preview window size
					plugin_preview_width:  '745',
					plugin_preview_height: '350',

					//Custom cleanup
					cleanup_callback: this.wysiwyg_custom_cleanup,

					//Custom file browser
					file_browser_callback: this.wysiwyg_file_browser
					
				});
			break;*/
			
			//Default basic functionality
			default:
				var editor = new tinymce.Editor(textAreaId, {
												
					theme: 'advanced',
					convert_urls: false,
					width:       '100%',
					apply_source_formatting: 1,
					
					//Include plugins
					plugins: 'safari,preview,emotions,paste,preview,media,xhtmlxtras,inlinepopups',
					
					//Theme options
					theme_advanced_buttons1:         'undo,redo,preview,code,|,justifyleft,justifycenter,justifyright,justifyfull,|,formatselect,fontsizeselect,forecolor,removeformat',
					theme_advanced_buttons2:         'bold,italic,underline,bullist,numlist,link,unlink,image,emotions,media',
					theme_advanced_buttons3:         '',
					theme_advanced_blockformats :    'p,h1,h2,h3,h4,h5,h6,blockquote,dt,dd',
					theme_advanced_toolbar_location: 'top',
					theme_advanced_toolbar_align:    'left',
					
					//Content CSS
					content_css: 'http://www.freestylebmx.com.au/_themes/default/css/wysiwyg_content.css',
					
					//Popup dialogs skin
					inlinepopups_skin: 'cs_cms',
					
					//Preview window size
					plugin_preview_width:  '550',
					plugin_preview_height: '400'
					
				});
			break;
				
		}//End switch(type)
		
		//Display editor
		editor.render();
			
	},//End initWysiwygs
	
/* ----------------------------------------------------------------------------------------------- quoteButton function */

	//User shortcuts dropdown container
	quoteButton: function(){//Start quoteButton
		
		//Get quote buttons
		var quoteButtons  = $$('.quoteButton');
		
		//Check for quote buttons
		if(quoteButtons){//Start check quote buttons
			
			//Loop each button
			quoteButtons.each(function(el){
				
				//Get id number by removing quote_ from id
				var idNumber = el.get('id').substring(6);
				
				//Get matching post body
				var postBody = $('post_body_'+idNumber);
				
				//Check post body exists
				if(postBody){
					
					//Create new link
					var quoteButton = new Element('a',{
					'href':'#quickReply',
					'class':'linkButton',
					'html':'<span>Quote</span>'
					});
					
					//Empty
					el.set('text','');
					
					//Inject quote button
					quoteButton.inject(el);
					
					//On click event for quote button
					quoteButton.addEvent('click',function(){
	
						//If tinymce exists
						if(tinyMCE.get('forum_post_content')){								
							//Get existing content
							var exContent = tinyMCE.activeEditor.getContent();
							//Add to post body content
							var editorContent = exContent+'<blockquote>'+postBody.get('html')+'</blockquote><p>&nbsp;</p>';
							//Send to tinymce
							tinyMCE.activeEditor.setContent(editorContent);
						}
						
					});
				}
				
			});
			
		}//End check quote buttons
		
	},//End quoteButton	
	
	//Initialise functions
	init: function(){
		//User shortcuts drop down
		this.shortcutsDropdown();//Shortcuts list dropdown
		this.waitDialog($$('.waitModal'),'I\'m doin sumthin...');
		this.confirmDialog($$('.deleteLink'),'Are you sure you want to delete this?');
		this.ridingSpotsMap($('ridingSpotsMap'));
		this.quickLogin();
		this.quoteButton();
		
		//Basic wysiwyg editors
		$$('.teEditor').each(function(textarea){
			this.initWysiwygs(textarea,'basic');
		}.bind(this));
	}
	
};//End csFunctions


window.addEvent('domready', csFunctions.init.bind(csFunctions));


