if (typeof(LM) == 'undefined') LM = {};


LM.Treasures = new Class({
	slots: [],

	initialize: function() {
		if (!$('treasures')) return false;

		var slots = $$('#thumbnails .column');
		slots.each(function(slot) {
			this.slots.push(slot);
		}.bind(this));

		$('searchforgold').addEvent('click', function(ev) {
			if ($('treasures').hasClass('loading')) return false;
			ev = new Event(ev).stop();

			// set loading + reset
			$('treasures').addClass('loading');
			$$('#thumbnails a').each(function(thumbnail) {
				thumbnail.dispose();
			});
			$('productbars').fade('out');

			var $this = this;
			var search = function() { $this.search() }
			search.delay(100)
		}.bind(this))
	},

	search: function() {
		// ev = new Event(ev).stop();

		var searchform = $('searchforgold').getParent();
		var formaction = searchform.getProperty('action');
		var selectValue = searchform.getElement('select').get('value');

		var req = new Request.HTML({url:formaction,
			onSuccess:function(html) {
				this.parse.delay(600, this, html);
			}.bind(this),
			onFailure: function() {
				var error = new Element('p', {'html':'There was an error. Please try again.'})
				$('treasures').appendChild(error);
			}
			
		});
		var dateTime = new Date().getTime();
		req.get({'scale':selectValue, 'cache':dateTime});
	},
	
	parse: function(html) {
		if (html.length === 0) this.search();

		var div = new Element('div');
		div.adopt(html);

		var thumbnails = div.getElements('td.thumbnail a');

		this.slots.each(function(slot, i) {
			var currentThumbnail = slot.getElement('a');
			if (currentThumbnail) currentThumbnail.dispose();
			thumbnails[i].clone().inject(slot);
		});

		$('productbars').empty();
		$('productbars').adopt(div);
		$('productbars').fade('in');

		$('treasures').removeClass('loading');
	}
});

window.addEvent('domready', function() {
	var treasures = new LM.Treasures();
}); // window.addEvent