/* ------------------------------------------
UCL
JQuery Plugins & Functions
Author: Nicolas Gallagher
Updated: 30 September 2009
------------------------------------------ */

/*
 * jQuery.ScrollTo - Easy element scrolling using jQuery.
 * Copyright (c) 2007-2009 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com
 * Dual licensed under MIT and GPL.
 * Date: 5/25/2009
 * @author Ariel Flesler
 * @version 1.4.2
 *
 * http://flesler.blogspot.com/2007/10/jqueryscrollto.html
 */
;(function(d){var k=d.scrollTo=function(a,i,e){d(window).scrollTo(a,i,e)};k.defaults={axis:'xy',duration:parseFloat(d.fn.jquery)>=1.3?0:1};k.window=function(a){return d(window)._scrollable()};d.fn._scrollable=function(){return this.map(function(){var a=this,i=!a.nodeName||d.inArray(a.nodeName.toLowerCase(),['iframe','#document','html','body'])!=-1;if(!i)return a;var e=(a.contentWindow||a).document||a.ownerDocument||a;return d.browser.safari||e.compatMode=='BackCompat'?e.body:e.documentElement})};d.fn.scrollTo=function(n,j,b){if(typeof j=='object'){b=j;j=0}if(typeof b=='function')b={onAfter:b};if(n=='max')n=9e9;b=d.extend({},k.defaults,b);j=j||b.speed||b.duration;b.queue=b.queue&&b.axis.length>1;if(b.queue)j/=2;b.offset=p(b.offset);b.over=p(b.over);return this._scrollable().each(function(){var q=this,r=d(q),f=n,s,g={},u=r.is('html,body');switch(typeof f){case'number':case'string':if(/^([+-]=)?\d+(\.\d+)?(px|%)?$/.test(f)){f=p(f);break}f=d(f,this);case'object':if(f.is||f.style)s=(f=d(f)).offset()}d.each(b.axis.split(''),function(a,i){var e=i=='x'?'Left':'Top',h=e.toLowerCase(),c='scroll'+e,l=q[c],m=k.max(q,i);if(s){g[c]=s[h]+(u?0:l-r.offset()[h]);if(b.margin){g[c]-=parseInt(f.css('margin'+e))||0;g[c]-=parseInt(f.css('border'+e+'Width'))||0}g[c]+=b.offset[h]||0;if(b.over[h])g[c]+=f[i=='x'?'width':'height']()*b.over[h]}else{var o=f[h];g[c]=o.slice&&o.slice(-1)=='%'?parseFloat(o)/100*m:o}if(/^\d+$/.test(g[c]))g[c]=g[c]<=0?0:Math.min(g[c],m);if(!a&&b.queue){if(l!=g[c])t(b.onAfterFirst);delete g[c]}});t(b.onAfter);function t(a){r.animate(g,j,b.easing,a&&function(){a.call(this,n,b)})}}).end()};k.max=function(a,i){var e=i=='x'?'Width':'Height',h='scroll'+e;if(!d(a).is('html,body'))return a[h]-d(a)[e.toLowerCase()]();var c='client'+e,l=a.ownerDocument.documentElement,m=a.ownerDocument.body;return Math.max(l[h],m[h])-Math.min(l[c],m[c])};function p(a){return typeof a=='object'?a:{top:a,left:a}}})(jQuery);

/*
 * jQuery.SerialScroll - Animated scrolling of series
 * Copyright (c) 2007-2009 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com
 * Dual licensed under MIT and GPL.
 * Date: 06/14/2009
 * @author Ariel Flesler
 * @version 1.2.2
 * http://flesler.blogspot.com/2008/02/jqueryserialscroll.html
 */
;(function(a){var b=a.serialScroll=function(c){return a(window).serialScroll(c)};b.defaults={duration:1e3,axis:"x",event:"click",start:0,step:1,lock:!0,cycle:!0,constant:!0};a.fn.serialScroll=function(c){return this.each(function(){var t=a.extend({},b.defaults,c),s=t.event,i=t.step,r=t.lazy,e=t.target?this:document,u=a(t.target||this,e),p=u[0],m=t.items,h=t.start,g=t.interval,k=t.navigation,l;if(!r){m=d()}if(t.force){f({},h)}a(t.prev||[],e).bind(s,-i,q);a(t.next||[],e).bind(s,i,q);if(!p.ssbound){u.bind("prev.serialScroll",-i,q).bind("next.serialScroll",i,q).bind("goto.serialScroll",f)}if(g){u.bind("start.serialScroll",function(v){if(!g){o();g=!0;n()}}).bind("stop.serialScroll",function(){o();g=!1})}u.bind("notify.serialScroll",function(x,w){var v=j(w);if(v>-1){h=v}});p.ssbound=!0;if(t.jump){(r?u:d()).bind(s,function(v){f(v,j(v.target))})}if(k){k=a(k,e).bind(s,function(v){v.data=Math.round(d().length/k.length)*k.index(this);f(v,this)})}function q(v){v.data+=h;f(v,this)}function f(B,z){if(!isNaN(z)){B.data=z;z=p}var C=B.data,v,D=B.type,A=t.exclude?d().slice(0,-t.exclude):d(),y=A.length,w=A[C],x=t.duration;if(D){B.preventDefault()}if(g){o();l=setTimeout(n,t.interval)}if(!w){v=C<0?0:y-1;if(h!=v){C=v}else{if(!t.cycle){return}else{C=y-v-1}}w=A[C]}if(!w||t.lock&&u.is(":animated")||D&&t.onBefore&&t.onBefore(B,w,u,d(),C)===!1){return}if(t.stop){u.queue("fx",[]).stop()}if(t.constant){x=Math.abs(x/i*(h-C))}u.scrollTo(w,x,t).trigger("notify.serialScroll",[C])}function n(){u.trigger("next.serialScroll")}function o(){clearTimeout(l)}function d(){return a(m,p)}function j(w){if(!isNaN(w)){return w}var x=d(),v;while((v=x.index(w))==-1&&w!=p){w=w.parentNode}return v}})}})(jQuery);

/*
News ticker plugin (BBC news style)
Bryan Gullan,2007-2009
version 1.2.2
updated 2009-02-15
http://www.makemineatriple.com/jquery
Use and distrubute freely with this header
*/
(function($){var myTimeout, mySettings;function runTicker(settings){mySettings=settings;if(settings.firstRun==1){currentLength=settings.currentLength;currentItem=settings.currentItem;settings.firstRun=0;}if(currentItem==settings.newsItemCounter+1){currentItem=0;}if(currentLength==0){if(settings.newsLinks[currentItem].length>0){$(settings.newsList).empty().append('<li><a href="'+ settings.newsLinks[currentItem] +'"></a></li>');}else{$(settings.newsList).empty().append('<li></li>');}}if(currentLength % 2==0){placeHolder=settings.placeHolder1;}else{placeHolder=settings.placeHolder2;}if( currentLength <= settings.newsItems[currentItem].length + 1) {var tickerText = settings.newsItems[currentItem].substring(0,currentLength);if(settings.newsLinks[currentItem].length>0){$(settings.newsList+' li a').text(tickerText+placeHolder);}else{$(settings.newsList+' li').text(tickerText+placeHolder);}currentLength ++;myTimeout=setTimeout(function(){runTicker(settings);settings=null;},settings.tickerRate);}else{if(settings.newsLinks[currentItem].length>0){$(settings.newsList+' li a').text(settings.newsItems[currentItem]);}else{$(settings.newsList+' li').text(settings.newsItems[currentItem]);}currentLength=0;currentItem ++;myTimeout=setTimeout(function(){runTicker(settings); settings = null;},settings.loopDelay);}};function stopTicker(){clearTimeout(myTimeout);};function restartTicker(){myTimeout=setTimeout(function(){runTicker(mySettings);mySettings=null;},mySettings.startDelay);};$.fn.extend({newsTicker:function(settings){settings=jQuery.extend({newsList:"#news",tickerRate:100,startDelay:100,loopDelay:3000,placeHolder1:" |",placeHolder2:"_"},settings);var newsItems=new Array();var newsLinks=new Array();var newsItemCounter=0;$(settings.newsList + ' li').hide();$(settings.newsList + ' li').each(function(){if($(this).children('a').length){newsItems[newsItemCounter]=$(this).children('a').text();newsLinks[newsItemCounter]=$(this).children('a').attr('href');}else {newsItems[newsItemCounter]=$(this).text();newsLinks[newsItemCounter]='';}newsItemCounter ++;});settings=jQuery.extend(settings,{newsItems:newsItems,newsLinks:newsLinks,newsItemCounter:newsItemCounter-1,currentItem:0,currentLength:0,firstRun:1});myTimeout=setTimeout(function(){runTicker(settings);settings=null;},settings.startDelay);$('.start-stop').toggle(function(){stopTicker();$(this).addClass('stopped');},function(){restartTicker();$(this).removeClass('stopped');})}});})(jQuery);


/* --------- DOM READY --------- */
jQuery(document).ready(function() {

	// create the necessary elements for the js-enhanced news article listing
	$('#articles')
		.wrapInner('<div class="js-articles" />')
		.before('<a class="prev" href="#">Previous</a><a class="next" href="#">Next</a>')
	;
	// settings for the js-enhanced news article listing
	$('#news').serialScroll({
			target:'#articles',
			items:'.article', // Selector to the items ( relative to the matched elements, '#sections' in this case )
			prev:'.prev', // Selector to the 'prev' button (absolute!, meaning it's relative to the document)
			next:'.next', // Selector to the 'next' button (absolute too)
			axis:'x', // The default is 'y' scroll on both ways
			duration:700, // Length of the animation (if you scroll 2 axes and use queue, then each axis take half this time)
			force:true // Force a scroll to the element specified by 'start' (some browsers don't reset on refreshes)
	});

	// settings for the newsticker
	$('#news-ticker').wrap('<div id="news-ticker-wrap" />');
	$('#news-ticker').after('<a class="start-stop" href="#non">Pause<span></span></a>')

	var options = {
  		newsList: "#news-ticker",
		tickerRate: 40,
 		startDelay: 10,
 		placeHolder1: " _",
 		placeHolder2: " _"
	}
	$().newsTicker(options);

});