(function(d){var f=d.fn.jcarousel;
d.fn.jcarousel=function(c){c=c||{};
var h=d.isFunction(c.initCallback)?c.initCallback:function(){};
c.initCallback=function(g){h(g);
d.jcarouselkeys.bindBlur(d.jcarouselkeys.bindFocus(g.list.find("li"),g),g);
d(document).bind("keydown",function(n){if(d.jcarouselkeys.curr==null){return true
}var m=g.options.vertical?38:37;
var l=g.options.vertical?40:39;
if(n.which==m||n.which==l){(n.which==m)?d.jcarouselkeys.curr.c.prev():d.jcarouselkeys.curr.c.next();
n.preventDefault();
n.stopPropagation();
return false
}})
};
if(d.isFunction(c.itemLoadCallback)){var a=c.itemLoadCallback;
c.itemLoadCallback=function(j,g){a(j,g);
d.jcarouselkeys.correctFocus(j)
}
}else{var b=c.itemLoadCallback&&d.isFunction(c.itemLoadCallback.onAfterAnimation)?c.itemLoadCallback.onAfterAnimation:function(){};
c.itemLoadCallback={onBeforeAnimation:c.itemLoadCallback&&d.isFunction(c.itemLoadCallback.onBeforeAnimation)?c.itemLoadCallback.onBeforeAnimation:null,onAfterAnimation:function(j,g){b(j,g);
d.jcarouselkeys.correctFocus(j,g)
}}
}return f.apply(this,[c])
};
var e=d.jcarousel.prototype.add;
d.jcarousel.prototype.add=function(b,a){return d.jcarouselkeys.bindBlur(d.jcarouselkeys.bindFocus(e.apply(this,[b,a]),this),this)
};
d.jcarouselkeys={curr:null,idx:function(a){if(d(a).is("[jcarouselindex]")){return parseInt(d(a).attr("jcarouselindex"))
}else{return parseInt(d(a).parents("[jcarouselindex]").attr("jcarouselindex"))
}},bindFocus:function(c,b){var a=function(){var h={idx:d.jcarouselkeys.idx(this),c:b};
if(b.first>h.idx||b.last<h.idx){b.scroll(h.idx)
}d.jcarouselkeys.curr=h
};
d.jcarouselkeys.el(c).bind("focus",a);
return c
},bindBlur:function(c,b){var a=function(){d.jcarouselkeys.curr=null
};
d.jcarouselkeys.el(c).bind("blur",a);
return c
},correctFocus:function(b,a){if(d.jcarouselkeys.curr==null){return
}if(b.first>d.jcarouselkeys.curr.idx||b.last<d.jcarouselkeys.curr.idx||a=="prev"){var c=d.jcarouselkeys.curr.c.get(b.first);
d.jcarouselkeys.el(c).trigger("focus")
}},el:function(a){if(a.is("[tabindex]")){return a
}else{var b=a.find("[tabindex]");
if(b.length>0){return b
}else{return a.find("a:eq(0)")
}}}}
})(jQuery);
