/*From Blocks kit 1.3 by rapidweaver.org, works with mootools 1.2*/
var Page=new Class({
initialize: function(){
document.idUpTo=0;
this.findMenu();//done
this.findSubmenu();//done
this.findInfobox();//done
},
findSubmenu: function(){
var submenuList=$$('.rb_submenu');
this.submenus=[];
for (i=0;i < submenuList.length;i++)
{
this.submenus[i]=new submenu(submenuList[i]);
}},
findInfobox: function(){
var infoboxList=$$('.db_infoboxWrapper');
this.infoboxs=[];
for (i=0;i < infoboxList.length;i++)
{
this.infoboxs[i]=new infoboxControl(infoboxList[i]);
}},
findMenu: function(){
var menuList=$$('.navcontainer');
this.menus=[];
for (i=0;i < menuList.length;i++)
{
this.menus[i]=new menu(menuList[i]);
}}});
var siteBlock=new Class({
initialize: function(wrapper){
this.wrapper=wrapper;
},
/*looks inside wrapper for value like this,  <INPUT TYPE=HIDDEN NAME="effect" class="effect" value="8">
extracts it, or returns the default if not found*/
extractValue: function(lookFor, theDefault){
var value=theDefault;
var found=this.wrapper.getElement(lookFor);
if(found){
var v=found.getProperty('value');
if((v!="")&& (v.search('<blocks')==-1)&& (v.search('%id=')==-1)){
value=found.getProperty('value');
}}
return value;
},
findLinkInLi: function(object){
var a=object.getElement('a');
var b=a.getElement('a');
if(b!=null){a=b};
return a;
},
getSpanStyle: function(){
var span=this.wrapper.getElements('span');
if(span.length > 0){
span=span[0];
var style='font-size:'+span.getStyle('font-size')+';';
style+='font-family:'+span.getStyle('font-family')+';';
style+='color:'+span.getStyle('color')+';';
style+='font-weight:'+span.getStyle('font-weight')+';';
return style;
}},
/*gets id and if there is no id, it creates one*/
getId: function(object){
var id=object.getProperty('id');
if(id==null){
id='blockkit_'+document.idUpTo;
object.setProperty('id', id);
document.idUpTo=document.idUpTo+1;
}
return id;
}});
var submenu=new Class({
Extends: siteBlock, 
initialize: function(wrapper){
this.parent(wrapper);
this.extract();
this.addColour();
this.wrapCurrent();
this.setupArrow();
},
extract: function(){
this.linkHoverColour=this.extractValue('.linkColourHover', "red");
this.padding=this.extractValue('.padding', 0);
this.padding=parseFloat(this.padding);
var current=this.wrapper.getElements('a[id=current]');
this.currentLi=current[0].getParent();//use in setupArrow
this.currentUl=this.currentLi.getParent();
this.wrapperPos=this.wrapper.getCoordinates();
this.style=this.getSpanStyle();
},
addColour: function(){
var p=this.wrapper.getParent().getParent().getParent();
var superId=this.getId(p);
var cssToAdd="#"+superId+" .rb_submenu a{"+this.style+"}";
addCss(cssToAdd);
},
wrapCurrent: function(){
var grandParents=this.wrapper.getElements('a.currentAncestor');
for (j=0;j < grandParents.length;j++)
{
var grandParentsLi=grandParents[j].getParent();
grandParentsLi.addClass("grandParent");
}
this.currentUl.addClass("currentParent");
},
setupArrow: function(){
var arrow=this.wrapper.getFirst('.arrowOnTheMove');
this.startPos=this.findPos(this.currentLi);
arrow.setStyle('top', this.startPos);
this.arrowfxs=new Fx.Morph(arrow,{duration: 600, wait: false,  transition: Fx.Transitions.Sine.easeOut});
var subLi=this.currentUl.getElements('li');
for (j=0;j < subLi.length;j++)
{
this.rollOver(subLi[j]);
}},
findPos: function(li){
var liPos=li.getCoordinates();
return liPos.top - this.wrapperPos.top - 10+liPos.height/2+this.padding;
},
rollOver: function(object){
var a=this.findLinkInLi(object);
var varLinkHoverColour=this.linkHoverColour;
var s=this.style;
var varArrowfxs=this.arrowfxs;
var varStartPos=this.startPos;
var thisPos=this.findPos(object);
a.set('style', s);
object.addEvent('mouseenter', function(){
a.setStyle('color', varLinkHoverColour);
varArrowfxs.start({'top': thisPos});
});
object.addEvent('mouseleave', function(){
a.set('style', s);
varArrowfxs.start({'top': varStartPos});
});
}});
var infoboxControl=new Class ({
initialize: function(wrapper){
var instance=new infobox(wrapper);
wrapper.addEvent('mouseenter', function(){instance.rollOver();});
wrapper.addEvent('mouseleave', function(){instance.rollOut()});
wrapper.addEvent('click', function(){instance.click()});
}});
var infobox=new Class({
Extends: siteBlock, 
initialize: function(wrapper){
this.parent(wrapper);
this.extract();
this.addColour();
},
extract: function(){
this.parent=this.wrapper.getParent();
this.heading=this.wrapper.getFirst('.rbheading');
this.link=this.heading.getElements('span');
this.content=this.wrapper.getFirst('.db_infoboxContent');//getElement('.db_infoboxContent');
this.linkStyle=this.getSpanStyle();
this.linkHoverColour=this.extractValue('.linkColourHover', 'black');
this.needClick=this.extractValue('.needClick', '0');
this.effect=new Fx.Morph(this.content,{duration: 400, wait: false, transition: Fx.Transitions.Sine.easeOut});
this.marginTop=20;
this.padding=0;
if(this.parent.getProperty('class')=='db_css'){this.marginTop=0;this.padding=10;}},
addColour: function(){
this.content.setStyle('display', 'block');
this.contentSize=this.content.scrollHeight;
this.content.setStyle('display', 'none');
this.content.setStyle('height', 0);
this.openAction(0, 0, 0);
},
rollOver: function(){
this.link.setStyle('color', this.linkHoverColour);
this.heading.setStyle('color', this.linkHoverColour);
if(this.needClick=="0"){this.open();}},
rollOut: function(){
this.link.set('style', this.linkStyle);
this.heading.setStyle('color', '');
if(this.needClick=="0"){this.close();}},
click: function(){
if(this.needClick=="1"){
if(this.isOpen){this.close();
} else{this.open();}}},
open: function(){
this.heading.addClass('hover');
this.content.setStyle('display', 'block');
this.openAction(this.contentSize, this.marginTop, this.padding);
this.isOpen=true;
},
close: function(){
this.heading.removeClass('hover');
this.openAction(0, 0, 0);
this.isOpen=false;
},
openAction: function(contentSize, marginTop, padding){
this.effect.start({
'height': contentSize,
'margin-top': marginTop,
'padding-top':padding,
'padding-bottom':padding
});
}});
var menu=new Class({
Extends: siteBlock, 
initialize: function(wrapper){
this.parent(wrapper);
this.getType();
this.extract();
this.addColour();
this.stacksOverflowFix();
this.addRollover();
this.addDropdown();
},
getType: function(){
this.parent=this.wrapper.getParent();
this.grandParent=this.parent.getParent();
var superClass=this.parent.getProperty('class');
if(superClass !="nav_css"){this.isRound=true;
} else{this.isRound=false;}},
extract: function(){
this.linkHoverColour=this.extractValue('.linkColourHover', 'red');
this.effectType=this.extractValue('.effect', '1');
this.effectSpeed=this.extractValue('.effectSpeed', '500');
this.effectSpeed=parseFloat(this.effectSpeed);
this.showSub=this.extractValue('.showSubMenu', '1');
this.showSplit=this.extractValue('.spliton', '1');
this.splitColour=this.extractValue('.splitBorder', "black");
if(!this.isRound){
this.linkBackground=this.extractValue('.linkColourBackground', "white");
this.linkBackgroundHover=this.extractValue('.linkColourBackgroundHover', "white");
this.linkColourBorder=this.extractValue('.linkColourBorder', "black");
this.linkColourBorderHover=this.extractValue('.linkColourBorderHover', "red");
this.popOutColour=this.extractValue('.popOutColour', "white");
}
this.superId=this.getId(this.grandParent);
this.style=this.getSpanStyle();
},
addColour: function(){
var cssToAdd="#"+this.superId+" .navcontainer a{visibility: visible;}";
cssToAdd+="#"+this.superId+" .navcontainer a{"+this.style+"}";
if(this.isRound){
if(this.showSplit=='1'){
cssToAdd+="#"+this.superId+" .navcontainer a{border-right: 1px solid "+this.splitColour+";}";
}} else{
cssToAdd+="#"+this.superId +" .nav_css .navcontainer a{background-color: "+this.linkBackground+";border-bottom-color: "+this.linkColourBorder+";}";
cssToAdd+="#"+this.superId +" .nav_css .navcontainer a:hover{background-color: "+this.linkBackgroundHover+";border-bottom-color: "+this.linkColourBorderHover+";}";
cssToAdd+="#"+this.superId +" .nav_css .navcontainer ul ul{background-color: "+this.popOutColour+"}";
cssToAdd+="#"+this.superId +" .nav_css .navcontainer ul ul a{background-color: "+this.popOutColour+"}";
}
addCss(cssToAdd);
},
stacksOverflowFix: function(){
var p=this.grandParent.getParents('.stacks_out');
if(p.length > 0){
p[0].setStyle('overflow', 'visible');
if((navigator.userAgent.toLowerCase().indexOf('msie 6')!=-1)|| (navigator.userAgent.toLowerCase().indexOf('msie 7')!=-1)){
p[0].setStyle('z-index', '3000');//for IE
}
if(!this.isRound){p[0].setStyle('height', '50px');}//bit sneaky.
}},
addRollover: function(){
var li=this.wrapper.getElements('li');
for (j=0;j < li.length;j++)
{
this.rolloverEffect(li[j]);
}},
rolloverEffect: function(object){
var a=this.findLinkInLi(object);
var hoverColour=this.linkHoverColour;
var s=this.style;
object.addEvent('mouseenter', function(){
a.setStyle('color', hoverColour);
});
object.addEvent('mouseleave', function(){
a.set('style', s);
});
},
addDropdown: function(){
if(this.showSub=='1'){
var mainUl=this.wrapper.getElements('ul');
mainUl=mainUl[0];
var menuHeading=mainUl.getChildren('li');
for (j=0;j < menuHeading.length;j++)
{
var menu=menuHeading[j].getElements('ul');
if(menu.length > 0){
this.dropdownSetup(menuHeading[j], menu[0], j);
}}}},
dropdownSetup: function(menuHeading, menu, j){
var extra=0;
var factor=1;
if(this.isRound){extra=40;factor=1.2;}
if(typeof(GLOBAL_extra)!='undefined'){extra=GLOBAL_extra;}
if(typeof(GLOBAL_factor)!='undefined'){factor=GLOBAL_factor;}
menu.setStyle('display', 'block');
var menuSize=menu.scrollHeight*factor+extra;
menu.setStyle('height', 0);
var subItems=menu.getChildren('li');
var idOfWrap='mySecondElement'+j+this.superId;
var mySecondElement=new Element('div',{id: idOfWrap, 'class':'menuWrap'});
mySecondElement.inject(menu, 'top');
mySecondElement.adopt(subItems);
cssToAdd="#"+this.superId+" .navcontainer #"+idOfWrap+"{height: "+(menuSize)+"px;}";
addCss(cssToAdd);
this.dropdownEffect(menuHeading, menu, menuSize);
},
dropdownEffect: function(menuHeading, menu, menuSize){
var menufxs=this.switchEffect(menu, this.effectType, this.effectSpeed);
menuHeading.addEvent('mouseenter', function(){
menufxs.start({
'height': menuSize
});
});
menuHeading.addEvent('mouseleave', function(){
menufxs.start({
'height': 0
});
});
},
switchEffect: function(object, effect, effectSpeed){
switch(effect){
case '1': var menufxs=new Fx.Morph(object,{duration: effectSpeed, wait: false,  transition: Fx.Transitions.linear});break;
case '2': var menufxs=new Fx.Morph(object,{duration: effectSpeed, wait: false,  transition: Fx.Transitions.Quad.easeOut});break;
case '3': var menufxs=new Fx.Morph(object,{duration: effectSpeed, wait: false,  transition: Fx.Transitions.Cubic.easeOut});break;
case '4': var menufxs=new Fx.Morph(object,{duration: effectSpeed, wait: false,  transition: Fx.Transitions.Quart.easeOut});break;
case '5': var menufxs=new Fx.Morph(object,{duration: effectSpeed, wait: false,  transition: Fx.Transitions.Quint.easeOut});break;
case '6': var menufxs=new Fx.Morph(object,{duration: effectSpeed, wait: false,  transition: Fx.Transitions.Sine.easeOut});break;
case '7': var menufxs=new Fx.Morph(object,{duration: effectSpeed, wait: false,  transition: Fx.Transitions.Expo.easeOut});break;
case '8': var menufxs=new Fx.Morph(object,{duration: effectSpeed, wait: false,  transition: Fx.Transitions.Elastic.easeOut});break;
case '9': var menufxs=new Fx.Morph(object,{duration: effectSpeed, wait: false,  transition: Fx.Transitions.Back.easeOut});break;
case '10': var menufxs=new Fx.Morph(object,{duration: effectSpeed, wait: false,  transition: Fx.Transitions.Bounce.easeOut});break;
default: var menufxs=new Fx.Morph(object,{duration: effectSpeed, wait: false,  transition: Fx.Transitions.linear});
}
return menufxs;
}});
window.addEvent('domready', function(){var newInstance=new Page();});
