        /**
         * jQuery.ajax mid - CROSS DOMAIN AJAX 
         * ---
         * @author James Padolsey (http://james.padolsey.com)
         * @version 0.11
         * @updated 12-JAN-10
         * ---
         * Note: Read the README!
         * ---
         * @info http://james.padolsey.com/javascript/cross-domain-requests-with-jquery/
         */

        jQuery.ajax = (function(_ajax){
          var protocol = location.protocol,
          hostname = location.hostname,
          exRegex = RegExp(protocol + '//' + hostname),
          YQL = 'http' + (/^https/.test(protocol)?'s':'') + '://query.yahooapis.com/v1/public/yql?callback=?',
          query = 'select * from html where url="{URL}" and xpath="*"';
    
          function isExternal(url) {return !exRegex.test(url) && /:\/\//.test(url);}
    
          return function(o)
          {
            var url = o.url;
            if ( /get/i.test(o.type) && !/json/i.test(o.dataType) && isExternal(url) ) {
              // Manipulate options so that JSONP-x request is made to YQL
              o.url = YQL;
              o.dataType = 'json';
            
              o.data = {
                q: query.replace(
                    '{URL}',
                    url + (o.data ?
                        (/\?/.test(url) ? '&' : '?') + jQuery.param(o.data)
                    : '')
                ),
                format: 'xml'
            };
            
            // Since it's a JSONP request
            // complete === success
            if (!o.success && o.complete) {
                o.success = o.complete;
                delete o.complete;
            }
            
            o.success = (function(_success){
                return function(data) {
                    
                    if (_success) {
                        // Fake XHR callback.
                        _success.call(this, {
                            responseText: data.results[0]
                                // YQL screws with <script>s
                                // Get rid of them
                                .replace(/<script[^>]+?\/>|<script(.|\s)*?\/script>/gi, '')
                        }, 'success');
                    }
                    
                };
            })(o.success);
          }
          return _ajax.apply(this, arguments);
          };
        })(jQuery.ajax);
