// --------------------------------------
// ----------- Bernard Teske ------------
// - Webdesign & digitale Spezialitäten -
// -------- info@bernardteske.de --------
// -------- www.bernardteske.de ---------
// --------------------------------------

// Version 1.0


(function( $ ){
	var methods = {
		init : function(options) {
			var settings = {
				'color'	: '#000',
				'speed' : 'slow',
				'opacity' : 0.5,
				'messageclass' : 'btdsmessage',
				'messagetext' : '',
				'waittext' : 'Bitte warten, Daten werden übermittelt.',
				'mycallback':  ''
			};
			if ( options ) { 
				$.extend( settings, options );
			}
						
			$('body').append('<div class="btdsmessageblender"></div>');
			$(".btdsmessageblender").css('background', settings.color).css('position', 'fixed').css('top', '0px').css('left', '0px').css('z-index', '1000');
			$(".btdsmessageblender").css('width', $('body').width()).css('height', $('body').height());
			$(".btdsmessageblender").hide();
			$(".btdsmessageblender").fadeTo(settings.speed, settings.opacity, function(){
				$('body').append('<div class="'+settings.messageclass+'"><p></p></div>');
				var messagewdo=$('.'+settings.messageclass);
				messagewdo.hide();
				messagewdo.css('position', 'fixed').css('z-index', '1000');
				
				var topposition=($('body').height()/2)-(messagewdo.height()/2);
				var leftposition=($('body').width()/2)-(messagewdo.width()/2);
				
				messagewdo.css('top', topposition+'px').css('left', leftposition+'px');
				messagewdo.find('p').html(settings.waittext);
				
				messagewdo.fadeIn(settings.speed, function(){
					settings.mycallback();
				});
				
				
			});
		},
		success : function(options) {
			var settings = {
				'messagetext' : 'OK',
				'messageclass' : 'btdsmessage',
				'speed' : 'slow',
				'autoclose' : 2000,
				'successclass' : 'btdsmessagesuccess'
			};
			if ( options ) { 
				$.extend( settings, options );
			}
			
			var messagewdo=$('.'+settings.messageclass);
			messagewdo.find('p').html(settings.messagetext);
			messagewdo.addClass(settings.successclass);
			var form=$(this);
			
			var closetimeout=window.setTimeout(
				function(){
					form.btdsmessage('close');	
				},
				settings.autoclose
			);
			$('body').click(function(){
				window.clearTimeout(closetimeout);
				form.btdsmessage('close');
			});
			
		},
		error : function(options) {
			var settings = {
				'messagetext' : 'Fehler',
				'messageclass' : 'btdsmessage',
				'speed' : 'slow',
				'successclass' : 'btdsmessageerror'
			};
			if ( options ) { 
				$.extend( settings, options );
			}
			
			var messagewdo=$('.'+settings.messageclass);
			messagewdo.find('p').html(settings.messagetext);
			messagewdo.addClass(settings.successclass);
			$(this).btdsmessage('closebutton');
			var form=$(this);
			
			$('body').click(function(){
				form.btdsmessage('close');
			});
			
		},
		close : function(options) {
			var settings = {
				'messageclass' : 'btdsmessage',
				'speed' : 'fast',
			};
			if ( options ) { 
				$.extend( settings, options );
			}
			var messagewdo=$('.'+settings.messageclass);
			messagewdo.fadeOut(settings.speed, function(){
				$(".btdsmessageblender").fadeOut(settings.speed, function(){
					messagewdo.remove();
					$(".btdsmessageblender").remove();
				});
			});
		},
		closebutton : function(options){
			var settings = {
				'messageclass' : 'btdsmessage',
				'closebuttonclass' : 'btdsclosebutton',
				'closetext' : 'Schließen;'
			};
			if ( options ) { 
				$.extend( settings, options );
			}
			var form=$(this);
			var messagewdo=$('.'+settings.messageclass);
			messagewdo.append('<button class="'+settings.closebuttonclass+'">'+settings.closetext+'</button>');
			messagewdo.find("."+settings.closebuttonclass).click(function(){
				form.btdsmessage('close');
			});
		}		
	};

	
	$.fn.btdsmessage = function(method){					
		// Method calling logic
		if ( methods[method] ) {
			return methods[ method ].apply( this, Array.prototype.slice.call( arguments, 1 ));
		}
		else if ( typeof method === 'object' || ! method ) {
			return methods.init.apply( this, arguments );
		}
		else {
			$.error( 'Method ' +  method + ' does not exist on jQuery.btdsmessage' );
		}  		
	}
})( jQuery );
