123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289 |
- /*jslint eqeq: true, plusplus: true, undef: true, sloppy: true, vars: true, forin: true */
- if (!window.jQuery) {
- var jQuery = jq;
- (function ($) {
- var document = window.document,
- classSelectorRE = /^\.([\w-]+)$/,
- idSelectorRE = /^#([\w-]+)$/,
- tagSelectorRE = /^[\w-]+$/,
- rtable = /^t(?:able|d|h)$/i,
- rroot = /^(?:body|html)$/i,
- tempParent = document.createElement('div'),
- emptyArray = [],
- slice = emptyArray.slice,
- class2type = {},
- toString = class2type.toString;
- function type(obj) { return obj == null ? String(obj) : class2type[toString.call(obj)] || "object" }
- function isWindow(obj) { return obj != null && obj == obj.window }
- function isObject(obj) { return type(obj) == "object" }
- function isPlainObject(obj) { return isObject(obj) && !isWindow(obj) && obj.__proto__ == Object.prototype }
- function isArray(value) { return value instanceof Array }
- function extend(target, source, deep) {
- for (key in source)
- if (deep && (isPlainObject(source[key]) || isArray(source[key]))) {
- if (isPlainObject(source[key]) && !isPlainObject(target[key]))
- target[key] = {}
- if (isArray(source[key]) && !isArray(target[key]))
- target[key] = []
- extend(target[key], source[key], deep)
- } else if (source[key] !== undefined)
- target[key] = source[key]
- }
- function isNumeric(n) {
- return !isNaN(parseFloat(n)) && isFinite(n);
- }
- function matches(element, selector) {
- if (!element || element.nodeType !== 1) {
- return false;
- }
- var matchesSelector = element.webkitMatchesSelector || element.mozMatchesSelector ||
- element.oMatchesSelector || element.matchesSelector;
- if (matchesSelector) {
- return matchesSelector.call(element, selector);
- }
- // fall back to performing a selector:
- var match, parent = element.parentNode, temp = !parent
- if (temp) (parent = tempParent).appendChild(element)
- match = ~qsa(parent, selector).indexOf(element)
- temp && tempParent.removeChild(element)
- return match
- }
- function qsa(element, selector){
- var found
- return (element === document && idSelectorRE.test(selector)) ?
- ( (found = element.getElementById(RegExp.$1)) ? [found] : emptyArray ) :
- (element.nodeType !== 1 && element.nodeType !== 9) ? emptyArray :
- slice.call(
- classSelectorRE.test(selector) ? element.getElementsByClassName(RegExp.$1) :
- tagSelectorRE.test(selector) ? element.getElementsByTagName(selector) :
- element.querySelectorAll(selector)
- )
- }
- function camelize(str) {
- return str.replace(/-+(.)?/g, function(match, chr){ return chr ? chr.toUpperCase() : '' });
- }
- $.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(i, name) {
- class2type[ "[object " + name + "]" ] = name.toLowerCase()
- });
- ['width', 'height'].forEach(function(dimension){
- $.fn[dimension] = function(value){
- var body = document.body,
- html = document.documentElement,
- offset, Dimension = dimension.replace(/./, function(m){return m[0].toUpperCase()})
- if (value === undefined) return this[0] == window ? document.documentElement['client' + Dimension] :
- this[0] == document ? Math.max(body['scroll' + Dimension], body['offset' + Dimension], html['client' + Dimension], html['scroll' + Dimension], html['offset' + Dimension]) : //document.documentElement['offset' + Dimension] :
- (offset = this.offset()) && offset[dimension]
- else return this.each(function(idx){
- var el = $(this)
- el.css(dimension, value)
- })
- }
- });
- ['width', 'height'].forEach(function(dimension) {
- var offset, Dimension = dimension.replace(/./, function(m) {return m[0].toUpperCase()});
- $.fn['outer' + Dimension] = function(margin) {
- var elem = this;
- if (elem) {
- var size = elem[0]['offset' + Dimension];
- var sides = {'width': ['left', 'right'], 'height': ['top', 'bottom']};
- sides[dimension].forEach(function(side) {
- if (margin) {
- size += parseInt(elem.css(camelize('margin-' + side)), 10);
- }
- });
- return size;
- }
- else {
- return null;
- }
- };
- });
- ['width', 'height'].forEach(function (dimension) {
- var offset, Dimension = dimension.replace(/./, function (m) { return m[0].toUpperCase(); });
- $.fn['inner' + Dimension] = function () {
- var elem = this;
- if (elem[0]['inner' + Dimension]) {
- return elem[0]['inner' + Dimension];
- } else {
- var size = elem[0]['offset' + Dimension],
- sides = {'width': ['left', 'right'], 'height': ['top', 'bottom']};
- sides[dimension].forEach(function (side) {
- size -= parseInt(elem.css(camelize('border-' + side + '-width')), 10);
- });
- return size;
- }
- };
- });
- ["Left", "Top"].forEach(function(name, i) {
- var method = "scroll" + name;
- function isWindow( obj ) {
- return obj && typeof obj === "object" && "setInterval" in obj;
- }
- function getWindow( elem ) {
- return isWindow( elem ) ? elem : elem.nodeType === 9 ? elem.defaultView || elem.parentWindow : false;
- }
- $.fn[method] = function( val ) {
- var elem, win;
- if (val === undefined) {
- elem = this[0];
- if (!elem) {
- return null;
- }
- win = getWindow(elem);
- // Return the scroll offset
- return win ? ("pageXOffset" in win) ? win[i ? "pageYOffset" : "pageXOffset"] :
- win.document.documentElement[method] ||
- win.document.body[method] :
- elem[method];
- }
- // Set the scroll offset
- this.each(function() {
- win = getWindow(this);
- if (win) {
- var xCoord = !i ? val : $(win).scrollLeft();
- var yCoord = i ? val : $(win).scrollTop();
- win.scrollTo(xCoord, yCoord);
- }
- else {
- this[method] = val;
- }
- });
- }
- });
- $.fn.focus = function (handler) {
- if (handler === undefined) {
- return $(this).trigger('focus');
- } else {
- return $(this).bind('focus', handler);
- }
- };
- $.fn.blur = function (handler) {
- if (handler === undefined) {
- return $(this).trigger('blur');
- } else {
- return $(this).bind('blur', handler);
- }
- };
- $.fn.slice = function () {
- return $(slice.apply(this, arguments));
- };
- $.fn.before = function (elm) {
- $(elm).insertBefore(this);
- return this;
- };
- $.fn.insertAfter = function (elm) {
- this.insertBefore(elm, true);
- return this;
- };
- $.fn.detach = $.fn.remove;
- $.fn.pluck = function (property) {
- var ret = [];
- this.each(function () {
- if (this[property] !== undefined && this[property] !== null) {
- ret.push(this[property]);
- }
- });
- return $(ret);
- };
- $.fn.prev = function (selector) {
- return this.pluck('previousElementSibling').filter(selector || '*');
- };
- $.fn.next = function (selector) {
- return this.pluck('nextElementSibling').filter(selector || '*');
- };
- $.fn.prevUntil = function (selector) {
- var n = this,
- array = [];
- while (n.length && !$(n).filter(selector).length) {
- array.push(n[0]);
- n = n.prev();
- }
- return $(array);
- };
- $.fn.nextUntil = function (selector) {
- var n = this,
- array = [];
- while (n.length && !n.filter(selector).length) {
- array.push(n[0]);
- n = n.next();
- }
- return $(array);
- };
- $.inArray = function (value, array, fromIndex) {
- var i = fromIndex || 0;
- while (i < array.length) {
- if (array[i++] == value) {
- return --i;
- }
- }
- return -1;
- };
- $.isPlainObject = function (v) {
- return $.isObject(v);
- };
- $.fn._css = $.fn.css;
- $.fn.css = function (attr, val, obj) {
- if ($.isObject(attr)) {
- var i;
- for (i in attr) {
- $(this)._css(i, isNumeric(attr[i]) ? attr[i] + 'px' : attr[i], obj);
- }
- return this;
- } else {
- return $(this)._css(attr, isNumeric(val) ? val + 'px' : val, obj);
- }
- };
- // Copy all but undefined properties from one or more
- // objects to the `target` object.
- $.extend = function (target) {
- arguments[0] = arguments[0] || {};
- var deep, args = slice.call(arguments, 1)
- if (typeof target == 'boolean') {
- deep = target
- target = args.shift()
- }
- args.forEach(function (arg) {
- extend(target, arg, deep)
- })
- return target
- }
- })(jQuery);
- }
|