var Question = new Class( {

	initialize : function(question, hint, answers) {
		var self = this;

		self.question = question;
		self.hint = hint;
		self.answers = answers;

		self.createQuestion();
		self.answers.each(function(answer) {
			self.createAnswer(answer);
		})

	},

	createQuestion : function() {
		var self = this;

		self.container = new Element('div.mask.question').adopt(
			new Element('h3', {
				'html': this.question
			}),
			new Element('div.hint', {
				'html': this.hint
			})
		).fade('hide').inject(document.body).fade('in')

	},

	createAnswer : function(options) {
		var self = this;

		var answer = new Element('a', Object.merge(options, {
			'class' : 'answer button '+(options['class'] || '')+(options['cancel'] ? ' cancel' : '')
		})).inject(this.container);

		if (options.cancel) {
			answer.addEvent('click', self.close.bind(self));
		}
		else if (options.request) {
			answer.addEvent('click', function(e){
				e.stop();
				new Request(Object.merge(options, {
					'url': options.href,
					'onComplete': function() {
						(options.onComplete || function(){})();
						self.close();
					}
				})).send();
			});
		}
	},

	close : function() {
		var self = this;
		self.container.fade('out');
		(function(){self.container.destroy()}).delay(1000);
	},

	toElement : function() {
		return this.container;
	}

});
