123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- (function($) {
- Drupal.behaviors.betterMessages = {
- attach: function (context) {
- var betterMessages = Drupal.settings.betterMessages;
- var message_box = $('#better-messages-wrapper');
-
- /* jQuery UI Enhancements */
- if (betterMessages.jquery_ui != null) {
- if (betterMessages.jquery_ui.draggable == '1') { message_box.draggable(); }
- }
-
- /* Popup Message handling */
- if (!message_box.hasClass("better-messeges-processed")) {
- /* Functions to determine the popin/popout animation */
- betterMessages.open = function() {
- switch (betterMessages.popin.effect) {
- case 'fadeIn': message_box.fadeIn(betterMessages.popin.duration);
- break;
- case 'slideDown': message_box.slideDown(betterMessages.popin.duration);
- break;
- default: message_box.fadeIn(betterMessages.popin.duration);
- break;
- }
- }
- betterMessages.close = function() {
- switch (betterMessages.popout.effect) {
- case 'fadeOut': message_box.fadeOut(betterMessages.popout.duration);
- break;
- case 'slideUp': message_box.slideUp(betterMessages.popout.duration);
- break;
- default: message_box.fadeOut(betterMessages.popout.duration);
- break;
- }
- message_box.addClass("better-messeges-processed");
- }
- /* Function to determine closing count */
- betterMessages.countDownClose = function(seconds) {
- if(seconds > 0) {
- seconds--;
- if (betterMessages.show_countdown == '1') {
- $('.message-timer').text(Drupal.t('Closing in' + ' ' + seconds + ' ' + Drupal.t('seconds')));
- }
- if(seconds > 0) {
- betterMessages.countDown = setTimeout( function() {betterMessages.countDownClose(seconds);}, 1000 );
- }
- else {
- betterMessages.close();
- }
- }
- }
-
- /* Determine Popup Message position */
- message_box.css('width', betterMessages.width);
- var vertical = betterMessages.vertical; var horizontal = betterMessages.horizontal;
- switch (betterMessages.position) {
- case 'center':
- vertical = ( $(window).height() - message_box.height() ) / 2;
- horizontal = ( $(window).width() - message_box.width() ) / 2;
- message_box.css({"top":vertical + 'px', "left":horizontal + 'px'});
- break;
- case 'tl':
- message_box.css({"top":vertical + 'px', "left":horizontal + 'px'});
- break;
- case 'tr':
- message_box.css({"top":vertical + 'px', "right":horizontal + 'px'});
- break;
- case 'bl':
- message_box.css({"bottom":vertical + 'px', "left":horizontal + 'px'});
- break;
- case 'br':
- message_box.css({"bottom":vertical + 'px', "right":horizontal + 'px'});
- break;
- }
-
- /* Here we control closing and opeing effects and controls */
- if (betterMessages.opendelay != 0) {
- setTimeout( function() {betterMessages.open()}, betterMessages.opendelay * 1000 );
- } else { betterMessages.open(); }
- if (betterMessages.autoclose != 0) {
- betterMessages.countDownClose(betterMessages.autoclose);
- }
- if (betterMessages.hover_autoclose == '1') {
- message_box.hover(function() {
- clearTimeout(betterMessages.countDown);
- $('.message-timer').fadeOut('slow');
- }, function() {
- /* Suggest something to do here! */
- }
- );
- }
- $('a.message-close').click(function() { betterMessages.close(); return false; });
- /* Esc key handler for closing the message. This doesn't work on Safari or Chrome
- See the issue here: http://code.google.com/p/chromium/issues/detail?id=14635
- */
- $(document).keypress(function(e){
- if(e.keyCode==27){
- betterMessages.close();
- return false;
- }
- });
-
- /* Determine Popup Message position for IE6 bug with fixed display */
- if (betterMessages.fixed == '1' && !($.browser.msie && $.browser.version == '6.0')) {
- message_box.css({"position":"fixed"});
- }
- else { /* IE6 handing */
- message_box.css({"position":"absolute"});
- $(window).scroll(function() { message_box.stop().css({top:($(window).scrollTop() + vertical) + 'px'});});
- }
- }
- }
- }
- })(jQuery);
|