﻿/**
* jQuery mousehold plugin - fires an event while the mouse is clicked down.
* Additionally, the function, when executed, is passed a single
* argument representing the count of times the event has been fired during
* this session of the mouse hold.
*
* @author Remy Sharp (leftlogic.com)
* @date 2006-12-15
* @example $("img").mousehold(200, function(i){  })
* @desc Repeats firing the passed function while the mouse is clicked down
*
* @name mousehold
* @type jQuery
* @param Number timeout The frequency to repeat the event in milliseconds
* @param Function fn A function to execute
* @cat Plugin
*/

jQuery.fn.mousehold = function (timeout, f) {
    if (timeout && typeof timeout == 'function') {
        f = timeout;
        timeout = 100;
    }
    if (f && typeof f == 'function') {
        var timer = 0;
        var fireStep = 0;
        return this.each(function () {
            jQuery(this).mousedown(function () {
                fireStep = 1;
                var ctr = 0;
                var t = this;
                timer = setInterval(function () {
                    ctr++;
                    f.call(t, ctr);
                    fireStep = 2;
                }, timeout);
            })

            clearMousehold = function () {
                clearInterval(timer);
                if (fireStep == 1) f.call(this, 1);
                fireStep = 0;
            }

            jQuery(this).mouseout(clearMousehold);
            jQuery(this).mouseup(clearMousehold);
        })
    }
}

$(document).ready(function () {
    $("#arrow-down").mousehold(20, function (i) {
        if (Math.abs ($("#n_scroll").position().top) < $("#n_scroll").height() - $("#n_cont").height()) {
            $("#n_scroll").animate({ "top": "-=3" }, 10);
        }
    })
    $("#arrow-up").mousehold(20, function (i) {
        if ($("#n_scroll").position().top < 0) {
            $("#n_scroll").animate({ "top": "+=3" }, 10);
        }
    })
});
