さっきのやつはwindowを最大化してると解除されちゃうので修正。
さらにsafariはa tag内で改行されなくなっちゃうので2文字ごと切るように修正。
(spanの切れ目で改行してくれないっぽい)
$(function () {
var pos = [3, -3, 3, -3, 3, -3];
var a = document.getElementById('menu').getElementsByTagName('a');
var len = a.length;
$('#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 = $.browser.safari ? ['(.)(.)?', '$1$2'] : ['(.)', '$1'];
match[0] = new RegExp(match[0], 'g');
match[1] = '<span class="brbr" style="position:relative">'+match[1]+'</span>';
$('a:not(:hidden)')
.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;
self.parentNode.innerHTML = self.nodeValue.replace(match[0], match[1]);
};
})
.hover(function () {
if ($.data(this, 'brbr')) return;
$.data(this, 'brbr', true);
var ps = pos.concat();
var $_ = $(this);
var val = setInterval(function () {
var p = ps.shift();
if (!p) {
$_.find('.brbr').css('top', '');
return clearInterval(val);
};
$_.find('.brbr').each(function (i) {
$(this).css({top:((i + ps.length) % 2) ? -3 : 3})
});
}, 25);
}, function () {
$.data(this, 'brbr', false);
});
;
});