jQuery(document).ready(function($){

	var Engine = {
		// navigation scripts
		navigation : {
			// keyboard accessibility for IE6
			keyboardAccessibility : function(){
				if(!($.browser.msie && $.browser.version.substr(0,1) == '6')){
					$('#navigation a').focus(function(){
						$(this).css('text-decoration','underline');
						$(this).parents('ul').eq(0).addClass('over');
						$(this).parent('li').find('ul').eq(0).addClass('over');
					}).blur(function(){
						$(this).css('text-decoration','none');
						$(this).parents('ul').eq(0).removeClass('over');
						$(this).parent('li').find('ul').eq(0).removeClass('over');
					});
				}
			},
			// activate current item on hover
			sectionChange : function(time){
				Engine.navigation.sectionChangeTime = time;
				Engine.navigation.sectionChangeIt = function(){
					Engine.navigation.sectionChangeHovered.parent().find('> li').removeClass('current');
					Engine.navigation.sectionChangeHovered.addClass('current');
				}

				$('#navigation > ul > li:not(.spacer) > a').hover(function(){
					Engine.navigation.sectionChangeHovered = $(this).parent();
					if(time){
						clearTimeout(Engine.navigation.sectionChangeTimeout);
						Engine.navigation.sectionChangeTimeout = setTimeout(Engine.navigation.sectionChangeIt,Engine.navigation.sectionChangeTime);
					} else {
						Engine.navigation.sectionChangeIt();
					}
				},function(){
					if(time) clearTimeout(Engine.navigation.sectionChangeTimeout);
				});
			},
			// hover for IE6
			hoverClass : function(){
				if($.browser.msie && $.browser.version.substr(0,1) == '6'){
					$('#navigation li').hover(function(){
						$(this).addClass('over');
					},function(){
						$(this).removeClass('over');
					});
				}
			}
		},
		// article scripts
		article : {
			// comment chars counter and limit
			commentCounter : function(){
				if($('#postComment fieldset textarea').size() == 0) return false;

				var charLimit 	= 1000;
				var code 		= ', left: <span class="limit">' + (charLimit - $('#postComment fieldset textarea').val().length) + '</span>';

				$('#postComment p.limit-info').append(code);

				$('#postComment fieldset textarea').keyup(function(){
					if($(this).val().length > charLimit){
						$(this).val($(this).val().substr(0,charLimit));
						$('#postComment span.limit').html('0');
					} else {
						$('#postComment span.limit').html((charLimit - $(this).val().length).toString());
					}
				});
			},
			// complainments
			commentsComplainments : function(){
				$('#commentsList div.comment p.author').before('<p class="complain"><span>Complain about this comment</span></p>');
				$('#commentsList div.comment p.complain span').toggle(function(){
					$(this).addClass('active').parents('div.comment').next('form.complainment').addClass('active');
					return false;
				},function(){
					$(this).removeClass('active').parents('div.comment').next('form.complainment').removeClass('active');
					return false;
				});
			},
			// font size change
			fontSize : function(){
				$('div.articleRelated:last').append('<div class="fonts">Change font size: <a href="#a" class="a">A</a> <span>|</span> <a href="#aa" class="aa">A</a> <span>|</span> <a href="#aaa" class="aaa">A</a></div>');

				$('div.articleRelated div.fonts a').click(function(){
					var value;
					switch ($(this).attr('class')) {
						case 'aa':
							value = 'aa';
							break;
						case 'aaa':
							value = 'aaa';
							break;
						default:
							value = 'a';
							break;
					}

					$.cookie('fontsizeAAA', value, { expires: 90, path: '/'});

					$('#article div.body').attr('class','body font-'+$(this).attr('class'));
					return false;
				});

				if($('#article').size() == 1 && $.cookie('fontsizeAAA') != 'null'){
					$('#article div.body').attr('class','body font-'+$.cookie('fontsizeAAA'));
				}
			}
		},
		// other elements
		other : {
			// tabs
			tabbedContainers : function(){
				/* tabs */
				$('div.tabbedContainer').not('.regular').each(function(){
					var cont = $(this);
					if(cont.find('ul.anchors li.tabs-selected').size() == 0){
						cont.find('ul.anchors li:first-child').addClass('tabs-selected');
					}
					cont.find('ul.anchors li a').click(function(){
						cont.find('ul.anchors li').removeClass('tabs-selected');
						$(this).parent('li').addClass('tabs-selected');

						cont.find('>div:visible').hide();
						var re = /([_\-\w]+$)/i;
						$('#' + re.exec($(this).attr('href'))[1]).show();

						return false;
					});
				});
			},
			// searchbox value label
			searchValueLabel : function(container,text){
				if(container.val() === '') container.val(text);
				container.focus(function(){
					if($(this).val() == text){
						$(this).val('');
					}
				}).blur(function(){
					if($(this).val() == ''){
						$(this).val(text);
					}
				});
			},
			// advanced search form interaction
			searchAdvancedInteraction : function(){
				if($('#advs-daterange-5').attr('checked') !== 'checked'){
					$('#advancedSearch fieldset div.radios div.dates select').attr('disabled','disabled');
				}
				$('#advancedSearch span.datechange input').focus(function(){
					if($(this).attr('id') == 'advs-daterange-5'){
						$('#advancedSearch fieldset div.radios div.dates select').attr('disabled','');
					} else {
						$('#advancedSearch fieldset div.radios div.dates select').attr('disabled','disabled');
					}
				});
			},
			// videos hover
			videosHover : function(){
				$('#videoRelated p.video').bind('mouseenter',function(){
					$(this)
						.addClass('video-over')
						.click(function(){
							window.location = $(this).find('a:first').attr('href');
						});

				}).bind('mouseleave',function(){
					$(this)
						.removeClass('video-over')
						.unbind("click");
				});
			},
			// ios images fix
			iosFix : function(){
				$('div.ios p.img img').each(function(){
					var image = $(this);
					var parent = $(this).parent();
					var imageWidth = image.width() || image.get(0).clientWidth;
					var parentWidth = parent.width();
					if (imageWidth / parentWidth < 0.4) parent.addClass('float');
				})
			}
		},
		// town specific
		specific : {
			// top 100 page tables
			top100Tables : function(){
				// top100 table
				if($('#articleTop100Table').size() > 0){
					$('#articleTop100Table h2 span').html('1-10');
					$('table.top100').before('<ul id="top100s"><li class="current"><span>10</span></li><li><span>20</span></li><li><span>30</span></li><li><span>40</span></li><li><span>50</span></li><li><span>60</span></li><li><span>70</span></li><li><span>80</span></li><li><span>90</span></li><li><span>100</span></li></ul>');
					$('table.top100 tbody tr:even').addClass('odd');
					$('table.top100 tbody tr:gt(9)').hide();
					$('table.top100 thead tr th(1)').addClass('long');
					$('table.top100 tbody tr').each(function(){
						$(this).find('td:eq(0)').addClass('year');
					})
					$('ul#top100s li').click(function(){
						$('ul#top100s li').removeClass('current');
						$(this).addClass('current');
						var top100start = parseFloat($(this).find('span').html())-11;
						$('table.top100 tbody tr').hide();
						$('table.top100 tbody tr:gt('+top100start+'):lt(10)').show();
						$('#articleTop100Table h2 span').html((top100start+2)+'-'+(top100start+11));
					});
				}

				if($('#top100Table').size() > 0){
					$('#top100Table h2 span').html('1-10');
					$('table.top100').before('<ul id="top100s"><li class="current">1-<span>10</span></li><li>11-<span>20</span></li><li>21-<span>30</span></li><li>31-<span>40</span></li><li>41-<span>50</span></li><li>51-<span>60</span></li><li>61-<span>70</span></li><li>71-<span>80</span></li><li>81-<span>90</span></li><li>91-<span>100</span></li></ul>');
					$('table.top100 tbody tr:even').addClass('odd');
					$('table.top100 thead tr th(1)').addClass('long');
					$('table.top100 tbody tr:gt(9)').hide();
					$('table.top100 tbody tr').each(function(){
						$(this).find('td:eq(0)').addClass('year');
						$(this).find('td:eq(1)').addClass('year');
						$(this).find('td:eq(3)').addClass('numbers');
						$(this).find('td:eq(4)').addClass('numbers');
						$(this).find('td:eq(5)').addClass('numbers');
					})
					$('ul#top100s li').click(function(){
						$('ul#top100s li').removeClass('current');
						$(this).addClass('current');
						var top100start = parseFloat($(this).find('span').html())-11;
						$('table.top100 tbody tr').hide();
						$('table.top100 tbody tr:gt('+top100start+'):lt(10)').show();
						$('#top100Table h2 span').html((top100start+2)+'-'+(top100start+11));
					});
				}
			},
			// bbtv text scroller
			bbtvScroller : function(){
				if($('#bttv').size() > 0){
					$('#bttv div.videoRow div.list div.select').jScrollPane({
						showArrows: 1,
						scrollbarWidth: 14,
						scrollbarMargin: 0
					});
				}
			}
		},
		// sliders
		sliders : {
			// entertainment
			entertainment : {
				time : 5000,
				slide : function(){
					$('#entertainment ul.paging li.next a').trigger('click');
					Engine.sliders.entertainment.timeout = setTimeout(Engine.sliders.entertainment.slide,Engine.sliders.entertainment.time);
				},
				init : function(){
					var slidesCurrent 	= 1;
					var slidesCount 	= $('#entertainment ul.slides').size();
					var slidesWidth 	= $('#entertainment div.slidesHolder').width();

					if(slidesCount > 1){
						// cloning
						$('#entertainment div.slidesHolder').addClass('slidesHolderCSS').before('<ul class="paging"><li class="prev"><a href="./" title="Previous">&laquo;</a></li><li class="pause"><a href="./" title="Pause">&bull;</a></li><li class="next"><a href="./" title="Next">&raquo;</a></li></ul>');
						$('#entertainment ul.slides:last').clone().prependTo("#entertainment div.slidesHolder");
						$('#entertainment ul.slides').eq(1).clone().appendTo("#entertainment div.slidesHolder");

						// positioning
						$('#entertainment ul.slides').each(function(i){
							var leftPosition = (slidesWidth * i) - slidesWidth;
							$(this).css({ position: "absolute", width: "100%", top: "0", left: leftPosition });
						});

						// click: previous
						$('#entertainment ul.paging li.prev a').click(function(){
							if(parseInt($('#entertainment ul.slides').eq(0).css("left")) % slidesWidth == 0){
								if(slidesCurrent == 0){
									$('#entertainment ul.slides').each(function(){
										var newLeftPosition = parseInt($(this).css("left"),10) - slidesCount * slidesWidth;
										$(this).css('left',newLeftPosition);
									});
									slidesCurrent = slidesCount;
								}

								$('#entertainment ul.slides').each(function(){
									var newLeftPosition = parseInt($(this).css("left"),10) + slidesWidth;
									$(this).animate( { left: + newLeftPosition + 'px' }, 'slow' );
								});
								slidesCurrent--;
							}
							return false;
						});

						// click: next
						$('#entertainment ul.paging li.next a').click(function(){
							if(parseInt($('#entertainment ul.slides').eq(0).css("left")) % slidesWidth == 0){
								if(slidesCurrent == slidesCount+1){
									$('#entertainment ul.slides').each(function(){
										var newLeftPosition = parseInt($(this).css("left"),10) + slidesCount * slidesWidth;
										$(this).css('left',newLeftPosition);
									});
									slidesCurrent = 1;
								}

								$('#entertainment ul.slides').each(function(){
									var newLeftPosition = parseInt($(this).css("left"),10) - slidesWidth;
									$(this).animate( { left: + newLeftPosition + 'px' }, 'slow' );
								});
								slidesCurrent++;
							}
							return false;
						});

						// click: pause
						Engine.sliders.entertainment.timeout = setTimeout(Engine.sliders.entertainment.slide,Engine.sliders.entertainment.time);

						$('#entertainment ul.paging li.pause a').toggle(function(){
							$(this).addClass('active');
							clearTimeout(Engine.sliders.entertainment.timeout);
							return false;
						},function(){
							$(this).removeClass('active');
							clearTimeout(Engine.sliders.entertainment.timeout);
							Engine.sliders.entertainment.timeout = setTimeout(Engine.sliders.entertainment.slide,Engine.sliders.entertainment.time);
							return false;
						});

					}
				}
			}
		}
	}

	// navigation
	Engine.navigation.keyboardAccessibility();
	//Engine.navigation.sectionChange();
	Engine.navigation.hoverClass();

	// article
	Engine.article.commentCounter();
	Engine.article.commentsComplainments();
	Engine.article.fontSize();

	// other
	Engine.other.tabbedContainers();
	Engine.other.searchValueLabel($('fieldset.searchBox span.mainInput input'),'Search');
	Engine.other.searchAdvancedInteraction();
	Engine.other.videosHover();
	Engine.other.iosFix();

	// specific
	Engine.specific.top100Tables();
	Engine.specific.bbtvScroller();
	Engine.other.searchValueLabel($('#sn-search'),'Search');

	// sliders
	Engine.sliders.entertainment.init();
});


jQuery(document).ready(function($)
{
	var $left = $(".header ul li.left");
	var $right = $(".header ul li.right");
	$left.eq(Math.random() * $left.length).show();
	$right.eq(Math.random() * $right.length).show();

	$(".news-ticker ul").each(function()
	{
		var listPosition = 0, itemPosition = 0, items = [], timer = false;

		$(this).children("li").css({ display: "none" }).each(function(i) { var $a = $(this).find("a"); items[i] = { $a: $a, text: $a.text() }; $a.text("").bind("mousedown", function() { clearInterval(timer); }); }).filter(":first").css({ display: "inline" });

		timer = setInterval(function()
		{
			if (itemPosition < items[listPosition].text.length + 30)
				items[listPosition].$a.text(items[listPosition].text.substr(0, ++itemPosition) + (itemPosition % 2 ? "_" : ""));
			else
			{
				items[listPosition].$a.text("").parent().css({ display: "none" });
				(listPosition < items.length - 1) ? listPosition++ : listPosition = 0;
				items[listPosition].$a.parent().css({ display: "inline" });
				itemPosition = 0;
			}
		}, 75);
	});

	$('ul.article-tools:not(.article-tools-no-text-size)')
		//.find('li.share').after('<li class="print"><a href="#print">Print</a></li>').end()
		//.find('li.print a').click(function(){ window.print(); return false; }).end()
		.find('li:last').after('<li class="fonts">Text Size <ul><li><a href="#font-normal" class="a">Normal</a></li><li><a href="#font-large" class="aa">Large</a></li><li><a href="#font-xlarge" class="aaa">Extra Large</a></li></ul></li>').end()
		.find('li.fonts a').click(function(){
			switch ($(this).attr('class')) {
				case 'aaa': var value = 'aaa'; break;
				case 'aa': var value = 'aa'; break;
				default: var value = 'a'; break;
			}
			$.cookie('fontsizeAAA', value, { expires: 90, path: '/'});
			$('#article div.body').attr('class','body font-'+$(this).attr('class'));
			return false;
		});


	$(".editorsSlider").each(function()
	{
		var h = 0;
		var w = $(this).find("ul.slides>li").each(function() { w += $(this).width(); h = Math.max(h, $(this).height() + 15); }).height(h).length * 76 + 76;
		$(this).find("ul.slides").width(w).height(h);
		$(this).find(".slidesWrap").height(h).before('<ul class="paging"><li class="prev"><a href="#">&laquo;</a></li><li class="pause"><a href="#">pause</a></li><li class="next"><a href="#">&raquo;</a></li></ul>');

		$(this).find("ul.paging>li.prev>a").click(function()
		{
			var $list = $(this).parents(".editorsSlider").find("ul.slides");
			var left = parseInt($list.css("left"));

			if (left % 76)
				return false;

			$list.find(">li:last").clone(true).prependTo($list);
			$list.css("left", (left - 76) + "px").animate({ left: left + "px" }, 400, "swing", function() { $(this).find(">li:last").remove(); });
			return false;
		});

		$(this).find("ul.paging>li.next>a").click(function()
		{
			var $list = $(this).parents(".editorsSlider").find("ul.slides");
			var left = parseInt($list.css("left"));

			if (left % 76)
				return false;

			$list.find(">li:first").clone(true).appendTo($list);
			$list.animate({ left: (left - 76) + "px" }, 400, "swing", function() { $(this).css("left", (parseInt($(this).css("left")) + 76) + "px").find(">li:first").remove(); });
			return false;
		});

		var $parent = $(this);
		var next = function() { $parent.find("li.next>a").trigger("click"); };
		this.timer = setInterval(next, 5000);

		$(this).find("ul.paging>li.pause>a").click(function()
		{
			if ($parent[0].timer)
			{
				clearInterval($parent[0].timer);
				$parent[0].timer = false;
			}
			else
				$parent[0].timer = setInterval(next, 5000);
			return false;
		});
	});

	$(":text,textarea").each(function()
	{
		if (this.value != "")
		{
			this.defaultText = this.value;
			$(this)
				.focus(function() { if (this.value == this.defaultText) this.value = ""; })
				.blur(function() { if (this.value == "" && this.defaultText) this.value = this.defaultText; });
		}
	});

	if ($.browser.msie && $.browser.version < 7)
		$('ul.article-tools > li.share,.editorsSlider ul.slides li').bind('mouseenter mouseleave', function() { $(this).toggleClass('hover'); });

});

document.write('<link rel="stylesheet" type="text/css" media="screen" href="/belfasttelegraph.co.uk/styles/javascript.css" />');
