/*!
 * jQuery plugin:loadingCover
 * http://jquery.com/
 *
 * @author Ted Goodridge
 *
 * $('#testdiv').loadingCover();
 * uses the jQuery UI CSS for it's styling.
 */
(function( $ ){
	
	// Extendable options
	var options = {
		message:"Loading data, please be patient..."
	};
	
	var internalData = {
		self:null
	};

	var methods = {
	init: function(settings) {
	        internalData.self = this;
	        if (settings) { $.extend(options, settings); }
			var pos = this.offset();
			var x = pos.left;
			var y = pos.top;
			var w = this.width();
			var h = this.height();
			var textMtop = (h*0.5)-30;
			var htmlString = ('<div id="loadingCover" class="ui-widget ui-widget-content ui-corner-all" style="position:absolute; z-index:9999; top:'+y+'px; text-align:center; left:'+x+'px; width:'+w+'px; height:'+h+'px;">');
				htmlString += ('<p style="margin-top:'+textMtop+'px;">'+options.message+'</p>');
				htmlString += ('</div>');
			$('body').append(htmlString);
			$('#loadingCover').preloader();
			
		},
		destroy : function(){
			
			
			setTimeout(function(){ 

				$('#loadingCover').fadeOut(1000, function(){
					$('#loadingCover').preloader('destroy');
					$('#loadingCover').remove();
				});
				
				}, 500);
			
		}
	};
	
	
	$.fn.loadingCover = function( method ) {
		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.loadingCover' );
		}    
	};
})( jQuery );




/*!
 * jQuery plugin:preloader
 * http://jquery.com/
 *
 * @author Ted Goodridge
 *
 * $('body').preloader();
 * requires a css rule for .ui-preloader to work. Such as:
 * .ui-preloader{width:22px; height:22px; overflow:hidden; background-image:url(http://property.onesitedev.realpage.com/templates/RPWidgets/core/images/preloaders/macPLframes.png); position:absolute; top:50%; left:50%; margin-top:-11px; margin-left:-11px; background-repeat:no-repeat;}
 */
(function( $ ){
	
	// Extendable options
	var options = {
		speed:60,
		stepWidth:22,
		steps:12
	};
	
	var internalData = {
		self:null,
		animate:true,
		count:0
	};
	
	var methods = {
		init : function(settings) {
			internalData.self = this;
			if(settings){$.extend(options, settings);}
			this.append('<div class="ui-preloader"></div>');
			animatePreloader();
		},
		show : function() {
			$(internalData.self).css('visibility','visible');
			animatePreloader();
		},
		hide : function() {
			internalData.animate = false;
			$(internalData.self).css('visibility','hidden');
		},
		destroy : function(){
			internalData.animate = false;
			$(internalData.self).remove();
		}
	};
	
	$.fn.preloader = function( method ) {
		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.preloader' );
		}    
	};
	
	function animatePreloader(){
		$('.ui-preloader').css({'background-position':(-(options.stepWidth)*internalData.count)});
		internalData.count++;
		if(internalData.count > options.steps-1){internalData.count = 0;}
		if(internalData.animate){setTimeout(animatePreloader, options.speed);}
	}
	
})( jQuery );
