
// Fade In Content Viewer: By JavaScript Kit: http://www.javascriptkit.com

(function($){ // jQuery.noConflict用記述
$(document).ready(function() {
	fadecontentviewer.init('fadeImgBox', 'fadeImg', 'fadeNav', 0, 1000);
});

var pageVal = '0';
var pageFix = '0';
var fadecontentviewer={
	csszindex: 100,
	fade:function($allcontents, togglerid, selected, speed){
		var selected = parseInt(selected);
		var $togglerdiv = $('#'+togglerid);
		var $target = $allcontents.eq(selected);
		if ($target.length==0){ //if no content exists at this index position (ie: stemming from redundant pagination link)
			alert('No content exists at page number '+selected+'!');
			return;
		}
		if ($togglerdiv.attr('lastselected')==null || parseInt($togglerdiv.attr('lastselected'))!=selected){
			var $toc = $('#'+togglerid+' .toc');
			var $selectedlink = $toc.eq(selected);
			$('#'+togglerid+' .next').attr('nextpage', (selected<$allcontents.length-1)? selected+1+'pg' : 0+'pg');
			$('#'+togglerid+' .prev').attr('previouspage', (selected==0)? $allcontents.length-1+'pg' : selected-1+'pg');
			$target.css({zIndex: this.csszindex++, visibility: 'visible'});
			$target.hide();
			$target.fadeIn(speed);
			$toc.removeClass('selected');
			$selectedlink.addClass('selected');
			$togglerdiv.attr('lastselected', selected+'pg');
		}
	},

	setuptoggler:function($allcontents, togglerid, speed, contentsSumVal){
		switchFlg = true;
		var $fadeImg = $('.fadeImg');
		var $toc = $('#'+togglerid+' .toc');
		var $fadeImgBtn = $('#fadeImgBtnWrap');
		$fadeImgBtn.find('div').css('top','20px');;
		$toc.each(function(index){
				$(this).attr('pagenumber', index+'pg');
		});
		var $next = $('#'+togglerid+' .next');
		var $prev = $('#'+togglerid+' .prev');
		$next.click(function(){
			clearInterval(autoSet);
			fadecontentviewer.fade($allcontents, togglerid, $(this).attr('nextpage'), speed);
			numNext = $(this).attr('nextpage').substring(0,1);
			if(numNext >= 1){
				numNext--;
			}else if(numNext==0){
				numNext = contentsSumVal;
			}
			pageVal = numNext;
			autoSet = setInterval(function(){fadecontentviewer.autoSlide($allcontents, togglerid, speed, contentsSumVal)}, 5000);
			return false;
		});
		$prev.click(function(){
			clearInterval(autoSet);
			fadecontentviewer.fade($allcontents, togglerid, $(this).attr('previouspage'), speed);
			numPrev = $(this).attr('previouspage').substring(0,1);
			if(pageVal < contentsSumVal){
				pageVal++;
			}else if(pageVal == contentsSumVal){
				pageVal = 0;
			}
			pageVal = numPrev;
			autoSet = setInterval(function(){fadecontentviewer.autoSlide($allcontents, togglerid, speed, contentsSumVal)}, 5000);
			return false;
		});
		$toc.click(function(){
			clearInterval(autoSet);
			fadecontentviewer.fade($allcontents, togglerid, $(this).attr('pagenumber'), speed);
			numPage = $(this).attr('pagenumber').substring(0,1);
			pageVal = numPage;
			autoSet = setInterval(function(){fadecontentviewer.autoSlide($allcontents, togglerid, speed, contentsSumVal)}, 5000);
			return false;
		});
		$fadeImg.hover(function(e){
			switchFlg = false;
			$positionFlgObj = $(this);
			var $myObj = $('#fadeImgBtnWrap div').eq(pageVal);
			if(!$myObj.find('img').attr('class').match(/selected/)){
				fadecontentviewer.tipSlide($myObj, 'up', 100);
			}
			return false;
		},function(e){
			switchFlg = true;
			$positionFlgObj = $(this);
			var $myObj = $('#fadeImgBtnWrap div').eq(pageVal);
			if(!fadecontentviewer.positionFlg(e.pageX, e.pageY)){
				fadecontentviewer.tipSlide($myObj, 'down', 150);
			}
			return false;
		});
		$fadeImgBtn.hover(function(e){
			switchFlg = false;
			var $myObj = $('#fadeImgBtnWrap div').eq(pageVal);
			if(!$myObj.find('img').attr('class').match(/selected/)){
				fadecontentviewer.tipSlide($myObj, 'up', 100);
			}
			return false;
		},function(e){
			switchFlg = true;
			var $myObj = $('#fadeImgBtnWrap div').eq(pageVal);
			if(!fadecontentviewer.positionFlg(e.pageX, e.pageY) && $myObj.find('img').attr('class').match(/selected/)){
				fadecontentviewer.tipSlide($myObj, 'down', 150);
			}
			return false;
		});
	},

	tipSlide:function(obj, flg, speed){
		if(flg.match(/up/)){
			obj.animate({'top': '0px'}, speed, function(){
				obj.find('img').addClass('selected');
			});
		}else{
			obj.animate({'top': '20px'}, speed, function(){
				obj.find('img').removeClass('selected');
			});
		}
	},

	positionFlg:function(x, y){
		var iAreaXa = $positionFlgObj.offset().left;
		var iAreaXb = $positionFlgObj.offset().left + $positionFlgObj.width();
		var iAreaYa = $positionFlgObj.offset().top;
		var iAreaYb = $positionFlgObj.offset().top + $positionFlgObj.height();
		if(iAreaXa<x && iAreaXb>x && iAreaYa<y && iAreaYb>y){
			return true;
		}
	},

	autoSlide:function($allcontents, togglerid, speed, contentsSumVal){
		if(switchFlg){
			if(pageVal < contentsSumVal){
				pageVal++;
			}else if(pageVal == contentsSumVal){
				pageVal = 0;
			}
			fadecontentviewer.fade($allcontents, togglerid, pageVal, speed);
		}
	},

	init:function(fadeid, contentclass, togglerid, selected, speed){
		// contents count
		var classname = 'fadeImg';
		var contentsSum = $('.fadeImg').length;
		contentsSumVal = new String(contentsSum);
		contentsSumVal--;
		var faderheight = $('#'+fadeid).height();
		var $fadecontents = $('#'+fadeid+' .'+contentclass);
		$fadecontents.css({top: 0, left: 0, height: faderheight, visibility: 'hidden'});
		fadecontentviewer.setuptoggler($fadecontents, togglerid, speed, contentsSumVal);
		setTimeout(function(){fadecontentviewer.fade($fadecontents, togglerid, selected, speed)}, 100);
		$(window).bind('unload', function(){ //clean up
			$('#'+togglerid+' .toc').unbind('click');
			$('#'+togglerid+' .next', '#'+togglerid+' .prev').unbind('click');
		});
		autoSet = setInterval(function(){fadecontentviewer.autoSlide($fadecontents, togglerid, speed, contentsSumVal)}, 6000);
	}
}
})(jQuery); // jQuery.noConflict用記述
