﻿(function ($) {
    $.fn.extend({
        center: function (options) {
            var options = $.extend({ // Default values
                inside: window, // element, center into window
                transition: 0, // millisecond, transition time
                minX: 0, // pixel, minimum left element value
                minY: 0, // pixel, minimum top element value
                withScrolling: true, // booleen, take care of the scrollbar (scrollTop)
                vertical: true, // booleen, center vertical
                horizontal: true // booleen, center horizontal
            }, options);
            return this.each(function () {
                var props = { position: 'absolute' };
                if (options.vertical) {
                    var top = ($(options.inside).height() - $(this).outerHeight()) / 2;
                    if (options.withScrolling) top += $(options.inside).scrollTop() || 0;
                    top = (top > options.minY ? top : options.minY);
                    $.extend(props, { top: top + 'px' });
                }
                if (options.horizontal) {
                    var left = ($(options.inside).width() - $(this).outerWidth()) / 2;
                    if (options.withScrolling) left += $(options.inside).scrollLeft() || 0;
                    left = (left > options.minX ? left : options.minX);
                    $.extend(props, { left: left + 'px' });
                }
                if (options.transition > 0) $(this).animate(props, options.transition);
                else $(this).css(props);
                return $(this);
            });
        },
        exists: function () {
            return jQuery(this).length > 0;
        },
        phone: function () {
            return this.each(function () {
                $(this).keydown(function (e) {
                    if (e.ctrlKey || e.altKey) {               // if ctrl or alt keys held down
                        e.preventDefault();                    // Prevent character input                      
                    } else {
                        var n = e.keyCode || e.charCode || 0;
                        // allow backspace, tab, delete, separator, arrows, numbers and keypad numbers ONLY                        
                        if (!((n == 8)              // backspace
                        || (n == 9)                 // tab
                        || (n == 46)                // delete
                        || (n == 189)               // separator on keyboard
                        || (n == 109)               // separator on keypad
                        || (n >= 35 && n <= 40)     // arrow keys/home/end
                        || (n >= 48 && n <= 57)     // numbers on keyboard
                        || (n >= 96 && n <= 105))   // number on keypad
                        ) {
                            e.preventDefault();     // Prevent character input
                        }
                    }
                });
            });
        },
        numbers: function () {
            return this.each(function () {
                $(this).keydown(function (e) {
                    if (e.ctrlKey || e.altKey) {               // if ctrl or alt keys held down
                        e.preventDefault();                    // Prevent character input                      
                    } else {
                        var n = e.keyCode || e.charCode || 0;
                        // allow backspace, tab, delete, a-z, separator, arrows, numbers and keypad numbers ONLY                        
                        if (!((n == 8)              // backspace
                        || (n == 9)                 // tab
                        || (n == 46)                // delete
                        || (n >= 35 && n <= 40)     // arrow keys/home/end
                        || (n >= 48 && n <= 57)     // numbers on keyboard
                        || (n >= 96 && n <= 105))   // number on keypad
                        ) {
                            e.preventDefault();     // Prevent character input
                        }
                    }
                });
            });
        }
    });
})(jQuery); 
