function pfade(id, time, delay) {
	this.obj = $('#'+id);
	this.timeout = null;
	this.overFlag = false;
	this.intval = time ? time : 4000;
	this.delay = delay ? delay : 0;

	this.init = function() {
		var rand = Math.floor((Math.random()*10)) % $('ul.slider li', this.obj).length;

		$('ul.slider li', this.obj).removeClass('highlight');
		$('ul.slider li', this.obj).eq(rand).addClass('highlight');
		this.sync($('ul.slider li', this.obj).eq(rand)[0]);

		$('.slider_button .prev', this.obj).bind('click', {obj:this}, function(e) {
			if(e.data.obj.timeout) clearTimeout(e.data.obj.timeout);
			e.data.obj.prev();
			return false;
		});
		$('.slider_button .next', this.obj).bind('click', {obj:this}, function(e) {
			if(e.data.obj.timeout) clearTimeout(e.data.obj.timeout);
			e.data.obj.next();
			return false;
		});

		$('.pagination a', this.obj).bind('click', {obj:this}, function(e) {
			var _this = this;
			var pos = 0;
			$('.pagination a', this.obj).each(function(i) {
				if(this == _this) {
					pos = i;
				}
			});

			if(e.data.obj.timeout) clearTimeout(e.data.obj.timeout);
			e.data.obj.chg(pos);

			return false;
		});

		$(this.obj).bind('mouseenter', {obj:this}, function(e) {
			e.data.obj.overFlag = true;
			if(e.data.obj.timeout) clearTimeout(e.data.obj.timeout);
		});
		$(this.obj).bind('mouseleave', {obj:this}, function(e) {
			e.data.obj.overFlag = false;
			e.data.obj.initTime(intval);
		});

		var intval = this.intval + this.delay;
		this.initTime(intval);
	};

	this.initTime = function(intval) {
		if(this.overFlag) {
			return false;
		}

		var _this = this;
		var intval = intval ? intval : _this.intval;
		$(document).ready(function() {
			_this.timeout = setTimeout(function() { _this.next(_this); }, intval);
		});
	};

	this.next = function() {
		var c = $('ul.slider li.highlight', this.obj);
		var n = this.getNext();

		this.fade(c, n);
	};

	this.prev = function() {
		var c = $('ul.slider li.highlight', this.obj);
		var p = this.getPrev();

		this.fade(c, p);
	};

	this.chg = function(pos) {
		var c = $('ul.slider li.highlight', this.obj);
		var p = $('ul.slider li:eq('+pos+')', this.obj);

		this.fade(c, p);
	};

	this.fade = function(before, after) {
		$(before).css('z-index', 1);
		$(after).css('z-index', 2).fadeIn('slow', function() {
			$(before).hide().removeClass('highlight');
			$(this).addClass('highlight');
		});

		this.sync(after[0]);
		this.initTime();
	};

	this.sync = function(after) {
		if($('.pagination', this.obj).length > 0) {
			for(var i=0; i<$('ul.slider li', this.obj).length; i++) {
				if($('ul.slider li:eq('+i+')', this.obj)[0] == after) {
					break;
				}
			}

			$('.pagination li', this.obj).removeClass('highlight');
			$('.pagination li:eq('+i+')', this.obj).addClass('highlight');
		}
	};

	this.getNext = function() {
		var next = $('ul.slider li.highlight', this.obj).next();
		if(next.length < 1) {
			next = $('ul.slider li', this.obj).first();
		}

		return next;
	};

	this.getPrev = function() {
		var prev = $('ul.slider li.highlight', this.obj).prev();
		if(prev.length < 1) {
			prev = $('ul.slider li', this.obj).last();
		}

		return prev;
	};

	this.init();
}
