/* * wakuwaku.js 0.2 original by yuga.js 0.6.1 (kyosuke.jp) *  * Copyright (c) 2008-2009 Monkey Works *  * Since:     2008-10-08 * Modified:  2009-02-05 * * jQuery 1.2.6*/(function($) {	/* 必要なメソッドのみコメントアウトしてください */	$(function() {		$.yuga.current();		$.yuga.rollover();		//$.yuga.externalLink();		//$.yuga.thickbox();		$.yuga.scroll();		//$.yuga.tab();		$.yuga.stripe();		//$.yuga.css3class();		$.yuga.childs();	});	/* 設定 */	var s = {		ri: 'over', // ロールオーバー画像		ci: 'cur' // カレントイメージ	}	//---------------------------------------------------------------------	$.yuga = {		// URIを解析したオブジェクトを返すfunction		Uri: function(path){			this.originalPath = path;			//絶対パスを取得			this.absolutePath = (function(){				var e = document.createElement('span');				e.innerHTML = '<a href="/atom/js/' + path + '" />';				return e.firstChild.href;			})();			//絶対パスを分解			var fields = {'schema' : 2, 'username' : 5, 'password' : 6, 'host' : 7, 'path' : 9, 'query' : 10, 'fragment' : 11};			var r = /^((\w+):)?(\/\/)?((\w+):?(\w+)?@)?([^\/\?:]+):?(\d+)?(\/?[^\?#]+)?\??([^#]+)?#?(\w*)/.exec(this.absolutePath);			for (var field in fields) {				this[field] = r[fields[field]]; 			}		},		//カレント表示処理		current: function (options) {			var c = $.extend({				hoverClass:'btn',				postfix: '-'+s.ci			}, options);			$('img.btn').each(function(){				var setImgFlg = false;				if ($("body").attr("class")) {					var array = $("body").attr("class").split(" ");					for(var i=0; i<array.length;i++) {						if (array[i] == $(this).parent().parent().attr("class")) {							setImgFlg = true;							break;						}					}				}				if (setImgFlg){					$(this).removeClass(c.hoverClass);					this.originalSrc = $(this).attr('src');					this.currentSrc = this.originalSrc.replace(/(\.gif|\.jpg|\.png)/, c.postfix+"$1");					$(this).attr('src',this.currentSrc);				}			});		},		//ロールオーバー		rollover: function(options) {			var c = $.extend({				hoverSelector: '.btn',				groupSelector: '.btngroup',				postfix: '-'+s.ri			}, options);			//ロールオーバーするノードの初期化			$(c.hoverSelector).each(function(){				this.originalSrc = $(this).attr('src');				this.rolloverSrc = this.originalSrc.replace(/(\.gif|\.jpg|\.png)$/, c.postfix+"$1");				this.rolloverImg = new Image;				this.rolloverImg.src = this.rolloverSrc;			});			//通常ロールオーバー			var inGroup = new Array();			$.each(c.groupSelector.split(/,\s?/), function(i, n){				inGroup.push(n + ' ' + c.hoverSelector.replace(/,\s?/, ', '+ n +' '));			})			$(c.hoverSelector).not($(inGroup.join(', '))).hover(function(){				$(this).attr('src',this.rolloverSrc);			},function(){				$(this).attr('src',this.originalSrc);			});			//グループ化されたロールオーバー			$(c.groupSelector).hover(function(){				$(this).find(c.hoverSelector).each(function(){					$(this).attr('src',this.rolloverSrc);				});			},function(){				$(this).find(c.hoverSelector).each(function(){					$(this).attr('src',this.originalSrc);				});			});		},		//外部リンクは別ウインドウを設定		externalLink: function(options) {			var c = $.extend({				windowOpen:true,				externalClass: 'external-link'			}, options);			var e = $('a[href^="http://"]');			if (c.windowOpen) {				e.click(function(){					window.open(this.href, '_blank');					return false;				});			}			e.addClass(c.externalClass);		},		//画像へ直リンクするとthickboxで表示(thickbox.js利用)		thickbox: function() {			try {				tb_init('a[@href$=".jpg"], a[@href$=".gif"], a[@href$=".png"]');			} catch(e) {			}			},		//ページ内リンクはするするスクロール		scroll: function(options) {			//ドキュメントのスクロールを制御するオブジェクト			var scroller = (function() {				var c = $.extend({					easing:100,					step:30,					fps:60				}, options);				c.ms = Math.floor(1000/c.fps);				var timerId;				var param = {					stepCount:0,					startY:0,					endY:0,					lastY:0				};				//スクロール中に実行されるfunction				function move() {					if (param.stepCount == c.step) {						//スクロール終了時						window.scrollTo(getCurrentX(), param.endY);					} else if (param.lastY == getCurrentY()) {						//通常スクロール時						param.stepCount++;						window.scrollTo(getCurrentX(), getEasingY());						param.lastY = getEasingY();						timerId = setTimeout(move, c.ms); 					}				}				function getCurrentY() {					return document.body.scrollTop  || document.documentElement.scrollTop;				}				function getCurrentX() {					return document.body.scrollLeft  || document.documentElement.scrollLeft;				}				function getEasingY() {					return Math.floor(getEasing(param.startY, param.endY, param.stepCount, c.step, c.easing));				}				function getEasing(start, end, stepCount, step, easing) {					var s = stepCount / step;					return (end - start) * (s + easing / (100 * Math.PI) * Math.sin(Math.PI * s)) + start;				}				return {					set: function(options) {						this.stop();						if (options.startY == undefined) options.startY = getCurrentY();						param = $.extend(param, options);						param.lastY = param.startY;						timerId = setTimeout(move, c.ms); 					},					stop: function(){						clearTimeout(timerId);						param.stepCount = 0;					}				};			})();			$('a[href^=#], area[href^=#]').not('a[href=#], area[href=#]').each(function(){				this.hrefdata = new $.yuga.Uri(this.getAttribute('href'));			}).click(function(){				var target = $('#'+this.hrefdata.fragment);				if (target.length) {					scroller.set({						endY: target.offset().top					});					return false;				}			});		},		//タブ機能		tab: function(options) {			var c = $.extend({				tabNavSelector:'.tabNav',				activeTabClass:'active'			}, options);			$(c.tabNavSelector).each(function(){				var tabNavList = $(this).find('a[href^=#], area[href^=#]');				var tabBodyList;				tabNavList.each(function(){					this.hrefdata = new $.yuga.Uri(this.getAttribute('href'));					var selecter = '#'+this.hrefdata.fragment;					if (tabBodyList) {						tabBodyList = tabBodyList.add(selecter);					} else {						tabBodyList = $(selecter);					}					$(this).unbind('click');					$(this).click(function(){						tabNavList.removeClass(c.activeTabClass);						$(this).addClass(c.activeTabClass);						tabBodyList.hide();						$(selecter).show();						return false;					});				});				tabBodyList.hide()				tabNavList.filter(':first').trigger('click');			});		},		//奇数、偶数を自動追加		stripe: function(options) {			var c = $.extend({				oddClass:'odd',				evenClass:'even'			}, options);			$('ul.stripe, ol.stripe').each(function(){				//JSでは0から数えるのでevenとaddを逆に指定				$(this).children('li:odd').addClass(c.evenClass);				$(this).children('li:even').addClass(c.oddClass);			});			$('table.stripe').each(function(){				$(this).children('tr:odd').addClass(c.evenClass);				$(this).children('tr:even').addClass(c.oddClass);			});			$('div.stripe').each(function(){				$(this).children('div:odd').addClass(c.evenClass);				$(this).children('div:even').addClass(c.oddClass);			});		},		//css3のクラスを追加		css3class: function() {			//:first-child, :last-childをクラスとして追加			$('body :first-child').addClass('firstChild');			$('body :last-child').addClass('lastChild');			//css3の:emptyをクラスとして追加			$('body :empty').addClass('empty');		},		childs: function() {			//:first-childをクラスとして追加			$('.childs :first-child').addClass('first-child');			$('.childs :last-child').addClass('last-child');		}	};})(jQuery);