/**
 * @fileoverview Dr��ce obrazki.
 *
 * @example
 *		<img src="foto.jpg" alt=""
 *		onmouseover="ShakeImage.init(this);" onmouseout="ShakeImage.stop(this);" />
 *
 * @version 0.1 2005/07/05
 */

Import('myLib/util/Random.js');

/**
 * @constructor
 */
function ShakeImage(){};

ShakeImage.left = 0;
ShakeImage.top = 0;

/**
 * Odst�p czasu pomi�dzy kt�rym dochodzi do przesyni�� obrazka.
 * @type	Number
 * @public
 */
ShakeImage.offset = 50;

/**
 * Wielko�� przesuni�cia obrazka. Domy�lnie 2px.
 * @type	Number
 * @public
 */
ShakeImage.rector = 1;

/**
 * Okre�la kiedy ma doj�� do zatrzymania wykonania operacji.
 * @type	Boolean
 * @private
 */
ShakeImage.stopIt = true;

ShakeImage.timeoutId = null;

/**
 * Inicjuje wykonanie operacji.
 * @public
 * @param	Object	Objekt reprezentuj�cy obrazek.
 * @return	void
 */
ShakeImage.init = function(image){
	ShakeImage.stopIt = false;
	
	//var image = document.getElementById(id);
	ShakeImage.left = parseInt(image.style.left);
	ShakeImage.top = parseInt(image.style.top);

	var id = image.getAttribute('id');
	if(id == null || id == ''){
		id = Random.string(10);
		image.setAttribute('id', id);
	}

	ShakeImage.start(id, 1);
};

/**
 * Rozpoczyna operacj�.
 * @private
 * @param	String	Id obrazka.
 * @param	Number	Kierunek ruchu obrazka.
 * @return	void
 */
ShakeImage.start = function(id, direction){
	if(ShakeImage.stopIt){
		return;
	}

	var image = document.getElementById(id);
	//var direction = Random.scope(1, 4);

	if(direction == 1){
		image.style.top = (parseInt(ShakeImage.top) + ShakeImage.rector) + 'px';
	}
	else if(direction == 2){
		image.style.left = (parseInt(ShakeImage.left) + ShakeImage.rector) + 'px';
	}
	else if(direction == 3){
		image.style.top = (parseInt(ShakeImage.top) - ShakeImage.rector) + 'px';
	}
	else if(direction == 4){
		image.style.left = (parseInt(ShakeImage.left) - ShakeImage.rector) + 'px';
	}

	direction = (direction < 4) ? direction + 1 : 1;

	ShakeImage.timeoutId = setTimeout('ShakeImage.start(\'' + id + '\', ' + direction + ')', ShakeImage.offset);
};

/**
 * Zatrzymuje operacj�.
 * @public
 * @param	Object	Objekt reprezentuj�cy obrazek.
 * @return	void
 */
ShakeImage.stop = function(image){
	clearTimeout(ShakeImage.timeoutId);
	ShakeImage.stopIt = true;
	ShakeImage.reset(image);
};

/**
 * Resetuje po�o�enie obrazka.
 * @private
 * @param	Object	Objekt reprezentuj�cy obrazek.
 * @return	void
 */
ShakeImage.reset = function(image){
	image.style.left = ShakeImage.left + 'px';
	image.style.top = ShakeImage.top + 'px';
};
