Clean
This commit is contained in:
@ -1,387 +0,0 @@
|
||||
/*jslint browser: true, onevar: true, undef: true, nomen: false, eqeqeq: true, bitwise: true, regexp: true, newcap: true, immed: true */
|
||||
|
||||
var smoke = {
|
||||
smoketimeout: [],
|
||||
init: false,
|
||||
zindex: 1000,
|
||||
i: 0,
|
||||
|
||||
bodyload: function(id){
|
||||
var ff = document.createElement('div');
|
||||
ff.setAttribute('id','smoke-out-'+id);
|
||||
/* ff.setAttribute('class','smoke-base'); */
|
||||
ff.className = 'smoke-base';
|
||||
ff.style.zIndex = smoke.zindex;
|
||||
smoke.zindex++;
|
||||
document.body.appendChild(ff);
|
||||
},
|
||||
|
||||
newdialog: function(){
|
||||
var newid = new Date().getTime();
|
||||
newid = Math.random(1,99) + newid;
|
||||
|
||||
// make a new container while you're at it
|
||||
if (!smoke.init){
|
||||
smoke.listen(window,"load", function(){
|
||||
smoke.bodyload(newid);
|
||||
});
|
||||
}else{
|
||||
smoke.bodyload(newid);
|
||||
}
|
||||
|
||||
return newid;
|
||||
},
|
||||
|
||||
forceload: function(){},
|
||||
|
||||
build: function (e, f) {
|
||||
smoke.i++;
|
||||
|
||||
// determine stacking order
|
||||
f.stack = smoke.i;
|
||||
|
||||
e = e.replace(/\n/g,'<br />');
|
||||
e = e.replace(/\r/g,'<br />');
|
||||
|
||||
var prompt = '',
|
||||
ok = 'OK',
|
||||
cancel = 'Cancel',
|
||||
classname = '',
|
||||
buttons = '',
|
||||
box;
|
||||
|
||||
if (f.type === 'prompt'){
|
||||
prompt =
|
||||
'<div class="dialog-prompt">'+
|
||||
'<input id="dialog-input-'+f.newid+'" type="text" ' + (f.params.value ? 'value="' + f.params.value + '"' : '') + ' />'+
|
||||
'</div>';
|
||||
}
|
||||
|
||||
if (f.params.ok){
|
||||
ok = f.params.ok;
|
||||
}
|
||||
|
||||
if (f.params.cancel){
|
||||
cancel = f.params.cancel;
|
||||
}
|
||||
|
||||
if (f.params.classname){
|
||||
classname = f.params.classname;
|
||||
}
|
||||
|
||||
if (f.type !== 'signal'){
|
||||
buttons = '<div class="dialog-buttons">';
|
||||
if (f.type === 'alert'){
|
||||
buttons +=
|
||||
'<button class="btn" id="alert-ok-'+f.newid+'">'+ok+'</button>';
|
||||
} else if (f.type === 'prompt' || f.type === 'confirm'){
|
||||
if (f.params.reverseButtons) {
|
||||
buttons +=
|
||||
'<button class="btn" id="'+f.type+'-ok-'+f.newid+'">'+ok+'</button>' +
|
||||
'<button class="btn" id="'+f.type+'-cancel-'+f.newid+'" class="cancel">'+cancel+'</button>';
|
||||
} else {
|
||||
buttons +=
|
||||
'<button class="btn" id="'+f.type+'-cancel-'+f.newid+'" class="cancel">'+cancel+'</button>'+
|
||||
'<button class="btn" id="'+f.type+'-ok-'+f.newid+'">'+ok+'</button>';
|
||||
}
|
||||
}
|
||||
buttons += '</div>';
|
||||
}
|
||||
|
||||
|
||||
box =
|
||||
'<div id="smoke-bg-'+f.newid+'" class="smokebg"></div>'+
|
||||
'<div class="dialog smoke '+classname+'">'+
|
||||
'<div class="dialog-inner">'+
|
||||
e+
|
||||
prompt+
|
||||
buttons+
|
||||
'</div>'+
|
||||
'</div>';
|
||||
|
||||
if (!smoke.init){
|
||||
smoke.listen(window,"load", function(){
|
||||
smoke.finishbuild(e,f,box);
|
||||
});
|
||||
} else{
|
||||
smoke.finishbuild(e,f,box);
|
||||
}
|
||||
|
||||
},
|
||||
|
||||
finishbuild: function(e, f, box) {
|
||||
|
||||
var ff = document.getElementById('smoke-out-'+f.newid);
|
||||
|
||||
ff.className = 'smoke-base smoke-visible smoke-' + f.type;
|
||||
ff.innerHTML = box;
|
||||
|
||||
while (ff.innerHTML === ""){
|
||||
ff.innerHTML = box;
|
||||
}
|
||||
|
||||
// clear the timeout if it's already been activated
|
||||
if (smoke.smoketimeout[f.newid]){
|
||||
clearTimeout(smoke.smoketimeout[f.newid]);
|
||||
}
|
||||
|
||||
// close on background click
|
||||
// buberdds got rid of this for ie support?
|
||||
smoke.listen(
|
||||
document.getElementById('smoke-bg-'+f.newid),
|
||||
"click",
|
||||
function () {
|
||||
smoke.destroy(f.type, f.newid);
|
||||
if (f.type === 'prompt' || f.type === 'confirm'){
|
||||
f.callback(false);
|
||||
} else if (f.type === 'alert' && typeof f.callback !== 'undefined') {
|
||||
f.callback();
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
// listeners for button actions
|
||||
switch (f.type) {
|
||||
case 'alert':
|
||||
smoke.finishbuildAlert(e, f, box);
|
||||
break;
|
||||
case 'confirm':
|
||||
smoke.finishbuildConfirm(e, f, box);
|
||||
break;
|
||||
case 'prompt':
|
||||
smoke.finishbuildPrompt(e, f, box);
|
||||
break;
|
||||
case 'signal':
|
||||
smoke.finishbuildSignal(e, f, box);
|
||||
break;
|
||||
default:
|
||||
throw "Unknown type: " + f.type;
|
||||
}
|
||||
},
|
||||
|
||||
finishbuildAlert: function (e, f, box)
|
||||
{
|
||||
smoke.listen(
|
||||
document.getElementById('alert-ok-'+f.newid),
|
||||
"click",
|
||||
function () {
|
||||
smoke.destroy(f.type, f.newid);
|
||||
if (typeof f.callback !== 'undefined') {
|
||||
f.callback();
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
// listen for enter key or space, close it
|
||||
document.onkeyup = function (e) {
|
||||
if (!e) {
|
||||
e = window.event;
|
||||
}
|
||||
if (e.keyCode === 13 || e.keyCode === 32 || e.keyCode === 27){
|
||||
smoke.destroy(f.type, f.newid);
|
||||
if (typeof f.callback !== 'undefined') {
|
||||
f.callback();
|
||||
}
|
||||
}
|
||||
};
|
||||
},
|
||||
|
||||
finishbuildConfirm: function (e, f, box)
|
||||
{
|
||||
smoke.listen(
|
||||
document.getElementById('confirm-cancel-' + f.newid),
|
||||
"click",
|
||||
function ()
|
||||
{
|
||||
smoke.destroy(f.type, f.newid);
|
||||
f.callback(false);
|
||||
}
|
||||
);
|
||||
|
||||
smoke.listen(
|
||||
document.getElementById('confirm-ok-' + f.newid),
|
||||
"click",
|
||||
function ()
|
||||
{
|
||||
smoke.destroy(f.type, f.newid);
|
||||
f.callback(true);
|
||||
}
|
||||
);
|
||||
|
||||
// listen for enter key or space, close it & return true, esc will close with false
|
||||
document.onkeyup = function (e){
|
||||
if (!e) {
|
||||
e = window.event;
|
||||
}
|
||||
if (e.keyCode === 13 || e.keyCode === 32){
|
||||
smoke.destroy(f.type, f.newid);
|
||||
f.callback(true);
|
||||
} else if (e.keyCode === 27){
|
||||
smoke.destroy(f.type, f.newid);
|
||||
f.callback(false);
|
||||
}
|
||||
};
|
||||
},
|
||||
|
||||
finishbuildPrompt: function (e, f, box)
|
||||
{
|
||||
var pi = document.getElementById('dialog-input-'+f.newid);
|
||||
|
||||
setTimeout(function () {
|
||||
pi.focus();
|
||||
pi.select();
|
||||
}, 100);
|
||||
|
||||
// events for cancel button
|
||||
smoke.listen(
|
||||
document.getElementById('prompt-cancel-'+f.newid),
|
||||
"click",
|
||||
function () {
|
||||
smoke.destroy(f.type, f.newid);
|
||||
f.callback(false);
|
||||
}
|
||||
);
|
||||
|
||||
// events for "ok" button
|
||||
smoke.listen(
|
||||
document.getElementById('prompt-ok-'+f.newid),
|
||||
"click",
|
||||
function () {
|
||||
smoke.destroy(f.type, f.newid);
|
||||
f.callback(pi.value);
|
||||
}
|
||||
);
|
||||
|
||||
// listen for enter
|
||||
document.onkeyup = function (e) {
|
||||
if (!e) {
|
||||
e = window.event;
|
||||
}
|
||||
|
||||
if (e.keyCode === 13){
|
||||
smoke.destroy(f.type, f.newid);
|
||||
f.callback(pi.value);
|
||||
} else if (e.keyCode === 27){
|
||||
smoke.destroy(f.type, f.newid);
|
||||
f.callback(false);
|
||||
}
|
||||
};
|
||||
},
|
||||
|
||||
finishbuildSignal: function (e, f, box)
|
||||
{
|
||||
smoke.smoketimeout[f.newid] = setTimeout(function () {
|
||||
smoke.destroy(f.type, f.newid);
|
||||
}, f.timeout);
|
||||
},
|
||||
|
||||
|
||||
destroy: function (type,id) {
|
||||
var box = document.getElementById('smoke-out-'+id),
|
||||
okButton = document.getElementById(type+'-ok-'+id),
|
||||
cancelButton = document.getElementById(type+'-cancel-'+id);
|
||||
/* box.setAttribute('class','smoke-base'); */
|
||||
box.className = 'smoke-base';
|
||||
|
||||
|
||||
// confirm/alert/prompt remove click listener
|
||||
if (okButton){
|
||||
smoke.stoplistening(okButton, "click", function(){});
|
||||
document.onkeyup = null;
|
||||
}
|
||||
|
||||
// confirm/prompt remove click listener
|
||||
if (cancelButton){
|
||||
smoke.stoplistening(cancelButton, "click", function(){});
|
||||
}
|
||||
|
||||
smoke.i = 0;
|
||||
box.innerHTML = '';
|
||||
if ( box.parentNode ) {
|
||||
box.parentNode.removeChild( box );
|
||||
}
|
||||
},
|
||||
|
||||
alert: function (e, f, g) {
|
||||
if (typeof f !== 'object'){
|
||||
f = false;
|
||||
}
|
||||
|
||||
var id = smoke.newdialog();
|
||||
|
||||
smoke.build(e, {
|
||||
type: 'alert',
|
||||
callback: g,
|
||||
params: f,
|
||||
newid: id
|
||||
});
|
||||
},
|
||||
|
||||
signal: function (e, f) {
|
||||
if (typeof f === 'undefined'){
|
||||
f = 5000;
|
||||
}
|
||||
|
||||
var id = smoke.newdialog();
|
||||
smoke.build(e, {
|
||||
type: 'signal',
|
||||
timeout: f,
|
||||
params: false,
|
||||
newid: id
|
||||
});
|
||||
},
|
||||
|
||||
confirm: function (e, f, g) {
|
||||
if (typeof g !== 'object'){
|
||||
g = false;
|
||||
}
|
||||
|
||||
var id = smoke.newdialog();
|
||||
smoke.build(e, {
|
||||
type: 'confirm',
|
||||
callback: f,
|
||||
params: g,
|
||||
newid: id
|
||||
});
|
||||
},
|
||||
|
||||
prompt: function (e, f, g) {
|
||||
if (typeof g !== 'object'){
|
||||
g = false;
|
||||
}
|
||||
|
||||
var id = smoke.newdialog();
|
||||
return smoke.build(e,{type:'prompt',callback:f,params:g,newid:id});
|
||||
},
|
||||
|
||||
listen: function (e, f, g) {
|
||||
if (e.addEventListener) {
|
||||
return e.addEventListener(f, g, false);
|
||||
}
|
||||
|
||||
if (e.attachEvent){
|
||||
return e.attachEvent('on'+f, g);
|
||||
}
|
||||
|
||||
return false;
|
||||
},
|
||||
|
||||
stoplistening: function (e, f, g) {
|
||||
if (e.removeEventListener) {
|
||||
return e.removeEventListener("click", g, false);
|
||||
}
|
||||
|
||||
if (e.detachEvent){
|
||||
return e.detachEvent('on'+f, g);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
if (!smoke.init) {
|
||||
smoke.listen(window, "load", function () {
|
||||
smoke.init = true;
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user