/*------------------------------------------------------------

	jquery.elmUtil.js
	Copyright (c) 2009 Naoki Ueno
	Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)
	and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.
	Date: 3/20/2009

	@howto
		jQuery.anchorStay({ bodyClass : 'lStay' , stayClass : 'lNavStay' });

	@howto
		jQuery.scrollFor('#pagetop', { duration : 1000, offset : 50 }, callbackFunc);

	@howto
		jQuery('.pageTopAnchor').scrollFor('#pagetop', { event : 'mouseover', duration : 1000, offset : 50 }, callbackFunc);

------------------------------------------------------------*/

/*------------------------------------------------------------
	Element Hover
------------------------------------------------------------*/
(function($){
$.fn.extend({
	elmHover : function() {
		var setting = $.extend({
			hoverClass : 'hoverClass'
		}, $.makeArray(arguments).shift());
		this.hoverClass = setting.hoverClass;
		return this.each(function() {
			var item = $(this);
			item.hover(
				function() { item.addClass(setting.hoverClass); },
				function() { item.removeClass(setting.hoverClass); }
			);
		});
	}
});
})(jQueryBase);

/*------------------------------------------------------------
	Element Stay
------------------------------------------------------------*/
(function($){
$.extend({
	elmStay: function() {
		var setting = $.extend({
			bodyClass : 'lStay',
			stayClass : 'lNavStay'
		}, $.makeArray(arguments).shift());
		this.bodyClass = setting.bodyClass;
		this.stayClass = setting.stayClass;
		var classArray = $('body').attr('class').split(' ');
		$.each(classArray, function(index, value){
			if(value.search('^'+setting.bodyClass) != -1){
				var targetId = value.substr(setting.bodyClass.length);
				return $('#'+targetId).addClass(setting.stayClass);
			}
		});
	}
});
})(jQueryBase);


/*------------------------------------------------------------
	Anchor Scroll
------------------------------------------------------------*/
(function($){
$.extend({
	scrollFor : function(elem, settings, callback) {
		settings = $.extend({
			duration : 500,
			offset : 0
		}, settings);
		$('html, body').animate({ scrollTop : $(elem).offset().top - settings.offset }, settings.duration, 'swing', function(){
			if((typeof elem).toLowerCase() == 'string') {
				location.hash = elem.substr(elem.indexOf('#'));
			}
			callback();
		});
	}
});
$.fn.extend({
	scrollFor : function(elem, settings, callback) {
		return this.each(function() {
			settings = $.extend({
				event : 'click'
			}, settings);
			$(this).bind(settings.event, function(e){
				if(!elem || elem!='') {
					elem = this.href;
					var hash = elem.lastIndexOf('#');
					if(hash!=-1){
						elem = elem.substr(hash);
					} else {
						elem = document.body;
					}
				}
				$.scrollFor(elem, settings, callback);
				e.preventDefault();
			});
		});
	}
});
})(jQueryBase);