/**
 * jQuery.Util.js
 * @version 	0.0.3b
 * @sine 		IE6+, FF1.5+, Safari3+, OP9+
 * @history
	10.12.22:fadeSwapのバグ修正
 */

(function($,window,undefined) {
	var libName = 'jquery.util', Util = $.Util = {}, doc = $(document), navg = navigator;
	Util.module = [];
	Util.isTouch = /iPhone|iPad|iPod|iPod|Android/i.test(navg.userAgent);
	Util.isAndroid = /Android/i.test(navg.userAgent);
	Util.isDebug = true;
	
	
	//------------------------------
	//  Event
	//------------------------------
	Util.TOUCH_START		 = 'mousedown';
	Util.TOUCH_MOVE			 = 'mousemove';
	Util.TOUCH_END			 = 'mouseup';
	Util.HOVER_START		 = 'mouseover';
	Util.HOVER_END			 = 'mouseout';
	if(Util.isTouch){
		Util.TOUCH_START	 = 'touchstart';
		Util.TOUCH_MOVE		 = 'touchmove';
		Util.TOUCH_END		 = 'touchend';
		Util.HOVER_START	 = 'touchstart';
		Util.HOVER_END		 = 'touchend';
	}
	Util.FLICK_START		 = 'util.flickstart';
	Util.FLICK_MOVE			 = 'util.flickmove';
	Util.FLICK_END			 = 'util.flickend';
	Util.SCROLL_START 		 = 'util.scrollstart';
	Util.SCROLL_CHANGE 		 = 'util.scrollchange';
	Util.SCROLL_COMPLETE 	 = 'util.scrollcomplete';
	Util.SCROLL_CANCEL 		 = 'util.scrollcancel';
	Util.ease				 = function (x, t, b, c, d) {return c*((t=t/d-1)*t*t + 1) + b;}
											
	
	
	//------------------------------
	//  Config
	//------------------------------
	
	//carouselNavi
	Util.carouselNavi = {};
	Util.carouselNavi.selected		 = 'selected';
	Util.carouselNavi.scrollLock	 = true;
	Util.carouselNavi.deffX			 = '0';
	Util.carouselNavi.deffY			 = '0';
	Util.carouselNavi.time			 = 500;
	Util.carouselNavi.pxms			 = 0;
	
	// Page Navigation
	Util.pageNavi  = {};
	Util.pageNavi.enable			 = true;
	Util.pageNavi.selector			 = 'p.pageTop > a , .inPageLink a , .ancLink a';
	
	//accordion
	Util.accordion = {};
	Util.accordion.enable			 = true;
	Util.accordion.selector			 = 'div.accordion';
	Util.accordion.naviSelector		 = 'h4';
	Util.accordion.contentSelector	 = 'div.content';
	Util.accordion.selected			 = 'selected';
	Util.accordion.defaultOpen		 = 'open';
	Util.accordion.naviOpen			 = 'open';
	Util.accordion.naviClose		 = 'close';
	Util.accordion.naviOpenHover	 = 'openhover';
	Util.accordion.naviCloseHover	 = 'closehover';
	Util.accordion.trigger			 = 'click';
	Util.accordion.time				 = 300;
	Util.accordion.inAnimate		 = 'slideDown';
	Util.accordion.outAnimate		 = 'slideUp';
	
	// Tab Navigation
	Util.tab  = {};
	Util.tab.enable				 = true;
	Util.tab.selector			 = 'div.tab';
	Util.tab.naviSelector		 = 'ul.nav a';
	Util.tab.selected			 = 'selected';
	Util.tab.trigger			 = 'click';
	Util.tab.defaultTab			 = 0;
	Util.tab.time				 = 300;
	Util.tab.inAnimate			 = 'slideDown';
	Util.tab.outAnimate			 = 'slideUp';
	
	// Hover SwapImage
	Util.hoverSwap = {};
	Util.hoverSwap.enable			 = true;
	Util.hoverSwap.selector			 = 'img.swap, input.swap';
	Util.hoverSwap.postfix			 = '_ov';
	
	// Hover FadeImage
	Util.hoverFade = {};
	Util.hoverFade.enable			 = true;
	Util.hoverFade.selector			 = 'img.fade, input.fade';
	Util.hoverFade.time				 = 300;
	Util.hoverFade.alpha			 = '.5';
	Util.hoverFade.defaultAlpa		 = '1';
	
	// Hover FadeSwapImage
	Util.hoverFadeSwap = {};
	Util.hoverFadeSwap.enable		 = true;
	Util.hoverFadeSwap.selector		 = 'img.fadeSwap';
	Util.hoverFadeSwap.postfix		 = '_on';
	Util.hoverFadeSwap.time			 = 400;
	Util.hoverFadeSwap.alpha		 = '1';
	Util.hoverFadeSwap.defaultAlpa	 = '0';
	
	// Hover slide Image
	Util.hoverSlide = {};
	Util.hoverSlide.enable			 = true;
	Util.hoverSlide.selector		 = 'img.slide';
	Util.hoverSlide.time			 = 300;
	
	// scrollObject
	Util.scrollObject  = {};
	Util.scrollObject.time 			 = 600;
	Util.scrollObject.pxms 			 = 0;
	Util.scrollObject.fps 			 = 60;
	Util.scrollObject.ms 			 = 0;
	Util.scrollObject.ease			 = Util.ease;
	Util.scrollObject.START 		 = 'start';
	Util.scrollObject.CHANGE 		 = 'change';
	Util.scrollObject.COMPLETE 		 = 'complete';
	Util.scrollObject.STOP 			 = 'stop';
	
	
	//------------------------------
	//  scrollObject
	//------------------------------
	//carouselNavi
	Util.carouselNavi.register = function(param) {
		var cn = Util.carouselNavi, targetX, targetY,  target = $(param.target), ct;
        param = $.extend({
            time:cn.time,
			pxms:cn.pxms,
            isFlick:cn.isFlick,
            scrollLock:cn.scrollLock,
            deffX:parseInt(cn.deffX),
            deffY:parseInt(cn.deffY)
        }, param);
		param.isSection = (param.section)? true : false;
		param.list = new Array();
		
		//コンテナ設定
		target.each(function(){
			//スナップに指定がある場合
			param.selected = (param.selected)? param.selected : cn.selected;
			target.children().css({'padding':param.deffY + 'px ' + param.deffX + 'px ' + param.deffY + 'px ' + param.deffX + 'px !important'});
			$(param.section, this).each(function(){
				ct = $(this);
				targetX = ct.offset().left - target.offset().left - parseInt(ct.css('margin-left').replace('px',''));
				targetY = ct.offset().top - target.offset().top - parseInt(ct.css('margin-top').replace('px',''));
				width = ct.width() + parseInt(ct.css('margin-left').replace('px',''));
				height = ct.height() + parseInt(ct.css('margin-top').replace('px',''));
				param.list.push({targetX:targetX, targetY:targetY, targetW:width, targetH:height, segment:-ct.width*.5, hash:'#'+ct.attr('id')});
			});
			target.scrollLeft(param.deffX).scrollTop(param.deffY);
			if(param.isFlick){
				$(this).bind(Util.TOUCH_START, param, Util.onTouchScroll);
				$(this).bind('mousedown', param, Util.onTouchScroll);
				if(! Util.isTouch) $(this).bind('click', param, Util.onTouchScroll);
			}
			$(this).bind(Util.FLICK_END, function(e){
				Util.carouselNavi.onComplete(e, $(this).data('current'), param);
			});
		});
		
		//ナビゲーション設定
		var listLen = param.list.length,
			navi = $(param.navi);
		navi.each(function(){
			return $(this).attr('href') != '#';
		}).click(function(e){
			param.hash = $(this).attr('href');
			target.scrollObject(param);
			navi.removeClass(param.selected);
			$(this).addClass(param.selected);
			return false;
		}).filter(':first').trigger('click');
		
		$(param.nextNavi).each(function(){
		}).click(function(e){
			var current = Util.getCurrentCarousel(param.list,target.scrollLeft() , target.scrollTop() ),
				result = (current)?(current < listLen-1)? current+1 : 0 : 1;
			motionX = param.list[result].targetX;
			motionY = param.list[result].targetY;
			target.scrollObject({x:motionX, y:motionY, time:param.time, pxms:param.pxms, ease:param.ease});
			$(param.target).data('current', result);
			Util.carouselNavi.onComplete(e, result, param);
			return false;
		});
		
		$(param.backNavi).each(function(){
		}).click(function(e){
			var current = Util.getCurrentCarousel(param.list,target.scrollLeft() , target.scrollTop() ),
				result = (current)?(current != 0)? current-1 : listLen-1 : listLen-1;
			motionX = param.list[result].targetX;
			motionY = param.list[result].targetY;
			target.scrollObject({x:motionX, y:motionY, time:param.time, pxms:param.pxms, ease:param.ease});
			$(param.target).data('current', result);
			Util.carouselNavi.onComplete(e, result, param);
			return false;
		});
		
	};
	Util.carouselNavi.onComplete = function(e, current, param) {
		var c = Util.carouselNavi, cunt = 0;
		$(param.navi).each(function(){
			if(cunt != current){
				$(this).removeClass(param.selected);
			}else{
				$(this).addClass(param.selected);
			}
			cunt ++;
		});
		
	};
	Util.onTouchScroll = function(e) {
		var u = $.Util,
			type = e.type,
			param = e.data,
			target = $(param.target),
			motionX = 0, motionY = 0, current = 0, pageX, pageY, inW, inH, 
			isNotTouch = /a|img|button/.test(e.target.nodeName.toLowerCase());
			
		consoleLog('onTouchScroll', type+':'+param.ms);
		if(Util.isTouch) {
			//if(type != 'click' || param.ms > 10) e.preventDefault();
			if(!isNotTouch || param.ms > 10) e.preventDefault();
			if(type != Util.TOUCH_END){
				pageX = e.originalEvent.touches[0].pageX;
				pageY = e.originalEvent.touches[0].pageY;
			}
		}else{
			if(type != 'click' || param.ms > 5) e.preventDefault();
			pageX = e.pageX;
			pageY = e.pageY;
		}
		if(type == Util.TOUCH_START){
			//フリックスタート
			clearTimeout(target.data('timer'));
			param.startX = target.scrollLeft();
			param.startY = target.scrollTop();
			param.touchX = param.pageX = pageX;
			param.touchY = param.pageY = pageY;
			param.isTouch = true;
			doc.unbind(Util.TOUCH_END).bind(Util.TOUCH_END, param, Util.onTouchScroll);
			target.unbind(Util.TOUCH_MOVE+ ' '+Util.TOUCH_END)
				.bind(Util.TOUCH_MOVE+ ' '+Util.TOUCH_END, param, Util.onTouchScroll)
				.trigger(u.FLICK_START);
			param.ms = 0;
		}else if(type == Util.TOUCH_MOVE){
			//フリック中
			motionX = param.startX + param.touchX - pageX;
			motionY = param.startY + param.touchY - pageY;
			param.pageX = pageX;
			param.pageY = pageY;
			target.scrollLeft(motionX).scrollTop(motionY)
				.trigger(u.FLICK_MOVE);
			param.ms ++;
		}else if(type == Util.TOUCH_END){
			//フリック終了
			if(! param.isTouch) return false;
			param.isTouch = false;
			doc.unbind(Util.TOUCH_END,param);
			target.unbind(Util.TOUCH_MOVE+ ' '+Util.TOUCH_END);
			motionX = param.touchX-param.pageX;
			motionY = param.touchY-param.pageY;
			if(!param.isSection){
				motionX = target.scrollLeft()+motionX;
				motionY = target.scrollTop()+motionY;
				inW = target.children().width() - target.innerWidth() + param.deffX*2;
				inH = target.children().height() - target.innerHeight() + param.deffY*2;
				motionX = (motionX < param.deffX)? param.deffX : (motionX > inW)? inW : motionX;
				motionY = (motionY < param.deffY)? param.deffY :  (motionY > inH)? inH : motionY;
				target.scrollObject({x:motionX, y:motionY, time:param.time, ease:param.ease});
			}else{
				current = Util.getCurrentCarousel(param.list, target.scrollLeft() + motionX, target.scrollTop() + motionY);
				target.data('current', current);
				motionX = param.list[current].targetX;
				motionY = param.list[current].targetY;
				target.scrollObject({x:motionX, y:motionY, current:current, time:param.time, ease:param.ease});
			}
			target.trigger(u.FLICK_END);
		}
		//return false;
	}
	//getCurrentCarousel
	Util.getCurrentCarousel = function(l, dx, dy){
		var i, list=l, len=list.length, x=0, y=0, w=0, h=0, current= len-1;
		dx = (dx < list[0].targetX)? list[0].targetX : (dx > list[len-1].targetX)? list[len-1].targetX : dx;
		dy = (dy < list[0].targetY)? list[0].targetY : (dy > list[len-1].targetY)? list[len-1].targetY : dy;
		for(i=0; i<len; i++){
			x = list[i].targetX;
			y = list[i].targetY;
			w = list[i].targetW*.5;
			h = list[i].targetH*.5;
			if((x-w < dx && dx < x+w) && (y-h < dy && dy < y+h)) {
				current = i;
				return current;
			}
		}
		return current;
	}
	
	//pageNavi
	Util.module.push(Util.pageNavi);
	Util.pageNavi.initialize = function() {
		var p = Util.pageNavi,
			pageNavi = $(p.selector);
		pageNavi.each(function(){
			return $(this).attr('href') != '#';
		}).click(function(e){
			doc.scrollObject({hash:$(this).attr('href')});
			return false;
		});
	};
	//scrollObject
	$.fn.scrollObject = function (param) {
		var s = Util.scrollObject;
        param = $.extend({
            target:$(this).get(0),
            time:s.time,
			pxms:s.pxms,
			fps:s.fps,
            ease:s.ease
        }, param);
		param.ms = Math.floor(1000 / param.fps);
		param.isWindow = (param.target == document);
		param.isAndroid = Util.isAndroid;
		param.currentTime = 0;
		var target = $(param.target), hash = $(param.hash);
		//座標初期化
		param.startX = param.currentX = target.scrollLeft();
		param.startY = param.currentY = target.scrollTop();
		if(param.x == undefined && param.y == undefined) {
			param.targetX = (param.isWindow)? 
							hash.offset().left : 
							target.scrollLeft() + hash.offset().left - target.offset().left - parseInt(hash.css('margin-left').replace('px',''));
			param.targetY = (param.isWindow)? 
							hash.offset().top : 
							target.scrollTop() + hash.offset().top - target.offset().top - parseInt(hash.css('margin-top').replace('px',''));
		}else{
			param.targetX = param.x;
			param.targetY = param.y;
		}
		param.distX = param.targetX - param.startX;
		param.distY = param.targetY - param.startY;
		//距離可変の時間を算出
		if(param.pxms != 0) {
			var x = (param.distX > 0)? param.distX: -param.distX,
				y = (param.distY > 0)? param.distY: -param.distY,
				dist = (x > y)? x: y;
			param.time = dist*param.pxms;
		}
		//アップデート
		clearTimeout(target.data('timer'));
		target.data('timer', setTimeout(function () { s.updater(param)}, param.ms))
			.trigger(Util.SCROLL_START);
	}
	
	//スクロールアップデータ
	Util.scrollObject.updater = function (p) {
		var s = Util.scrollObject,
			param = p, target = $(param.target), hash=$(param.hash),
			currentX = target.scrollLeft(),
			currentY = target.scrollTop(),
			e = 1;
		if (param.currentTime >= param.time || (param.distX== 0 && param.distY == 0)) {
			//完了
			clearTimeout(target.data('timer'));
			target.scrollLeft(param.targetX)
				.scrollTop(param.targetY)
				.trigger(Util.SCROLL_COMPLETE,param);
			if(param.isWindow && param.hash) location.href = param.hash;
			return false;
		}else{
			//アニメーション中
			var stopDist = param.currentY - currentY;
			stopDist = (stopDist<0)? - stopDist : stopDist;
			if (stopDist > 30 && !param.isAndroid){
				//キャンセル
				clearTimeout(target.data('timer'));
				target.trigger(Util.SCROLL_CHANGE,param);
				return false;
			}
			param.currentTime += param.ms;
			e = param.ease(0, param.currentTime, 0, 1, param.time, 0);
			//X座標
			param.currentX = Math.floor(param.startX + e * param.distX);
			param.currentY = Math.floor(param.startY + e * param.distY);
			target.scrollLeft(param.currentX).scrollTop(param.currentY)
				.data('timer', setTimeout(function () { s.updater(param)}, param.ms));
		}
		//target.trigger(Util.SCROLL_CHANGE);
	}
	
	
	//------------------------------
	//  Accordion
	//------------------------------
	Util.module.push(Util.accordion);
	Util.accordion.option = 'option';
	Util.accordion.initialize = function() {
		var a = Util.accordion;
		$(a.selector).accordion();
	};
	$.fn.accordion = function (param) {
		var container = $(this),
			a = Util.accordion, navi;
        param = $.extend({
			naviSelector:a.naviSelector,
			contentSelector:a.contentSelector,
			defaultOpen:a.defaultOpen,
			naviOpenHover:a.naviOpenHover,
			naviCloseHover:a.naviCloseHover,
			naviOpen:a.naviOpen,
			naviClose:a.naviClose,
			trigger:a.trigger,
			selected:a.selected,
            time:a.time,
            inAnimate:a.inAnimate,
            outAnimate:a.outAnimate,
            ease:Util.ease
        }, param);
		container.each(function(){
			$(param.contentSelector, this).each(function(){
				navi = $(this).prev(param.naviSelector);
				if ($(this).hasClass(param.defaultOpen)) {
					navi.addClass(param.naviClose);
				}else{
					navi.addClass(param.naviOpen);
					$(this).hide();
				}
			});
			$(param.naviSelector, this).each(function(){
				var content = $(this).next(param.contentSelector),
					navi = $(this), option = $(param.option, this);
				navi.bind(Util.HOVER_START, function(e){
						navi.css('cursor','pointer');
						if(content.is(":hidden")){
							navi.addClass(param.naviOpenHover);
						}else{
							navi.addClass(param.naviCloseHover);
						}
				}).bind(Util.HOVER_END, function(e){
						navi.css('cursor',"default")
							.removeClass(param.naviCloseHover).removeClass(param.naviOpenHover);
				}).bind(a.trigger, function(e){
					if(content.is(":hidden")){
						content[param.inAnimate](param.time);
						navi.addClass(param.naviClose).removeClass(param.naviOpen);
					}else{
						content[param.outAnimate](param.time);
						navi.addClass(param.naviOpen).removeClass(param.naviClose);
					}
				});
			});
		});
	}
	
	
	//------------------------------
	//  Tab
	//------------------------------
	//tab
	Util.module.push(Util.tab);
	Util.tab.initialize = function() {
		var t = Util.tab;
		$(t.selector).tab();
	};
	$.fn.tab = function (param) {
		var container = $(this),
			t = Util.tab;
        param = $.extend({
			naviSelector:t.naviSelector,
			trigger:t.trigger,
			time:t.time,
			selected:t.selected,
            time:t.time,
            inAnimate:t.inAnimate,
            outAnimate:t.outAnimate,
            ease:Util.ease
        }, param);
		container.each(function(){
			var navi = $(this).find(param.naviSelector), currentContainer = $(this);
			navi.each(function(){
				var href = $(this).attr("href"),
					contents = $(href);
				$(this).data('href', href)
					.data('container',currentContainer)
					.data('navicontainer',$(param.naviSelector));
				$(href).css({position:'absolute', width:$(href).width()}).hide();
			});
			navi.bind(param.trigger, function(e){
				var current = $(this), href, n, contents, container;
				navi.each(function(){
					n = $(this);
					href = n.data('href');
					container = n.data('container');
					navicontainer = n.data('navicontainer');
					contents = $(href);
					if(current.attr("href") != href){
						//container.stop(true, true);
						contents.stop(true, true)[param.outAnimate](param.time).css({'z-index':'1'});
						n.removeClass(param.selected);
					}else{
						container.animate({'height':parseInt(contents.outerHeight(true)+navicontainer.outerHeight(true))+'px'},param.time);
						contents[param.inAnimate](param.time).css({'z-index':'100'});
						n.addClass(param.selected);
					}
				});
				return false;
			}).filter(':first').trigger(param.trigger);
		}).css({position:'relative'});
	}
	
	
	//------------------------------
	//  Hover
	//------------------------------
	// Hover SwapImage
	/*touchstart*/
	Util.module.push(Util.hoverSwap);
	Util.hoverSwap.initialize = function() {
		var h = Util.hoverSwap;
		$(h.selector).hoverSwap();
	};
	$.fn.hoverSwap = function () {
		var postfix = Util.hoverSwap.postfix;
		$(this).each(function() {
            if (!$(this).attr('src')) return;
            var src = this.src, img = new Image();
            img.src = this.src.replace(/\.\w+$/, postfix + '$&');
			$(this).bind(Util.HOVER_START, function(e){
				$(this).css('cursor','pointer');
				this.src = img.src;
			}).bind(Util.HOVER_END, function(e){
				$(this).css('cursor',"default");
				this.src = src;
			});
        });
        return false;
    }
	
	
	// Hover FadeImage
	Util.module.push(Util.hoverFade);
	Util.hoverFade.initialize = function() {
		var h = Util.hoverFade;
		$(h.selector).hoverFade();
	};
	$.fn.hoverFade = function () {
		var h = Util.hoverFade;
		$(this).each(function() {
			$(this).bind(Util.HOVER_START, function(e){
				$(this).css('cursor','pointer')
					.stop().fadeTo(h.time, h.alpha);
			}).bind(Util.HOVER_END, function(e){
				$(this).css('cursor',"default")
					.stop().fadeTo(h.time, h.defaultAlpa);
			});
        }).fadeTo(0, h.defaultAlpa);
        return false;
    }
	
	// Hover FadeSwapImage
	Util.module.push(Util.hoverFadeSwap);
	Util.hoverFadeSwap.initialize = function() {
		var h = Util.hoverFadeSwap;
		$(h.selector).hoverFadeSwap();
	};
	$.fn.hoverFadeSwap = function () {
		var h = Util.hoverFadeSwap,
			postfix = Util.hoverFadeSwap.postfix;
		$(this).each(function() {
			var navi = $(this);
			navi.parent().css({'display':'block','position':'relative'});
			var swapImg = $('<img style="display:block; position:absolute; top:0px; left:0;" />')
				.attr('src', $(this).attr('src').replace(/\.\w+$/, postfix + '$&'))
				.load(function() {
					navi.wrap('<span style="display:block; position:relative; width:'+parseInt(swapImg.width())+'px; height:'+parseInt(swapImg.height())+'px"></span>')
						.before(swapImg);
					swapImg.css({'position':'absolute','top':'0','left':'0'});
				}).hide();
			navi.before(swapImg);
			navi.parent().css('position','relative');
			navi.parent().bind(Util.HOVER_START, function(e){
				$(this).css('cursor','pointer');
				swapImg.stop().fadeTo(h.time, h.alpha);
				return false;
			}).bind(Util.HOVER_END, function(e){
				$(this).css('cursor',"default");
				swapImg.stop().fadeTo(h.time, h.defaultAlpa);
				return false;
			});
        });
		return false;
    }
	
	// Hover SlideImage
	Util.module.push(Util.hoverSlide);
	Util.hoverSlide.initialize = function() {
		var h = Util.hoverSlide;
		$(h.selector).hoverSlide();
	};
	$.fn.hoverSlide = function () {
		var h = Util.hoverSlide, parent;
		$(this).each(function() {
			parent = $(this).parent();
			$(this).wrap('<div style="position:relative"></div>');
			parent.css('position', 'relative');
			var containerH = parseInt(parent.css("height").replace('px','')),
				containerW = parseInt(parent.css("width").replace('px',''));
			$(this).css({
				'position':'absolute',
				'top':0,
				'left':0
			}).bind(Util.HOVER_START, function(e){
				$(this)
					.css('cursor','pointer')
					.stop().animate({
						top:containerH - parseInt($(this).css("height").replace('px',''))+'px',
						left:containerW - parseInt($(this).css("width").replace('px',''))+'px'
					}, h.time );
			}).bind(Util.HOVER_END, function(e){
				$(this).css('cursor',"default")
					.stop().animate({ top:'0', left:'0' }, h.time );
			});
        });
		return false;
    }
	
	
	//------------------------------
	//  TransitionAnimate
	//------------------------------
	$.fn.TransitionAnimate = function(param, duration, easing, callback){
		if (!param) return this;
		callback = callback? callback:function(){};
		$(this)
			.css('-webkit-transition','all '+duration+' '+easing)
			.unbind('webkitTransitionEnd')
			.bind('webkitTransitionEnd',function(){
				$(this)
					.unbind('webkitTransitionEnd')
					.css('-webkit-transition','');
				callback.apply(this);
			})
			.css(param);
		return false;
	}
	
	
	//------------------------------
	//  導入保留関数
	//------------------------------
	//
	/*
	$.fn.getValue = function(func){
		var obj = $(this), ret, isHidde = obj.is(":hidden");
		if(isHidde) obj.show();
		ret = func();    
		if(isHidde) obj.hide();
		return ret;
	}
	// */
	
	
	//------------------------------
	//  デバック
	//------------------------------
	function consoleLog(name, l){
		if(! Util.isDebug) return false;
		name = (name)? '.'+name : '';
		console.log('Util'+name+':'+l);
	}
	
	

	//------------------------------
	// DOM-READY Initialize
	//------------------------------
	$(function() {
		var i, modules = Util.module, length = Util.module.length;
		for(i=0; i < length; i++){
			var module = modules[i];
			if((module.enable == true || module.enable == 'true') && module.initialize) module.initialize();
		}
	});
	
	
})(jQuery, this);

if (/; CPU.*OS (?:3_2|4_0)/i.test(navigator.userAgent)) {
  (function($) {
      $.fn.offsetOld = $.fn.offset;
      $.fn.offset = function() {var result = this.offsetOld();
        result.top -= window.scrollY;
        result.left -= window.scrollX;
        return result;
      };
  })(jQuery, this);
}
