-/**
- * A function for serializing a set of input elements into
- * a string of data.
- *
- * @example $("input[@type=text]").serialize();
- * @before <input type='text' name='name' value='John'/>
- * <input type='text' name='location' value='Boston'/>
- * @after name=John&location=Boston
- * @desc Serialize a selection of input elements to a string
- *
- * @name serialize
- * @type String
- * @cat AJAX
- */
-jQuery.fn.serialize = function(){
- return $.param( this );
-};
-
-// If IE is used, create a wrapper for the XMLHttpRequest object
-if ( jQuery.browser.msie && typeof XMLHttpRequest == "undefined" )
- XMLHttpRequest = function(){
- return new ActiveXObject(
- navigator.userAgent.indexOf("MSIE 5") >= 0 ?
- "Microsoft.XMLHTTP" : "Msxml2.XMLHTTP"
- );
- };
+ // Default to a GET request
+ var type = "GET";
+
+ // If the second parameter was provided
+ if ( params )
+ // If it's a function
+ if ( jQuery.isFunction( params ) ) {
+ // We assume that it's the callback
+ callback = params;
+ params = null;
+
+ // Otherwise, build a param string
+ } else {
+ params = jQuery.param( params );
+ type = "POST";
+ }
+
+ var self = this;
+
+ // Request the remote document
+ jQuery.ajax({
+ url: url,
+ type: type,
+ data: params,
+ ifModified: ifModified,
+ complete: function(res, status){
+ // If successful, inject the HTML into all the matched elements
+ if ( status == "success" || !ifModified && status == "notmodified" )
+ // See if a selector was specified
+ self.html( selector ?
+ // Create a dummy div to hold the results
+ jQuery("<div/>")
+ // inject the contents of the document in, removing the scripts
+ // to avoid any 'Permission Denied' errors in IE
+ .append(res.responseText.replace(/<script(.|\s)*?\/script>/g, ""))
+
+ // Locate the specified elements
+ .find(selector) :
+
+ // If not, just inject the full result
+ res.responseText );
+
+ // Add delay to account for Safari's delay in globalEval
+ setTimeout(function(){
+ self.each( callback, [res.responseText, status, res] );
+ }, 13);
+ }
+ });
+ return this;
+ },
+
+ /**
+ * Serializes a set of input elements into a string of data.
+ * This will serialize all given elements.
+ *
+ * A serialization similar to the form submit of a browser is
+ * provided by the [http://www.malsup.com/jquery/form/ Form Plugin].
+ * It also takes multiple-selects
+ * into account, while this method recognizes only a single option.
+ *
+ * @example $("input[@type=text]").serialize();
+ * @before <input type='text' name='name' value='John'/>
+ * <input type='text' name='location' value='Boston'/>
+ * @after name=John&location=Boston
+ * @desc Serialize a selection of input elements to a string
+ *
+ * @name serialize
+ * @type String
+ * @cat Ajax
+ */
+ serialize: function() {
+ return jQuery.param( this );
+ },
+
+ // DEPRECATED
+ // This method no longer does anything - all script evaluation is
+ // taken care of within the HTML injection methods.
+ evalScripts: function(){}
+
+});