; (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)