//Public javascript functions


/*
	Slimbox v1.7 - 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 P=Math.max(0,y-(s/2)),N=0,O;if(a.offsetHeight!=s){N=i.start({height:s,top:P})}if(a.offsetWidth!=M){N=i.start({width:M,marginLeft:-M/2})}O=function(){H.setStyles({width:M,top:P+s,marginLeft:-M/2,visibility:"hidden",display:""});d.start(1)};if(N){i.chain(O)}else{O()}}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);

/*
Mootools Content Slider Class v2
Daniel Stout
http://stoutlabs.com
*/
var SL_Slider=new Class({Implements:[Options],numNav:new Array(),timer:null,isSliding:0,direction:1,options:{slideTimer:8000,orientation:"horizontal",fade:false,isPaused:false,transitionTime:1100,transitionType:"cubic:out",container:null,items:null,itemNum:0,numNavActive:false,numNavHolder:null,playBtn:null,prevBtn:null,nextBtn:null},initialize:function(b){var a=this;this.setOptions(b);a.options.container.setStyle("overflow","hidden");if(a.options.playBtn!=null){a.options.playBtn.set("text","pause");a.options.playBtn.addEvents({click:function(){a.pauseIt()},mouseenter:function(){this.setStyle("cursor","pointer")},mouseleave:function(){}})}if(a.options.prevBtn&&a.options.nextBtn){a.options.prevBtn.addEvents({click:function(){if(a.isSliding==0){if(a.options.isPaused==false){$clear(a.timer);a.timer=a.slideIt.periodical(a.options.slideTimer,a,null)}a.direction=0;a.slideIt()}},mouseenter:function(){this.setStyle("cursor","pointer")},mouseleave:function(){}});this.options.nextBtn.addEvents({click:function(){if(a.isSliding==0){if(a.options.isPaused==false){$clear(a.timer);a.timer=a.slideIt.periodical(a.options.slideTimer,a,null)}a.direction=1;a.slideIt()}},mouseenter:function(){this.setStyle("cursor","pointer")},mouseleave:function(){}})}a.options.items.each(function(e,d){e.setStyle("position","absolute");var c=e.getSize().y;var j=e.getSize().x;if(a.options.orientation=="vertical"){e.setStyle("top",(-1*c));e.setStyle("left",0)}else{if(a.options.orientation=="none"){e.setStyle("left",0);e.setStyle("top",0);e.set("opacity",0)}else{e.setStyle("left",(-1*j))}}if(a.options.numNavActive==true){var h=new Element("li",{id:"num"+d});var g=new Element("a",{"class":"numbtn",html:(d+1)});h.adopt(g);a.options.numNavHolder.adopt(h);a.numNav.push(g);g.set("morph",{duration:100,transition:Fx.Transitions.linear,link:"ignore"});g.addEvents({click:function(){a.numPress(d)},mouseenter:function(){this.setStyle("cursor","pointer")}});if(d==a.options.itemNum){var f=a.numNav[d];f.addClass("active")}}})},start:function(){var a=this;a.slideIt(a.options.itemNum);if(a.options.isPaused==false){a.timer=a.slideIt.periodical(a.options.slideTimer,a,null);if(a.options.playBtn){a.options.playBtn.set("text","pause")}}else{if(a.options.playBtn){a.options.playBtn.set("text","play")}}},slideIt:function(i){var j=this;var l=j.options.items[j.options.itemNum];if(j.options.numNavActive==true){var h=j.numNav[j.options.itemNum]}if(i!=null){if(j.options.itemNum!=i){if(j.options.itemNum>i){j.direction=0}else{j.direction=1}j.options.itemNum=i}}else{j.changeIndex()}var e=j.options.items[j.options.itemNum];if(j.direction==0){var c=j.options.container.getSize().x;var a=(-1*e.getSize().x);var b=j.options.container.getSize().y;var k=(-1*e.getSize().y)}else{var c=(-1*j.options.container.getSize().x);var a=e.getSize().x;var b=(-1*j.options.container.getSize().y);var k=e.getSize().y}if(j.options.numNavActive==true){var g=j.numNav[j.options.itemNum];g.addClass("active")}var f=new Fx.Morph(e,{duration:j.options.transitionTime,transition:j.options.transitionType,link:"ignore",onStart:function(){j.isSliding=1},onComplete:function(){j.isSliding=0}});if(j.options.orientation=="vertical"){if(j.options.fade==true){f.start({opacity:[0,1],top:[k,0]})}else{f.start({top:[k,0]})}}else{if(j.options.orientation=="none"){f.start({opacity:[0,1]})}else{if(j.options.fade==true){f.start({opacity:[0,1],left:[a,0]})}else{f.start({left:[a,0]})}}}if(l!=e){var d=new Fx.Morph(l,{duration:j.options.transitionTime,transition:j.options.transitionType,link:"ignore"});if(j.options.numNavActive==true){h.removeClass("active")}if(j.options.orientation=="vertical"){if(j.options.fade==true){d.start({opacity:[0],top:[(b)]})}else{d.start({top:[(b)]})}}else{if(j.options.orientation=="none"){d.start({opacity:[1,0]})}else{if(j.options.fade==true){d.start({opacity:[0],left:[(c)]})}else{d.start({left:[(c)]})}}}}},pauseIt:function(){var a=this;if(a.isSliding==0){if(a.options.isPaused==false){a.options.isPaused=true;$clear(a.timer);a.options.playBtn.set("text","play")}else{a.options.isPaused=false;a.slideIt();a.timer=a.slideIt.periodical(a.options.slideTimer,this,null);a.options.playBtn.set("text","pause")}}},changeIndex:function(){var a=this;var b=a.options.items.length;if(a.direction==1){if(a.options.itemNum<(b-1)){a.options.itemNum++}else{a.options.itemNum=0}}else{if(a.direction==0){if(a.options.itemNum>0){a.options.itemNum--}else{a.options.itemNum=(b-1)}}}},numPress:function(b){var a=this;if((a.isSliding==0)&&(a.options.itemNum!=b)){if(a.options.isPaused==false){$clear(a.timer);a.timer=a.slideIt.periodical(a.options.slideTimer,this,null)}a.slideIt(b)}}});

/*
  moopop: unobtrusive javascript popups via late binding using mootools 1.2
  
  copyright (c) 2007-2008 by gonchuki - http://blog.gonchuki.com
  
  version:	1.1
  released: June 23, 2008
  
  This work is licensed under a Creative Commons Attribution-Share Alike 3.0 License.
    http://creativecommons.org/licenses/by-sa/3.0/
*/

var moopop={width:0,height:0,captureByRel:function(attrVal,parent){this.capture((parent||document).getElements('a[rel*='+(attrVal||'popup')+']'));},capture:function(el,width,height){if($defined(width)&&$defined(height)){this.width=width;this.height=height;}
switch($type(el)){case'string':el=$$(el);case'element':case'array':$splat(el).each(this.add_pop_to,this);}
this.width=null;this.height=null;},add_pop_to:function(el){el.addEvent('click',function(e){e.stop();this.popup(el);}.bind(this));var size=el.get('rel').match(/\[(\d+),\s*(\d+)/)||['',this.width,this.height];var resizable=el.get('rel').match(/,(r)/)||[];if(size[1])el.store('popupprops','width='+size[1]+', height='+size[2]+(resizable[1]?', scrollbars=yes, resizable=yes':''));},popup:function(el){window.open(el.get('href'),el.get('name')||'',el.retrieve('popupprops')||'');}};window.addEvent('domready',function(){moopop.captureByRel('popup');});
																																																																																																																																					   
/**
 * menuMatic 
 * @version 0.68.3 (beta)
 * @author Jason J. Jaeger | greengeckodesign.com
 * @copyright 2008 Jason John Jaeger
 * @license MIT-style License
 *			Permission is hereby granted, free of charge, to any person obtaining a copy
 *			of this software and associated documentation files (the "Software"), to deal
 *			in the Software without restriction, including without limitation the rights
 *			to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 *			copies of the Software, and to permit persons to whom the Software is
 *			furnished to do so, subject to the following conditions:
 *	
 *			The above copyright notice and this permission notice shall be included in
 *			all copies or substantial portions of the Software.
 *	
 *			THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 *			IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 *			FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 *			AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 *			LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 *			OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 *			THE SOFTWARE.
 **/	
var MenuMatic=new Class({Implements:Options,options:{id:"nav",subMenusContainerId:"subMenusContainer",effect:"slide & fade",duration:600,physics:Fx.Transitions.Pow.easeOut,hideDelay:1000,stretchMainMenu:false,matchWidthMode:false,orientation:"horizontal",direction:{x:"right",y:"down"},tweakInitial:{x:0,y:0},tweakSubsequent:{x:0,y:0},center:false,opacity:95,mmbFocusedClassName:null,mmbClassName:null,killDivider:null,fixHasLayoutBug:false,onHideAllSubMenusNow_begin:(function(){}),onHideAllSubMenusNow_complete:(function(){}),onInit_begin:(function(){}),onInit_complete:(function(){})},hideAllMenusTimeout:null,allSubMenus:[],subMenuZindex:1,initialize:function(B){this.setOptions(B);this.options.onInit_begin();if(this.options.opacity>99){this.options.opacity=99.9}this.options.opacity=this.options.opacity/100;Element.implement({getId:function(){if(!this.id){var E=this.get("tag")+"-"+$time();while($(E)){E=this.get("tag")+"-"+$time()}this.id=E}return this.id}});this.options.direction.x=this.options.direction.x.toLowerCase();this.options.direction.y=this.options.direction.y.toLowerCase();if(this.options.direction.x==="right"){this.options.direction.xInverse="left"}else{if(this.options.direction.x==="left"){this.options.direction.xInverse="right"}}if(this.options.direction.y==="up"){this.options.direction.yInverse="down"}else{if(this.options.direction.y==="down"){this.options.direction.yInverse="up"}}var A=$(this.options.id).getElements("a");A.each(function(F,E){F.store("parentLinks",F.getParent().getParents("li").getFirst("a"));F.store("parentLinks",F.retrieve("parentLinks").erase(F.retrieve("parentLinks").getFirst()));F.store("childMenu",F.getNext("ul")||F.getNext("ol"));theSubMenuType="subsequent";if($(F.getParent("ul")||F.getParent("ol")).id===this.options.id){theSubMenuType="initial"}F.store("subMenuType",theSubMenuType);if(theSubMenuType==="initial"&&$(F.getNext("ul")||F.getNext("ol"))){F.addClass("mainMenuParentBtn")}else{if($(F.getNext("ul")||F.getNext("ol"))){F.addClass("subMenuParentBtn")}}}.bind(this));var D=new Element("div",{id:this.options.subMenusContainerId}).inject($(document.body),"bottom");$(this.options.id).getElements("ul, ol").each(function(F,E){new Element("div",{"class":"smOW"}).inject(D).grab(F)}.bind(this));D.getElements("a").set("tabindex","-1");A.each(function(G,E){if(!G.retrieve("childMenu")){return }G.store("childMenu",G.retrieve("childMenu").getParent("div"));this.allSubMenus.include(G.retrieve("childMenu"));G.store("parentSubMenus",G.retrieve("parentLinks").retrieve("childMenu"));var F=new MenuMaticSubMenu(this.options,this,G)}.bind(this));var C=$(this.options.id).getElements("a").filter(function(F,E){return !F.retrieve("childMenu")});C.each(function(F,E){F.addEvents({mouseenter:function(G){this.hideAllSubMenusNow();if(this.options.mmbClassName&&this.options.mmbFocusedClassName){$(F).retrieve("btnMorph",new Fx.Morph(F,{duration:(this.options.duration/2),transition:this.options.physics,link:"cancel"})).start(this.options.mmbFocusedClassName)}}.bind(this),focus:function(G){this.hideAllSubMenusNow();if(this.options.mmbClassName&&this.options.mmbFocusedClassName){$(F).retrieve("btnMorph",new Fx.Morph(F,{duration:(this.options.duration/2),transition:this.options.physics,link:"cancel"})).start(this.options.mmbFocusedClassName)}}.bind(this),mouseleave:function(G){if(this.options.mmbClassName&&this.options.mmbFocusedClassName){$(F).retrieve("btnMorph",new Fx.Morph(F,{duration:(this.options.duration*5),transition:this.options.physics,link:"cancel"})).start(this.options.mmbClassName)}}.bind(this),blur:function(G){if(this.options.mmbClassName&&this.options.mmbFocusedClassName){$(F).retrieve("btnMorph",new Fx.Morph(F,{duration:(this.options.duration*5),transition:this.options.physics,link:"cancel"})).start(this.options.mmbClassName)}}.bind(this),keydown:function(H){var G=new Event(H);if(H.key==="up"||H.key==="down"||H.key==="left"||H.key==="right"){H.stop()}if(H.key==="left"&&this.options.orientation==="horizontal"||H.key==="up"&&this.options.orientation==="vertical"){if(F.getParent("li").getPrevious("li")){F.getParent("li").getPrevious("li").getFirst("a").focus()}else{F.getParent("li").getParent().getLast("li").getFirst("a").focus()}}else{if(H.key==="right"&&this.options.orientation==="horizontal"||H.key==="down"&&this.options.orientation==="vertical"){if(F.getParent("li").getNext("li")){F.getParent("li").getNext("li").getFirst("a").focus()}else{F.getParent("li").getParent().getFirst("li").getFirst("a").focus()}}}}.bind(this)})},this);this.stretch();this.killDivider();this.center();this.fixHasLayoutBug();this.options.onInit_complete()},fixHasLayoutBug:function(){if(Browser.Engine.trident&&this.options.fixHasLayoutBug){$(this.options.id).getParents().setStyle("zoom",1);$(this.options.id).setStyle("zoom",1);$(this.options.id).getChildren().setStyle("zoom",1);$(this.options.subMenusContainerId).setStyle("zoom",1);$(this.options.subMenusContainerId).getChildren().setStyle("zoom",1)}},center:function(){if(!this.options.center){return }$(this.options.id).setStyles({left:"50%","margin-left":-($(this.options.id).getSize().x/2)})},stretch:function(){if(this.options.stretchMainMenu&&this.options.orientation==="horizontal"){var C=parseFloat($(this.options.id).getCoordinates().width);var D=0;var B=$(this.options.id).getElements("a");B.setStyles({"padding-left":0,"padding-right":0});B.each(function(F,E){D+=F.getSize().x}.bind(this));if(C<D){return }var A=(C-D)/B.length;B.each(function(F,E){F.setStyle("width",F.getSize().x+A)}.bind(this));B.getLast().setStyle("width",B.getLast().getSize().x-1)}},killDivider:function(){if(this.options.killDivider&&this.options.killDivider.toLowerCase()==="first"){$($(this.options.id).getElements("li")[0]).setStyles({background:"none"})}else{if(this.options.killDivider&&this.options.killDivider.toLowerCase()==="last"){$($(this.options.id).getElements("li").getLast()).setStyles({background:"none"})}}},hideAllSubMenusNow:function(){this.options.onHideAllSubMenusNow_begin();$clear(this.hideAllMenusTimeout);$$(this.allSubMenus).fireEvent("hide");this.options.onHideAllSubMenusNow_complete()}});var MenuMaticSubMenu=new Class({Implements:Options,Extends:MenuMatic,options:{onSubMenuInit_begin:(function(A){}),onSubMenuInit_complete:(function(A){}),onMatchWidth_begin:(function(A){}),onMatchWidth_complete:(function(A){}),onHideSubMenu_begin:(function(A){}),onHideSubMenu_complete:(function(A){}),onHideOtherSubMenus_begin:(function(A){}),onHideOtherSubMenus_complete:(function(A){}),onHideAllSubMenus_begin:(function(A){}),onHideAllSubMenus_complete:(function(A){}),onPositionSubMenu_begin:(function(A){}),onPositionSubMenu_complete:(function(A){}),onShowSubMenu_begin:(function(A){}),onShowSubMenu_complete:(function(A){})},root:null,btn:null,hidden:true,myEffect:null,initialize:function(B,A,C){this.setOptions(B);this.root=A;this.btn=C;this.childMenu=this.btn.retrieve("childMenu");this.subMenuType=this.btn.retrieve("subMenuType");this.childMenu=this.btn.retrieve("childMenu");this.parentSubMenus=$$(this.btn.retrieve("parentSubMenus"));this.parentLinks=$$(this.btn.retrieve("parentLinks"));this.parentSubMenu=$(this.parentSubMenus[0]);if(this.parentSubMenu){this.parentSubMenu=this.parentSubMenu.retrieve("class")}this.childMenu.store("class",this);this.btn.store("class",this);this.childMenu.store("status","closed");this.options.onSubMenuInit_begin(this);this.childMenu.addEvent("hide",function(){this.hideSubMenu()}.bind(this));this.childMenu.addEvent("show",function(){this.showSubMenu()}.bind(this));if(this.options.effect){this.myEffect=new Fx.Morph($(this.childMenu).getFirst(),{duration:this.options.duration,transition:this.options.physics,link:"cancel"})}if(this.options.effect==="slide"||this.options.effect==="slide & fade"){if(this.subMenuType=="initial"&&this.options.orientation==="horizontal"){this.childMenu.getFirst().setStyle("margin-top","0")}else{this.childMenu.getFirst().setStyle("margin-left","0")}}else{if(this.options.effect==="fade"||this.options.effect==="slide & fade"){this.childMenu.getFirst().setStyle("opacity",0)}}if(this.options.effect!="fade"&&this.options.effect!="slide & fade"){this.childMenu.getFirst().setStyle("opacity",this.options.opacity)}var D=$(this.childMenu).getElements("a").filter(function(F,E){return !F.retrieve("childMenu")});D.each(function(F,E){$(F).addClass("subMenuBtn");F.addEvents({mouseenter:function(G){this.childMenu.fireEvent("show");this.cancellHideAllSubMenus();this.hideOtherSubMenus()}.bind(this),focus:function(G){this.childMenu.fireEvent("show");this.cancellHideAllSubMenus();this.hideOtherSubMenus()}.bind(this),mouseleave:function(G){this.cancellHideAllSubMenus();this.hideAllSubMenus()}.bind(this),blur:function(G){this.cancellHideAllSubMenus();this.hideAllSubMenus()}.bind(this),keydown:function(H){var G=new Event(H);if(H.key==="up"||H.key==="down"||H.key==="left"||H.key==="right"||H.key==="tab"){H.stop()}if(H.key==="up"){if(F.getParent("li").getPrevious("li")){F.getParent("li").getPrevious("li").getFirst("a").focus()}else{if(this.options.direction.y==="down"){this.btn.focus()}else{if(this.options.direction.y==="up"){F.getParent("li").getParent().getLast("li").getFirst("a").focus()}}}}else{if(H.key==="down"){if(F.getParent("li").getNext("li")){F.getParent("li").getNext("li").getFirst("a").focus()}else{if(this.options.direction.y==="down"){F.getParent("li").getParent().getFirst("li").getFirst("a").focus()}else{if(this.options.direction.y==="up"){this.btn.focus()}}}}else{if(H.key===this.options.direction.xInverse){this.btn.focus()}}}}.bind(this)})},this);$(this.btn).removeClass("subMenuBtn");if(this.subMenuType=="initial"){this.btn.addClass("mainParentBtn")}else{this.btn.addClass("subParentBtn")}$(this.btn).addEvents({mouseenter:function(E){this.cancellHideAllSubMenus();this.hideOtherSubMenus();this.showSubMenu();if(this.subMenuType==="initial"&&this.options.mmbClassName&&this.options.mmbFocusedClassName){$(this.btn).retrieve("btnMorph",new Fx.Morph($(this.btn),{duration:(this.options.duration/2),transition:this.options.physics,link:"cancel"})).start(this.options.mmbFocusedClassName)}}.bind(this),focus:function(E){this.cancellHideAllSubMenus();this.hideOtherSubMenus();this.showSubMenu();if(this.subMenuType==="initial"&&this.options.mmbClassName&&this.options.mmbFocusedClassName){$(this.btn).retrieve("btnMorph",new Fx.Morph($(this.btn),{duration:(this.options.duration/2),transition:this.options.physics,link:"cancel"})).start(this.options.mmbFocusedClassName)}}.bind(this),mouseleave:function(E){this.cancellHideAllSubMenus();this.hideAllSubMenus()}.bind(this),blur:function(E){this.cancellHideAllSubMenus();this.hideAllSubMenus()}.bind(this),keydown:function(E){E=new Event(E);if(E.key==="up"||E.key==="down"||E.key==="left"||E.key==="right"){E.stop()}if(!this.parentSubMenu){if(this.options.orientation==="horizontal"&&E.key===this.options.direction.y||this.options.orientation==="vertical"&&E.key===this.options.direction.x){if(this.options.direction.y==="down"){this.childMenu.getFirst().getFirst("li").getFirst("a").focus()}else{if(this.options.direction.y==="up"){this.childMenu.getFirst().getLast("li").getFirst("a").focus()}}}else{if(this.options.orientation==="horizontal"&&E.key==="left"||this.options.orientation==="vertical"&&E.key===this.options.direction.yInverse){if(this.btn.getParent().getPrevious()){this.btn.getParent().getPrevious().getFirst().focus()}else{this.btn.getParent().getParent().getLast().getFirst().focus()}}else{if(this.options.orientation==="horizontal"&&E.key==="right"||this.options.orientation==="vertical"&&E.key===this.options.direction.y){if(this.btn.getParent().getNext()){this.btn.getParent().getNext().getFirst().focus()}else{this.btn.getParent().getParent().getFirst().getFirst().focus()}}}}}else{if(E.key==="tab"){E.stop()}if(E.key==="up"){if(this.btn.getParent("li").getPrevious("li")){this.btn.getParent("li").getPrevious("li").getFirst("a").focus()}else{if(this.options.direction.y==="down"){this.parentSubMenu.btn.focus()}else{if(this.options.direction.y==="up"){this.btn.getParent("li").getParent().getLast("li").getFirst("a").focus()}}}}else{if(E.key==="down"){if(this.btn.getParent("li").getNext("li")){this.btn.getParent("li").getNext("li").getFirst("a").focus()}else{if(this.options.direction.y==="down"){this.btn.getParent("li").getParent().getFirst("li").getFirst("a").focus()}else{if(this.options.direction.y==="up"){this.parentSubMenu.btn.focus()}}}}else{if(E.key===this.options.direction.xInverse){this.parentSubMenu.btn.focus()}else{if(E.key===this.options.direction.x){if(this.options.direction.y==="down"){this.childMenu.getFirst().getFirst("li").getFirst("a").focus()}else{if(this.options.direction.y==="up"){}}}}}}}}.bind(this)});this.options.onSubMenuInit_complete(this)},matchWidth:function(){if(this.widthMatched||!this.options.matchWidthMode||this.subMenuType==="subsequent"){return }this.options.onMatchWidth_begin(this);var A=this.btn.getCoordinates().width;$(this.childMenu).getElements("a").each(function(E,D){var C=parseFloat($(this.childMenu).getFirst().getStyle("border-left-width"))+parseFloat($(this.childMenu).getFirst().getStyle("border-right-width"));var B=parseFloat(E.getStyle("padding-left"))+parseFloat(E.getStyle("padding-right"));var F=C+B;if(A>E.getCoordinates().width){E.setStyle("width",A-F);E.setStyle("margin-right",-C)}}.bind(this));this.width=this.childMenu.getFirst().getCoordinates().width;this.widthMatched=true;this.options.onMatchWidth_complete(this)},hideSubMenu:function(){if(this.childMenu.retrieve("status")==="closed"){return }this.options.onHideSubMenu_begin(this);if(this.subMenuType=="initial"){if(this.options.mmbClassName&&this.options.mmbFocusedClassName){$(this.btn).retrieve("btnMorph",new Fx.Morph($(this.btn),{duration:(this.options.duration),transition:this.options.physics,link:"cancel"})).start(this.options.mmbClassName).chain(function(){$(this.btn).removeClass("mainMenuParentBtnFocused");$(this.btn).addClass("mainMenuParentBtn")}.bind(this))}else{$(this.btn).removeClass("mainMenuParentBtnFocused");$(this.btn).addClass("mainMenuParentBtn")}}else{$(this.btn).removeClass("subMenuParentBtnFocused");$(this.btn).addClass("subMenuParentBtn")}this.childMenu.setStyle("z-index",1);if(this.options.effect&&this.options.effect.toLowerCase()==="slide"){if(this.subMenuType=="initial"&&this.options.orientation==="horizontal"&&this.options.direction.y==="down"){this.myEffect.start({"margin-top":-this.height}).chain(function(){this.childMenu.style.display="none"}.bind(this))}else{if(this.subMenuType=="initial"&&this.options.orientation==="horizontal"&&this.options.direction.y==="up"){this.myEffect.start({"margin-top":this.height}).chain(function(){this.childMenu.style.display="none"}.bind(this))}else{if(this.options.direction.x==="right"){this.myEffect.start({"margin-left":-this.width}).chain(function(){this.childMenu.style.display="none"}.bind(this))}else{if(this.options.direction.x==="left"){this.myEffect.start({"margin-left":this.width}).chain(function(){this.childMenu.style.display="none"}.bind(this))}}}}}else{if(this.options.effect=="fade"){this.myEffect.start({opacity:0}).chain(function(){this.childMenu.style.display="none"}.bind(this))}else{if(this.options.effect=="slide & fade"){if(this.subMenuType=="initial"&&this.options.orientation==="horizontal"&&this.options.direction.y==="down"){this.myEffect.start({"margin-top":-this.height,opacity:0}).chain(function(){this.childMenu.style.display="none"}.bind(this))}else{if(this.subMenuType=="initial"&&this.options.orientation==="horizontal"&&this.options.direction.y==="up"){this.myEffect.start({"margin-top":this.height,opacity:0}).chain(function(){this.childMenu.style.display="none"}.bind(this))}else{if(this.options.direction.x==="right"){this.myEffect.start({"margin-left":-this.width,opacity:0}).chain(function(){this.childMenu.style.display="none"}.bind(this))}else{if(this.options.direction.x==="left"){this.myEffect.start({"margin-left":this.width,opacity:0}).chain(function(){this.childMenu.style.display="none"}.bind(this))}}}}}else{this.childMenu.style.display="none"}}}this.childMenu.store("status","closed");this.options.onHideSubMenu_complete(this)},hideOtherSubMenus:function(){this.options.onHideOtherSubMenus_begin(this);if(!this.btn.retrieve("otherSubMenus")){this.btn.store("otherSubMenus",$$(this.root.allSubMenus.filter(function(A){return !this.btn.retrieve("parentSubMenus").contains(A)&&A!=this.childMenu}.bind(this))))}this.parentSubMenus.fireEvent("show");this.btn.retrieve("otherSubMenus").fireEvent("hide");this.options.onHideOtherSubMenus_complete(this)},hideAllSubMenus:function(){this.options.onHideAllSubMenus_begin(this);$clear(this.root.hideAllMenusTimeout);this.root.hideAllMenusTimeout=(function(){$clear(this.hideAllMenusTimeout);$$(this.root.allSubMenus).fireEvent("hide")}).bind(this).delay(this.options.hideDelay);this.options.onHideAllSubMenus_complete(this)},cancellHideAllSubMenus:function(){$clear(this.root.hideAllMenusTimeout)},showSubMenu:function(A){if(this.childMenu.retrieve("status")==="open"){return }this.options.onShowSubMenu_begin(this);if(this.subMenuType=="initial"){$(this.btn).removeClass("mainMenuParentBtn");$(this.btn).addClass("mainMenuParentBtnFocused")}else{$(this.btn).removeClass("subMenuParentBtn");$(this.btn).addClass("subMenuParentBtnFocused")}this.root.subMenuZindex++;this.childMenu.setStyles({display:"block",visibility:"hidden","z-index":this.root.subMenuZindex});if(!this.width||!this.height){this.width=this.childMenu.getFirst().getCoordinates().width;this.height=this.childMenu.getFirst().getCoordinates().height;this.childMenu.setStyle("height",this.height,"border");if(this.options.effect==="slide"||this.options.effect==="slide & fade"){if(this.subMenuType=="initial"&&this.options.orientation==="horizontal"){this.childMenu.getFirst().setStyle("margin-top","0");if(this.options.direction.y==="down"){this.myEffect.set({"margin-top":-this.height})}else{if(this.options.direction.y==="up"){this.myEffect.set({"margin-top":this.height})}}}else{if(this.options.direction.x==="left"){this.myEffect.set({"margin-left":this.width})}else{this.myEffect.set({"margin-left":-this.width})}}}}this.matchWidth();this.positionSubMenu();if(this.options.effect==="slide"){this.childMenu.setStyles({display:"block",visibility:"visible"});if(this.subMenuType==="initial"&&this.options.orientation==="horizontal"){if(A){this.myEffect.set({"margin-top":0}).chain(function(){this.showSubMenuComplete()}.bind(this))}else{this.myEffect.start({"margin-top":0}).chain(function(){this.showSubMenuComplete()}.bind(this))}}else{if(A){this.myEffect.set({"margin-left":0}).chain(function(){this.showSubMenuComplete()}.bind(this))}else{this.myEffect.start({"margin-left":0}).chain(function(){this.showSubMenuComplete()}.bind(this))}}}else{if(this.options.effect==="fade"){if(A){this.myEffect.set({opacity:this.options.opacity}).chain(function(){this.showSubMenuComplete()}.bind(this))}else{this.myEffect.start({opacity:this.options.opacity}).chain(function(){this.showSubMenuComplete()}.bind(this))}}else{if(this.options.effect=="slide & fade"){this.childMenu.setStyles({display:"block",visibility:"visible"});this.childMenu.getFirst().setStyles({left:0});if(this.subMenuType==="initial"&&this.options.orientation==="horizontal"){if(A){this.myEffect.set({"margin-top":0,opacity:this.options.opacity}).chain(function(){this.showSubMenuComplete()}.bind(this))}else{this.myEffect.start({"margin-top":0,opacity:this.options.opacity}).chain(function(){this.showSubMenuComplete()}.bind(this))}}else{if(A){if(this.options.direction.x==="right"){this.myEffect.set({"margin-left":0,opacity:this.options.opacity}).chain(function(){this.showSubMenuComplete()}.bind(this))}else{if(this.options.direction.x==="left"){this.myEffect.set({"margin-left":0,opacity:this.options.opacity}).chain(function(){this.showSubMenuComplete()}.bind(this))}}}else{if(this.options.direction.x==="right"){this.myEffect.set({"margin-left":-this.width,opacity:this.options.opacity});this.myEffect.start({"margin-left":0,opacity:this.options.opacity}).chain(function(){this.showSubMenuComplete()}.bind(this))}else{if(this.options.direction.x==="left"){this.myEffect.start({"margin-left":0,opacity:this.options.opacity}).chain(function(){this.showSubMenuComplete()}.bind(this))}}}}}else{this.childMenu.setStyles({display:"block",visibility:"visible"}).chain(function(){this.showSubMenuComplete(this)}.bind(this))}}}this.childMenu.store("status","open")},showSubMenuComplete:function(){this.options.onShowSubMenu_complete(this)},positionSubMenu:function(){this.options.onPositionSubMenu_begin(this);this.childMenu.setStyle("width",this.width);this.childMenu.getFirst().setStyle("width",this.width);if(this.subMenuType==="subsequent"){if(this.parentSubMenu&&this.options.direction.x!=this.parentSubMenu.options.direction.x){if(this.parentSubMenu.options.direction.x==="left"&&this.options.effect&&this.options.effect.contains("slide")){this.myEffect.set({"margin-left":this.width})}}this.options.direction.x=this.parentSubMenu.options.direction.x;this.options.direction.xInverse=this.parentSubMenu.options.direction.xInverse;this.options.direction.y=this.parentSubMenu.options.direction.y;this.options.direction.yInverse=this.parentSubMenu.options.direction.yInverse}var C;var A;if(this.subMenuType=="initial"){if(this.options.direction.y==="up"){if(this.options.orientation==="vertical"){C=this.btn.getCoordinates().bottom-this.height+this.options.tweakInitial.y}else{C=this.btn.getCoordinates().top-this.height+this.options.tweakInitial.y}this.childMenu.style.top=C+"px"}else{if(this.options.orientation=="horizontal"){this.childMenu.style.top=this.btn.getCoordinates().bottom+this.options.tweakInitial.y+"px"}else{if(this.options.orientation=="vertical"){C=this.btn.getPosition().y+this.options.tweakInitial.y;if((C+this.childMenu.getSize().y)>=$(document.body).getScrollSize().y){A=(C+this.childMenu.getSize().y)-$(document.body).getScrollSize().y;C=C-A-20}this.childMenu.style.top=C+"px"}}}if(this.options.orientation=="horizontal"){this.childMenu.style.left=this.btn.getPosition().x+this.options.tweakInitial.x+"px"}else{if(this.options.direction.x=="left"){this.childMenu.style.left=this.btn.getPosition().x-this.childMenu.getCoordinates().width+this.options.tweakInitial.x+"px"}else{if(this.options.direction.x=="right"){this.childMenu.style.left=this.btn.getCoordinates().right+this.options.tweakInitial.x+"px"}}}}else{if(this.subMenuType=="subsequent"){if(this.options.direction.y==="down"){if((this.btn.getCoordinates().top+this.options.tweakSubsequent.y+this.childMenu.getSize().y)>=$(document.body).getScrollSize().y){A=(this.btn.getCoordinates().top+this.options.tweakSubsequent.y+this.childMenu.getSize().y)-$(document.body).getScrollSize().y;this.childMenu.style.top=(this.btn.getCoordinates().top+this.options.tweakSubsequent.y)-A-20+"px"}else{this.childMenu.style.top=this.btn.getCoordinates().top+this.options.tweakSubsequent.y+"px"}}else{if(this.options.direction.y==="up"){if((this.btn.getCoordinates().bottom-this.height+this.options.tweakSubsequent.y)<1){this.options.direction.y="down";this.options.direction.yInverse="up";this.childMenu.style.top=this.btn.getCoordinates().top+this.options.tweakSubsequent.y+"px"}else{this.childMenu.style.top=this.btn.getCoordinates().bottom-this.height+this.options.tweakSubsequent.y+"px"}}}if(this.options.direction.x=="left"){this.childMenu.style.left=this.btn.getCoordinates().left-this.childMenu.getCoordinates().width+this.options.tweakSubsequent.x+"px";if(this.childMenu.getPosition().x<0){this.options.direction.x="right";this.options.direction.xInverse="left";this.childMenu.style.left=this.btn.getPosition().x+this.btn.getCoordinates().width+this.options.tweakSubsequent.x+"px";if(this.options.effect==="slide"||this.options.effect==="slide & fade"){this.myEffect.set({"margin-left":-this.width,opacity:this.options.opacity})}}}else{if(this.options.direction.x=="right"){this.childMenu.style.left=this.btn.getCoordinates().right+this.options.tweakSubsequent.x+"px";var D=this.childMenu.getCoordinates().right;var B=document.getCoordinates().width+window.getScroll().x;if(D>B){this.options.direction.x="left";this.options.direction.xInverse="right";this.childMenu.style.left=this.btn.getCoordinates().left-this.childMenu.getCoordinates().width+this.options.tweakSubsequent.x+"px";if(this.options.effect==="slide"||this.options.effect==="slide & fade"){this.myEffect.set({"margin-left":this.width,opacity:this.options.opacity})}}}}}}this.options.onPositionSubMenu_complete(this)}});

/*
---
description: TabPane Class 

license: MIT-style

authors: akaIDIOT

version: 0.1

requires:
  core/1.2.4:
  - Class
  - Class.Extras 
  - Element 
  - Element.Event
  - Selectors
  more/1.2.4:
  - Element.Delegation

provides: TabPane
...
*/

/*var TabPane=new Class({Implements:[Events,Options],options:{tabSelector:'.tab',contentSelector:'.content',activeClass:'active'},container:null,showNow:false,initialize:function(container,options){this.setOptions(options);this.container=document.id(container);this.container.getElements(this.options.contentSelector).setStyle('display','none');this.container.addEvent('click:relay('+this.options.tabSelector+')',function(event,tab){this.showTab(this.container.getElements(this.options.tabSelector).indexOf(tab),tab);}.bind(this));this.container.getElement(this.options.tabSelector).addClass(this.options.activeClass);this.container.getElement(this.options.contentSelector).setStyle('display','block');},showTab:function(index,tab){var content=this.container.getElements(this.options.contentSelector)[index];if(!tab){tab=this.container.getElements(this.options.tabSelector)[index];}
if(content){this.container.getElements(this.options.tabSelector).removeClass(this.options.activeClass);this.container.getElements(this.options.contentSelector).setStyle('display','none');tab.addClass(this.options.activeClass);content.setStyle('display','block');this.fireEvent('change',index);}},closeTab:function(index){var tabs=this.container.getElements(this.options.tabSelector);var selected=tabs.indexOf(this.container.getElement('.'+this.options.activeClass));tabs[index].destroy();this.container.getElements(this.options.contentSelector)[index].destroy();this.fireEvent('close',index);this.showTab(index==tabs.length-1?selected-1:selected);}});
*/

/*
---
description: TabPane Class 

license: MIT-style

authors: akaIDIOT

version: 0.1

requires:
  core/1.2.4:
  - Class
  - Class.Extras 
  - Element 
  - Element.Event
  - Selectors
  more/1.2.4:
  - Element.Delegation

provides: TabPane
...
*/

var TabPane = new Class({
    
    Implements: [Events, Options],

    options: {
        tabSelector: '.tab',
        contentSelector: '.content',
        activeClass: 'active'
    },

    container: null,
    showNow: false,

    initialize: function(container, options) {
        this.setOptions(options);
		this.containerId = container.get('id');	
        this.container = document.id(container);
        this.container.getElements(this.options.contentSelector).setStyle('display', 'none');

        this.container.addEvent('click:relay(' + this.options.tabSelector + ')', function(event, tab) {
            this.showTab(this.container.getElements(this.options.tabSelector).indexOf(tab), tab);
        }.bind(this));

        this.container.getElement(this.options.tabSelector).addClass(this.options.activeClass);
        this.container.getElement(this.options.contentSelector).setStyle('display', 'block');
		
		//Get currently selected tab
		var currentTabIndex = parseInt(Cookie.read('currentTab'+this.containerId));
		
		//Set current tab
		if(currentTabIndex){
			this.showTab(currentTabIndex, '');	
		}
		
    },

    showTab: function(index, tab) {
        
		var content = this.container.getElements(this.options.contentSelector)[index];
        if (!tab) {
            tab = this.container.getElements(this.options.tabSelector)[index];
        }

        if (content) {
            this.container.getElements(this.options.tabSelector).removeClass(this.options.activeClass);
            this.container.getElements(this.options.contentSelector).setStyle('display', 'none');
            tab.addClass(this.options.activeClass);
            content.setStyle('display', 'block');
            this.fireEvent('change', index);
        }
		
		//Set current tab cookie
		Cookie.write('currentTab'+this.containerId,index,{duration: 1, path: "/"});
					
    },

    closeTab: function(index) {
        var tabs     = this.container.getElements(this.options.tabSelector);
        var selected = tabs.indexOf(this.container.getElement('.' + this.options.activeClass)); // is always equals to index 
        
        tabs[index].destroy();
        this.container.getElements(this.options.contentSelector)[index].destroy();
        this.fireEvent('close', index);

        // 'intelligently' selecting a tab is sadly not possible, the tab has already been switched before this method is called 
        this.showTab(index == tabs.length - 1 ? selected - 1 : selected);
    }

});

/* ----------------------------------------------------------------------------------------------- End third party classes */


/* ----------------------------------------------------------------------------------------------- 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:          '500px'
	},
	
	
	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).toInt()/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':'300px'});
	},
	
	
	//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

/* ----------------------------------------------------------------------------------------------- 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':'100px'});
		
		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

/* ----------------------------------------------------------------------------------------------- listingClick function */
	
	//Makes entire listing block hoverable and clickable
	listingClick: function(arr_listingBlocks){//Start listingClick
		
		if(arr_listingBlocks){//Start is listing blocks
			
			arr_listingBlocks.each(function(listingBlock,i){
				
				listingBlock.addEvents({
					'mouseenter':function(e){
						this.addClass('listingHover');
					},
					'mouseleave':function(e){
						this.removeClass('listingHover');
					},
					'click':function(e){
						//Go to link specified in the title
						window.location = this.getElement('.title a').get('href');
					}
					
				});		
											
			});
			
		}//End is listing blocks
		
	},//End listingClick

/* ----------------------------------------------------------------------------------------------- imageLoader function */

	//Fades in images once loaded
	imageLoader: function(arr_images){//Start imageLoader
    	
		if(arr_images){//Start if images
			
			//Loop images
			arr_images.each(function(image,index){//Start loop images
				
				//If not already laoded
				if(!image.complete){
					//Hide
					image.fade('hide');
					//Once loaded, fade in
					image.addEvent('load',function(e){
						this.fade('in');
					});
				}
								 
			});//End loop images
			
		}//End if images
		
	},//End imageLoader	

/* ----------------------------------------------------------------------------------------------- testimonialSlider function */
	
	//Turn testimonial list into slider
	testimonialSlider: function(container){
		
		//Check container exists
		if(container){//Start container exists
			
			//Get container id
			var containerId = container.get('id');
			
			//Get array of content blocks
			var contentBlocks = container.getElements('blockquote');
		
			//Check blocks exist
			if(contentBlocks){//Start blocks exists
				
				//Change id of container
				container.set('id',containerId+'_slider');
				
				//Create wrapper
				var wrapper = new Element('div',{'id':containerId+'_slideWrapper'}).wraps(container);
				
				//Create and insert prev next controls
				var prevBtn = new Element('div',{'class':'prevButton','title':'View previous','html':'<span>Previous</span>'}).inject(wrapper);
				var nextBtn = new Element('div',{'class':'nextButton','title':'View next','html':'<span>Next</span>'}).inject(wrapper);
	
				//Create slider instance       
				var newImageSlider = new SL_Slider({
					slideTimer: 20000,
					orientation: 'horizontal',
					fade: true,
					transitionTime: 1000,
					isPaused: false,
					container: container,
					items: contentBlocks,
					prevBtn: prevBtn,
					nextBtn: nextBtn
				});
				
				//Start slider
				newImageSlider.start();
				
			}//End blocks exists
			
		}//End container exists
		
	},//End testimonialSlider

/* ----------------------------------------------------------------------------------------------- featuredProjects function */
	
	//Turn slide lists into content sliders
	featuredProjects: function(){
		
		//Get container
		var container = $('featuredProjects');
		
		//Check container exist
		if(container){//Start containers exist
				
			//Get array of content blocks
			var contentBlocks = container.getElements('.featuredProjects');
		
			//Check blocks exist
			if(contentBlocks){//Start blocks exists
				
				//Change class of container
				container.set('class','listSlider');
				
				//Create wrapper
				var wrapper = new Element('div',{'class':'listSlideWrapper'}).wraps(container);
				
				//Create and insert prev next controls
				var prevBtn = new Element('div',{'class':'prevButton','title':'View previous','html':'<span>Previous</span>'}).inject(wrapper);
				var nextBtn = new Element('div',{'class':'nextButton','title':'View next','html':'<span>Next</span>'}).inject(wrapper);
	
				//Create slider instance       
				var containerSlider = new SL_Slider({
					orientation: 'none',
					slideTimer: 6000,
					fade: true,
					transitionTime: 1000,
					isPaused: false,
					container: container,
					items: contentBlocks,
					prevBtn: prevBtn,
					nextBtn: nextBtn
				});
				
				//Start slider
				containerSlider.start();
				
			}//End blocks exists
			
		}//End containers exist
		
	},//End featuredProjects
	
/* ----------------------------------------------------------------------------------------------- init function */
	
	//Initialise cs functions
	init: function(){
		
		this.waitDialog($$('.waitModal'),'Please wait...');
		this.confirmDialog($$('.linkDelete'),'Are you sure you want to delete this?');
		this.testimonialSlider($('testimonialWrapper'));
		this.featuredProjects();
		this.imageLoader($$('.imageLoad img'));
		
		if($('menu_id_1')){
			var primaryMenu = new MenuMatic({'id':'menu_id_1','opacity':'100','matchWidthMode':true});
		}
		
		if($('contactTabs')){
			var contactTabs = new TabPane($('contactTabs'));
		}
		
	}//End init
									 
};//End csFunctions


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