﻿jQuery(document).ready(function () {
    new updater($("#progressCursor"), {
        interval: 90,
        steps: 6,
        shift: 22
    });
})

function updater($this, settings) {
    
    var $updater = this;

    // значения по умолчанию
    var defaults = { 
        interval: 90,
        steps: 6,
        shift: 22,
        id: null
    };

    this.settings = $.extend({}, defaults, settings);
    this.block = $this;

    this.recicle = updater_recicle;
    this.coordinate = updater_coordinate;

    function updater_coordinate(e) {
        tempX = e.pageX;
        tempY = e.pageY;

        if (tempX < 0) { tempX = 0; }
        if (tempY < 0) { tempY = 0; }

        $updater.block.css('top', tempY + 16).css('left', tempX + 16);
    }

    function updater_recicle() {
        for (var i = 0; i < settings.steps; i++) {
            $updater.block.animate({ backgroundPosition: '0 -' + ($updater.settings.shift * (i + 1)) + 'px' }, $updater.settings.interval);
        }
    }

    function StartWaiting() {
        //rotate
        $updater.id = setInterval($updater.recicle, $updater.settings.interval * $updater.settings.steps);
        //follow for cursor
        $(document).mousemove($updater.coordinate);
        //show
        $updater.block.css("display", "block");
    }
    function StopWaiting() {
        //rotate
        clearInterval($updater.id);
        //follow for cursor
        $(document).unbind("mousemove");
        //hide
        $updater.block.css("display", "none");
    }

    $(document).ajaxStart(function () {
	    StartWaiting();
    });

    $(document).ajaxStop(function() {
        StopWaiting();
    });

    $(document).submit(function () { 
	    StartWaiting();
	});
    
}
