1
0
Fork 0
mirror of https://github.com/Oreolek/ifhub.club.git synced 2024-07-08 01:14:24 +03:00
ifhub.club/application/frontend/skin/developer/components/ls-vendor/notifier/jquery.notifier.js
Denis Shakhov 42321428f8 Компоненты ls-core и ls-vendor
* Перенесены либы из фреймворка
2014-10-24 20:26:11 +07:00

111 lines
2.4 KiB
JavaScript

(function($){$.extend({
notifier: {
options: {
core: "notifier",
box_class: "n-box",
notice_class: "n-notice",
error_class: "n-error",
close_class: "n-close",
duration: 4000
},
notices:{},
broadcast: function(title, message, type){
this.core();
var id = "notice-" + this.timestamp();
// set notices object
this.notices[id] = {id: id};
notice = {
id: id,
ttl: title,
msg: message
}
// box
$("#" + this.options.core).append(this.box(notice).addClass(type));
},
notice: function(title, message){
this.broadcast(title, message, this.options.notice_class);
},
error: function(title, message){
this.broadcast(title, message, this.options.error_class);
},
core: function(){
var core = this.options.core;
return $("#" + core).length == 0 ? $('body').append("<div id=\"" + core + "\"></div>") : $("#" + core);
},
box: function(notice){
var box = $("<div id=\"" + notice.id + "\" class=\"" + this.options.box_class + "\"></div>");
if (notice.ttl != null) box.append($("<h3></h3>").append(notice.ttl));
box.append($("<p></p>").append(notice.msg));
box.hide().show();
this.life(box, notice.id);
this.events(box, notice.id);
return box;
},
events: function(box, seed){
$(box).bind(
'click',
function(){
var seed = $(this).attr("id");
$.notifier.destroy(seed, true);
}
)
$(box).bind(
'mouseover',
function(){
if($.notifier.notices[$(this).attr("id")].interval){
var seed = $(this).attr("id");
$.notifier.destroy(seed)
}
}
)
$(box).bind(
'mouseout',
function(){
$.notifier.life(this, $(this).attr("id"));
}
)
},
life: function(box, seed){
if(!this.notices[seed].duration){this.notices[seed].duration = this.options.duration}
this.notices[seed].interval = {};
this.notices[seed].interval = setInterval(
function(){
(function(seed){
$.notifier.destroy(seed, true)
})
(seed)
},
this.notices[seed].duration
)
},
destroy: function(seed, remove){
clearInterval($.notifier.notices[seed].interval);
delete $.notifier.notices[seed].interval;
if(remove == true){$("#" + seed).slideUp(250, function(){$(this).remove()});}
},
timestamp:function(){
return new Date().getTime();
}
}
})})(jQuery)