﻿var isOldMozilla = ($.browser.mozilla && parseFloat($.browser.version) < 1.9);
$(function () {
	var pos = [3, -3, 3, -3, 3, -3];
	$('#menu a').mouseover(function () {
		var ps = pos.concat();
		var val = setInterval(function () {
			var p = ps.shift();
			if (p) return document.body.style.marginTop = p+'px';
			clearInterval(val);
			document.body.style.marginTop = '';
		}, 10);
	});
	var match = ['(.)', '$1'];
	if ($.browser.safari) match = ['(.)(.)?', '$1$2'];
	if (isOldMozilla) match = ['(.)(.)', ''];
	match[0] = new RegExp(match[0], 'g');
	match[1] = '<span class="brbr">'+match[1]+'</span>';
	if (isOldMozilla) match[1] = ' <span class="brbr">　$1　$2　</span> ';
	var img_links = $('div#foot ul li a, div#foot address a, div.pagetop a, div#head a, ul#logoLink a, ul#langLink a, li#icnHatena, li#Digg, :image, #bnr a, #btn a')
		.addClass('brbrImg')
		.hover(function () {
			if ($.data(this, 'brbr')) return;
			$.data(this, 'brbr', true);
			var $_ = $(this).css({'position' : 'relative'});
			var ps = $_.filter(':image').length ? pos.concat(pos) : pos.concat();
			var val = setInterval(function () {
				var p = ps.shift();
				if (p) return $_.css('top', p);
				$_.css({'position':'','top':0});
				clearInterval(val);
			}, 10);
		}, function () {
			$.data(this, 'brbr', false);
		})
	;
	$('a:not(:hidden)')
		.not(img_links)
		.each(function () {
			var child = this.childNodes;
			var length = child.length;
			for (var i = 0; i < length; ++i) {
				var self = child[i];
				if (self.nodeType != 3 && (!self.nodeValue || self.nodeValue.match(/^\s*$/))) continue;
				var html = self.nodeValue.replace(match[0], match[1]);
				if (isOldMozilla) html = html.replace(/([^>])$/, '<span class="brbr last">$1</span>');
				self.parentNode.innerHTML = html;
			};
		})
		.hover(function () {
			if ($.data(this, 'brbr')) return;
			$.data(this, 'brbr', true);
			var ps = pos.concat();
			var $_ = $(this).find('.brbr').css({'position' : 'relative'});
			var val = setInterval(function () {
				var p = ps.shift();
				if (!p) {
					$_.css({'position':'','top':''});
					return clearInterval(val);
				};
				$_.each(function (i) {
					$(this).css({top:((i + ps.length) % 2) ? -3 : 3})
				});
			}, 25);
		}, function () {
			$.data(this, 'brbr', false);
		});
	;

	if (!isOldMozilla) return;
	$('.brbr:not(.last)').css({
		'letter-spacing' : '-0.35em',
		'margin' : '0 -3px'
	});
});
