Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ;
- (function($) {
- $.fn.navs = function(o) {
- this
- .each(function() {
- var th = $(this), data = th.data('navs'), _ = {
- enable : true,
- actCl : 'active',
- changeEv : 'change',
- indx : [],
- hshx : [],
- useHash : false,
- defHash : '#!/',
- emptyHash : '#',
- outerHash : false,
- autoPlay : false,
- blockSame : true,
- hover : true,
- contRetFalse : true,
- preFu : function() {
- _.li.each(function(n) {
- var th = $(this);
- _.indx[n] = th;
- if (_.useHash) {
- _.hshx[n] = $('a', th).attr('href');
- if (location.hash == _.hshx[n]) {
- th.addClass(_.actCl);
- }
- }
- });
- },
- rfrshFu : function() {
- _.prev = _.curr
- _.pren = _.n
- _.curr = false
- _.n = -1
- _.param = 'close'
- _.li.each(function(n) {
- var th = $(this)
- if (th.hasClass(_.actCl))
- _.curr = th, _.n = n, _.href = $('a', th)
- .attr('href'),
- _.param = _.useHash ? _.href : _.n
- })
- },
- markFu : function() {
- _.li.each(function(n) {
- var th = $(this)
- _.n == n ? _.hvrin(th) : _.hvrout(th)
- })
- },
- hashFu : function() {
- $(window)
- .bind(
- 'hashchange',
- function() {
- if (location.hash == _.emptyHash
- || location.hash.length == 0) {
- location.hash = _.hash
- return false
- }
- _.prevHash = _.hash
- _
- .checkHashFu(_.outerHash = _.hash = location.hash)
- })
- $('a', _.li).click(function() {
- if (!_.enable)
- return false
- })
- },
- checkHashFu : function(hash) {
- if (hash == _.emptyHash || hash.length == 0)
- location.hash = _.defHash
- if (hash == '#back')
- return _.backFu()
- if (hash == '#close')
- return _.closeFu()
- _.li.each(function(n) {
- if (_.hshx[n] == _.hash) {
- _.chngFu(n), _.outerHash = false
- }
- })
- if (_.outerHash)
- _.li.removeClass(_.actCl), _.rfrshFu(), _
- .markFu(), _.param = _.outerHash, _.me
- .trigger(_.changeEv)
- },
- cntrFu : function() {
- _.li.each(function(n) {
- var th = $(this)
- $('a', th).click(function() {
- _.chngFu(n)
- if (_.contRetFalse)
- return false
- })
- })
- },
- autoPlayFu : function() {
- if (!_.autoPlay)
- return false
- if (_.int)
- clearInterval(_.int)
- _.int = setInterval(_.nextFu, _.autoPlay)
- },
- chngFu : function(n) {
- if (!_.enable)
- return false
- if (n == _.n && _.blockSame)
- return false
- _.indx[n] && _.li.removeClass(_.actCl)
- && _.indx[n].addClass(_.actCl)
- _.rfrshFu()
- _.markFu()
- _.autoPlayFu()
- if (_.useHash && location.hash != _.hshx[_.n])
- location.hash = _.hshx[_.n]
- _.me.trigger(_.changeEv)
- },
- closeFu : function() {
- _.li.removeClass(_.actCl)
- _.rfrshFu()
- _.markFu()
- _.me.trigger(_.changeEv)
- location.hash = _.defHash
- },
- backFu : function() {
- _.chngFu(_.pren)
- },
- nextFu : function() {
- var n = _.n
- _.chngFu(++n < _.li.length ? n : 0)
- },
- prevFu : function() {
- var n = _.n
- _.chngFu(--n >= 0 ? n : _.li.length - 1)
- },
- customStr : function(str) {
- // console.log(str)
- },
- init : function() {
- _.li = $('>ul>li', _.me)
- _.preFu()
- _.rfrshFu()
- _.markFu()
- _.useHash ? _.hashFu() : _.cntrFu()
- _.hoverFu()
- _.autoPlayFu()
- _.useHash
- && _
- .checkHashFu(_.outerHash = _.hash = location.hash)
- _.li.hasClass(_.actCl) && _.me.trigger(_.changeEv)
- },
- hoverFu : function() {
- _.li.each(function(n) {
- var th = $(this)
- $('a', th).bind('mouseenter', function() {
- if (_.enable)
- if (_.hover && n != _.n)
- _.hvrin(th)
- }).bind('mouseleave', function() {
- if (_.enable)
- if (_.hover && n != _.n)
- _.hvrout(th)
- })
- })
- },
- hvrin : function(el) {
- _.hoverIn(el, _)
- _.hover == 'sprites'
- && $('a', el).sprites('hoverin')
- },
- hvrout : function(el) {
- _.hoverOut(el, _)
- _.hover == 'sprites'
- && $('a', el).sprites('hoverout')
- },
- hoverIn : function() {
- },
- hoverOut : function() {
- },
- defFunc : function() {
- }
- }
- data ? _ = data : th.data({
- navs : _
- })
- typeof o == 'object' && $.extend(_, o)
- if (typeof o == 'function')
- return th.bind(_.changeEv, function() {
- o(_.param, _);
- return false
- }).trigger(_.changeEv)
- _.me || _.init(_.me = th)
- typeof o == 'number' && _.chngFu(o)
- typeof o == 'boolean' && (_.enable = o)
- typeof o == 'string'
- && (o == 'prev' || o == 'next' || o == 'close'
- || o == 'back' ? _[o + 'Fu']()
- : _.useHash ? o.slice(0, 3) == '#!/'
- && (location.hash = o)
- || _.customStr(o) : _.customStr(o))
- })
- return this
- }
- $.fn.tabs = function(o) {
- return this.each(function() {
- var th = $(this), _ = th.data('tabs')
- || {
- enable : true,
- show : 0,
- blockSame : true,
- changeEv : 'change',
- empty : '#!/',
- preFu : function() {
- _.li.hide()
- },
- actFu : function() {
- _.prev && _.prev.hide()
- _.curr && _.curr.show()
- },
- searchSubCatFu: function(s) {
- var subtest = -1;
- var subcat = false;
- if(s.slice(0, 3) == '#!/') {
- subtest = s.slice(3).indexOf('/');
- if(subtest >= 0) {
- subcat = s.slice(subtest + 4);
- if(subcat.indexOf('/') >= 0) {
- return _.searchSubCatFu(subcat);
- }
- return subcat;
- }
- return s.slice(3);
- }
- else {
- subtest = s.indexOf('/');
- if(subtest >= 0) {
- subcat = s.slice(subtest + 1);
- if(subcat.indexOf('/') >= 0) {
- return _.searchSubCatFu(subcat);
- }
- return subcat;
- }
- }
- return false;
- },
- navFu : function(s) {
- if (_.pres == s || s.slice(0, 3) != '#!/')
- return false
- _.pres = s
- s == _.empty && $.when(_.li).then(_.closeFu)
- var found = false;
- var needle = _.searchSubCatFu(s);
- _.li.each(function(n) {
- if($(this).attr('id') == needle){
- _.chngFu(n);
- $(document).trigger("pageChange", $(this));
- }
- })
- },
- chngFu : function(a) {
- if (!_.enable || (a == _.n && _.blockSame)
- || a >= _.li.length)
- return false
- $.when(_.li).then(function() {
- _.pren = _.n
- _.prev = _.curr
- _.curr = _.li.eq(_.n = a)
- _.actFu(_)
- _.me.trigger(_.changeEv)
- })
- },
- nextFu : function() {
- var n = _.n
- _.way = 1
- _.chngFu(++n < _.li.length - _.show ? n : 0)
- },
- prevFu : function() {
- var n = _.n
- _.way = -1
- _.chngFu(--n >= 0 ? n : _.li.length - 1 - _.show)
- },
- closeFu : function() {
- if (_.pres == 'close')
- return false
- _.pren = _.n
- _.prev = _.curr
- _.n = -1
- _.curr = false
- _.pres = 'close'
- _.actFu(_)
- },
- backFu : function() {
- _.chngFu(_.pren)
- },
- init : function() {
- _.ul = $('>ul', _.me)
- _.li = $('>li', _.ul)
- _.preFu(_)
- _.navs && _.navs.navs(function(n) {
- th.tabs(n)
- })
- }
- }
- if (typeof o == 'object')
- _ = $.extend(true, _, o)
- _.me || _.init(_.me = th.data({
- tabs : _
- }))
- typeof o == 'function' && _.me.bind(_.changeEv, function() {
- o(_.n, _);
- return false
- })
- typeof o == 'boolean' && (_.enable = o)
- typeof o == 'number' && _.chngFu(o)
- typeof o == 'string'
- && (o == 'prev' || o == 'next' || o == 'close'
- || o == 'back' ? _[o + 'Fu']() : _.navFu(o))
- })
- }
- })(jQuery)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement