(function($) {
    
    $.Loadingdotdotdot = function(el, options) {
        var base = this;
        
        base.$el = $(el);
                
        base.$el.data("Loadingdotdotdot", base);
        
        base.dotItUp = function($element, maxDots) {
            if ($element.text().length == maxDots) {
                $element.text("");
            } else {
                $element.append(".");
            }
        };
        
        base.stopInterval = function() {    
            clearInterval(base.theInterval);
        };
        
        base.init = function() {
       
            if ( typeof( options.speed ) === "undefined" || options.speed === null ) {speed = 300}else{speed = options.speed};
            if ( typeof( options.maxDots ) === "undefined" || options.maxDots === null ) {maxDots = 4}else{maxDots = options.maxDots};
            if ( typeof( options.widthEl ) === "undefined" || options.widthEl === null ) {widthEl = 500}else{widthEl = options.widthEl};
            if ( typeof( options.topEl ) === "undefined" || options.topEl === null ) {topEl = 0}else{topEl = options.topEl};
            base.speed = speed;
            base.maxDots = maxDots;
            base.widthEl = widthEl;
            base.topEl   = topEl;
            base.options = $.extend({},$.Loadingdotdotdot.defaultOptions, options);
                        
            //base.$el.html("<span>Подождите. Идет обработка запроса. Это может занять длительное время.<em></em></span>");
            
            base.$el.html("<span>Спасибо! Подождите, пожалуйста. Сейчас загрузится Ваш личный кабинет.<em></em></span>");
            
            base.$dots = base.$el.find("em");
            base.$loadingText = base.$el.find("span");
            
            base.$el.css("position", "relative");
            base.$loadingText.css({
                "position": "absolute",
                "top": base.topEl+'px',
                "width":base.widthEl+'px'
            });
                        
            base.theInterval = setInterval(base.dotItUp, base.options.speed, base.$dots, base.options.maxDots);
            
        };
        
        base.init();
    
    };
    
    $.Loadingdotdotdot.defaultOptions = {
        speed: 300,
        maxDots: 3
    };
    
    $.fn.Loadingdotdotdot = function(options) {
        
        if (typeof(options) == "string") {
            var safeGuard = $(this).data('Loadingdotdotdot');
			if (safeGuard) {
				safeGuard.stopInterval();
			}
        } else { 
            return this.each(function(){
                (new $.Loadingdotdotdot(this, options));
            });
        } 
        
    };
    
})(jQuery);

