
//=================================================================
// FlyBtn 
// Copyright (c) phpkobo.com ( http://www.phpkobo.com/ )
// Email : admin@phpkobo.com
//=================================================================

//---------------------------------------------------------------
// preLoadImages
//---------------------------------------------------------------

jQuery.preLoadImages(
	"mod/flybtn/images/bg_move.png",
	"mod/flybtn/images/bg_static.png",
	"mod/flybtn/images/tl.png",
	"mod/flybtn/images/bl.png",
	"mod/flybtn/images/tr.png",
	"mod/flybtn/images/br.png",
	"mod/flybtn/images/ts.png",
	"mod/flybtn/images/rs.png",
	"mod/flybtn/images/bs.png",
	"mod/flybtn/images/ls.png"
);

//---------------------------------------------------------------
// jFlyButton
//---------------------------------------------------------------
;(function($) {

	var defaults = {
	};

	var dxx = 10;
	var dyy = 10;

	$.fn.jFlyButton = function( settings ) {

		var me = this;

		//-- Methods
		$.extend( this, {

			move : function()
			{
				var bgmove = me.bgmove;
				var xy = bgmove.offset();

				var xy_parent = me.flybtn.offset();
				xy.left -= xy_parent.left;
				xy.top -= xy_parent.top;

				var w = me.flybtn.width();
				var h = me.flybtn.height();

				var max = 2;
				var b_found = false;
				var i = 0;
				while( !b_found && i < max )
				{
					if ( me.mode_x == 0 )
					{
						dx = -dxx;
						dy = 0;
						if ( xy.left + dx <= -bgmove.width() + w )
						{
							me.mode_x = 1;
						}
						else
						{
							b_found = true;
							xy.left += dx;
						}
					}
					else
					{
						dx = dxx;
						dy = 0;
						if ( 0 < xy.left + dx )
						{
							me.mode_x = 0;
						}
						else
						{
							b_found = true;
							xy.left += dx;
						}
					}
					i++;
				}

				b_found = false;
				i = 0;
				while( !b_found && i < max )
				{
					if ( me.mode_y == 0 )
					{
						dx = 0;
						dy = -dyy;
						if ( xy.top + dy < -bgmove.height() + h )
						{
							me.mode_y = 1;
						}
						else
						{
							b_found = true;
							xy.top += dy;
						}
					}
					else
					{
						dx = 0;
						dy = dyy;
						if ( 0 < xy.top + dy )
						{
							me.mode_y = 0;
						}
						else
						{
							b_found = true;
							xy.top += dy;
						}
					}
					i++;
				}

				xy.left += xy_parent.left;
				xy.top += xy_parent.top;
				bgmove.offset({ left : xy.left, top : xy.top } );

				var bgstatic = me.bgstatic;
				var c = new RGBColor( bgstatic.css( 'color' ) );
				var c_lower = 0x40;
				var c_upper = 0xc0;

				c.r += me.dc_r;
				c.g += me.dc_g;
				c.b += me.dc_b;

				if ( c.r > c_upper )
				{
					c.r = c_upper;
					me.dc_r = -me.dc_r;
				}
				else if ( c.r < c_lower )
				{
					c.r = c_lower;
					me.dc_r = -me.dc_r;
				}

				if ( c.g > c_upper )
				{
					c.g = c_upper;
					me.dc_g = -me.dc_g;
				}
				else if ( c.g < c_lower )
				{
					c.g = c_lower;
					me.dc_g = -me.dc_g;
				}

				if ( c.b > c_upper )
				{
					c.b = c_upper;
					me.dc_b = -me.dc_b;
				}
				else if ( c.b < c_lower )
				{
					c.b = c_lower;
					me.dc_b = -me.dc_b;
				}

				bgstatic.css( 'color', c.toHex() );
			}

		});

		//-- Properties
		$.extend( this, defaults, settings );

		//-- Init
		me.mouseenter( function(){
			me.flybtn = $(this);

			me.mode_x = 0;
			me.mode_y = 0;

			me.dc_r = 10;
			me.dc_g = 10;
			me.dc_b = 10;

			me.bgstatic = $(this).children('.flybtn_bgstatic');
			me.bgstatic_bgimage = me.bgstatic.css( 'background-image' );
			me.bgstatic_color = me.bgstatic.css( 'color' );

			me.bgstatic.css( 'background', '' );
			var xy = me.flybtn.offset();

			me.bgmove = $(this).children('.flybtn_bgmove');
			me.bgmove.offset({ left : xy.left, top : xy.top });
			me.intervalID = window.setInterval( me.move, 100 );
		});

		me.mouseleave( function() {
			window.clearInterval( me.intervalID );
			me.bgstatic.css( 'background', me.bgstatic_bgimage );
			me.bgstatic.css( 'color', me.bgstatic_color );
		});

		me.click( function() {
			var url = $(this).children( '.flybtn_url' ).html();
			window.location = url;
		});

		return this;
	};
})(jQuery);


