/* ** InkWeb - Inkscape's Javscript features for the open vector web ** ** Copyright (C) 2009 Aurelio A. Heckert, aurium (a) gmail dot com ** ** ********* Bugs and New Fetures ************************************* ** If you found any bug on this script or if you want to propose a ** new feature, please report it in the inkscape bug tracker ** https://inkscape.org/report . ** ******************************************************************** ** ** This program is free software: you can redistribute it and/or modify ** it under the terms of the GNU Lesser General Public License as published ** by the Free Software Foundation, either version 3 of the License, or ** (at your option) any later version. ** ** This program is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied warranty of ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ** GNU Lesser General Public License for more details. ** ** You should have received a copy of the GNU Lesser General Public License ** along with this program. If not, see . */ var InkWeb = { version: 0.04, NS: { svg: "http://www.w3.org/2000/svg", sodipodi: "http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd", inkscape: "http://www.inkscape.org/namespaces/inkscape", cc: "http://creativecommons.org/ns#", dc: "http://purl.org/dc/elements/1.1/", rdf: "http://www.w3.org/1999/02/22-rdf-syntax-ns#", xlink: "http://www.w3.org/1999/xlink", xml: "http://www.w3.org/XML/1998/namespace" } }; InkWeb.el = function (tag, attributes) { // A helper to create SVG elements var element = document.createElementNS( this.NS.svg, tag ); for ( var att in attributes ) { switch ( att ) { case "parent": attributes.parent.appendChild( element ); break; case "text": element.appendChild( document.createTextNode( attributes.text ) ); break; default: element.setAttribute( att, attributes[att] ); } } return element; } InkWeb.reGetStyleAttVal = function (att) { return new RegExp( "(^|.*;)[ ]*"+ att +":([^;]*)(;.*|$)" ) } InkWeb.getStyle = function (el, att) { // This method is needed because el.style is only working // to HTML style in the Firefox 3.0 if ( typeof(el) == "string" ) el = document.getElementById(el); var style = el.getAttribute("style"); var match = this.reGetStyleAttVal(att).exec(style); if ( match ) { return match[2]; } else { return false; } } InkWeb.setStyle = function (el, att, val) { if ( typeof(el) == "string" ) el = document.getElementById(el); var style = el.getAttribute("style"); re = this.reGetStyleAttVal(att); if ( re.test(style) ) { style = style.replace( re, "$1"+ att +":"+ val +"$3" ); } else { style += ";"+ att +":"+ val; } el.setAttribute( "style", style ); return val } InkWeb.transmitAtt = function (conf) { conf.att = conf.att.split( /\s+/ ); if ( typeof(conf.from) == "string" ) conf.from = document.getElementById( conf.from ); if ( ! conf.to.join ) conf.to = [ conf.to ]; for ( var toEl,elN=0; toEl=conf.to[elN]; elN++ ) { if ( typeof(toEl) == "string" ) toEl = document.getElementById( toEl ); for ( var i=0; i