/*------------------------------------------------------------------------------
 * SlideBunner on jQuery(jquery-1.3.2.min.js)
 *------------------------------------------------------------------------------
 * @copylight : (C) 2009 H.Takeuchi
 * @author    : H.Takeuchi
 * @version   : ver 1.0.0 (2009.04.01)
 *------------------------------------------------------------------------------
 */
$(document).ready(function()
{
	$(".SlideBanner").each(function(){SlideBanner(this)});
});
var SlideBanner = function(target)
{
	var bannerarea    = $(target);
	var propaties     = bannerarea.attr("rel").split(",");
	var direction     = propaties[0] ? propaties[0] : 'vertical';
	var number        = propaties[1] ? parseInt(propaties[1]) : 5;
	var speed         = propaties[2] ? parseInt(propaties[2]) : 300;
	var nexttrigger   = propaties[3] ? $("#" + propaties[3])  : null;
	var backtrigger   = propaties[4] ? $("#" + propaties[4])  : null;
	var triggerhidden = propaties[5] ? parseInt(propaties[5]) : 0;
	var autoslidetime = propaties[6] ? parseInt(propaties[6]) : null;
	var banner        = {
		w : parseInt(bannerarea.children().eq(0).attr("offsetWidth"))  || 0 ,
		h : parseInt(bannerarea.children().eq(0).attr("offsetHeight")) || 0 ,
		t : parseInt(bannerarea.children().eq(0).css("marginTop"))     || 0 ,
		b : parseInt(bannerarea.children().eq(0).css("marginBottom"))  || 0 ,
		l : parseInt(bannerarea.children().eq(0).css("marginLeft"))    || 0 ,
		r : parseInt(bannerarea.children().eq(0).css("marginRight"))   || 0
	}
	if(triggerhidden != 0 && number >= bannerarea.children().length)
	{
		number = bannerarea.children().length;
		if(backtrigger) backtrigger.css("visibility" , "hidden");
		if(nexttrigger) nexttrigger.css("visibility" , "hidden");
	}
	if(direction === "vertical")
	{
		bannerarea.css({
			height   : banner.t + banner.b + banner.h * number + (banner.t > banner.b ? banner.t : banner.b) * (number - 1) ,
			overflow : "hidden"
		});
		bannerarea.slidespeed  = speed;
		bannerarea.slidelength = {marginTop : - banner.h - banner.t};
		bannerarea.slidemargin = {marginTop : banner.t};
	}
	if(direction === "horizontal")
	{
		var wrapw  = banner.l + banner.r + banner.w * number + (banner.l > banner.r ? banner.l : banner.r) * (number - 1);
		var wraph  = banner.t + banner.b + banner.h;
		var wrapmt = parseInt(bannerarea.css("marginTop"))     || 0;
		var wrapmb = parseInt(bannerarea.css("marginBottom"))  || 0;
		var wrapml = parseInt(bannerarea.css("marginLeft"))    || 0;
		var wrapmr = parseInt(bannerarea.css("marginRight"))   || 0;
		var wrappt = parseInt(bannerarea.css("paddingTop"))    || 0;
		var wrappb = parseInt(bannerarea.css("paddingBottom")) || 0;
		var wrappl = parseInt(bannerarea.css("paddingLeft"))   || 0;
		var wrappr = parseInt(bannerarea.css("paddingRight"))  || 0;
		var wrapf = bannerarea.css("float")                    || "";
		var areaw = banner.l + banner.r + banner.w * (number + 1) + (banner.l > banner.r ? banner.l : banner.r) * number;
		var areah = banner.t + banner.b + banner.h;
		
		bannerarea.wrap('<div style="overflow:hidden;'
			+ 'width:'          + wrapw  + 'px;'
			+ 'heigth:'         + wraph  + 'px;'
			+ 'margin-top:'     + wrapmt + 'px;'
			+ 'margin-bottom:'  + wrapmb + 'px;'
			+ 'margin-left:'    + wrapml + 'px;'
			+ 'margin-right:'   + wrapmr + 'px;'
			+ 'padding-top:'    + wrappt + 'px;'
			+ 'padding-bottom:' + wrappb + 'px;'
			+ 'padding-left:'   + wrappl + 'px;'
			+ 'padding-right:'  + wrappr + 'px;'
			+ 'float:'          + wrapf  + ';'
			+ '">');
		bannerarea.css({
			width    : areaw ,
			height   : areah ,
			margin   : 0 ,
			padding  : 0 ,
			float    : ''
		});
		bannerarea.slidespeed  = speed;
		bannerarea.slidelength = {marginLeft : - banner.w - banner.l};
		bannerarea.slidemargin = {marginLeft : banner.l};
	}
	bannerarea.nextsliding = function()
	{
		bannerarea.stop();
		
		var nextslidingfunction = bannerarea.nextsliding;
		var backslidingfunction = bannerarea.backsliding;
		bannerarea.nextsliding = function(){};
		bannerarea.backsliding = function(){};
		bannerarea.append(this.children().eq(0).clone());
		
		//this.children().css("opacity" , 0.4);
		this.children().eq(0).animate(this.slidelength , {queue:false , duration:this.slidespeed , easing:"swing" , complete:function()
		{
			$(this).css(bannerarea.slidemargin);
			$(this).remove();
			//bannerarea.children().css("opacity" , 1.0);
			bannerarea.nextsliding = nextslidingfunction;
			bannerarea.backsliding = backslidingfunction;
		}});
	}
	bannerarea.backsliding = function()
	{
		bannerarea.stop();
		
		var nextslidingfunction = bannerarea.nextsliding;
		var backslidingfunction = bannerarea.backsliding;
		bannerarea.nextsliding = function(){};
		bannerarea.backsliding = function(){};
		bannerarea.prepend(this.children().eq(this.children().length - 1).clone());
		
		//this.children().css("opacity" , 0.4);
		this.children().eq(0).css(this.slidelength);
		this.children().eq(0).animate(this.slidemargin , {queue:false , duration:this.slidespeed , easing:"swing" , complete:function()
		{
			$(this).css(bannerarea.slidemargin);
			bannerarea.children().eq(bannerarea.children().length - 1).remove();
			//bannerarea.children().css("opacity" , 1.0);
			bannerarea.nextsliding = nextslidingfunction;
			bannerarea.backsliding = backslidingfunction;
		}});
	}
	bannerarea.autosliding = function(autoslidetime)
	{
		nexttrigger.click();
		setTimeout(function(){bannerarea.autosliding(autoslidetime)} , autoslidetime);
	}
	if(autoslidetime)
	{
		setTimeout(function(){bannerarea.autosliding(autoslidetime)} , autoslidetime);
	}
	if(nexttrigger) nexttrigger.css("cursor" , "pointer");
	if(backtrigger) backtrigger.css("cursor" , "pointer");
	if(nexttrigger) nexttrigger.click(function(){bannerarea.nextsliding()});
	if(backtrigger) backtrigger.click(function(){bannerarea.backsliding()});
}