(function($){
	$.jMessage = {
		defaults: {  
			jMessageTitle: "Error",
			bg: "#333333",
			opacity: 0.7
		}  
	};
	$.jMessageShow = {
		defaults: {
			msg: "",
			vfade : 500,
			vscroll : 1000,
			opacity : 1,
			accept : function(){},
			cancel : function(){},
			baccept : true,
			bcancel : true
		}
	}
	var configBg;
	var configObject;
	$.fn.jMessage = function(config){
		configBg = $.extend({}, $.jMessage.defaults, config);
		var jMessageBg = "<div id='jMessageBg'>&nbsp;</div>";
		$('body').prepend(jMessageBg);
		var jMessageObject = $(this).html();
		$(this).remove();
		$('body').prepend("<div id='jMessageObject'></div>");
		$('#jMessageObject').prepend(jMessageObject);
		jMessageObjectPosition($('#jMessageObject'),configObject,false);
	}
	$.fn.jMessageShow = function(config){
		configObject = $.fn.extend({}, $.jMessageShow.defaults, config);
		var object = this;
		$(window).unbind('scroll');
		$(window).bind("scroll", function(){ 
			jMessageObjectPosition(object,configObject,true);
		});
		$(window).unbind('resize');
		$(window).bind("resize", function(){
			jMessageBgResize(configBg);
			jMessageObjectPosition(object,configObject,true);
		});
		var id = $(object).attr('id');
		$('#' + id + ' .jMessageBtnAcp').unbind('click');
		$('#' + id + ' .jMessageBtnAcp').bind('click',function(){
			configObject.accept.call();
			return false;
		});
		$('#' + id + ' .jMessageBtnCan').unbind('click');
		$('#' + id + ' .jMessageBtnCan').click(function(){
			configObject.cancel.call();
			hidejMessage(object);
			return false;
		});
		(configObject.baccept)?$('#' + id + ' .jMessageBtnAcp').show():$('#' + id + ' .jMessageBtnAcp').hide();
		(configObject.bcancel)?$('#' + id + ' .jMessageBtnCan').show():$('#' + id + ' .jMessageBtnCan').hide();
		jMessageBgResize(configBg);
		$('#jMessageBg').fadeIn(configObject.vfade,function(){
			$(object).css({top:'-' + $(this).height()*1.5,opacity:configObject.opacity});
			$(object).show();
			jMessageObjectPosition(object,configObject,true);
		});
	}
	function jMessageObjectPosition(object,config,execute){
		var hobj = $(object).height();
		var dtop = ($(window).scrollTop()   + ($(window).height() - hobj) / 2);
		if(execute){
			var id = $(object).attr('id');
			$('#' + id + ' .jMessageMsg').html(config.msg);
			$(object).animate({
				top: dtop
			},{
				duration: 1000,
				easing: 'swing'
			});
		}else{
			var wwin = $('body').width();
			var wobj = $(object).width();
			$(object).css("left",(wwin / 2) - (wobj / 2));
		}
	}
	function hidejMessage(object){
		$(object).fadeOut('fast',function(){
			$('#jMessageBg').fadeOut('fast');
		});
	}
	function jMessageBgResize(config){
		$('#jMessageBg').css({'width':$(document).width(),'height':$(document).height(),'backgroundColor':config.bg,opacity:config.opacity});
	}
})(jQuery);
