(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 seconds', {'!seconds': 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);