diff webapp/src/main/webapp/jquery/svg/jquery.svgdom.js @ 1050:301ef9bf1965

update jquery.svg.js
author hertzhaft
date Mon, 26 Mar 2012 08:18:40 +0200
parents 7779b37d1d05
children 139ad480333b
line wrap: on
line diff
--- a/webapp/src/main/webapp/jquery/svg/jquery.svgdom.js	Mon Mar 26 01:01:09 2012 +0200
+++ b/webapp/src/main/webapp/jquery/svg/jquery.svgdom.js	Mon Mar 26 08:18:40 2012 +0200
@@ -1,5 +1,5 @@
-/* http://keith-wood.name/svg.html
-   SVG/jQuery DOM compatibility for jQuery v1.4.3.
+/* http://keith-wood.name/svg.html
+   jQuery DOM compatibility for jQuery SVG v1.4.4.
    Written by Keith Wood (kbwood{at}iinet.com.au) April 2009.
    Dual licensed under the GPL (http://dev.jquery.com/browser/trunk/jquery/GPL-LICENSE.txt) and 
    MIT (http://dev.jquery.com/browser/trunk/jquery/MIT-LICENSE.txt) licenses. 
@@ -12,7 +12,7 @@
 	return function(classNames) {
 		classNames = classNames || '';
 		return this.each(function() {
-			if (isSVGElem(this)) {
+			if ($.svg.isSVGElem(this)) {
 				var node = this;
 				$.each(classNames.split(/\s+/), function(i, className) {
 					var classes = (node.className ? node.className.baseVal : node.getAttribute('class'));
@@ -35,7 +35,7 @@
 	return function(classNames) {
 		classNames = classNames || '';
 		return this.each(function() {
-			if (isSVGElem(this)) {
+			if ($.svg.isSVGElem(this)) {
 				var node = this;
 				$.each(classNames.split(/\s+/), function(i, className) {
 					var classes = (node.className ? node.className.baseVal : node.getAttribute('class'));
@@ -56,7 +56,7 @@
 $.fn.toggleClass = function(origToggleClass) {
 	return function(className, state) {
 		return this.each(function() {
-			if (isSVGElem(this)) {
+			if ($.svg.isSVGElem(this)) {
 				if (typeof state !== 'boolean') {
 					state = !$(this).hasClass(className);
 				}
@@ -75,7 +75,7 @@
 		className = className || '';
 		var found = false;
 		this.each(function() {
-			if (isSVGElem(this)) {
+			if ($.svg.isSVGElem(this)) {
 				var classes = (this.className ? this.className.baseVal :
 					this.getAttribute('class')).split(/\s+/);
 				found = ($.inArray(className, classes) > -1);
@@ -94,34 +94,40 @@
 	return function(name, value, type) {
 		if (typeof name === 'string' && value === undefined) {
 			var val = origAttr.apply(this, [name, value, type]);
-			if (val && val.baseVal && val.baseVal.numberOfItems != null) { // Transform
+			if (val && val.baseVal && val.baseVal.numberOfItems != null) { // Multiple values
 				value = '';
 				val = val.baseVal;
-				for (var i = 0; i < val.numberOfItems; i++) {
-					var item = val.getItem(i);
-					switch (item.type) {
-						case 1: value += ' matrix(' + item.matrix.a + ',' + item.matrix.b + ',' +
-									item.matrix.c + ',' + item.matrix.d + ',' +
-									item.matrix.e + ',' + item.matrix.f + ')';
-								break;
-						case 2: value += ' translate(' + item.matrix.e + ',' + item.matrix.f + ')'; break;
-						case 3: value += ' scale(' + item.matrix.a + ',' + item.matrix.d + ')'; break;
-						case 4: value += ' rotate(' + item.angle + ')'; break; // Doesn't handle new origin
-						case 5: value += ' skewX(' + item.angle + ')'; break;
-						case 6: value += ' skewY(' + item.angle + ')'; break;
+				if (name == 'transform') {
+					for (var i = 0; i < val.numberOfItems; i++) {
+						var item = val.getItem(i);
+						switch (item.type) {
+							case 1: value += ' matrix(' + item.matrix.a + ',' + item.matrix.b + ',' +
+										item.matrix.c + ',' + item.matrix.d + ',' +
+										item.matrix.e + ',' + item.matrix.f + ')';
+									break;
+							case 2: value += ' translate(' + item.matrix.e + ',' + item.matrix.f + ')'; break;
+							case 3: value += ' scale(' + item.matrix.a + ',' + item.matrix.d + ')'; break;
+							case 4: value += ' rotate(' + item.angle + ')'; break; // Doesn't handle new origin
+							case 5: value += ' skewX(' + item.angle + ')'; break;
+							case 6: value += ' skewY(' + item.angle + ')'; break;
+						}
 					}
+					val = value.substring(1);
 				}
-				val = value.substring(1);
+				else {
+					val = val.getItem(0).valueAsString;
+				}
 			}
 			return (val && val.baseVal ? val.baseVal.valueAsString : val);
 		}
+
 		var options = name;
 		if (typeof name === 'string') {
 			options = {};
 			options[name] = value;
 		}
 		return this.each(function() {
-			if (isSVGElem(this)) {
+			if ($.svg.isSVGElem(this)) {
 				for (var n in options) {
 					var val = ($.isFunction(options[n]) ? options[n]() : options[n]);
 					(type ? this.style[n] = val : this.setAttribute(n, val));
@@ -138,7 +144,7 @@
 $.fn.removeAttr = function(origRemoveAttr) {
 	return function(name) {
 		return this.each(function() {
-			if (isSVGElem(this)) {
+			if ($.svg.isSVGElem(this)) {
 				(this[name] && this[name].baseVal ? this[name].baseVal.value = '' :
 					this.setAttribute(name, ''));
 			}
@@ -149,6 +155,23 @@
 	};
 }($.fn.removeAttr);
 
+/* Add numeric only properties. */
+$.extend($.cssNumber, {
+	'stopOpacity': true,
+	'strokeMitrelimit': true,
+	'strokeOpacity': true
+});
+
+/* Support retrieving CSS/attribute values on SVG nodes. */
+if ($.cssProps) {
+	$.css = function(origCSS) {
+		return function(elem, name) {
+			var value = (name.match(/^svg.*/) ? $(elem).attr($.cssProps[name] || name) : '');
+			return value || origCSS(elem, name);
+		};
+	}($.css);
+}
+  
 /* Determine if any nodes are SVG nodes. */
 function anySVG(checkSet) {
 	for (var i = 0; i < checkSet.length; i++) {
@@ -187,7 +210,7 @@
 
 $.expr.find.ID = function(origFindId) {
 	return function(match, context, isXML) {
-		return (isSVGElem(context) ?
+		return ($.svg.isSVGElem(context) ?
 			[context.ownerDocument.getElementById(match[1])] :
 			origFindId(match, context, isXML));
 	};
@@ -227,7 +250,7 @@
 			}
 		}
 		if (elem) {
-			var className = (!isSVGElem(elem) ? elem.className :
+			var className = (!$.svg.isSVGElem(elem) ? elem.className :
 				(elem.className ? elem.className.baseVal : '') || elem.getAttribute('class'));
 			if (not ^ (className && (' ' + className + ' ').indexOf(match) > -1)) {
 				if (!inplace)
@@ -242,7 +265,7 @@
 };
 
 $.expr.filter.CLASS = function(elem, match) {
-	var className = (!isSVGElem(elem) ? elem.className :
+	var className = (!$.svg.isSVGElem(elem) ? elem.className :
 		(elem.className ? elem.className.baseVal : elem.getAttribute('class')));
 	return (' ' + className + ' ').indexOf(match) > -1;
 };
@@ -250,7 +273,7 @@
 $.expr.filter.ATTR = function(origFilterAttr) {
 	return function(elem, match) {
 		var handler = null;
-		if (isSVGElem(elem)) {
+		if ($.svg.isSVGElem(elem)) {
 			handler = match[1];
 			$.expr.attrHandle[handler] = function(elem){
 				var attr = elem.getAttribute(handler);
@@ -266,67 +289,104 @@
 }($.expr.filter.ATTR);
 
 /*
-	Change Sizzle initialisation (line 1425) in jQuery v1.3.2 base code...
-	
+	In the event.add function (line 2646, v1.6.2):
+
+				if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {
+					// Bind the global event handler to the element
+					try { // SVG
+						elem.addEventListener( type, eventHandle, false );
+
+					} catch(e) {
+						if (elem.attachEvent)
+							elem.attachEvent( "on" + type, eventHandle );
+					}
+				}
+
+	In the event.remove function (line 2776, v1.6.2):
+
+				if ( !special.teardown || special.teardown.call( elem, namespaces ) === false ) {
+					try { // SVG
+						elem.removeEventListener(type, elemData.handle, false);
+					}
+					catch (e) {
+						if (elem.detachEvent)
+							elem.detachEvent("on" + type, elemData.handle);
+					}
+				}
+
+	In the event.fix function (line 3036, v.1.6.2)
+
+		if (event.target.namespaceURI == 'http://www.w3.org/2000/svg') { // SVG
+			event.button = [1, 4, 2][event.button];
+		}
+
+		// Add which for click: 1 === left; 2 === middle; 3 === right
+		// Note: button is not normalized, so don't use it
+		if ( !event.which && event.button !== undefined ) {
+			event.which = (event.button & 1 ? 1 : ( event.button & 2 ? 3 : ( event.button & 4 ? 2 : 0 ) ));
+		}
+
+	In the Sizzle function (line 3873, v1.6.2):
+
 	if ( toString.call(checkSet) === "[object Array]" ) {
 		if ( !prune ) {
 			results.push.apply( results, checkSet );
-		} else if ( context.nodeType === 1 ) {
-			for ( var i = 0; checkSet[i] != null; i++ ) {
-				if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && contains(context, checkSet[i])) ) {
-					results.push( set[i] || set.item(i) ); // Here
+
+		} else if ( context && context.nodeType === 1 ) {
+			for ( i = 0; checkSet[i] != null; i++ ) {
+				if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && Sizzle.contains(context, checkSet[i])) ) {
+					results.push( set[i] || set.item(i) ); // SVG
 				}
 			}
+
 		} else {
-			for ( var i = 0; checkSet[i] != null; i++ ) {
+			for ( i = 0; checkSet[i] != null; i++ ) {
 				if ( checkSet[i] && checkSet[i].nodeType === 1 ) {
-					results.push( set[i] || set.item(i) ); // Here
+					results.push( set[i] || set.item(i) ); // SVG
 				}
 			}
 		}
-	}
-	
-	Change fallback makeArray (line 2076) implementation in jQuery Sizzle...
-	
+
+	} else {
+
+	In the fallback for the Sizzle makeArray function (line 4617, v1.6.2):
+
+		if ( toString.call(array) === "[object Array]" ) {
+			Array.prototype.push.apply( ret, array );
+
+		} else {
 			if ( typeof array.length === "number" ) {
-				for ( var i = 0, l = array.length; i < l; i++ ) {
-					ret.push( array[i] || array.item(i) ); // Here
+				for ( var l = array.length; i < l; i++ ) {
+					ret.push( array[i] || array.item(i) ); // SVG
+				}
+
+			} else {
+				for ( ; array[i]; i++ ) {
+					ret.push( array[i] );
 				}
 			}
-*/
+		}
 
-/*
-	Events management requires changes to jQuery v1.3.2 base code...
+	In the jQuery.cleanData function (line 6220, v1.6.2)
 
-	In $.event.add (line 2437)...
-	
-				if ( !jQuery.event.special[type] || jQuery.event.special[type].setup.call(elem, data, namespaces) === false ) {
-					// Bind the global event handler to the element
-					try { // Here
-						elem.addEventListener(type, handle, false);
-					}
-					catch(e) {
-						if (elem.attachEvent)
-							elem.attachEvent("on" + type, handle);
+				if ( deleteExpando ) {
+					delete elem[ jQuery.expando ];
+
+				} else {
+					try { // SVG
+						elem.removeAttribute( jQuery.expando );
+					} catch (e) {
+						// Ignore
 					}
 				}
 
-	In $.event.remove (line 2521)...
-	
-							if ( !jQuery.event.special[type] || jQuery.event.special[type].teardown.call(elem, namespaces) === false ) {
-								try { // Here
-									elem.removeEventListener(type, jQuery.data(elem, "handle"), false);
-								}
-								catch (e) {
-									if (elem.detachEvent)
-										elem.detachEvent("on" + type, jQuery.data(elem, "handle"));
-								}
-							}
+	In the fallback getComputedStyle function (line 6509, v.1.6.2)
+
+		defaultView = (elem.ownerDocument ? elem.ownerDocument.defaultView : elem.defaultView); // SVG
+		if ( !defaultView ) {
+			return undefined;
+		}
+
 */
 
-/* Does this node belong to SVG? */
-function isSVGElem(node) {
-	return (node.nodeType == 1 && node.namespaceURI == $.svg.svgNS);
-}
-
 })(jQuery);