﻿/*************************************************


	Site Name   TOTO
	File Name   jquery.scrollcontents.js

	Create Date 2010/09/21
	Update Date 2010/09/21


*************************************************/

/**
 * jQuery Scroll Contents
 */

$(function(){

	$.fn.rollover = function(options){
		var setting = $.extend({
			postfix : '_on'
		}, options);
		var image_cache = new Object();
		$(this).each(function(){
			var imgsrc = this.src;
			var dot = this.src.lastIndexOf('.');
			var imgsrc_on = this.src.substr(0, dot) + setting.postfix + this.src.substr(dot, 4);
			image_cache[this.src] = new Image();
			image_cache[this.src].src = imgsrc_on;
			$(this).hover(
				function(){this.src = imgsrc_on;},
				function(){this.src = imgsrc;}
			);
		});
	};

	$.fn.scrollContents = function(options){
		var setting = $.extend({
			navLeftClass : '.mod_scrollcontents_nav_left',
			navRightClass : '.mod_scrollcontents_nav_right',
			itemMainClass : '.mod_scrollcontents_main',
			itemClass : '.item',
			speed : 5,
			amount : 5,
			easing : 'linear'
		}, options);
		var _checkItemWidth = function(elem){
			var w = elem.find(setting.itemClass).attr('offsetWidth');
			w = parseInt(w);
			return w;
		};
		var _checkItemLength = function(elem){
			var len = elem.find(setting.itemClass).size();
			len = parseInt(len);
			return len;
		};
		var _setMainWidth = function(elem, w){
			if($.browser.msie){
				var $main = elem.find(setting.itemMainClass);
				var pad = parseInt($main.css('paddingLeft')) + parseInt($main.css('paddingRight'));
				elem.find(setting.itemMainClass).css({
					width : w + pad
				});
			}else{
				elem.find(setting.itemMainClass).css({
					width : w
				});
			};
		};
		var _setNavigation = function(elem){
			var $navL = elem.find(setting.navLeftClass);
			var $navR = elem.find(setting.navRightClass);
			var $main = elem.find(setting.itemMainClass);
			var containerWidth = parseInt(elem.attr('offsetWidth'));
			var mainWidth = parseInt($main.attr('offsetWidth'));
			var scrollRangeRight = 0;
			var scrollRangeLeft = containerWidth - mainWidth;
			$navL.hover(
				function(){_startAnime('left');},
				function(){_stopAnime();}
			).click(function(){return false;});
			$navR.hover(
				function(){_startAnime('right');},
				function(){_stopAnime();}
			).click(function(){return false;});
			var _startAnime = function(direction){	
				if(mainWidth <= containerWidth) return;
				var directCode;
				if(direction === 'left'){
					directCode = '+=';
				}else if(direction === 'right'){
					directCode = '-=';
				};
				var _loop = function(){
					var mainPos = parseInt($main.css('left'));
					if(mainPos <= scrollRangeRight && mainPos >= scrollRangeLeft){
						$main.animate({
							left : directCode + setting.amount
						}, setting.speed, setting.easing, function(){
							_loop();
						});
					}else if(mainPos <= scrollRangeRight && !mainPos >= scrollRangeLeft){
						$main.stop().css('left', scrollRangeLeft);
					}else if(!mainPos <= scrollRangeRight && mainPos >= scrollRangeLeft){
						$main.stop().css('left', scrollRangeRight);
					};
				};
				_loop();
			};
			var _stopAnime = function(){
				$main.stop().clearQueue();
			};
		};
		return this.each(function(){
			var itemWidth = _checkItemWidth($(this));
			var itemLen = _checkItemLength($(this));
			_setMainWidth($(this), itemWidth * itemLen);
			_setNavigation($(this));
		});
	};
});
