;jQuery.lpplLibrary || (function($) {


/*
	Wrapper na funkcje setTimeinterval i clearInterval umożliwiający ustawianie
	callbackow wraz z danymi funkcji ktore maja byc przez nia wykorzystane.
	
	przykladowe wywolanie:
	var id = jQuery(document).setTimeout(alert, 1000, "Nastawiłem alerta za jedną sekundę");
	
	wykonanie powyższej mozna przyspieszyc za pomoca:
	jQuery(document).runTimeout(id);
	
	lub przerwac za pomoca
	jQuery(document).clearTimeout(id);
	
*/
var timer_counter = 0;
var timer_data = [];

// rejestruje callback, zwraca jego id  w lokalnej liscie
function __setTimeout(callback, delay, data) {
	var instance = {
		callback: callback,
		delay: delay,
		data: data,
		timeId: setTimeout('jQuery(document).runTimeout('+timer_counter+');',delay)
		};
	timer_data[timer_counter++] = instance;
	return timer_counter.timeId;
}

// uruchamia callback o podanym id
function __runTimeout(id) {
	var timeout_action = timer_data[id];
	if(timeout_action != undefined && typeof( timeout_action.callback ) == 'function') {
		var c = timeout_action.callback;
		c(timeout_action.data);
		timer_data[id] = undefined;
	}
}

// ekwiwalent clearTimeout
function __clearTimeout(id) {
	if(timer_data[id] != undefined) {
		clearTimeout(timer_data[id].timeId);
		timer_data[id] = undefined;
	}
}

// podpina nasz wrapper do jquery
$.fn.extend({ 
	lpplLibrary: true,
	setTimeout: __setTimeout,
	runTimeout: __runTimeout,
	clearTimeout: __clearTimeout
	});


})(jQuery);
