/**
 * jQuery.timers - Timer abstractions for jQuery
 * Written by Blair Mitchelmore (blair DOT mitchelmore AT gmail DOT com)
 * Licensed under the WTFPL (http://sam.zoy.org/wtfpl/).
 * Date: 2009/10/16
 *
 * @author Blair Mitchelmore
 * @version 1.2
 *
 **/

jQuery.fn.extend({
	everyTime: function(interval, label, fn, times) {
		return this.each(function() {
			jQuery.timer.add(this, interval, label, fn, times);
		});
	},
	oneTime: function(interval, label, fn) {
		return this.each(function() {
			jQuery.timer.add(this, interval, label, fn, 1);
		});
	},
	stopTime: function(label, fn) {
		return this.each(function() {
			jQuery.timer.remove(this, label, fn);
		});
	}
});

jQuery.extend({
	timer: {
		global: [],
		guid: 1,
		dataKey: "jQuery.timer",
		regex: /^([0-9]+(?:\.[0-9]*)?)\s*(.*s)?$/,
		powers: {
			// Yeah this is major overkill...
			'ms': 1,
			'cs': 10,
			'ds': 100,
			's': 1000,
			'das': 10000,
			'hs': 100000,
			'ks': 1000000
		},
		timeParse: function(value) {
			if (value == undefined || value == null)
				return null;
			var result = this.regex.exec(jQuery.trim(value.toString()));
			if (result[2]) {
				var num = parseFloat(result[1]);
				var mult = this.powers[result[2]] || 1;
				return num * mult;
			} else {
				return value;
			}
		},
		add: function(element, interval, label, fn, times) {
			var counter = 0;
			
			if (jQuery.isFunction(label)) {
				if (!times) 
					times = fn;
				fn = label;
				label = interval;
			}
			
			interval = jQuery.timer.timeParse(interval);

			if (typeof interval != 'number' || isNaN(interval) || interval < 0)
				return;

			if (typeof times != 'number' || isNaN(times) || times < 0) 
				times = 0;
			
			times = times || 0;
			
			var timers = jQuery.data(element, this.dataKey) || jQuery.data(element, this.dataKey, {});
			
			if (!timers[label])
				timers[label] = {};
			
			fn.timerID = fn.timerID || this.guid++;
			
			var handler = function() {
				if ((++counter > times && times !== 0) || fn.call(element, counter) === false)
					jQuery.timer.remove(element, label, fn);
			};
			
			handler.timerID = fn.timerID;
			
			if (!timers[label][fn.timerID])
				timers[label][fn.timerID] = window.setInterval(handler,interval);
			
			this.global.push( element );
			
		},
		remove: function(element, label, fn) {
			var timers = jQuery.data(element, this.dataKey), ret;
			
			if ( timers ) {
				
				if (!label) {
					for ( label in timers )
						this.remove(element, label, fn);
				} else if ( timers[label] ) {
					if ( fn ) {
						if ( fn.timerID ) {
							window.clearInterval(timers[label][fn.timerID]);
							delete timers[label][fn.timerID];
						}
					} else {
						for ( var fn in timers[label] ) {
							window.clearInterval(timers[label][fn]);
							delete timers[label][fn];
						}
					}
					
					for ( ret in timers[label] ) break;
					if ( !ret ) {
						ret = null;
						delete timers[label];
					}
				}
				
				for ( ret in timers ) break;
				if ( !ret ) 
					jQuery.removeData(element, this.dataKey);
			}
		}
	}
});

jQuery(window).bind("unload", function() {
	jQuery.each(jQuery.timer.global, function(index, item) {
		jQuery.timer.remove(item);
	});
});
//end timers

$(document).ready(function(){
   this.defaults = {
     scroller: {
       interval:  0,    // Dont touch !
       refresh:   5,  // Refresh Time in ms
       direction: "left", // down,right,left,up
       speed:     1,    // Set the Scroller Speed
       id:        "#ticker",
       cont_id:   "#tickerContainer"
     }
   }
	var jscroller_config=$.extend(this.defaults),jscroller_scroller=$(jscroller_config.scroller.id),jscroller_scroller_cont=$(jscroller_config.scroller.cont_id);if(jscroller_scroller&&jscroller_scroller_cont){jscroller_scroller.css({position:'absolute',left:0,top:0});jscroller_init()}function jscroller_startScroll(){if(!jscroller_config.scroller.interval){jscroller_config.scroller.interval=window.setInterval(jscroller_doScroll,jscroller_config.scroller.refresh)}}function jscroller_stopScroll(){if(jscroller_config.scroller.interval){window.clearInterval(jscroller_config.scroller.interval);jscroller_config.scroller.interval=0}}function jscroller_init(){$("#scroller a").click(function(){window.open(this.href);return false});jscroller_scroller_cont.css('overflow','hidden');if(!jscroller_config.scroller.interval){if(window.attachEvent){window.attachEvent("onfocus",jscroller_startScroll);window.attachEvent("onblur",jscroller_stopScroll);window.attachEvent("onresize",jscroller_startScroll);window.attachEvent("onscroll",jscroller_startScroll)}else if(window.addEventListener){window.addEventListener("focus",jscroller_startScroll,false);window.addEventListener("blur",jscroller_stopScroll,false);window.addEventListener("resize",jscroller_startScroll,false);window.addEventListener("scroll",jscroller_startScroll,false)}jscroller_startScroll();if($.browser.msie){window.focus()}}}function jscroller_getElem(Elem){return(typeof Elem=="string"&&document.getElementById)?document.getElementById(Elem):Elem}function jscroller_doScroll(){if(scroller_dom=jscroller_getElem(jscroller_scroller.attr("id"))){var p_top=Number((/[0-9-,.]+/.exec(jscroller_scroller.css('top'))||0)),p_left=Number((/[0-9-,.]+/.exec(jscroller_scroller.css('left'))||0)),min_height=jscroller_scroller_cont.height(),min_width=jscroller_scroller_cont.width(),speed=jscroller_config.scroller.speed,p_height=scroller_dom.offsetHeight,p_width=scroller_dom.offsetWidth,direction=jscroller_config.scroller.direction,jscroller=jscroller_scroller;switch(direction){case'up':if(p_top<=-1*p_height){p_top=min_height}jscroller.css('top',p_top-speed+'px');break;case'right':if(p_left>=min_width){p_left=-1*p_width}jscroller.css('left',p_left+speed+'px');break;case'left':if(p_left<=-1*p_width){p_left=min_width}jscroller.css('left',p_left-speed+'px');break;case'down':if(p_top>=min_height){p_top=-1*p_height}jscroller.css('top',p_top+speed+'px');break}}}	
});

$(function() {
	$('.spotlight').addClass('tickerOn');
	$('#siteTools .lastItem').before('<li><a href="#print" class="print">Print page</a></li>');
	$('.print').click(function(){window.print();});
	
	$('.newsList dt:gt(2),.newsList dd:gt(2)').hide()
	
	$('.newsList').before('<div id="controls"><a href="#na" class="prev" title="Previous"><span></span>Previous</a><a href="#na" class="pause" title="Pause"><span></span>Pause</a><a href="#na" class="next" title="Next"><span></span>Next</a></div>')
	
	function startTimer() {
		$('.newsList').everyTime(5000, 'test', function() {
			if ($('.newsList dt:eq(3):hidden').length){
				$('.newsList dt:lt(3), .newsList dd:lt(3)').hide();
				$('.newsList dt:gt(2),.newsList dd:gt(2)').fadeIn();
			}
			else{
				$('.newsList dt:gt(2), .newsList dd:gt(2)').hide();
				$('.newsList dt:lt(3), .newsList dd:lt(3)').fadeIn();
			}
		});
	};
	startTimer();
		
	$('.pause').click(function() {
		
		$(this).toggleClass('play');
		if ($(this).hasClass('play')) {
			$('.newsList').stopTime('test');
			$(this).html('<span></span>Play').attr('title', 'Play');
		}
		else{
			$(this).html('<span></span>Pause').attr('title', 'Pause');
			startTimer();
		}
		return false;
	});
	
	$('.prev, .next').click(function() {
		if ($('.newsList dt:eq(3):hidden').length){
			$('.newsList dt:lt(3), .newsList dd:lt(3)').hide();
			$('.newsList dt:gt(2),.newsList dd:gt(2)').fadeIn();
		}
		else{
			$('.newsList dt:gt(2), .newsList dd:gt(2)').hide();
			$('.newsList dt:lt(3), .newsList dd:lt(3)').fadeIn();
		
		}
		return false;
	});
	
});