var G = OZ.Class();
G.prototype.init = function() {
	var thumbs = OZ.$("thumbnails");
	if (!thumbs) { return; }
	
	OZ.Event.add(thumbs, "click", this.bind(this._click));
	
	this._dom = {
		first: OZ.$("first"),
		prev: OZ.$("prev"),
		next: OZ.$("next"),
		last: OZ.$("last"),
		image: OZ.$("image").getElementsByTagName("img")[0],
		images: []
	}
	
	thumbs = thumbs.getElementsByTagName("img");
	for (var i=0;i<thumbs.length;i++) { this._dom.images.push(thumbs[i]); }
	
	this._index = 0;
	
	for (var i=0;i<this._dom.images.length;i++) {
		var image = this._dom.images[i];
		if (OZ.DOM.hasClass(image, "active")) { 
			this._index = i;
		}
	}
	this._show(this._index);
	
	OZ.Event.add(this._dom.first, "click", this.bind(this._first));
	OZ.Event.add(this._dom.prev, "click", this.bind(this._prev));
	OZ.Event.add(this._dom.next, "click", this.bind(this._next));
	OZ.Event.add(this._dom.last, "click", this.bind(this._last));
	OZ.Event.add(this._dom.image, "click", this.bind(this._next));
	
	OZ.Event.add(document, "keydown", this.bind(this._keydown));
	
}

G.prototype._keydown = function(e) {
	if (e.keyCode == 37) {
		this._prev(e);
	} else if (e.keyCode == 39) {
		this._next(e);
	}
}

G.prototype._click = function(e) {
	var thumb = OZ.Event.target(e);
	var index = this._dom.images.indexOf(thumb);
	this._show(index);
}

G.prototype._show = function(index) {
	this._index = index;
	var thumb = this._dom.images[index];
	
	var win = OZ.DOM.win();
	var name = (win[1] >= 800 ? "large" : "middle");
	
	var src = thumb.src.replace("/small/", "/"+name+"/");
	this._dom.image.src = src;
	
	var thumbs = OZ.$("thumbnails");
	var w = Math.round(thumb.offsetWidth/2);
	var port = Math.round(OZ.DOM.win()[0]/2);
	var left = OZ.DOM.pos(thumb)[0] + w;
	thumbs.scrollLeft += left-port;
	
	this._dom.first.disabled = (this._index == 0);
	this._dom.prev.disabled = (this._index == 0);
	this._dom.next.disabled = (this._index + 1 == this._dom.images.length);
	this._dom.last.disabled = (this._index + 1 == this._dom.images.length);
}

G.prototype._first = function(e) {
	this._show(0);
}

G.prototype._prev = function(e) {
	if (!this._index) { return; }
	this._show(this._index-1);
}

G.prototype._next = function(e) {
	if (this._index+1 == this._dom.images.length) { return; }
	this._show(this._index+1);
}

G.prototype._last = function(e) {
	this._show(this._dom.images.length-1);
}

new G();
