﻿/// <reference path="spider.js" />

spider.indicator = function (selector, container, settings) {
    var _returnObject;
    var wrapper;

    var _settings = {
        minDuration: 0,
        imageSrc: null,
        $container: container,
        opacity: 0.1,
        classNames: ''
    };

    if (settings !== undefined) {
        $.extend(_settings, settings);
    }

    var _startTime;
    var _endTime;

    _returnObject = {
        start: function () {
            _startTime = new Date().getMilliseconds();

            var addImg = '';

            if (_settings.imageSrc !== null) {
                addImg = 'background-image:url(\'' + _settings.imageSrc + '\'); background-position: center center; background-repeat: no-repeat;';
            }

            if (selector) {
                wrapper = _settings.$container.find(selector);
            } else {
                wrapper = _settings.$container;
            }

            wrapper.css('opacity', _settings.opacity).wrap('<div class="se-edit-indicator-wrapper ' + _settings.classNames + '" style="' + addImg + '"></div>');

            return _returnObject;
        },

        stop: function (callback) {
            _endTime = new Date().getMilliseconds();
            var _timeDifference = _endTime - _startTime;

            if (_timeDifference > _settings.minDuration) {
                _settings.minDuration = _timeDifference;
            }

            setTimeout(function () {
                wrapper.animate({ 'opacity': 1 }, 250, function () {
                    wrapper.unwrap();
                });
                if (callback) {
                    callback();
                }
            }, _settings.minDuration);

            return _returnObject;
        }
    };

    return _returnObject;
};
