Вход Регистрация
Файл: assets/plugins/jquery/jquery-migrate.js
Строк: 719
<?php
/*!
 * jQuery Migrate - v1.1.0 - 2013-01-31
 * https://github.com/jquery/jquery-migrate
 * Copyright 2005, 2013 jQuery Foundation, Inc. and other contributors; Licensed MIT
 */
(function( jQuerywindowundefined ) {
"use strict";


var 
warnedAbout = {};

// List of warnings already given; public read only
jQuery.migrateWarnings = [];

// Set to true to prevent console output; migrateWarnings still maintained
// jQuery.migrateMute = false;

// Show a message on the console so devs know we're active
if ( !jQuery.migrateMute && window.console && console.log ) {
    
console.log("JQMIGRATE: Logging is active");
}

// Set to false to disable traces that appear with warnings
if ( jQuery.migrateTrace === undefined ) {
    
jQuery.migrateTrace true;
}

// Forget any warnings we've already given; public
jQuery.migrateReset = function() {
    
warnedAbout = {};
    
jQuery.migrateWarnings.length 0;
};

function 
migrateWarnmsg) {
    if ( !
warnedAboutmsg ] ) {
        
warnedAboutmsg ] = true;
        
jQuery.migrateWarnings.pushmsg );
        if ( 
window.console && console.warn && !jQuery.migrateMute ) {
            
//console.warn( "JQMIGRATE: " + msg );
            
if ( jQuery.migrateTrace && console.trace ) {
                
//console.trace();
            
}
        }
    }
}

function 
migrateWarnPropobjpropvaluemsg ) {
    if ( 
Object.defineProperty ) {
        
// On ES5 browsers (non-oldIE), warn if the code tries to get prop;
        // allow property to be overwritten in case some other plugin wants it
        
try {
            
Object.definePropertyobjprop, {
                
configurabletrue,
                
enumerabletrue,
                
get: function() {
                    
migrateWarnmsg );
                    return 
value;
                },
                
set: function( newValue ) {
                    
migrateWarnmsg );
                    
value newValue;
                }
            });
            return;
        } catch( 
err ) {
            
// IE8 is a dope about Object.defineProperty, can't warn there
        
}
    }

    
// Non-ES5 (or broken) browser; just set the property
    
jQuery._definePropertyBroken true;
    
objprop ] = value;
}

if ( 
document.compatMode === "BackCompat" ) {
    
// jQuery has never supported or tested Quirks Mode
    
migrateWarn"jQuery is not compatible with Quirks Mode" );
}


var 
attrFn = {},
    
oldAttr jQuery.attr,
    
valueAttrGet jQuery.attrHooks.value && jQuery.attrHooks.value.get ||
        function() { return 
null; },
    
valueAttrSet jQuery.attrHooks.value && jQuery.attrHooks.value.set ||
        function() { return 
undefined; },
    
rnoType = /^(?:input|button)$/i,
    
rnoAttrNodeType = /^[238]$/,
    
rboolean = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,
    
ruseDefault = /^(?:checked|selected)$/i;

// jQuery.attrFn
migrateWarnPropjQuery"attrFn"attrFn"jQuery.attrFn is deprecated" );

jQuery.attr = function( elemnamevaluepass ) {
    var 
lowerName name.toLowerCase(),
        
nType elem && elem.nodeType;

    
// Since pass is used internally, we only warn and shim for new jQuery
    // versions where there isn't a pass arg in the formal params
    
if ( pass && oldAttr.length ) {
        
migrateWarn("jQuery.fn.attr( props, pass ) is deprecated");
        if ( 
elem && !rnoAttrNodeType.testnType ) && jQuery.isFunctionjQuery.fnname ] ) ) {
            return 
jQueryelem )[ name ]( value );
        }
    }

    
// Warn if user tries to set `type`, since it breaks on IE 6/7/8; by checking
    // for disconnected elements we don't warn on $( "<button>", { type: "button" } ).
    
if ( name === "type" && value !== undefined && rnoType.testelem.nodeName ) && elem.parentNode ) {
        
migrateWarn("Can't change the 'type' of an input or button in IE 6/7/8");
    }

    
// Restore boolHook for boolean property/attribute synchronization
    
if ( !jQuery.attrHookslowerName ] && rboolean.testlowerName ) ) {
        
jQuery.attrHookslowerName ] = {
            
get: function( elemname ) {
                
// Align boolean attributes with corresponding properties
                // Fall back to attribute presence where some booleans are not supported
                
var attrNode,
                    
property jQuery.propelemname );
                return 
property === true || typeof property !== "boolean" &&
                    ( 
attrNode elem.getAttributeNode(name) ) && attrNode.nodeValue !== false ?

                    
name.toLowerCase() :
                    
undefined;
            },
            
set: function( elemvaluename ) {
                var 
propName;
                if ( 
value === false ) {
                    
// Remove boolean attributes when set to false
                    
jQuery.removeAttrelemname );
                } else {
                    
// value is true since we know at this point it's type boolean and not false
                    // Set boolean attributes to the same name and set the DOM property
                    
propName jQuery.propFixname ] || name;
                    if ( 
propName in elem ) {
                        
// Only set the IDL specifically if it already exists on the element
                        
elempropName ] = true;
                    }

                    
elem.setAttributenamename.toLowerCase() );
                }
                return 
name;
            }
        };

        
// Warn only for attributes that can remain distinct from their properties post-1.9
        
if ( ruseDefault.testlowerName ) ) {
            
migrateWarn"jQuery.fn.attr('" lowerName "') may use property instead of attribute" );
        }
    }

    return 
oldAttr.calljQueryelemnamevalue );
};

// attrHooks: value
jQuery.attrHooks.value = {
    
get: function( elemname ) {
        var 
nodeName = ( elem.nodeName || "" ).toLowerCase();
        if ( 
nodeName === "button" ) {
            return 
valueAttrGet.applythisarguments );
        }
        if ( 
nodeName !== "input" && nodeName !== "option" ) {
            
migrateWarn("jQuery.fn.attr('value') no longer gets properties");
        }
        return 
name in elem ?
            
elem.value :
            
null;
    },
    
set: function( elemvalue ) {
        var 
nodeName = ( elem.nodeName || "" ).toLowerCase();
        if ( 
nodeName === "button" ) {
            return 
valueAttrSet.applythisarguments );
        }
        if ( 
nodeName !== "input" && nodeName !== "option" ) {
            
migrateWarn("jQuery.fn.attr('value', val) no longer sets properties");
        }
        
// Does not return so that setAttribute is also used
        
elem.value value;
    }
};


var 
matchedbrowser,
    
oldInit jQuery.fn.init,
    
oldParseJSON jQuery.parseJSON,
    
// Note this does NOT include the #9521 XSS fix from 1.7!
    
rquickExpr = /^(?:[^<]*(<[wW]+>)[^>]*|#([w-]*))$/;

// $(html) "looks like html" rule change
jQuery.fn.init = function( selectorcontextrootjQuery ) {
    var 
match;

    if ( 
selector && typeof selector === "string" && !jQuery.isPlainObjectcontext ) &&
            (
match rquickExpr.execselector )) && match[1] ) {
        
// This is an HTML string according to the "old" rules; is it still?
        
if ( selector.charAt) !== "<" ) {
            
migrateWarn("$(html) HTML strings must start with '<' character");
        }
        
// Now process using loose rules; let pre-1.8 play too
        
if ( context && context.context ) {
            
// jQuery object as context; parseHTML expects a DOM object
            
context context.context;
        }
        if ( 
jQuery.parseHTML ) {
            return 
oldInit.callthisjQuery.parseHTMLjQuery.trim(selector), contexttrue ),
                    
contextrootjQuery );
        }
    }
    return 
oldInit.applythisarguments );
};
jQuery.fn.init.prototype jQuery.fn;

// Let $.parseJSON(falsy_value) return null
jQuery.parseJSON = function( json ) {
    if ( !
json && json !== null ) {
        
migrateWarn("jQuery.parseJSON requires a valid JSON string");
        return 
null;
    }
    return 
oldParseJSON.applythisarguments );
};

jQuery.uaMatch = function( ua ) {
    
ua ua.toLowerCase();

    var 
match = /(chrome)[ /]([w.]+)/.execua ) ||
        /(
webkit)[ /]([w.]+)/.execua ) ||
        /(
opera)(?:.*version|)[ /]([w.]+)/.execua ) ||
        /(
msie) ([w.]+)/.execua ) ||
        
ua.indexOf("compatible") < && /(mozilla)(?:.*? rv:([w.]+)|)/.execua ) ||
        [];

    return {
        
browsermatch] || "",
        
versionmatch] || "0"
    
};
};

matched jQuery.uaMatchnavigator.userAgent );
browser = {};

if ( 
matched.browser ) {
    
browsermatched.browser ] = true;
    
browser.version matched.version;
}

// Chrome is Webkit, but Webkit is also Safari.
if ( browser.chrome ) {
    
browser.webkit true;
} else if ( 
browser.webkit ) {
    
browser.safari true;
}

jQuery.browser browser;

// Warn if the code tries to get jQuery.browser
migrateWarnPropjQuery"browser"browser"jQuery.browser is deprecated" );

jQuery.sub = function() {
    function 
jQuerySubselectorcontext ) {
        return new 
jQuerySub.fn.initselectorcontext );
    }
    
jQuery.extendtruejQuerySubthis );
    
jQuerySub.superclass this;
    
jQuerySub.fn jQuerySub.prototype this();
    
jQuerySub.fn.constructor jQuerySub;
    
jQuerySub.sub this.sub;
    
jQuerySub.fn.init = function initselectorcontext ) {
        if ( 
context && context instanceof jQuery && !(context instanceof jQuerySub) ) {
            
context jQuerySubcontext );
        }

        return 
jQuery.fn.init.callthisselectorcontextrootjQuerySub );
    };
    
jQuerySub.fn.init.prototype jQuerySub.fn;
    var 
rootjQuerySub jQuerySub(document);
    
migrateWarn"jQuery.sub() is deprecated" );
    return 
jQuerySub;
};


var 
oldFnData jQuery.fn.data;

jQuery.fn.data = function( name ) {
    var 
retevt,
        
elem this[0];

    
// Handles 1.7 which has this behavior and 1.8 which doesn't
    
if ( elem && name === "events" && arguments.length === ) {
        
ret jQuery.dataelemname );
        
evt jQuery._dataelemname );
        if ( ( 
ret === undefined || ret === evt ) && evt !== undefined ) {
            
migrateWarn("Use of jQuery.fn.data('events') is deprecated");
            return 
evt;
        }
    }
    return 
oldFnData.applythisarguments );
};


var 
rscriptType //(java|ecma)script/i,
    
oldSelf jQuery.fn.andSelf || jQuery.fn.addBack;

jQuery.fn.andSelf = function() {
    
migrateWarn("jQuery.fn.andSelf() replaced by jQuery.fn.addBack()");
    return 
oldSelf.applythisarguments );
};

// Since jQuery.clean is used internally on older versions, we only shim if it's missing
if ( !jQuery.clean ) {
    
jQuery.clean = function( elemscontextfragmentscripts ) {
        
// Set context per 1.8 logic
        
context context || document;
        
context = !context.nodeType && context[0] || context;
        
context context.ownerDocument || context;

        
migrateWarn("jQuery.clean() is deprecated");

        var 
ielemhandleScriptjsTags,
            
ret = [];

        
jQuery.mergeretjQuery.buildFragmentelemscontext ).childNodes );

        
// Complex logic lifted directly from jQuery 1.8
        
if ( fragment ) {
            
// Special handling of each script element
            
handleScript = function( elem ) {
                
// Check if we consider it executable
                
if ( !elem.type || rscriptType.testelem.type ) ) {
                    
// Detach the script and store it in the scripts array (if provided) or the fragment
                    // Return truthy to indicate that it has been handled
                    
return scripts ?
                        
scripts.pushelem.parentNode elem.parentNode.removeChildelem ) : elem ) :
                        
fragment.appendChildelem );
                }
            };

            for ( 
0; (elem ret[i]) != nulli++ ) {
                
// Check if we're done after handling an executable script
                
if ( !( jQuery.nodeNameelem"script" ) && handleScriptelem ) ) ) {
                    
// Append to fragment and handle embedded scripts
                    
fragment.appendChildelem );
                    if ( 
typeof elem.getElementsByTagName !== "undefined" ) {
                        
// handleScript alters the DOM, so use jQuery.merge to ensure snapshot iteration
                        
jsTags jQuery.grepjQuery.merge( [], elem.getElementsByTagName("script") ), handleScript );

                        
// Splice the scripts into ret after their former ancestor and advance our index beyond them
                        
ret.splice.applyret, [10].concatjsTags ) );
                        
+= jsTags.length;
                    }
                }
            }
        }

        return 
ret;
    };
}

var 
eventAdd jQuery.event.add,
    
eventRemove jQuery.event.remove,
    
eventTrigger jQuery.event.trigger,
    
oldToggle jQuery.fn.toggle,
    
oldLive jQuery.fn.live,
    
oldDie jQuery.fn.die,
    
ajaxEvents "ajaxStart|ajaxStop|ajaxSend|ajaxComplete|ajaxError|ajaxSuccess",
    
rajaxEvent = new RegExp"\b(?:" ajaxEvents ")\b" ),
    
rhoverHack = /(?:^|s)hover(.S+|)b/,
    
hoverHack = function( events ) {
        if ( 
typeofevents ) != "string" || jQuery.event.special.hover ) {
            return 
events;
        }
        if ( 
rhoverHack.testevents ) ) {
            
migrateWarn("'hover' pseudo-event is deprecated, use 'mouseenter mouseleave'");
        }
        return 
events && events.replacerhoverHack"mouseenter$1 mouseleave$1" );
    };

// Event props removed in 1.9, put them back if needed; no practical way to warn them
if ( jQuery.event.props && jQuery.event.props] !== "attrChange" ) {
    
jQuery.event.props.unshift"attrChange""attrName""relatedNode""srcElement" );
}

// Undocumented jQuery.event.handle was "deprecated" in jQuery 1.7
if ( jQuery.event.dispatch ) {
    
migrateWarnPropjQuery.event"handle"jQuery.event.dispatch"jQuery.event.handle is undocumented and deprecated" );
}

// Support for 'hover' pseudo-event and ajax event warnings
jQuery.event.add = function( elemtypeshandlerdataselector ){
    if ( 
elem !== document && rajaxEvent.testtypes ) ) {
        
migrateWarn"AJAX events should be attached to document: " types );
    }
    
eventAdd.callthiselemhoverHacktypes || "" ), handlerdataselector );
};
jQuery.event.remove = function( elemtypeshandlerselectormappedTypes ){
    
eventRemove.callthiselemhoverHacktypes ) || ""handlerselectormappedTypes );
};

jQuery.fn.error = function() {
    var 
args = Array.prototype.slice.callarguments0);
    
migrateWarn("jQuery.fn.error() is deprecated");
    
args.splice00"error" );
    if ( 
arguments.length ) {
        return 
this.bind.applythisargs );
    }
    
// error event should not bubble to window, although it does pre-1.7
    
this.triggerHandler.applythisargs );
    return 
this;
};

jQuery.fn.toggle = function( fnfn2 ) {

    
// Don't mess with animation or css toggles
    
if ( !jQuery.isFunctionfn ) || !jQuery.isFunctionfn2 ) ) {
        return 
oldToggle.applythisarguments );
    }
    
migrateWarn("jQuery.fn.toggle(handler, handler...) is deprecated");

    
// Save reference to arguments for access in closure
    
var args arguments,
        
guid fn.guid || jQuery.guid++,
        
0,
        
toggler = function( event ) {
            
// Figure out which function to execute
            
var lastToggle = ( jQuery._datathis"lastToggle" fn.guid ) || ) % i;
            
jQuery._datathis"lastToggle" fn.guidlastToggle );

            
// Make sure that clicks stop
            
event.preventDefault();

            
// and execute the function
            
return argslastToggle ].applythisarguments ) || false;
        };

    
// link all the functions, so any of them can unbind this click handler
    
toggler.guid guid;
    while ( 
args.length ) {
        
argsi++ ].guid guid;
    }

    return 
this.clicktoggler );
};

jQuery.fn.live = function( typesdatafn ) {
    
migrateWarn("jQuery.fn.live() is deprecated");
    if ( 
oldLive ) {
        return 
oldLive.applythisarguments );
    }
    
jQuerythis.context ).ontypesthis.selectordatafn );
    return 
this;
};

jQuery.fn.die = function( typesfn ) {
    
migrateWarn("jQuery.fn.die() is deprecated");
    if ( 
oldDie ) {
        return 
oldDie.applythisarguments );
    }
    
jQuerythis.context ).offtypesthis.selector || "**"fn );
    return 
this;
};

// Turn global events into document-triggered events
jQuery.event.trigger = function( eventdataelemonlyHandlers  ){
    if ( !
elem & !rajaxEvent.testevent ) ) {
        
migrateWarn"Global events are undocumented and deprecated" );
    }
    return 
eventTrigger.callthis,  eventdataelem || documentonlyHandlers  );
};
jQuery.eachajaxEvents.split("|"),
    function( 
_name ) {
        
jQuery.event.specialname ] = {
            
setup: function() {
                var 
elem this;

                
// The document needs no shimming; must be !== for oldIE
                
if ( elem !== document ) {
                    
jQuery.event.adddocumentname "." jQuery.guid, function() {
                        
jQuery.event.triggernamenullelemtrue );
                    });
                    
jQuery._datathisnamejQuery.guid++ );
                }
                return 
false;
            },
            
teardown: function() {
                if ( 
this !== document ) {
                    
jQuery.event.removedocumentname "." jQuery._datathisname ) );
                }
                return 
false;
            }
        };
    }
);


})( 
jQuerywindow );
?>
Онлайн: 1
Реклама