(function() {
jQuery.fn.rhNav = function(settings) {
var config = {
'imghovertag': 'srch'
, 'imgdowntag': 'srcd'
, 'linkdowntag': 'classd'
, 'exacttag': 'downexact'
, 'starttag': 'downstart'
, 'usehreftag': 'matchhref'
, 'blinktag': 'blink'
, 'blinkdelaytag': 'blinktimer'
, 'blinkexptimetag': 'blinkexptime'
, 'blinkcounttag': 'blinkcount'
, 'blinksettag': 'blinkset'
, 'blinkpagecounttag': 'blinkpagecount'
, 'onclick': null
};
var prefix = "_rhNv1";
if (settings) jQuery.extend(config, settings);
this.each(function() {
var obj = jQuery(this);
var l = obj.find("img");
var h = obj.attr("href");
var exact = obj.attr(config.exacttag);
var start = obj.attr(config.starttag);
var usehref = obj.attr(config.usehreftag);
var bDown = false;
var i, ss;
var date = new Date();
var func_onclick = config.onclick;
if (func_onclick) {
obj.click(function(e) {
e.preventDefault();
func_onclick(obj);
});
}
if (start) {
ss = start.split(",");
for (i = 0; i < ss.length; i++) {
bDown |= (location.pathname.match("^" + ss[i]) == ss[i]);
}
}
if (exact) {
ss = exact.split(",");
for (i = 0; i < ss.length; i++) {
bDown |= (location.pathname == ss[i]);
}
}
if (usehref) bDown = (location.pathname == h);
if (l.length > 0) {
l.each(function() {
var i = jQuery(this);
var s = i.attr("src");
var h = i.attr(config.imghovertag);
var d = i.attr(config.imgdowntag);
var blink = i.attr(config.blinktag);
var blinktimer = parseInt(i.attr(config.blinkdelaytag));
var blinkexpire = new Date(i.attr(config.blinkexptimetag));
var blinkcount = parseInt(i.attr(config.blinkcounttag));
var blinkset = i.attr(config.blinksettag);
var blinkpagecount = parseInt(i.attr(config.blinkpagecounttag));
if (bDown && d) {
s = d;
i.attr("src", d);
}
if (blink && !bDown) {
jQuery("");
if (blink.length > 0) {
if (!blinktimer) blinktimer = 500;
if (!blinkcount) blinkcount = -1;
if (!blinkpagecount) blinkpagecount = -1;
if ((date <= blinkexpire) || (isNaN(blinkexpire))) {
i.attr(prefix + config.blinkcounttag, "0");
var bpc = UpdateBlinkSet(blinkset);
if (bpc <= blinkpagecount) setTimeout(function() { navimgBlink(i, s, blink, blinktimer, blinkcount) }, blinktimer);
}
}
}
if (!h) return;
jQuery("");
jQuery(this).hover(function() { i.attr("src", h); }, function() { i.attr("src", s); });
});
}
else {
var d = obj.attr(config.linkdowntag);
var blink = obj.attr(config.blinktag);
var blinktimer = parseInt(obj.attr(config.blinkdelaytag));
var blinkexpire = new Date(obj.attr(config.blinkexptimetag));
var blinkcount = parseInt(obj.attr(config.blinkcounttag));
var blinkset = obj.attr(config.blinksettag);
var blinkpagecount = parseInt(obj.attr(config.blinkpagecounttag));
if (!d) return;
if (bDown) obj.addClass(d);
if (blink && !bDown) {
if (blink.length > 0) {
if (!blinktimer) blinktimer = 500;
if (!blinkcount) blinkcount = -1;
if (!blinkpagecount) blinkpagecount = -1;
if ((date <= blinkexpire) || (isNaN(blinkexpire))) {
obj.attr(prefix + config.blinkcounttag, "0");
var bpc = UpdateBlinkSet(blinkset);
if (bpc <= blinkpagecount) setTimeout(function() { navlinkBlink(obj, blink, blinktimer, blinkcount) }, blinktimer);
}
}
}
}
});
function navimgBlink(object, imgBlinkFrom, imgBlinkTo, blinktimer, blinkcount) {
var s = object.attr("src");
var c = parseInt(object.attr(prefix + config.blinkcounttag));
var bsc;
if (s == imgBlinkFrom) {
object.attr("src", imgBlinkTo);
c = -2;
}
else {
object.attr("src", imgBlinkFrom);
if (blinkcount == -1) c = -2; else c++;
object.attr(prefix + config.blinkcounttag, c)
}
if (c < blinkcount) setTimeout(function() { navimgBlink(object, imgBlinkFrom, imgBlinkTo, blinktimer, blinkcount) }, blinktimer);
};
function navlinkBlink(object, BlinkTo, blinktimer, blinkcount) {
var c = parseInt(object.attr(prefix + config.blinkcounttag));
if (!object.hasClass(BlinkTo)) {
object.addClass(BlinkTo);
c = -2;
}
else {
object.removeClass(BlinkTo);
if (blinkcount == -1) c = -2; else c++;
object.attr(prefix + config.blinkcounttag, c)
}
if (c < blinkcount) setTimeout(function() { navlinkBlink(object, BlinkTo, blinktimer, blinkcount) }, blinktimer);
};
function UpdateBlinkSet(blinkset) {
var c = GetBlinkSetCount(blinkset);
if (c == -2) return -2;
if ((!c) || (isNaN(c))) c = 0;
c++;
jQuery.cookie(prefix + blinkset, c, { path: '/' })
return c;
}
function GetBlinkSetCount(blinkset) {
if (!jQuery.cookie) return -2;
if (!blinkset) return -2;
if (blinkset.length == 0) return -2;
var c = parseInt(jQuery.cookie(prefix + blinkset));
if ((!c) || (isNaN(c))) c = 0;
return c;
}
return this;
};
})(jQuery);