$(document).ready(function(){

	if ( jQuery.msgRoll ) {
		$(window).scroll(function () { jQuery.messageRoll(); });
		$(window).resize(function () { jQuery.windowResize() });
	}
	
});

jQuery.extend({
	msgRoll: true,
	msgBootRoll: false,
	msgDelay: 4000,
	msgHideDelay: 1000,
	msgPositionTop: 1,
	msgScrollLeft: $(document.documentElement).attr('scrollLeft'),
	
	messageRoll: function() {
		if ( jQuery.msgBootRoll && navigator.appName != 'Microsoft Internet Explorer' ) {
			var mb = $('#bm_message_box');
			var mb1 = document.getElementById('bm_message_box');
			var m  = $('#bm_message');
			var p  = $(document.documentElement);

			mb.css('margin-bottom', '20px');
			
			if ( (GetObjectPosition(mb1, 'TOP') - jQuery.msgPositionTop) <= p.attr('scrollTop') ) {

				yLeft = (mb.attr('offsetWidth') - m.attr('offsetWidth')) / 2 + GetObjectPosition(mb1, 'LEFT') - p.attr('scrollLeft');

				if ( jQuery.msgPositionTop != m.attr('offsetTop')  ) {
					m.css({ display: 'block', top: jQuery.msgPositionTop+'px', left: yLeft+'px', position: 'fixed'});
				}
				else if ( jQuery.msgScrollLeft != p.attr('scrollLeft') )
					jQuery.msgScrollLeft = p.attr('scrollLeft');

				m.css('left', yLeft );
				mb.css('margin-bottom', '20px');
				
				if ( navigator.appName == 'Microsoft Internet Explorer' ) {
					p.attr('scrollTop', '0');
				}
			}

			else if ( m.attr('offsetTop') == jQuery.msgPositionTop ) {
				m.css({ display: 'block', top: '', left: '', position: ''});
			}
		}
	},
	
	windowResize: function() {
		var mb = $('#bm_message_box');
		var m  = $('#bm_message');
		var p  = $(document.documentElement);
	
		if ( (mb.attr('offsetTop') - jQuery.msgPositionTop) <= p.attr('scrollTop') ) {
			yLeft = (mb.attr('offsetWidth') - m.attr('offsetWidth')) / 2 + mb.attr('offsetLeft') - p.attr('scrollLeft');
			m.css('left', yLeft+'px');
		}
	},
	
	bmAlert: function( message, type ) {
		var m  = $('#bm_message');

		( type == 'error' ) ? m.attr('class','bm_message_bad') : m.attr('class','bm_message_good');
		m.html(message);
	
		if ( jQuery.msgRoll && navigator.appName != 'Microsoft Internet Explorer' ) {
			jQuery.msgBootRoll = true;
			m.css('display', 'block');
			m.animate({opacity:'1'}, 300);
	
			if ( jQuery.msgTimeOut ) 
				window.clearTimeout(jQuery.msgTimeOut);
			
			jQuery.msgTimeOut = window.setTimeout("jQuery.bmAlertHide()", jQuery.msgDelay);
			jQuery.messageRoll();
		}
		else {
			var p  = $(document.documentElement);
			var mb1 = document.getElementById('bm_message_box');

			if ( (GetObjectPosition(mb1, 'TOP') - jQuery.msgPositionTop) <= p.attr('scrollTop') ) {
				p.attr('scrollTop', '0');
			}

			m.css('display', 'block');
			m.animate({opacity:'1'}, 300);
	
			if ( jQuery.msgTimeOut ) 
				window.clearTimeout(jQuery.msgTimeOut);
			
			jQuery.msgTimeOut = window.setTimeout("jQuery.bmAlertHide()", jQuery.msgDelay);
			jQuery.messageRoll();
		}
	},
	
	bmAlertHide: function() {
		$('#bm_message').animate({opacity:'0'}, {duration: jQuery.msgHideDelay, complete: function(){
			$('#bm_message_box').css('margin-bottom', '0px');
			$('#bm_message').hide();
			$('#bm_message').html('');
		}});
	}

});

function GetObjectPosition(StartTag, Direction) {
   pixel = (Direction == 'LEFT') 
   				? StartTag.offsetLeft 
   				: StartTag.offsetTop;

   while ((StartTag.tagName != 'BODY') && (StartTag.tagName != 'HTML')) {
      StartTag = StartTag.offsetParent;
      pixel += (Direction == 'LEFT') ? StartTag.offsetLeft : StartTag.offsetTop;
   }

   return pixel;
}

function bmAlert( message, type ) {
	jQuery.bmAlert( message, type );
}