VML»æÍ¼°å¢Ú½Å±¾--VMLgraph.js¡¢XMLtool.js

¡¡¡¡½Å±¾

¡¡¡¡*************

¡¡¡¡* VMLgraph.js

¡¡¡¡*************

¡¡¡¡var xo=0;

¡¡¡¡var yo=0;

¡¡¡¡var ox=80;

¡¡¡¡var oy=20;

¡¡¡¡var dx=0;

¡¡¡¡var dy=0;

¡¡¡¡var drawKey = false;

¡¡¡¡var itemID = 0;

¡¡¡¡var ShapeItemNum = 0;

¡¡¡¡var ShapeItemX = 0;

¡¡¡¡var ShapeItemY = 0;

¡¡¡¡var CurveItemNum = 0;

¡¡¡¡var NodeDelete = false;

¡¡¡¡var ToolBarNum = 2; // Ô¤ÖõŤ¾ß±àºÅ

¡¡¡¡var gradientX = -1;

¡¡¡¡function cursor(k) {

¡¡¡¡xo = event.clientX - ox;

¡¡¡¡yo = event.clientY - oy;

¡¡¡¡if(k && xo>=0 && yo>=0)

¡¡¡¡oxy.innerHTML = xo+","+yo;

¡¡¡¡else

¡¡¡¡oxy.innerHTML = "";

¡¡¡¡if(drawKey) {

¡¡¡¡paint();

¡¡¡¡view.innerHTML = tree(canvas.documentElement,0);

¡¡¡¡}

¡¡¡¡}

¡¡¡¡function setOverColor(v) {

¡¡¡¡if(! NodeDelete) return;

¡¡¡¡v.myColor = v.strokecolor;

¡¡¡¡if(v.strokecolor == "red")

¡¡¡¡v.strokecolor='#000000';

¡¡¡¡else

¡¡¡¡v.strokecolor='#ff0000';

¡¡¡¡}

¡¡¡¡function setOutColor(v) {

¡¡¡¡if(! NodeDelete) return;

¡¡¡¡v.strokecolor = v.myColor;

¡¡¡¡view.innerHTML = tree(canvas.documentElement,0);

¡¡¡¡}

¡¡¡¡function deleteNode(v) {

¡¡¡¡if(! NodeDelete) return;

¡¡¡¡var id = v.id;

¡¡¡¡for(i=0;i<canvas.selectNodes("/*//*").length;i++) {

¡¡¡¡var node = canvas.selectNodes("/*//*")[i];

¡¡¡¡if(node.getAttribute("id") == id) {

¡¡¡¡canvas.documentElement.childNodes[0].removeChild(node);

¡¡¡¡view.innerHTML = tree(canvas.documentElement,0);

¡¡¡¡return;

¡¡¡¡}

¡¡¡¡}

¡¡¡¡}

¡¡¡¡function setElement(node) {

¡¡¡¡node.setAttribute("id") = itemID;

¡¡¡¡node.setAttribute("myColor") = "#";

¡¡¡¡node.setAttribute("onMouseOver") = "setOverColor(this)";

¡¡¡¡node.setAttribute("onMouseOut") = "setOutColor(this)";

¡¡¡¡node.setAttribute("onClick") = "deleteNode(this)";

¡¡¡¡var subobjField = canvas.createElement("v:stroke");

¡¡¡¡subobjField.setAttribute("color") = color1.fillcolor;

¡¡¡¡subobjField.setAttribute("dashstyle") = dashstyle.dashstyle;

¡¡¡¡node.appendChild(subobjField);

¡¡¡¡if(textbox.style.visibility == "visible" && txt.value.length) {

¡¡¡¡var subobjField = canvas.createElement("v:path");

¡¡¡¡subobjField.setAttribute("textpathok") = "true";

¡¡¡¡node.appendChild(subobjField);

¡¡¡¡var subobjField = canvas.createElement("v:textpath");

¡¡¡¡subobjField.setAttribute("on") = "true";

¡¡¡¡subobjField.setAttribute("string") = txt.value;

¡¡¡¡subobjField.setAttribute("style") = "font:normal normal normal 16pt 'Arial Black'";

¡¡¡¡node.appendChild(subobjField);

¡¡¡¡}

¡¡¡¡canvas.documentElement.childNodes[0].appendChild(node);

¡¡¡¡}

¡¡¡¡function mouse_down() {

¡¡¡¡drawKey = true;

¡¡¡¡dx = xo;

¡¡¡¡dy = yo;

¡¡¡¡itemID++;

¡¡¡¡if(ToolBarNum != 7) ShapeItemNum = 0;

¡¡¡¡switch(ToolBarNum) {

¡¡¡¡case 3:

¡¡¡¡var objField = canvas.createElement("v:line");

¡¡¡¡objField.setAttribute("from") = xo+","+yo;

¡¡¡¡objField.setAttribute("to") = xo+","+yo;

¡¡¡¡return setElement(objField);

¡¡¡¡case 4:

¡¡¡¡if(CurveItemNum == 0) {

¡¡¡¡CurveItemNum = 1;

¡¡¡¡var objField = canvas.createElement("v:curve");

¡¡¡¡objField.setAttribute("from") = xo+","+yo;

¡¡¡¡objField.setAttribute("to") = xo+","+yo;

¡¡¡¡objField.setAttribute("control1") = xo+","+yo;

¡¡¡¡objField.setAttribute("control2") = xo+","+yo;

¡¡¡¡var subobjField = canvas.createElement("v:fill");

¡¡¡¡subobjField.setAttribute("opacity") = 0;

¡¡¡¡objField.appendChild(subobjField);

¡¡¡¡return setElement(objField);

¡¡¡¡}

¡¡¡¡return;

¡¡¡¡case 9:

¡¡¡¡var objField = canvas.createElement("v:polyline");

¡¡¡¡objField.setAttribute("points") = xo+","+yo+" "+xo+","+yo;

¡¡¡¡var subobjField = canvas.createElement("v:fill");

¡¡¡¡subobjField.setAttribute("opacity") = 0;

¡¡¡¡objField.appendChild(subobjField);

¡¡¡¡return setElement(objField);

¡¡¡¡case 7:

¡¡¡¡if(ShapeItemNum == 0) {

¡¡¡¡var objField = canvas.createElement("v:shape");

¡¡¡¡objField.setAttribute("style") = "width:500; height:309";

¡¡¡¡objField.setAttribute("path") = "m "+xo+","+yo+" l "+xo+","+yo;

¡¡¡¡ShapeItemX = xo;

¡¡¡¡ShapeItemY = yo;

¡¡¡¡}else {

¡¡¡¡objField = canvas.documentElement.childNodes[0].lastChild;

¡¡¡¡objField.setAttribute("path") = objField.getAttribute("path") + " "+xo+","+yo;

¡¡¡¡return;

¡¡¡¡}

¡¡¡¡ShapeItemNum++;

¡¡¡¡break;

¡¡¡¡case 5:

¡¡¡¡var objField = canvas.createElement("v:rect");

¡¡¡¡break;

¡¡¡¡case 6:

¡¡¡¡var objField = canvas.createElement("v:roundrect");

¡¡¡¡objField.setAttribute("arcsize") = 0.2;

¡¡¡¡break;

¡¡¡¡case 8:

¡¡¡¡var objField = canvas.createElement("v:oval");

¡¡¡¡break;

¡¡¡¡case 10:

¡¡¡¡s = "";

¡¡¡¡s = tree(canvas.documentElement,1);

¡¡¡¡view.innerHTML = s;

¡¡¡¡return;

¡¡¡¡defaule:

¡¡¡¡drawKey = false;

¡¡¡¡return;

¡¡¡¡}

¡¡¡¡if(objField) {

¡¡¡¡if(ToolBarNum != 7)

¡¡¡¡objField.setAttribute("style") = "left:"+xo+"; top:"+yo+"; width:0; height:0;";

¡¡¡¡var subobjField = canvas.createElement("v:fill");

¡¡¡¡subobjField.setAttribute("opacity") = gradientBar.opacity;

¡¡¡¡subobjField.setAttribute("angle") = gradientBar.angle;

¡¡¡¡subobjField.setAttribute("type") = gradientBar.type;

¡¡¡¡subobjField.setAttribute("color") = gradientBar.color.value;

¡¡¡¡subobjField.setAttribute("color2") = gradientBar.color2.value;

¡¡¡¡subobjField.setAttribute("colors") = gradientBar.colors.value;

¡¡¡¡subobjField.setAttribute("focusposition") = gradientBar.focusposition;

¡¡¡¡objField.appendChild(subobjField);

¡¡¡¡return setElement(objField);

¡¡¡¡}

¡¡¡¡return;

¡¡¡¡}

¡¡¡¡function mouse_up() {

¡¡¡¡drawKey = false;

¡¡¡¡if(CurveItemNum > 0) CurveItemNum++;

¡¡¡¡if(CurveItemNum > 3) CurveItemNum = 0;

¡¡¡¡if(ToolBarNum == 7) {

¡¡¡¡if(Math.abs(xo - ShapeItemX) < 2 && Math.abs(yo - ShapeItemY) < 2) {

¡¡¡¡ShapeItemNum = 0;

¡¡¡¡Element = canvas.documentElement.childNodes[0].lastChild;

¡¡¡¡var regerp = / [0-9]+,[0-9]+$/

¡¡¡¡var str = Element.getAttribute("path");

¡¡¡¡Element.setAttribute("path") = str.replace(regerp," x e");

¡¡¡¡view.innerHTML = tree(canvas.documentElement,0);

¡¡¡¡}

¡¡¡¡}

¡¡¡¡}

¡¡¡¡function paint() {

¡¡¡¡Element = canvas.documentElement.childNodes[0].lastChild;

¡¡¡¡var x0,y0,x1,y1;

¡¡¡¡x0 = Math.min(dx,xo);

¡¡¡¡y0 = Math.min(dy,yo);

¡¡¡¡x1 = Math.max(dx,xo);

¡¡¡¡y1 = Math.max(dy,yo);

¡¡¡¡var box = "left:"+x0+"; top:"+y0+"; width:"+(x1-x0)+"; height:"+(y1-y0)+";";

¡¡¡¡switch(ToolBarNum) {

¡¡¡¡case 4:

¡¡¡¡if(CurveItemNum ==2) {

¡¡¡¡Element.setAttribute("control1") = xo+","+yo;

¡¡¡¡Element.setAttribute("control2") = Element.getAttribute("to");

¡¡¡¡break;

¡¡¡¡}

¡¡¡¡if(CurveItemNum ==3) {

¡¡¡¡Element.setAttribute("control2") = xo+","+yo;

¡¡¡¡break;

¡¡¡¡}

¡¡¡¡case 3:

¡¡¡¡Element.setAttribute("to") = xo+","+yo;

¡¡¡¡break;

¡¡¡¡case 7:

¡¡¡¡var regerp = /[0-9]+,[0-9]+$/

¡¡¡¡var str = Element.getAttribute("path");

¡¡¡¡Element.setAttribute("path") = str.replace(regerp,xo+","+yo);

¡¡¡¡break;

¡¡¡¡case 5:

¡¡¡¡case 6:

¡¡¡¡case 8:

¡¡¡¡var regerp = /left.+height:[0-9]+;/

¡¡¡¡var str = Element.getAttribute("style");

¡¡¡¡Element.setAttribute("style") = str.replace(regerp,box);

¡¡¡¡break;

¡¡¡¡case 9:

¡¡¡¡var regerp = / [0-9]+,[0-9]+$/

¡¡¡¡var str = Element.getAttribute("points");

¡¡¡¡Element.setAttribute("points") = str+" "+xo+","+yo;

¡¡¡¡break;

¡¡¡¡defaule:

¡¡¡¡break;

¡¡¡¡}

¡¡¡¡}

¡¡¡¡function init() {

¡¡¡¡tool_box_refresh();  // ¹¤¾ßÀ¸³õʼ

¡¡¡¡view.innerHTML = tree(canvas.documentElement);  // »æÍ¼Çø³õʼ

¡¡¡¡color.innerHTML = tree(tools.selectNodes("*/colorbar")[0]);  // ÑÕɫѡÔñ³õʼ

¡¡¡¡linebox.innerHTML = tree(tools.selectNodes("*/linebox")[0]);  // ÏßÐÍÑ¡Ôñ³õʼ

¡¡¡¡gradientBox.innerHTML = tree(tools.selectNodes("*/gradient")[0]);  // ³äÌîÑ¡Ôñ³õʼ

¡¡¡¡}

¡¡¡¡// »æÖƹ¤¾ßÀ¸

¡¡¡¡function tool_box_refresh() {

¡¡¡¡var buffer = "";

¡¡¡¡var i;

¡¡¡¡for(i=0;i<tools.selectNodes("*/toolbar").length;i++) {

¡¡¡¡var node = tools.selectNodes("*/toolbar")[i];

¡¡¡¡var id = node.getAttribute("id");

¡¡¡¡node.childNodes[0].setAttribute("onClick") = "tool_box_select("+id+",this.title)";

¡¡¡¡var node1 = node.selectNodes("*/v:rect")[0];

¡¡¡¡if(id == ToolBarNum) {

¡¡¡¡node1.setAttribute("fillcolor") = "#ffcccc"

¡¡¡¡node1.setAttribute("strokecolor") = "#ff0000"

¡¡¡¡}else {

¡¡¡¡node1.setAttribute("fillcolor") = "#ffffff"

¡¡¡¡node1.setAttribute("strokecolor") = "#000000"

¡¡¡¡}

¡¡¡¡buffer += tree(node.childNodes[0]);

¡¡¡¡}

¡¡¡¡toolbox.innerHTML = buffer;

¡¡¡¡}

¡¡¡¡// ¹¤¾ßÑ¡Ôñ

¡¡¡¡function tool_box_select(v,t) {

¡¡¡¡var key = ToolBarNum;

¡¡¡¡ToolBarNum = v;

¡¡¡¡tool_box_refresh();

¡¡¡¡hooke();

¡¡¡¡if(v == 7) {

¡¡¡¡if(key == 7 && ShapeItemNum > 0) {

¡¡¡¡Element = canvas.documentElement.childNodes[0].lastChild;

¡¡¡¡var str = Element.getAttribute("path");

¡¡¡¡Element.setAttribute("path") = str + " x e";

¡¡¡¡view.innerHTML = tree(canvas.documentElement,0);

¡¡¡¡ShapeItemNum = 0;

¡¡¡¡}

¡¡¡¡}

¡¡¡¡if(v == 10)

¡¡¡¡if(textbox.style.visibility == "hidden")

¡¡¡¡textbox.style.visibility = "visible";

¡¡¡¡else

¡¡¡¡textbox.style.visibility = "hidden";

¡¡¡¡NodeDelete = false;

¡¡¡¡if(v == 1) {

¡¡¡¡NodeDelete = true;

¡¡¡¡view.innerHTML = tree(canvas.documentElement,0);

¡¡¡¡}

¡¡¡¡}

¡¡¡¡// ÑÕɫѡÔñ

¡¡¡¡//var setcolorkey = color1;

¡¡¡¡function setcolor(c) {

¡¡¡¡var setcolorkey = color1;

¡¡¡¡setcolorkey.fillcolor = c;

¡¡¡¡}

¡¡¡¡function gradientColor(v) {

¡¡¡¡v.fillcolor = color1.fillcolor;

¡¡¡¡gradientRefresh();

¡¡¡¡return;

¡¡¡¡var m = tools.documentElement.selectNodes("/*/gradient//v:shape").length;

¡¡¡¡var node = tools.documentElement.selectNodes("/*/gradient//v:shape");

¡¡¡¡for(i=0;i<m;i++) {

¡¡¡¡if(node[i].getAttribute("id") == v.id)

¡¡¡¡node[i].setAttribute("fillcolor") = color1.fillcolor;

¡¡¡¡}

¡¡¡¡gradientRefresh();

¡¡¡¡}

¡¡¡¡function gradientPoint(v) {

¡¡¡¡if(gradientX < 0)

¡¡¡¡gradientX = xo - 508 - parseInt(v.style.left);

¡¡¡¡n = xo - 508 - gradientX;

¡¡¡¡if(n < 8) n = 8;

¡¡¡¡if(n > 108) n = 108;

¡¡¡¡v.style.left = n;

¡¡¡¡gradientRefresh();

¡¡¡¡}

¡¡¡¡function anglePoint(v) {

¡¡¡¡angle.style.left = Math.floor((xo-516)/25)*25+8;

¡¡¡¡gradientRefresh();

¡¡¡¡}

¡¡¡¡function opacityPoint(v) {

¡¡¡¡opacity.style.left = Math.floor((xo-516)/25)*25+8;

¡¡¡¡gradientRefresh();

¡¡¡¡}

¡¡¡¡function settype(v) {

¡¡¡¡if(v.style.borderColor == "black")

¡¡¡¡v.style.borderColor = "red";

¡¡¡¡else

¡¡¡¡v.style.borderColor = "black";

¡¡¡¡gradientRefresh();

¡¡¡¡}

¡¡¡¡function setGradientX() {

¡¡¡¡gradientX = -1;

¡¡¡¡}

¡¡¡¡function gradientRefresh() {

¡¡¡¡var m = (parseInt(gradient4.style.left)-parseInt(gradient1.style.left));

¡¡¡¡var n1 = (parseInt(gradient2.style.left)-parseInt(gradient1.style.left))/m*100;

¡¡¡¡var n2 = (parseInt(gradient3.style.left)-parseInt(gradient1.style.left))/m*100;

¡¡¡¡gradientBar.color.value = gradient1.fillcolor;

¡¡¡¡gradientBar.color2.value = gradient4.fillcolor;

¡¡¡¡if(type3.style.borderColor == "black")

¡¡¡¡gradientBar.colors.value = ",";

¡¡¡¡else

¡¡¡¡gradientBar.colors.value = n1 + "% " + gradient2.fillcolor + "," + n2 + "% " + gradient3.fillcolor;

¡¡¡¡if(type1.style.borderColor == "black")

¡¡¡¡gradientBar.type = "solid";

¡¡¡¡else

¡¡¡¡gradientBar.type = "gradient";

¡¡¡¡if(type2.style.borderColor == "red")

¡¡¡¡gradientBar.type = "gradientradial";

¡¡¡¡n1 = (parseInt(focus1.style.left)-8)/m*100;

¡¡¡¡n2 = (parseInt(focus2.style.left)-8)/m*100;

¡¡¡¡gradientBar.focusposition.value = n1 + "%," + n2 + "%";

¡¡¡¡gradientBar.angle = (parseInt(angle.style.left)-8) * 3.6;

¡¡¡¡gradientBar.opacity = (parseInt(opacity.style.left)-8)/m

¡¡¡¡}

¡¡¡¡*************

¡¡¡¡* XMLtool.js

¡¡¡¡*************

¡¡¡¡// ´«ËÍXMLÎĵµµ½·þÎñÆ÷

¡¡¡¡function saveXML()

¡¡¡¡{

¡¡¡¡var xmlHTTP = new ActiveXObject("Microsoft.XMLHTTP");

¡¡¡¡xmlHTTP.open("POST","server.php",false); // ʹÓÃASPʱÓÃserver.asp

¡¡¡¡xmlHTTP.setRequestHeader("Contrn-type","text/xml");

¡¡¡¡xmlHTTP.setRequestHeader("Contrn-charset","gb2312");

¡¡¡¡xmlHTTP.send(tree(canvas.documentElement));

¡¡¡¡var s = xmlHTTP.responseText;

¡¡¡¡minview.innerHTML = s.replace(/WIDTH:500;HEIGHT:300/,"WIDTH:120;HEIGHT:72")

¡¡¡¡if(xmlHTTP.responseText.indexOf("Error:")!=-1) {

¡¡¡¡alert(xmlHTTP.responseText);

¡¡¡¡}

¡¡¡¡}

¡¡¡¡// ±éÀúxml¶ÔÏ󣬽âÎöxmlµÄºËÐĺ¯Êý¼¯

¡¡¡¡function tree(Element,debug) {

¡¡¡¡var buffer = "";

¡¡¡¡var node = "";

¡¡¡¡if(Element.nodeType != 3) {

¡¡¡¡node = Element;

¡¡¡¡buffer += onElement(Element,debug);

¡¡¡¡}

¡¡¡¡if(Element.nodeType == 3)

¡¡¡¡buffer += onData(Element);

¡¡¡¡if(Element.hasChildNodes) {

¡¡¡¡for(var i=0;i<Element.childNodes.length;i++) {

¡¡¡¡buffer += tree(Element.childNodes(i),debug);

¡¡¡¡}

¡¡¡¡}

¡¡¡¡if(node)

¡¡¡¡buffer += endElement(node,debug);

¡¡¡¡return buffer;

¡¡¡¡}

¡¡¡¡/***** ÒÔÏÂÈý¸öº¯ÊýÇë¸ù¾ÝÐèÒª×ÔÐÐÐÞ¸Ä *****/

¡¡¡¡// ±éÀúxml¶ÔÏó--½Úµã¿ªÊ¼

¡¡¡¡function onElement(Element,debug) {

¡¡¡¡var buffer = (debug ? "<" : "<") + Element.nodeName;

¡¡¡¡n = Element.attributes.length

¡¡¡¡if(n>0) {  // Èô¸Ã½ÚµãÓвÎÊý

¡¡¡¡for(var i=0;i<n;i++)

¡¡¡¡buffer += ' ' + Element.attributes(i).name + '=\"' + Element.attributes(i).value + '"';

¡¡¡¡}

¡¡¡¡buffer += debug ? ">" : ">";

¡¡¡¡return buffer;

¡¡¡¡}

¡¡¡¡// ±éÀúxml¶ÔÏó--½Úµã½áÊø

¡¡¡¡function endElement(Element,debug) {

¡¡¡¡return (debug ? "</" : "</") + Element.nodeName + (debug ? "><br>" : ">");

¡¡¡¡}

¡¡¡¡// ±éÀúxml¶ÔÏó--½ÚµãÊý¾Ý

¡¡¡¡function onData(Element) {

¡¡¡¡return Element.nodeValue

¡¡¡¡}