jQuery.fn.slot = function(obj,index,options) {

	this.settings = {
		box: false
	};

	// informace o aktualni aukci
	this.data = false;

	// informace o aktualnim produktu
	this.produktData = false;

	// informace o aktualni aukci
	this.aukceData = false;

	// informace o aktualni aukci ve slotu
	this.slotData = false;

	// Index slotu
	this.slotId = false;

	this.prihazovacData = false;
	this.prihazovacURL = false;
	this.prihazovacProgress = false;
	this.prihazovacStav = false;

	// ID aktualni aukci
	this.id = false;

	// stav zobrazeni slotu
	this.status = 0;
	// 0 - volny
	// 1 - nova neaktivni aukce
	// 2 - aktivni aukce
	// 3 - overovani stavu
	// 4 - ukoncena aukce

	this.guest = false;
	this.s = false;

	this.obj = obj;
	this.html = {};
	this.bid = 0;
	this.bid2 = 0;
	this.timeStr = '00:000:00';

	if (options) {
		jQuery.extend(this.settings, options);
	}

	this.refresh = function() {

		if (this.status != 2) { return true; }

		if (this.s <= 0) {
			//log.info(this.status);
			this.status = 3;
			this.getData();
		}
		this.showData();
	}

	this.getData = function() {
		$.getJSON(this.settings.urlData+this.id+'/',myScope(this.updateData,this));
	}

	this.updateStatus = function(data) {
		if (this.status == 3) { return true; }
		if (this.status == 4) { return true; }
		this.slotData = data;
		this.finish = this.data.finish;
		this.guest = (this.parent.user == 0);
		if (this.slotData.id != this.id) {
			if (this.status == 0) {
				this.id = this.slotData.id;
				this.getData();
				return true;
			}
		}

/*
		if (this.status == 0) {
			this.id = this.slotData.id;
			//this.getData();
			return true;
		}

		this.data = this.slotData;
*/
		if (this.status == 2) {
			this.refresh();
			this.showData();
		}
	}

	this.updateData = function(data) {

		this.data = data;

		$('.chips strong').html(this.data.account);

		this.prihazovacData = data.prihazovac;
		this.produktData = data.produkt;
		this.aukceData = data.aukce;

		this.finish = this.data.finish;
		this.setStatus();
		this.id = this.data.id;

		this.parent.getUpdate();
		this.updateTime();
		//this.refresh();
		this.showData();
	}

	this.setStatus = function() {
		this.status = 0;
		// stale probihajici
		if (this.data.status == 1) {
			this.status = 2;
		}

		// ukoncena
		if (this.data.status >= 2) {
			this.status = 4;
		}

		// nova cekajici na spusteni
		if (this.data.status == 0) {
			this.status = 1;
		}
		return false;
	}

	this.initProdukt = function() {


		if (this.aukceData) {
			this.html.minitime.html(this.aukceData.minitime*this.aukceData.minicip+'s');
			this.html.minichips.html(this.aukceData.minicip);
			this.html.minitype.html(this.aukceData.minitype);
			this.html.miniprice.html(this.parent.currencyMini(this.aukceData.miniprice));
		} else {
			this.html.minitime.html('');
			this.html.minichips.html('');
			this.html.minitype.html('');
			this.html.miniprice.html('');
		}

		if (this.prihazovacData) {
			this.html.prihazovacPouzito.html(this.prihazovacData.pouzito);
		}

		if (this.produktData) {

			this.html.name.html(this.produktData.name);
			this.html.url.attr('href',this.data.url);
			this.html.img.attr('src',this.produktData.img);
			this.html.imgSmall.attr('src',this.produktData.imgSmall);
			this.html.instead.html(this.produktData.price);
			this.html.text.html(this.produktData.text);
		} else {
			this.html.name.html('');
			this.html.url.attr('href','#');
			this.html.img.attr('src',this.parent.settings.emptyImg);
		}
	}

	this.updateTime = function() {
		if (this.status == 2) { 
			this.s = this.parent.getSec(this.finish);
			if (this.s <= 0) {
				//this.refresh();
			} else {
				this.timeStr = this.parent.getTime(this.s);
				this.html.time.html(this.timeStr);
			}
		}
	}

	this.showData = function() {

		if (this.guest) {
			if (this.html.action.text() != this.parent.gs('prihlasit')) {
				this.html.action.html(this.parent.gs('kup_cipy')).attr('href',this.parent.settings.urlGuest);
			}
		} else {
			if (this.data.user) {
				this.html.user.html(this.data.user).removeClass('free');
				if ((this.data.account == 0) && ((this.html.action.text() == this.parent.gs('kup_cipy')) || (this.html.action.text() == this.parent.gs('prihlasit')))) {
				} else {
					this.html.action.html(this.parent.gs('prihod')).attr('href',this.parent.settings.urlAction);
				}
			} else {
				if (this.status == 2) {
					this.html.user.html(this.parent.gs('vyhraj_tuto_aukci')).addClass('free');
				} else {
					this.html.action.html(this.parent.gs('prihod')); //.attr('href',this.parent.settings.urlAction);
				}
			}
		}

		switch (this.status) {

			// 0 - volny
			default:
			case 0:
				$(this.obj).addClass('free').removeClass('close').removeClass('check').removeClass('active').removeClass('new');
				//$('*',this.obj).hide();
			break;

			// 1 - nova neaktivni aukce
			case 1:
				$(this.obj).addClass('new').removeClass('close').removeClass('check').removeClass('active').removeClass('free');

				this.html.action.html(this.parent.gs('kup_cipy'));
				this.initProdukt();
			break;

			// 2 - aktivni aukce
			case 2:
				$(this.obj).addClass('active').removeClass('close').removeClass('check').removeClass('new').removeClass('free');

				//this.html.time.html(this.timeStr);
				this.html.user.html(this.slotData.user);
				this.finish = this.slotData.finish;
				if (this.bid2 != this.slotData.bid) {
					if (typeof this.history == 'object') { 
						this.history.loadData(this.slotData);
					}
					this.bid2 = this.slotData.bid;
					this.bid = this.slotData.bid;
				}
				this.html.bid.html(this.parent.currency(this.slotData.bid));
				if (this.guest) {
					if (this.html.action.text() != this.parent.gs('prihlasit')) {
						this.html.action.html(this.parent.gs('prihod'));
					}
				} else {
					if (this.data.account == 0) {
					} else {
						this.html.action.html(this.parent.gs('prihod'));
					}
				}

				this.initProdukt();
			break;

			// 3 - overovani stavu
			case 3:
				$(this.obj).addClass('check').removeClass('close').removeClass('active').removeClass('new').removeClass('free');
				this.html.time.html(this.parent.gs('overuji'));
				//this.getData();
			break;

			// 4 - ukoncena aukce
			case 4:
				$(this.obj).addClass('close').removeClass('check').removeClass('active').removeClass('new').removeClass('free');

				this.html.user.html(this.data.user);
				this.html.time.html(this.parent.gs('aukce_ukoncena'));

				this.html.action.html('');

				//this.initProdukt();
			break
		}
	}

	this.actionOut = function() {
		if (this.status == 2) {
			if (this.guest) {
				this.html.action.html(this.parent.gs('prihod'));
				return true;
			} else {
				if (this.data.account == 0) { 
					this.html.action.html(this.parent.gs('prihod'));
				}
			}
		}
	}

	this.actionOver = function() {
		if (this.status == 2) {
			if (this.guest) {
				this.html.action.html(this.parent.gs('prihlasit'));
				return true;
			} else {
				if (this.data.account == 0) { 
					this.html.action.html(this.parent.gs('kup_cipy'));
				}
			}
		}
	}

	this.action = function() {
		if (this.status == 2) {
			if (this.guest) {
				return true;
			} else {
				if (this.data.account == 0) { 
					window.location = this.parent.settings.urlGuest;
					return false;
				} else {
					var url = this.settings.urlAction + this.id + '/';
					$.getJSON(url,myScope(this.updateData,this));
				}
			}
		}
		if (this.status == 4) {
			this.status = 0;
			//this.getData();
			this.parent.getUpdate();
			//this.showData();
		}
		return false;
	}


	this.prihazovacDone = function(data) {
		this.prihazovacData = data;
		this.prihazovacProgress = false;
		//this.html.prihazovacMessage.show();
		this.html.prihazovacAction.attr('value',this.parent.gs('Zmenit'));
		//$('input',this.html.prihazovac).attr('disabled','');
		this.prihazovacStav = false;
		if (this.prihazovacData) {
			this.html.prihazovacMin.attr('value',this.parent.currencyValue(this.prihazovacData.min));
			this.html.prihazovacMax.attr('value',this.parent.currencyValue(this.prihazovacData.max));
			this.html.prihazovacCipu.attr('value',this.prihazovacData.cipu);
			this.html.prihazovacPouzito.html(this.prihazovacData.pouzito);
		}
	}


	this.prihazovac = function() {
		if (this.status >= 4) { return false; }
		if (this.prihazovacStav) {
			if (this.prihazovacURL) {
				if (this.prihazovacProgress == false) {
					this.prihazovacProgress = true;
					$('input[type=text]',this.html.prihazovac).attr('disabled','disabled');
					var data = { 
						'min': this.html.prihazovacMin.attr('value'),
						'max': this.html.prihazovacMax.attr('value'),
						'cipu': this.html.prihazovacCipu.attr('value')
					};
					$.getJSON(this.prihazovacURL+this.id+'/',data,myScope(this.prihazovacDone,this));
				}
				return false;
			}
		} else {
			//this.html.prihazovacMessage.hide();
			$('input[type=text]',this.html.prihazovac).attr('disabled','');
			this.prihazovacStav = true;
			this.html.prihazovacAction.attr('value',this.parent.gs('Ulozit_zmeny'));
			return false;
		}

		return true;
	}



	this.init = function () {
		this.slotId = $(this.obj).attr('id');
		this.parent = this.settings.parent;
		this.prihazovacURL = this.settings.urlPrihazovac;
		this.parent.registerSlot(this.slotId,this);
	
		this.html.img = $('.img img',this.obj);
		this.html.imgSmall = $('.img-small img',this.obj);
		this.html.action = $('.action',this.obj);
		this.html.action.click(myScope(this.action,this)).mouseover(myScope(this.actionOver,this)).mouseout(myScope(this.actionOut,this));

		this.html.minitime = $('.minibox-time',this.obj);
		this.html.minichips = $('.minibox-chips',this.obj);
		this.html.minitype = $('.minibox-type',this.obj);
		this.html.miniprice = $('.minibox-price',this.obj);

		this.html.user = $('.user',this.obj);
		this.html.time = $('.expires',this.obj);
		this.html.bid = $('.price',this.obj);
		this.bid = this.html.bid.text();
		this.html.instead = $('.instead span',this.obj);
		this.html.text = $('.text',this.obj);
		this.html.name = $('.aukceName',this.obj);
		this.html.url = $('.aukceURL',this.obj);

		this.html.prihazovac = $('.prihazovac',this.obj);
		this.html.prihazovacMessage = $('.message',this.html.prihazovac);
		this.html.prihazovacMin = $('.prihazovacMin',this.html.prihazovac);
		this.html.prihazovacMax = $('.prihazovacMax',this.html.prihazovac);
		this.html.prihazovacCipu = $('.prihazovacCipu',this.html.prihazovac);
		this.html.prihazovacPouzito = $('.prihazovacPouzito',this.html.prihazovac);
		this.html.prihazovacAction = $('.prihazovacSubmit',this.html.prihazovac);
		this.html.prihazovacAction.click(myScope(this.prihazovac,this));

		this.timer = setInterval(myScope(this.updateTime,this),1000);

		$('#bidHistory').make('history',{ 'slot': this });

		this.showData();
	}

	this.init();

	return this;
};

