You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
81 lines
1.5 KiB
81 lines
1.5 KiB
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)
|
|
})
|
|
self.createMask()
|
|
|
|
},
|
|
|
|
createMask : function() {
|
|
var self = this
|
|
|
|
$(document.body).mask( {
|
|
'hideOnClick' : true,
|
|
'destroyOnHide' : true,
|
|
'onHide' : function() {
|
|
self.container.destroy();
|
|
}
|
|
}).show();
|
|
},
|
|
|
|
createQuestion : function() {
|
|
|
|
this.container = new Element('div', {
|
|
'class' : 'question'
|
|
}).adopt(
|
|
new Element('h3', {
|
|
'html': this.question
|
|
}),
|
|
new Element('div.hint', {
|
|
'html': this.hint
|
|
})
|
|
).inject(document.body)
|
|
|
|
this.container.position( {
|
|
'position' : 'center'
|
|
});
|
|
|
|
},
|
|
|
|
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,
|
|
'onSuccess': function() {
|
|
(options.onSuccess || function(){})()
|
|
self.close();
|
|
}
|
|
})).send();
|
|
});
|
|
}
|
|
},
|
|
|
|
close : function() {
|
|
$(document.body).get('mask').destroy();
|
|
},
|
|
|
|
toElement : function() {
|
|
return this.container
|
|
}
|
|
|
|
})
|
|
|