
bbcjs.trace('<b style="color:Green">jst_ui.js was included.</b>',2);new function(){var dom=bbcjs.dom;var ui=bbcjs.ui={};ui.Fader=function(element,requireClass,from,to){bbcjs.trace("new bbcjs.ui.Fader(element, "+requireClass+", "+from+", "+to+");");var ancs,colours,found,classTo,classFrom;if(requireClass){ancs=dom.ancestors(element);ancs.unshift(element);ancs=bbcjs.filter(ancs,function(el){return el.className.indexOf("bbcjsfade")!=-1;});if(ancs.length==0)
element=null;else{element=ancs[0];colours=element.className.match(/bbcjsfade-?(\w{3,6})?-?(\w{3,6})?/);classFrom=colours[1]||null;classTo=colours[2]||null;}}
this.element=element;this.hexOrig=ui.Fader.getBackgroundColor(element);this.hexFrom=from?ui.Fader.getLongHex(from):classFrom?ui.Fader.getLongHex(classFrom):"#ffff00";this.hexTo=to?ui.Fader.getLongHex(to):classTo?ui.Fader.getLongHex(classTo):this.hexOrig;this.fps=30;this.duration=3000;this.timeouts=[];this.fadeable=true;this.id=ui.Fader.instances.length;ui.Fader.instances[this.id]=this;};ui.Fader.instances=[];bbcjs.extend(ui.Fader,{getLongHex:function(hex){if(hex.length<6){hex=hex.substr(0,1)+hex.substr(0,1)+
hex.substr(1,1)+hex.substr(1,1)+
hex.substr(2,1)+hex.substr(2,1);}
return"#"+hex;},rgbToHex:function(r,g,b){r=r.toString(16);if(r.length==1)r='0'+r;g=g.toString(16);if(g.length==1)g='0'+g;b=b.toString(16);if(b.length==1)b='0'+b;return"#"+r+g+b;},getBackgroundColor:function(element){var colors,color='#ffffff',bc='backgroundColor';var transRegex=/^transparent|rgba\(0, 0, 0, 0\)$/;var rgbRegex=/^rgb\s*\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*\)$/;if(!element)return color;colors=bbcjs.map(dom.ancestors(element),function(el){return dom.getStyle(el,bc);}).reverse();colors.push(dom.getStyle(element,bc));bbcjs.forEach(colors,function(c){bbcjs.trace(c+' =  '+transRegex.test(c));if(c!=undefined&&c!==''&&!transRegex.test(c))color=c;});bbcjs.trace(color);if(color.length==4)color=ui.Fader.getLongHex(color.substr(1));var rgb=color.match(rgbRegex);if(rgb)color=this.rgbToHex(parseInt(rgb[1]),parseInt(rgb[2]),parseInt(rgb[3]));return color;},checkFadeable:function(element){var fadeable=false;bbcjs.forEach(this.instances,function(fader){if(fader.element===element&&!fader.fadeable)fadeable=true;});return fadeable;},scheduleColorChange:function(fader,color,delay){fader.timeouts.push(setTimeout("bbcjs.dom.setStyle(bbcjs.ui.Fader.instances["+fader.id+"].element, { backgroundColor: '"+color+"'} )",delay));if(delay==this.duration)
fader.timeouts.push(setTimeout("bbcjs.ui.Fader.instances["+fader.id+"].cancel();",delay));}});ui.Fader.prototype={fade:function(){bbcjs.trace("bbcjs.ui.Fader.fade()",4);var frame=0;var frames=Math.round(this.fps*(this.duration/1000));var interval=this.duration/frames;var delay=interval;var rf=parseInt(this.hexFrom.substr(1,2),16);var gf=parseInt(this.hexFrom.substr(3,2),16);var bf=parseInt(this.hexFrom.substr(5,2),16);var rt=parseInt(this.hexTo.substr(1,2),16);var gt=parseInt(this.hexTo.substr(3,2),16);var bt=parseInt(this.hexTo.substr(5,2),16);var r,g,b,h;if(this.element){if(!this.fadeable)this.cancel();this.fadeable=false;while(frame<frames){r=Math.floor(rf*((frames-frame)/frames)+rt*(frame/frames));g=Math.floor(gf*((frames-frame)/frames)+gt*(frame/frames));b=Math.floor(bf*((frames-frame)/frames)+bt*(frame/frames));h=ui.Fader.rgbToHex(r,g,b);ui.Fader.scheduleColorChange(this,h,delay);frame++;delay=interval*frame;}
ui.Fader.scheduleColorChange(this,this.hexTo,this.duration);return true;}
else return false;},cancel:function(){bbcjs.trace("bbcjs.ui.Fader.cancel()",4);bbcjs.forEach(this.timeouts,function(t){clearTimeout(t);});this.timeouts=[];this.fadeable=true;},reset:function(color){bbcjs.trace("bbcjs.ui.Fader.reset()",4);if(!this.fadeable)this.cancel();dom.setStyle(this.element,{backgroundColor:color||this.hexOrig});}};ui.Scroller=function(id,width,height){bbcjs.trace('new bbcjs.ui.Scroller()',3);this.id=id;this.hold=dom.elem('DIV');this.box=dom.elem('DIV');this.layer=dom.elem('DIV');this.container=$(id);this.width=width;this.height=height;this.speed=100;this.interval=null;this.time=new Date().getTime();this.y=0;this.x=0;dom.setStyle(this.layer,{visibility:"hidden",position:"absolute",zIndex:"1",top:"0px",left:"0px"});dom.setStyle(this.hold,{position:"relative",overflow:"hidden",width:this.width+"px",height:this.height+"px",zIndex:"100"});dom.setStyle(this.box,{position:"absolute",left:"0px",right:"0px",width:this.width+"px",height:this.height+"px",overflow:"hidden",zIndex:"1",clip:"rect(0px, "+this.width+"px, "+this.height+"px, 0px)"});dom.parent(this.container).replaceChild(this.layer,this.container);dom.append(this.layer,this.container);dom.parent(this.layer).replaceChild(this.box,this.layer);dom.append(this.box,this.layer);dom.parent(this.box).replaceChild(this.hold,this.box);dom.append(this.hold,this.box);this.maxY=(this.layer.offsetHeight-this.box.offsetHeight>0)?this.layer.offsetHeight-this.box.offsetHeight:0;this.maxX=(this.container.offsetWidth-this.box.offsetWidth>0)?this.container.offsetWidth-this.box.offsetWidth:0;this.layer.style.visibility="visible";this.ready=true;ui.Scroller.instances[id]=this;};ui.Scroller.instances=[];ui.Scroller.prototype={right:function(speed){bbcjs.trace('bbcjs.ui.Scroller.scrollRight('+speed+')',4);var s=speed||this.speed;this.start(0,s);},left:function(speed){bbcjs.trace('bbcjs.ui.Scroller.scrollLeft('+speed+')',4);var s=speed||this.speed;this.start(180,s);},up:function(speed){bbcjs.trace('bbcjs.ui.Scroller.scrollUp('+speed+')',4);var s=speed||this.speed;this.start(90,s);},down:function(speed){bbcjs.trace('bbcjs.ui.Scroller.scrollDown('+speed+')',4);var s=speed||this.speed;this.start(270,s);},start:function(degree,speed){bbcjs.trace('bbcjs.ui.Scroller.scroll('+degree+','+speed+')',5);if(!this.ready)return;var angle,cosine,sine;var s=speed||this.speed;degree=degree%360;if(degree%90===0){cosine=(degree===0)?-1:(degree==180)?1:0;sine=(degree==90)?1:(degree==270)?-1:0;}
else{angle=degree*Math.PI/180;cosine=-Math.cos(angle);sine=Math.sin(angle);}
this.fx=cosine/(Math.abs(cosine)+Math.abs(sine));this.fy=sine/(Math.abs(cosine)+Math.abs(sine));this.endX=(degree==90||degree==270)?this.x:(degree<90||degree>270)?-this.maxX:0;this.endY=(degree===0||degree==180)?this.y:(degree<180)?0:-this.maxY;this.stop();bbcjs.trace('cosine = '+cosine,3);bbcjs.trace('sine = '+sine,3);this.updateTime();this.interval=setInterval("bbcjs.ui.Scroller.instances."+this.id+".take("+s+")",35);},stop:function(){bbcjs.trace('bbcjs.ui.Scroller.stop()',4);if(!this.ready)return;if(this.interval)clearInterval(this.interval);this.interval=null;},take:function(speed){bbcjs.trace('bbcjs.ui.Scroller.take('+speed+')',6);var elapsed=this.updateTime();var distance=elapsed/1000*speed;if(distance>0){var x=this.x+(this.fx*distance);var y=this.y+(this.fy*distance);if(this.fx===0||this.fy===0){if((this.fx==-1&&x>-this.maxX)||(this.fx==1&&x<0)||(this.fy==-1&&y>-this.maxY)||(this.fy==1&&y<0)){dom.setXY(this.layer,(this.x=x),(this.y=y));}
else{dom.setXY(this.layer,(this.x=x),(this.y=y));this.stop();}}
else{if((this.fx<0&&x>=-this.maxX&&this.fy<0&&y>=-this.maxY)||(this.fx>0&&x<=0&&this.fy>0&&y<=0)||(this.fx<0&&x>=-this.maxX&&this.fy>0&&y<=0)||(this.fx>0&&x<=0&&this.fy<0&&y>=-this.maxY)){dom.setXY(this.layer,(this.x=x),(this.y=y));}
else{this.stop();}}}},updateTime:function(){bbcjs.trace('bbcjs.ui.Scroller.updateTime()',6);var time=new Date().getTime();var elapsed=time-this.time;this.time=time;return elapsed;}};ui.LightBox=function(content,opts){this.content=content;this.opts=bbcjs.extend(new ui.LightBoxOptions(this),opts);this.current=null;this.eventId=null;this.selectHack=/*@cc_on @if (@_jscript_version < 7)!@end @*/false;this.elemIframe=dom.elem('iframe',{id:'bbcjsUiLightBoxIframe'});this.elemMask=dom.elem('span',{id:'bbcjsUiLightBoxMask'});this.elemOuter=dom.elem('div',{id:'bbcjsUiLightBoxOuter'});this.elemInner=dom.elem('div',{id:'bbcjsUiLightBoxInner'});this.id=ui.LightBox.instances.length;dom.attr(this.elemIframe,'frameborder','0');dom.append(this.elemOuter,this.elemInner);ui.LightBox.instances.push(this);};ui.LightBox.instances=[];ui.LightBox.prototype={open:function(num){bbcjs.trace('bbcjs.ui.LightBox.open()');var item=num||0;if(this.selectHack)dom.before(document.body.firstChild,this.elemIframe);dom.before(document.body.firstChild,this.elemOuter);dom.before(document.body.firstChild,this.elemMask);this.drawMask();this.eventId=dom.addEventListener(window,'resize',this.handleResize,this);this.show(item);return this;},close:function(){bbcjs.trace('bbcjs.ui.LightBox.close()');dom.removeEventListener(this.eventId);dom.remove(this.elemMask);dom.remove(this.elemOuter);if(this.selectHack)dom.remove(this.elemIframe);return this;},show:function(num){bbcjs.trace('bbcjs.ui.LightBox.show()');this.current=parseInt(num);dom.setStyle(this.elemOuter,{visibility:'hidden'});this.drawBox();this.addBoxHandlers();this.positionBox();dom.setStyle(this.elemOuter,{visibility:''});return this;},next:function(){this.show(this.current+1);return this.current;},previous:function(){this.show(this.current-1);return this.current},nextExists:function(){return(this.current<(this.content.length-1));},previousExists:function(){return(this.current>0);},handleResize:function(e){bbcjs.trace('bbcjs.ui.LightBox.handleResize()');this.drawMask();this.positionBox();return dom.stopEvent(e);},drawMask:function(){bbcjs.trace('bbcjs.ui.LightBox.drawMask()');var resetsize={'height':'0px','width':'0px'};var defaults={position:'absolute',display:'block',height:dom.pageHeight()+'px',width:dom.pageWidth()+'px',top:'0px',left:'0px'};if(this.selectHack){dom.setStyle(this.elemIframe,resetsize);dom.setStyle(this.elemIframe,defaults);dom.setOpacity(this.elemIframe,0);};dom.setStyle(this.elemMask,resetsize);dom.setStyle(this.elemMask,bbcjs.extend(defaults,{'backgroundColor':this.opts.maskColor}));dom.setOpacity(this.elemMask,this.opts.maskOpacity);},drawBox:function(){bbcjs.trace('bbcjs.ui.LightBox.drawBox()');this.elemInner.innerHTML=this.opts.template.supplant(this.content[this.current]);this.elemInner.style.width=(typeof(this.opts.width)=='function')?this.opts.width(this):this.opts.width;dom.setStyle(this.elemOuter,{borderColor:this.opts.borderColor,borderWidth:this.opts.borderWidth,borderStyle:this.opts.borderStyle,backgroundColor:this.opts.boxBackground,color:this.opts.boxColor});if($('bbcjsUiLightBoxClose')){dom.setStyle($('bbcjsUiLightBoxClose'),{color:this.opts.closeColor,backgroundColor:this.opts.closeBackground});}},positionBox:function(){bbcjs.trace('bbcjs.ui.LightBox.positionBox()');if(this.opts.left){var x=this.opts.left;}
else{var x=(((dom.windowWidth()-dom.getWidth(this.elemOuter))/2)+dom.scrollX());x=x<0?0:x;}
if(this.opts.top){var y=this.opts.top;}
else{var y=(((dom.windowHeight()-dom.getHeight(this.elemOuter))/2)+dom.scrollY());y=y<dom.scrollY()?dom.scrollY():y;}
dom.setX(this.elemOuter,x);dom.setY(this.elemOuter,y);},addBoxHandlers:function(){bbcjs.trace('bbcjs.ui.LightBox.addBoxHandlers()');var nextId='bbcjsUiLightBoxNext';var prevId='bbcjsUiLightBoxPrevious';var closeId='bbcjsUiLightBoxClose';var disabled='bbcjsUiLightBoxDisabled';var instance=ui.LightBox.instances[this.id];if($(closeId))
dom.addEventListener($(closeId),'click',instance.close,instance);if(!this.opts.showNav&&($(nextId)&&$(prevId))){bbcjs.forEach([$(nextId),$(prevId)],dom.hide)
return;}
if($(nextId)&&this.nextExists())
dom.addEventListener($(nextId),'click',instance.next,instance);else if($(nextId))
dom.addClassName($(nextId),disabled);if($(prevId)&&this.previousExists())
dom.addEventListener($(prevId),'click',instance.previous,instance);else if($(prevId))
dom.addClassName($(prevId),disabled);}};ui.LightBoxOptions=function(lightbox){this.maskColor='#000';this.maskOpacity=60;this.left=null;this.top=null;this.borderWidth=5;this.borderStyle='solid';this.borderColor='#999';this.closeColor='#fff';this.closeBackground='#999';this.boxBackground='#fff';this.boxColor='#000';this.showNav=lightbox.content.length>1?true:false;this.template='<div class="bbcjsUiLightBoxDefault">'+'<button id="bbcjsUiLightBoxClose" title="Return to main window">Close</button>'+'<img src="{src}" width="{width}" height="{height}" alt="{description}" />'+'<p>{description}</p>'+'<button id="bbcjsUiLightBoxPrevious">&lt;&lt; Back</button>'+'<button id="bbcjsUiLightBoxNext">Forward &gt;&gt;</button>'+'</div>';this.width=function(lb){var img=dom.descendents(lb.elemOuter,'img')[0];if(img&&img.width)return img.width;return dom.windowWidth()/2;};};}();document.write('<style type="text/css">@import \'/cs/jst/css/1/ui.css\';</style>');