diff --git a/feynman/EditorPart.html b/feynman/EditorPart.html new file mode 100644 index 0000000..d1143c7 --- /dev/null +++ b/feynman/EditorPart.html @@ -0,0 +1,42 @@ + + + + Index Test + + + + + + + +
+
+ + + \ No newline at end of file diff --git a/feynman/editor.html b/feynman/editor.html new file mode 100644 index 0000000..6acff4e --- /dev/null +++ b/feynman/editor.html @@ -0,0 +1,26 @@ + + + + Index Test + + + + + + + + + +
+ +
+
+ +
+ + + \ No newline at end of file diff --git a/feynman/examples.txt b/feynman/examples.txt new file mode 100644 index 0000000..bc9aae4 --- /dev/null +++ b/feynman/examples.txt @@ -0,0 +1,10 @@ +examples: + +___________________________________________________________________________________________________________________________ +quark quark to higgs : + +var paper = Raphael("test",1000,500); +var t = Feynman("test2",'{"lines":[[0,0,2,1,11],[2,1,3,2,11],[2,3,3,2,-11],[0,4,2,3,-11],[2,1,4,0,14],[2,3,4,4,14],[3,2,4,2,17]]}'); + + + var t = Feynman("test2",'{"lines":[[0,0,1,1,15],[0,2,1,1,16],[1,1,2,1,13]]}'); \ No newline at end of file diff --git a/feynman/indextest.html b/feynman/indextest.html new file mode 100644 index 0000000..77a6816 --- /dev/null +++ b/feynman/indextest.html @@ -0,0 +1,24 @@ + + + + Index Test + + + + + + +
+ +
+ + + + \ No newline at end of file diff --git a/feynman/js/CIP.txt b/feynman/js/CIP.txt new file mode 100644 index 0000000..c3753f6 --- /dev/null +++ b/feynman/js/CIP.txt @@ -0,0 +1,5 @@ +Electron : \n Composition : Elementary particle \n Statistics : Fermionic \n Generation : First \n Interactions : Gravity, Electromagnetic, Weak \n Mass : 0.510998928 MeV/c \ Spin : 1/2 +Muon \n Composition : Elementary particle \n Statistics : Fermionic \n Generation : Second \n Interactions : \n -Gravity \n -Electromagnetic \n -Weak \n Mass : 105.65836668(38) MeV/c2 \n Spin : 1/2 + +Tau \n Composition : Elementary particle \n Statistics : Fermionic \n Generation : Third \n Interactions : \n -Gravity \n -Electromagnetic \n -Weak \n Mass : 1,776.820.16 MeV/c2 \n Spin : 1/2 + diff --git a/feynman/js/main.js b/feynman/js/main.js new file mode 100644 index 0000000..3ab0467 --- /dev/null +++ b/feynman/js/main.js @@ -0,0 +1,393 @@ +var ListOfLines = new Array(); +var MyNewLine = null; +var ListOfParticles = ["e","\u03BC","\u03C4","\u03BD","\u03BD","\u03BD","u","d","c","s","t","b","\u03B3","Z","w+","w-","H","g","p","n"]; +var ColorOfParticles = ["#99CCFF","#CCCC00","#FF6600","#AAAAAA","#999999","#BBBBBB","#99FF00","#FF0000","#9900FF","#99CC00","#AAEE00","#CC9999","#FFEE00","#FFCC33","#990066","#CC00FF","#FF3300","#770077","#995533"]; +var DescOfParticles= ["Electron : \n Antiparticle : Positron \n Statistics : Fermion \n Generation : First \n Type : Lepton \n Interactions : Electromagnetic, \n Weak, Gravity \n Mass : 0.510998928(11) MeV/c2 \n Lifetime : Stable \n Spin : 1/2 \n Charge : -1 \n Color : White ", + "Muon \n Antiparticle : Antimuon \n Statistics : Fermion \n Generation : Second \n Type : Lepton \n Interactions : Electromagnetic, \n Weak, Gravity \n Mass : 105.6583715(35) MeV/c2 \n Lifetime : 2.1969811(22)e-6 s \n Spin : 1/2 \n Charge : -1 \n Color : White", + "Tauon \n Antiparticle : Antitauon \n Statistics : Fermion \n Generation : Third \n Type : Lepton \n Interactions : Electromagnetic, \n Weak, Gravity \n Mass : 1,776.82(16) MeV/c2 \n Lifetime : 2.906(10)e-13 s \n Spin : 1/2 \n Charge : -1 \n Color : White" + ,"Electron neutrino \n Antiparticle : Electron antineutrino \n Statistics : Fermion \n Generation : First \n Type : Lepton \n Interactions : Weak, Gravity \n Mass : Small but not zero. \n Lifetime : Stable \n Spin : 1/2 \n Charge : 0 \n Color : White" + ,"Muon neutrino \n Antiparticle : Muon antineutrino \n Statistics : Fermion \n Generation : Second \n Type : Lepton \n Interactions : Weak, Gravity \n Mass : Small but not zero. \n Lifetime : Stable \n Spin : 1/2 \n Charge : 0 \n Color : White" + ,"Tau neutrino \n Antiparticle : Tau antineutrino \n Statistics : Fermion \n Generation : Third \n Type : Lepton \n Interactions : Weak, Gravity \n Mass : Small but not zero. \n Lifetime : Stable \n Spin : 1/2 \n Charge : 0 \n Color : White" + ,"Up \n Antiparticle : Antiup \n Statistics : Fermion \n Generation : First \n Type : Quark \n Interactions : Strong, Electromagnetic,\n Weak, Gravity \n Mass : 2.3+0.7-0.5 MeV/c2 \n Lifetime : Stable \n Spin : 1/2 \n Charge : +2/3 \n Color : Red, Green, Blue" + ,"Down \n Antiparticle : Antidown \n Statistics : Fermion \n Generation : First \n Type : Quark \n Interactions : Strong, Electromagnetic,\n Weak, Gravity \n Mass : 4.8+0.7-0.5 MeV/c2 \n Lifetime : Stable \n Spin : 1/2 \n Charge : -1/3 \n Color : Red, Green, Blue" + ,"Charm \n Antiparticle : Anticharm \n Statistics : Fermion \n Generation : Second \n Type : Quark \n Interactions : Strong, Electromagnetic,\n Weak, Gravity \n Mass : 1,275(25) MeV/c2 \n Lifetime : Depends on the bound state. \n Spin : 1/2 \n Charge : +2/3 \n Color : Red, Green, Blue " + ,"Strange \n Antiparticle : Antistrange \n Statistics : Fermion \n Generation : Second \n Type : Quark \n Interactions : Strong, Electromagnetic,\n Weak, Gravity \n Mass : 95(5) MeV/c2 \n Lifetime : Depends on the bound state. \n Spin : 1/2 \n Charge : -1/3 \n Color : Red, Green, Blue" + ,"Top \n Antiparticle : Antitop \n Statistics : Fermion \n Generation : Third \n Type : Quark \n Interactions : Strong, Electromagnetic\n, Weak, Gravity \n Mass : 173.5+/-0.6+/-0.8 GeV/c2 \n Lifetime : 5e-25 s \n Spin : 1/2 \n Charge : +2/3 \n Color : Red, Green, Blue" + ,"Bottom \n Antiparticle : Antibottom \n Statistics : Fermion \n Generation : Third \n Type : Quark \n Interactions : Strong, Electromagnetic,\n Weak, Gravity \n Mass : 4.18(3) GeV/c2 \n Lifetime : Depends on the bound state. \n Spin : 1/2 \n Charge : -1/3 \n Color : Red, Green, Blue" + ,"Photon \n Antiparticle : Photon \n Statistics : Boson \n Type : Force carrier \n Interactions : Electromagnetic \n Mass : 0 \n Lifetime : Stable \n Spin : 1 \n Charge : 0 \n Color : White \n Discovery : - \n Prediction : -" + ,"Gluon \n Antiparticle : Gluon \n Statistics : Boson \n Type : Force carrier \n Interactions : Strong \n Mass : 0 \n Lifetime : Stable \n Spin : 1 \n Charge : 0 \n Color : Color + Anticolor" + ,"Z \n Antiparticle : Z \n Statistics : Boson \n Type : Force carrier \n Interactions : Weak, Electromagnetic, Gravity \n Mass : 91.1876(21) GeV/c2 \n Lifetime : 1.6575(15)e-24 s \n Spin : 1 \n Charge : 0 \n Color : White " + ,"W+/- \n Antiparticle : W-/+ \n Statistics : Boson \n Type : Force carrier \n Interactions : Weak, Electromagnetic, Gravity \n Mass : 80.385(15) GeV/c2 \n Lifetime : 1.983(40)e-24 s \n Spin : 1 \n Charge : +1/-1 \n Color : White " + ,"" + ,"" + ,"" + ,""]; +var PanelDescription = null; +var TextDescription = null; +var gridSize=20; +var gParticleType=13; +var nstepx=0; +var nstepy=0; +var MySize=0; + +function Feynman(div,reaction){ + + //define if the usercan modify or not the graph + var ReadOnly = 1; + + //allow to modifiy if the graph is read only or not + this.IsReadOnly=function(Bool){ ReadOnly= Bool;} + + // this variable will contain all lines of this graph + + Tuples=JSON.parse(reaction); + + this.TuplesLength = Tuples.lines.length; + this.maxX = 0; + this.maxY = 0; + + for(i = 0 ; imaxX) + { + maxX=Tuples.lines[i][2]; + } + if(Tuples.lines[i][3]>maxY) + { + maxY=Tuples.lines[i][3]; + } + if(Tuples.lines[i][0]>maxX) + { + maxX=Tuples.lines[i][0]; + } + if(Tuples.lines[i][1]>maxY) + { + maxY=Tuples.lines[i][1]; + } + } + nstepx = paper.width / maxX; + nstepy = paper.height/ maxY; + + for(i = 0 ; i18)) { + if(pid>0) this.direction=1; + else this.direction=-1; + this.DrawStraightLine(); + } else { + if(pid==13) this.DrawPhotonLine(); + else { + if(pid<=17) this.DrawDashedLine(); + else this.DrawGluonLine(); + } + } + } + + this.Delete = function() { + + } + + this.DrawStraightLine=function() { + + // draw a straight line from startVertex to endVertex + dir_angle = 0; + if ( this.direction == -1 ) dir_angle = 180; //turn the arrow in the opposite direction + path_string = "M"+ startVertex.GetX() + " " + startVertex.GetY()+ "L" + endVertex.GetX() + " " + endVertex.GetY(); + pathA = paper.path(path_string).attr("stroke", "black").attr("stroke-width", "2"); + //compute the mean point for the line + mean = new Vertex((startVertex.GetX() + endVertex.GetX() ) / 2, (startVertex.GetY() + endVertex.GetY() ) / 2); + //draw the arrow + var angle = Math.atan2(startVertex.GetX()-endVertex.GetX(),endVertex.GetY()-startVertex.GetY()); + angle = (angle / (2 * Math.PI)) * 360; + x2 = mean.GetX(); + y2 = mean.GetY(); + size = 8; // change it to change dimension of the arrow!!! + if(pid>0) + { + textA=paper.text(x2,y2-nstepy/3,ListOfParticles[pid-1]); + } + else + { + + textA=paper.text(x2,y2-nstepy/3,ListOfParticles[pid*-1-1]); + } + var sign=1; + if(pid<0) sign=-1; + var arrowPath = paper.path("M" + x2 + " " + y2 + " L" + (x2 - size) + " " + (y2 - size) + " L" + (x2 - size) + " " + (y2 + size) + " L" + x2 + " " + y2 ).attr("fill","black").rotate(sign* 90+angle+dir_angle,x2,y2); + + if(pid<0) + { + pid = pid*-1; + } + textA.attr({"font-size": nstepy/4 }); + textA.hover(function(){ this.attr ("fill", ColorOfParticles[pid-1] );MySize = this.attr('font-size'); this.attr({"font-size": MySize +20 }); }, function(){this.attr ("fill", "#000000");this.attr({"font-size": MySize })},textA, textA); + pathA.hover(function(){ this.attr ("stroke", ColorOfParticles[pid-1] ); }, function(){this.attr ("stroke", "#000000");},pathA, pathA); + pathA.hover(function(){ this.attr ("stroke", ColorOfParticles[pid-1] );this.attr("fill",ColorOfParticles[pid-1]); }, function(){this.attr ("stroke", "#000000");this.attr("fill","#000000");},arrowPath, arrowPath); + pathA.hover(function(){ this.attr ("fill", ColorOfParticles[pid-1] );MySize = this.attr('font-size'); this.attr({"font-size": MySize +20 }); }, function(){this.attr ("fill", "#000000");this.attr({"font-size": MySize })},textA, textA); + textA.hover(function(){this.attr ("stroke", ColorOfParticles[pid-1] ); }, function(){this.attr ("stroke", "#000000");},pathA, pathA); + textA.hover(function(){this.attr ("stroke", ColorOfParticles[pid-1] );this.attr("fill",ColorOfParticles[pid-1]); }, function(){this.attr ("stroke", "#000000");this.attr("fill","#000000");},arrowPath, arrowPath); + textA.click(function(){ + + if(PanelDescription!=null) + { + PanelDescription.remove(); + TextDescription.remove(); + } + PanelDescription = paper.rect(paper.width/4,paper.height/4,paper.width/2,paper.width/2,10).attr("fill","#EFEFEF").attr ("stroke", "#FEFEFE"); + PanelDescription.click(function(){this.remove();TextDescription.remove();}); + TextDescription = paper.text(paper.width/2,paper.height/2,DescOfParticles[pid-1]).attr("font-size", nstepy/10); + TextDescription.click(function(){this.remove();PanelDescription.remove();}); + + }); + + return this; + } + + this.DrawDashedLine=function() { + path_string = "M"+ startVertex.GetX() + " " + startVertex.GetY()+ "L" + endVertex.GetX() + " " + endVertex.GetY(); + pathA =paper.path(path_string).attr("stroke", "black").attr("stroke-width", "2").attr("stroke-dasharray", "-"); + + mean = new Vertex((startVertex.GetX() + endVertex.GetX() ) / 2, (startVertex.GetY() + endVertex.GetY() ) / 2); + x2 = mean.GetX(); + y2 = mean.GetY(); + textA=paper.text(x2,y2-nstepy/3,ListOfParticles[pid-1]); + textA.attr({"font-size": nstepy/4 }); + textA.hover(function(){this.attr ("fill", ColorOfParticles[pid-1] );MySize = this.attr('font-size'); this.attr({"font-size": MySize +20 }); }, function(){this.attr ("fill", "#000000");this.attr({"font-size": MySize })},textA, textA); + pathA.hover(function(){ this.attr ("stroke", ColorOfParticles[pid-1] ); }, function(){this.attr ("stroke", "#000000");},pathA, pathA); + pathA.hover(function(){ this.attr ("fill", ColorOfParticles[pid-1] );MySize = this.attr('font-size'); this.attr({"font-size": MySize +20 }); }, function(){this.attr ("fill", "#000000");this.attr({"font-size": MySize })},textA, textA); + textA.hover(function(){this.attr ("stroke", ColorOfParticles[pid-1] ); }, function(){this.attr ("stroke", "#000000");},pathA, pathA); + return this; + } + + function svg_path_sin(x0, y0, x1, y1) { + // sine path from 0 to rads radians scales by sx + var N = 29; + var pi = 3.141592653579; + var dx=2*pi/N; + var x=0; + var px = x0; + var py = y0; + var p0 = "M"+ px +","+ py; + var p = p0; + + for (var i=1;i<7*N;i++) + { + x += dx; + y = Math.sin(x); + px += (180.0/pi)*dx; + py = 100 - 50*y; + p += "L"+ px +","+ py; + } + p += " " + p0; + + //console.log("circ path : "+p); + return p; + } + function svg_path_sin(x0, y0, len) + { + // sine path from 0 to rads radians scales by sx + //var N = 29; + var pi = 3.141592653579; + //var dx=(2*pi/N); + var dx = 0.5; // augment dx to get page load faster + var N = (len)/dx; + + var x=0; + var px = x0; + var py = y0; + var c = 10; //amplitude + var wavelength = 20; + var K = Math.floor((len)/wavelength); + var w = (2*pi*K)/(len); // pulse + var p0 = "M"+ px +","+ py; + var p = p0; + + for (var i=1;i<=N;i++) + { + x += dx; + y = Math.sin(w*x); + //px += (180.0/pi)*dx; + px += dx; + py = y0 - c*y; + p += "L"+ px +","+ py; + } + p += " " + p0; + + //console.log("circ path : "+p); + return p; + } + this.DrawPhotonLine=function() { + var x0 = startVertex.GetX(); + var x1 = endVertex.GetX(); + var y0 = startVertex.GetY(); + var y1 = endVertex.GetY(); + var len = Math.sqrt((x0-x1)*(x0-x1) + (y0-y1)*(y0-y1)); + var theta = Math.atan2((y1-y0),(x1-x0)); + var angle = ((theta/Math.PI)*180); + path_string = svg_path_sin(x0, y0,len); + var pathA = paper.path(path_string).attr("stroke", "black").attr("stroke-width", "2"); + pathA.transform("r"+angle+","+startVertex.GetX()+","+startVertex.GetY()); + mean = new Vertex((startVertex.GetX() + endVertex.GetX() ) / 2, (startVertex.GetY() + endVertex.GetY() ) / 2); + x2 = mean.GetX(); + y2 = mean.GetY(); + textA = paper.text(x2,y2-nstepy/3,ListOfParticles[12]); + textA.attr({"font-size": nstepy/4 }); + textA.hover(function(){this.attr ("fill", ColorOfParticles[pid-1] );MySize = this.attr('font-size'); this.attr({"font-size": MySize +20 }); }, function(){this.attr ("fill", "#000000");this.attr({"font-size": MySize })},textA, textA); + pathA.hover(function(){ this.attr ("stroke", ColorOfParticles[pid-1] ); }, function(){this.attr ("stroke", "#000000");},pathA, pathA); + pathA.hover(function(){ this.attr ("fill", ColorOfParticles[pid-1] );MySize = this.attr('font-size'); this.attr({"font-size": MySize +20 }); }, function(){this.attr ("fill", "#000000");this.attr({"font-size": MySize })},textA, textA); + textA.hover(function(){this.attr ("stroke", ColorOfParticles[pid-1] ); }, function(){this.attr ("stroke", "#000000");},pathA, pathA); + + return this; + + + } +function svg_path_coil(x0, y0, len){ + offset = 10; //length of the straight line at the beginning and end + var pathCommand = "M "+x0+" "+y0+ " l "+offset+" 0 "; + + dx = 15; + K = Math.floor((len-2*offset)/dx)/2; + dx = (len-2*offset)/(2*K); + for (var i = 0; i < K ; i++) { + pathCommand += "c 15 0 25 -20 "+dx+" -20 " + "c -10 0 0 20 "+dx+" 20 "; + } + pathCommand += " l "+offset+" 0 "; + return pathCommand; + } + this.DrawGluonLine=function() { + + var x0 = startVertex.GetX(); + var x1 = endVertex.GetX(); + var y0 = startVertex.GetY(); + var y1 = endVertex.GetY(); + var len = Math.sqrt((x0-x1)*(x0-x1) + (y0-y1)*(y0-y1)); + var theta = Math.atan2((y1-y0),(x1-x0)); + var angle = ((theta/Math.PI)*180); + path_string = svg_path_coil(x0, y0,len); + var pathA = paper.path(path_string).attr("stroke", "black").attr("stroke-width", "2"); + pathA.transform("r"+angle+","+startVertex.GetX()+","+startVertex.GetY()); + mean = new Vertex((startVertex.GetX() + endVertex.GetX() ) / 2, (startVertex.GetY() + endVertex.GetY() ) / 2); + x2 = mean.GetX(); + y2 = mean.GetY(); + textA = paper.text(x2,y2-nstepy/3,ListOfParticles[12]); + textA.attr({"font-size": nstepy/4 }); + textA.hover(function(){this.attr ("fill", ColorOfParticles[pid-1] );MySize = this.attr('font-size'); this.attr({"font-size": MySize +20 }); }, function(){this.attr ("fill", "#000000");this.attr({"font-size": MySize })},textA, textA); + pathA.hover(function(){ this.attr ("stroke", ColorOfParticles[pid-1] ); }, function(){this.attr ("stroke", "#000000");},pathA, pathA); + pathA.hover(function(){ this.attr ("fill", ColorOfParticles[pid-1] );MySize = this.attr('font-size'); this.attr({"font-size": MySize +20 }); }, function(){this.attr ("fill", "#000000");this.attr({"font-size": MySize })},textA, textA); + textA.hover(function(){this.attr ("stroke", ColorOfParticles[pid-1] ); }, function(){this.attr ("stroke", "#000000");},pathA, pathA); + + return this; + } + return this; +} + + +function Editor(div) { + var Rubber=false; + console.log("Editor!"); + + var ListOfLines = new Array(); + var noLines=0; + + var nstepx = Math.round(paper.width/gridSize); + var nstepy = Math.round(paper.height/gridSize); + + trigger = false; + + document.getElementById("Canvas").onclick = function(e) { + console.log("CLICK!!"); + var x; + var y; + x = e.clientX + document.body.scrollLeft - document.getElementById(div).offsetLeft; + y = e.clientY + document.body.scrollTop - document.getElementById(div).offsetTop; + + var xpos = gridSize*Math.round(x/gridSize); + var ypos = gridSize*Math.round(y/gridSize); + var vert = new Vertex(xpos,ypos); + + console.log("X "+x); + console.log("Y "+y); + + if(trigger) { + console.log("triggered!!"); + ListOfLines[noLines].SetEndVertex(vert); + ListOfLines[noLines++].Draw(); + trigger=false; + } else { + console.log("reset!!"); + ListOfLines[noLines] = new Line(vert,gParticleType,paper); + trigger=true; + } + }; + console.log("THE END"); +} + +function GetPos(obj){ + var x=0,y=0; + while (obj!=null){ + x+=obj.offsetLeft-obj.scrollLeft; + y+=obj.offsetTop-obj.scrollTop; + obj=obj.offsetParent; + } + return {x:x,y:y}; +} + + +function Popup(ContainerA,PopupA,StringA) +{ + alert('1'); + var GraphPopup = document.getElementById(PopupA); + alert('2'); + var Container = document.getElementById(ContainerA); + alert('3'); + GraphPopup.style.visibility='visible'; + alert('4'); + GraphPopup.innerHTML = "" ; + +} diff --git a/feynman/js/main1.js b/feynman/js/main1.js new file mode 100644 index 0000000..9da9b05 --- /dev/null +++ b/feynman/js/main1.js @@ -0,0 +1,383 @@ +var ListOfLines = new Array(); +var MyNewLine = null; +var ListOfParticles = ["e","\u03BC","\u03C4","\u03BD","\u03BD","\u03BD","u","d","c","s","t","b","\u03B3","Z","w+","w-","H","g","p","n"]; +var ColorOfParticles = ["#99CCFF","#CCCC00","#FF6600","#AAAAAA","#999999","#BBBBBB","#99FF00","#FF0000","#9900FF","#99CC00","#AAEE00","#CC9999","#FFEE00","#FFCC33","#990066","#CC00FF","#FF3300","#770077","#995533"]; +var DescOfParticles= ["Electron : \n Antiparticle : Positron \n Statistics : Fermion \n Generation : First \n Type : Lepton \n Interactions : Electromagnetic, \n Weak, Gravity \n Mass : 0.510998928(11) MeV/c2 \n Lifetime : Stable \n Spin : 1/2 \n Charge : -1 \n Color : White ", + "Muon \n Antiparticle : Antimuon \n Statistics : Fermion \n Generation : Second \n Type : Lepton \n Interactions : Electromagnetic, \n Weak, Gravity \n Mass : 105.6583715(35) MeV/c2 \n Lifetime : 2.1969811(22)e-6 s \n Spin : 1/2 \n Charge : -1 \n Color : White", + "Tauon \n Antiparticle : Antitauon \n Statistics : Fermion \n Generation : Third \n Type : Lepton \n Interactions : Electromagnetic, \n Weak, Gravity \n Mass : 1,776.82(16) MeV/c2 \n Lifetime : 2.906(10)e-13 s \n Spin : 1/2 \n Charge : -1 \n Color : White" + ,"Electron neutrino \n Antiparticle : Electron antineutrino \n Statistics : Fermion \n Generation : First \n Type : Lepton \n Interactions : Weak, Gravity \n Mass : Small but not zero. \n Lifetime : Stable \n Spin : 1/2 \n Charge : 0 \n Color : White" + ,"Muon neutrino \n Antiparticle : Muon antineutrino \n Statistics : Fermion \n Generation : Second \n Type : Lepton \n Interactions : Weak, Gravity \n Mass : Small but not zero. \n Lifetime : Stable \n Spin : 1/2 \n Charge : 0 \n Color : White" + ,"Tau neutrino \n Antiparticle : Tau antineutrino \n Statistics : Fermion \n Generation : Third \n Type : Lepton \n Interactions : Weak, Gravity \n Mass : Small but not zero. \n Lifetime : Stable \n Spin : 1/2 \n Charge : 0 \n Color : White" + ,"Up \n Antiparticle : Antiup \n Statistics : Fermion \n Generation : First \n Type : Quark \n Interactions : Strong, Electromagnetic,\n Weak, Gravity \n Mass : 2.3+0.7-0.5 MeV/c2 \n Lifetime : Stable \n Spin : 1/2 \n Charge : +2/3 \n Color : Red, Green, Blue" + ,"Down \n Antiparticle : Antidown \n Statistics : Fermion \n Generation : First \n Type : Quark \n Interactions : Strong, Electromagnetic,\n Weak, Gravity \n Mass : 4.8+0.7-0.5 MeV/c2 \n Lifetime : Stable \n Spin : 1/2 \n Charge : -1/3 \n Color : Red, Green, Blue" + ,"Charm \n Antiparticle : Anticharm \n Statistics : Fermion \n Generation : Second \n Type : Quark \n Interactions : Strong, Electromagnetic,\n Weak, Gravity \n Mass : 1,275(25) MeV/c2 \n Lifetime : Depends on the bound state. \n Spin : 1/2 \n Charge : +2/3 \n Color : Red, Green, Blue " + ,"Strange \n Antiparticle : Antistrange \n Statistics : Fermion \n Generation : Second \n Type : Quark \n Interactions : Strong, Electromagnetic,\n Weak, Gravity \n Mass : 95(5) MeV/c2 \n Lifetime : Depends on the bound state. \n Spin : 1/2 \n Charge : -1/3 \n Color : Red, Green, Blue" + ,"Top \n Antiparticle : Antitop \n Statistics : Fermion \n Generation : Third \n Type : Quark \n Interactions : Strong, Electromagnetic\n, Weak, Gravity \n Mass : 173.5+/-0.6+/-0.8 GeV/c2 \n Lifetime : 5e-25 s \n Spin : 1/2 \n Charge : +2/3 \n Color : Red, Green, Blue" + ,"Bottom \n Antiparticle : Antibottom \n Statistics : Fermion \n Generation : Third \n Type : Quark \n Interactions : Strong, Electromagnetic,\n Weak, Gravity \n Mass : 4.18(3) GeV/c2 \n Lifetime : Depends on the bound state. \n Spin : 1/2 \n Charge : -1/3 \n Color : Red, Green, Blue" + ,"Photon \n Antiparticle : Photon \n Statistics : Boson \n Type : Force carrier \n Interactions : Electromagnetic \n Mass : 0 \n Lifetime : Stable \n Spin : 1 \n Charge : 0 \n Color : White \n Discovery : - \n Prediction : -" + ,"Gluon \n Antiparticle : Gluon \n Statistics : Boson \n Type : Force carrier \n Interactions : Strong \n Mass : 0 \n Lifetime : Stable \n Spin : 1 \n Charge : 0 \n Color : Color + Anticolor" + ,"Z \n Antiparticle : Z \n Statistics : Boson \n Type : Force carrier \n Interactions : Weak, Electromagnetic, Gravity \n Mass : 91.1876(21) GeV/c2 \n Lifetime : 1.6575(15)e-24 s \n Spin : 1 \n Charge : 0 \n Color : White " + ,"W+/- \n Antiparticle : W-/+ \n Statistics : Boson \n Type : Force carrier \n Interactions : Weak, Electromagnetic, Gravity \n Mass : 80.385(15) GeV/c2 \n Lifetime : 1.983(40)e-24 s \n Spin : 1 \n Charge : +1/-1 \n Color : White " + ,"" + ,"" + ,"" + ,""]; +var PanelDescription = null; +var TextDescription = null; +var gridSize=20; +var gParticleType=1; +var nstepx=0; +var nstepy=0; +var MySize=0; + +function Feynman(div,reaction){ + + //define if the usercan modify or not the graph + var ReadOnly = 1; + + //allow to modifiy if the graph is read only or not + this.IsReadOnly=function(Bool){ ReadOnly= Bool;} + + // this variable will contain all lines of this graph + + Tuples=JSON.parse(reaction); + + this.TuplesLength = Tuples.lines.length; + this.maxX = 0; + this.maxY = 0; + + for(i = 0 ; imaxX) + { + maxX=Tuples.lines[i][2]; + } + if(Tuples.lines[i][3]>maxY) + { + maxY=Tuples.lines[i][3]; + } + if(Tuples.lines[i][0]>maxX) + { + maxX=Tuples.lines[i][0]; + } + if(Tuples.lines[i][1]>maxY) + { + maxY=Tuples.lines[i][1]; + } + } + nstepx = paper.width / maxX; + nstepy = paper.height/ maxY; + + for(i = 0 ; i18)) { + if(pid>0) this.direction=1; + else this.direction=-1; + this.DrawStraightLine(); + } else { + if(pid==13) this.DrawPhotonLine(); + else { + if(pid<=17) this.DrawDashedLine(); + else this.DrawGluonLine(); + } + } + } + + this.Delete = function() { + + } + + this.DrawStraightLine=function() { + + // draw a straight line from startVertex to endVertex + dir_angle = 0; + if ( this.direction == -1 ) dir_angle = 180; //turn the arrow in the opposite direction + path_string = "M"+ startVertex.GetX() + " " + startVertex.GetY()+ "L" + endVertex.GetX() + " " + endVertex.GetY(); + pathA = paper.path(path_string).attr("stroke", "black").attr("stroke-width", "2"); + //compute the mean point for the line + mean = new Vertex((startVertex.GetX() + endVertex.GetX() ) / 2, (startVertex.GetY() + endVertex.GetY() ) / 2); + //draw the arrow + var angle = Math.atan2(startVertex.GetX()-endVertex.GetX(),endVertex.GetY()-startVertex.GetY()); + angle = (angle / (2 * Math.PI)) * 360; + x2 = mean.GetX(); + y2 = mean.GetY(); + size = 8; // change it to change dimension of the arrow!!! + if(pid>0) + { + textA=paper.text(x2,y2-nstepy/3,ListOfParticles[pid-1]); + } + else + { + + textA=paper.text(x2,y2-nstepy/3,ListOfParticles[pid*-1-1]); + } + var sign=1; + if(pid<0) sign=-1; + var arrowPath = paper.path("M" + x2 + " " + y2 + " L" + (x2 - size) + " " + (y2 - size) + " L" + (x2 - size) + " " + (y2 + size) + " L" + x2 + " " + y2 ).attr("fill","black").rotate(sign* 90+angle+dir_angle,x2,y2); + + if(pid<0) + { + pid = pid*-1; + } + textA.attr({"font-size": nstepy/4 }); + textA.hover(function(){ this.attr ("fill", ColorOfParticles[pid-1] );MySize = this.attr('font-size'); this.attr({"font-size": MySize +20 }); }, function(){this.attr ("fill", "#000000");this.attr({"font-size": MySize })},textA, textA); + pathA.hover(function(){ this.attr ("stroke", ColorOfParticles[pid-1] ); }, function(){this.attr ("stroke", "#000000");},pathA, pathA); + pathA.hover(function(){ this.attr ("stroke", ColorOfParticles[pid-1] );this.attr("fill",ColorOfParticles[pid-1]); }, function(){this.attr ("stroke", "#000000");this.attr("fill","#000000");},arrowPath, arrowPath); + pathA.hover(function(){ this.attr ("fill", ColorOfParticles[pid-1] );MySize = this.attr('font-size'); this.attr({"font-size": MySize +20 }); }, function(){this.attr ("fill", "#000000");this.attr({"font-size": MySize })},textA, textA); + textA.hover(function(){this.attr ("stroke", ColorOfParticles[pid-1] ); }, function(){this.attr ("stroke", "#000000");},pathA, pathA); + textA.hover(function(){this.attr ("stroke", ColorOfParticles[pid-1] );this.attr("fill",ColorOfParticles[pid-1]); }, function(){this.attr ("stroke", "#000000");this.attr("fill","#000000");},arrowPath, arrowPath); + textA.click(function(){ + + if(PanelDescription!=null) + { + PanelDescription.remove(); + TextDescription.remove(); + } + PanelDescription = paper.rect(paper.width/4,paper.height/4,paper.width/2,paper.width/2,10).attr("fill","#EFEFEF").attr ("stroke", "#FEFEFE"); + PanelDescription.click(function(){this.remove();TextDescription.remove();}); + TextDescription = paper.text(paper.width/2,paper.height/2,DescOfParticles[pid-1]).attr("font-size", nstepy/10); + TextDescription.click(function(){this.remove();PanelDescription.remove();}); + + }); + + return this; + } + + this.DrawDashedLine=function() { + path_string = "M"+ startVertex.GetX() + " " + startVertex.GetY()+ "L" + endVertex.GetX() + " " + endVertex.GetY(); + pathA =paper.path(path_string).attr("stroke", "black").attr("stroke-width", "2").attr("stroke-dasharray", "-"); + + mean = new Vertex((startVertex.GetX() + endVertex.GetX() ) / 2, (startVertex.GetY() + endVertex.GetY() ) / 2); + x2 = mean.GetX(); + y2 = mean.GetY(); + textA=paper.text(x2,y2-nstepy/3,ListOfParticles[pid-1]); + textA.attr({"font-size": nstepy/4 }); + textA.hover(function(){this.attr ("fill", ColorOfParticles[pid-1] );MySize = this.attr('font-size'); this.attr({"font-size": MySize +20 }); }, function(){this.attr ("fill", "#000000");this.attr({"font-size": MySize })},textA, textA); + pathA.hover(function(){ this.attr ("stroke", ColorOfParticles[pid-1] ); }, function(){this.attr ("stroke", "#000000");},pathA, pathA); + pathA.hover(function(){ this.attr ("fill", ColorOfParticles[pid-1] );MySize = this.attr('font-size'); this.attr({"font-size": MySize +20 }); }, function(){this.attr ("fill", "#000000");this.attr({"font-size": MySize })},textA, textA); + textA.hover(function(){this.attr ("stroke", ColorOfParticles[pid-1] ); }, function(){this.attr ("stroke", "#000000");},pathA, pathA); + return this; + } + + function svg_path_sin(x0, y0, x1, y1) { + // sine path from 0 to rads radians scales by sx + var N = 29; + var pi = 3.141592653579; + var dx=2*pi/N; + var x=0; + var px = x0; + var py = y0; + var p0 = "M"+ px +","+ py; + var p = p0; + + for (var i=1;i<7*N;i++) + { + x += dx; + y = Math.sin(x); + px += (180.0/pi)*dx; + py = 100 - 50*y; + p += "L"+ px +","+ py; + } + p += " " + p0; + + //console.log("circ path : "+p); + return p; + } + function svg_path_sin(x0, y0, len) + { + // sine path from 0 to rads radians scales by sx + //var N = 29; + var pi = 3.141592653579; + //var dx=(2*pi/N); + var dx = 0.5; // augment dx to get page load faster + var N = (len)/dx; + + var x=0; + var px = x0; + var py = y0; + var c = 10; //amplitude + var wavelength = 20; + var K = Math.floor((len)/wavelength); + var w = (2*pi*K)/(len); // pulse + var p0 = "M"+ px +","+ py; + var p = p0; + + for (var i=1;i<=N;i++) + { + x += dx; + y = Math.sin(w*x); + //px += (180.0/pi)*dx; + px += dx; + py = y0 - c*y; + p += "L"+ px +","+ py; + } + p += " " + p0; + + //console.log("circ path : "+p); + return p; + } + this.DrawPhotonLine=function() { + var x0 = startVertex.GetX(); + var x1 = endVertex.GetX(); + var y0 = startVertex.GetY(); + var y1 = endVertex.GetY(); + var len = Math.sqrt((x0-x1)*(x0-x1) + (y0-y1)*(y0-y1)); + var theta = Math.atan2((y1-y0),(x1-x0)); + var angle = ((theta/Math.PI)*180); + path_string = svg_path_sin(x0, y0,len); + var pathA = paper.path(path_string).attr("stroke", "black").attr("stroke-width", "2"); + pathA.transform("r"+angle+","+startVertex.GetX()+","+startVertex.GetY()); + mean = new Vertex((startVertex.GetX() + endVertex.GetX() ) / 2, (startVertex.GetY() + endVertex.GetY() ) / 2); + x2 = mean.GetX(); + y2 = mean.GetY(); + textA = paper.text(x2,y2-nstepy/3,ListOfParticles[12]); + textA.attr({"font-size": nstepy/4 }); + textA.hover(function(){this.attr ("fill", ColorOfParticles[pid-1] );MySize = this.attr('font-size'); this.attr({"font-size": MySize +20 }); }, function(){this.attr ("fill", "#000000");this.attr({"font-size": MySize })},textA, textA); + pathA.hover(function(){ this.attr ("stroke", ColorOfParticles[pid-1] ); }, function(){this.attr ("stroke", "#000000");},pathA, pathA); + pathA.hover(function(){ this.attr ("fill", ColorOfParticles[pid-1] );MySize = this.attr('font-size'); this.attr({"font-size": MySize +20 }); }, function(){this.attr ("fill", "#000000");this.attr({"font-size": MySize })},textA, textA); + textA.hover(function(){this.attr ("stroke", ColorOfParticles[pid-1] ); }, function(){this.attr ("stroke", "#000000");},pathA, pathA); + + return this; + + + } + this.DrawGluonLine=function() { + + var x0 = startVertex.GetX(); + var x1 = endVertex.GetX(); + var y0 = startVertex.GetY(); + var y1 = endVertex.GetY(); + var len = Math.sqrt((x0-x1)*(x0-x1) + (y0-y1)*(y0-y1)); + var theta = Math.atan2((y1-y0),(x1-x0)); + var angle = ((theta/Math.PI)*180); + path_string = svg_path_coil(x0, y0,len); + var pathA = paper.path(path_string).attr("stroke", "black").attr("stroke-width", "2"); + pathA.transform("r"+angle+","+startVertex.GetX()+","+startVertex.GetY()); + mean = new Vertex((startVertex.GetX() + endVertex.GetX() ) / 2, (startVertex.GetY() + endVertex.GetY() ) / 2); + x2 = mean.GetX(); + y2 = mean.GetY(); + textA = paper.text(x2,y2-nstepy/3,ListOfParticles[12]); + textA.attr({"font-size": nstepy/4 }); + textA.hover(function(){this.attr ("fill", ColorOfParticles[pid-1] );MySize = this.attr('font-size'); this.attr({"font-size": MySize +20 }); }, function(){this.attr ("fill", "#000000");this.attr({"font-size": MySize })},textA, textA); + pathA.hover(function(){ this.attr ("stroke", ColorOfParticles[pid-1] ); }, function(){this.attr ("stroke", "#000000");},pathA, pathA); + pathA.hover(function(){ this.attr ("fill", ColorOfParticles[pid-1] );MySize = this.attr('font-size'); this.attr({"font-size": MySize +20 }); }, function(){this.attr ("fill", "#000000");this.attr({"font-size": MySize })},textA, textA); + textA.hover(function(){this.attr ("stroke", ColorOfParticles[pid-1] ); }, function(){this.attr ("stroke", "#000000");},pathA, pathA); + + return this; + } + return this; +} + + +function Editor(div) { + var Rubber=false; + console.log("Editor!"); + + var ListOfLines = new Array(); + var noLines=0; + + var nstepx = Math.round(paper.width/gridSize); + var nstepy = Math.round(paper.height/gridSize); + + trigger = false; + var circ; + + document.getElementById("Canvas").onclick = function(e) { + console.log("CLICK!!"); + var x; + var y; + x = event.clientX + document.body.scrollLeft - document.getElementById(div).offsetLeft; + y = event.clientY + document.body.scrollTop - document.getElementById(div).offsetTop; + + var xpos = gridSize*Math.round(x/gridSize); + var ypos = gridSize*Math.round(y/gridSize); + var vert = new Vertex(xpos,ypos); + + console.log("X "+x); + console.log("Y "+y); + + if(trigger) { + console.log("triggered!!"); + circ.remove(); + ListOfLines[noLines].SetEndVertex(vert); + ListOfLines[noLines++].Draw(); + trigger=false; + } else { + console.log("reset!!"); + ListOfLines[noLines] = new Line(vert,gParticleType,paper); + circ = paper.circle(xpos,ypos,3).attr("fill", "black").attr("stroke","black"); + trigger=true; + } + }; + console.log("THE END"); +} + +function GetPos(obj){ + var x=0,y=0; + while (obj!=null){ + x+=obj.offsetLeft-obj.scrollLeft; + y+=obj.offsetTop-obj.scrollTop; + obj=obj.offsetParent; + } + return {x:x,y:y}; +} + + +function Popup(ContainerA,PopupA,StringA) +{ + alert('1'); + var GraphPopup = document.getElementById(PopupA); + alert('2'); + var Container = document.getElementById(ContainerA); + alert('3'); + GraphPopup.style.visibility='visible'; + alert('4'); + GraphPopup.innerHTML = "" ; + +} \ No newline at end of file diff --git a/feynman/js/raphael-min.js b/feynman/js/raphael-min.js new file mode 100644 index 0000000..d30dbad --- /dev/null +++ b/feynman/js/raphael-min.js @@ -0,0 +1,10 @@ +// ┌────────────────────────────────────────────────────────────────────┐ \\ +// │ Raphaël 2.1.0 - JavaScript Vector Library │ \\ +// ├────────────────────────────────────────────────────────────────────┤ \\ +// │ Copyright © 2008-2012 Dmitry Baranovskiy (http://raphaeljs.com) │ \\ +// │ Copyright © 2008-2012 Sencha Labs (http://sencha.com) │ \\ +// ├────────────────────────────────────────────────────────────────────┤ \\ +// │ Licensed under the MIT (http://raphaeljs.com/license.html) license.│ \\ +// └────────────────────────────────────────────────────────────────────┘ \\ + +(function(a){var b="0.3.4",c="hasOwnProperty",d=/[\.\/]/,e="*",f=function(){},g=function(a,b){return a-b},h,i,j={n:{}},k=function(a,b){var c=j,d=i,e=Array.prototype.slice.call(arguments,2),f=k.listeners(a),l=0,m=!1,n,o=[],p={},q=[],r=h,s=[];h=a,i=0;for(var t=0,u=f.length;tf*b.top){e=b.percents[y],p=b.percents[y-1]||0,t=t/b.top*(e-p),o=b.percents[y+1],j=b.anim[e];break}f&&d.attr(b.anim[b.percents[y]])}if(!!j){if(!k){for(var A in j)if(j[g](A))if(U[g](A)||d.paper.customAttributes[g](A)){u[A]=d.attr(A),u[A]==null&&(u[A]=T[A]),v[A]=j[A];switch(U[A]){case C:w[A]=(v[A]-u[A])/t;break;case"colour":u[A]=a.getRGB(u[A]);var B=a.getRGB(v[A]);w[A]={r:(B.r-u[A].r)/t,g:(B.g-u[A].g)/t,b:(B.b-u[A].b)/t};break;case"path":var D=bR(u[A],v[A]),E=D[1];u[A]=D[0],w[A]=[];for(y=0,z=u[A].length;yd)return d;while(cf?c=e:d=e,e=(d-c)/2+c}return e}function n(a,b){var c=o(a,b);return((l*c+k)*c+j)*c}function m(a){return((i*a+h)*a+g)*a}var g=3*b,h=3*(d-b)-g,i=1-g-h,j=3*c,k=3*(e-c)-j,l=1-j-k;return n(a,1/(200*f))}function cq(){return this.x+q+this.y+q+this.width+" × "+this.height}function cp(){return this.x+q+this.y}function cb(a,b,c,d,e,f){a!=null?(this.a=+a,this.b=+b,this.c=+c,this.d=+d,this.e=+e,this.f=+f):(this.a=1,this.b=0,this.c=0,this.d=1,this.e=0,this.f=0)}function bH(b,c,d){b=a._path2curve(b),c=a._path2curve(c);var e,f,g,h,i,j,k,l,m,n,o=d?0:[];for(var p=0,q=b.length;p=0&&y<=1&&A>=0&&A<=1&&(d?n++:n.push({x:x.x,y:x.y,t1:y,t2:A}))}}return n}function bF(a,b){return bG(a,b,1)}function bE(a,b){return bG(a,b)}function bD(a,b,c,d,e,f,g,h){if(!(x(a,c)x(e,g)||x(b,d)x(f,h))){var i=(a*d-b*c)*(e-g)-(a-c)*(e*h-f*g),j=(a*d-b*c)*(f-h)-(b-d)*(e*h-f*g),k=(a-c)*(f-h)-(b-d)*(e-g);if(!k)return;var l=i/k,m=j/k,n=+l.toFixed(2),o=+m.toFixed(2);if(n<+y(a,c).toFixed(2)||n>+x(a,c).toFixed(2)||n<+y(e,g).toFixed(2)||n>+x(e,g).toFixed(2)||o<+y(b,d).toFixed(2)||o>+x(b,d).toFixed(2)||o<+y(f,h).toFixed(2)||o>+x(f,h).toFixed(2))return;return{x:l,y:m}}}function bC(a,b,c,d,e,f,g,h,i){if(!(i<0||bB(a,b,c,d,e,f,g,h)n)k/=2,l+=(m1?1:i<0?0:i;var j=i/2,k=12,l=[-0.1252,.1252,-0.3678,.3678,-0.5873,.5873,-0.7699,.7699,-0.9041,.9041,-0.9816,.9816],m=[.2491,.2491,.2335,.2335,.2032,.2032,.1601,.1601,.1069,.1069,.0472,.0472],n=0;for(var o=0;od;d+=2){var f=[{x:+a[d-2],y:+a[d-1]},{x:+a[d],y:+a[d+1]},{x:+a[d+2],y:+a[d+3]},{x:+a[d+4],y:+a[d+5]}];b?d?e-4==d?f[3]={x:+a[0],y:+a[1]}:e-2==d&&(f[2]={x:+a[0],y:+a[1]},f[3]={x:+a[2],y:+a[3]}):f[0]={x:+a[e-2],y:+a[e-1]}:e-4==d?f[3]=f[2]:d||(f[0]={x:+a[d],y:+a[d+1]}),c.push(["C",(-f[0].x+6*f[1].x+f[2].x)/6,(-f[0].y+6*f[1].y+f[2].y)/6,(f[1].x+6*f[2].x-f[3].x)/6,(f[1].y+6*f[2].y-f[3].y)/6,f[2].x,f[2].y])}return c}function bx(){return this.hex}function bv(a,b,c){function d(){var e=Array.prototype.slice.call(arguments,0),f=e.join("␀"),h=d.cache=d.cache||{},i=d.count=d.count||[];if(h[g](f)){bu(i,f);return c?c(h[f]):h[f]}i.length>=1e3&&delete h[i.shift()],i.push(f),h[f]=a[m](b,e);return c?c(h[f]):h[f]}return d}function bu(a,b){for(var c=0,d=a.length;c',bl=bk.firstChild,bl.style.behavior="url(#default#VML)";if(!bl||typeof bl.adj!="object")return a.type=p;bk=null}a.svg=!(a.vml=a.type=="VML"),a._Paper=j,a.fn=k=j.prototype=a.prototype,a._id=0,a._oid=0,a.is=function(a,b){b=v.call(b);if(b=="finite")return!M[g](+a);if(b=="array")return a instanceof Array;return b=="null"&&a===null||b==typeof a&&a!==null||b=="object"&&a===Object(a)||b=="array"&&Array.isArray&&Array.isArray(a)||H.call(a).slice(8,-1).toLowerCase()==b},a.angle=function(b,c,d,e,f,g){if(f==null){var h=b-d,i=c-e;if(!h&&!i)return 0;return(180+w.atan2(-i,-h)*180/B+360)%360}return a.angle(b,c,f,g)-a.angle(d,e,f,g)},a.rad=function(a){return a%360*B/180},a.deg=function(a){return a*180/B%360},a.snapTo=function(b,c,d){d=a.is(d,"finite")?d:10;if(a.is(b,E)){var e=b.length;while(e--)if(z(b[e]-c)<=d)return b[e]}else{b=+b;var f=c%b;if(fb-d)return c-f+b}return c};var bn=a.createUUID=function(a,b){return function(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(a,b).toUpperCase()}}(/[xy]/g,function(a){var b=w.random()*16|0,c=a=="x"?b:b&3|8;return c.toString(16)});a.setWindow=function(b){eve("raphael.setWindow",a,h.win,b),h.win=b,h.doc=h.win.document,a._engine.initWin&&a._engine.initWin(h.win)};var bo=function(b){if(a.vml){var c=/^\s+|\s+$/g,d;try{var e=new ActiveXObject("htmlfile");e.write(""),e.close(),d=e.body}catch(f){d=createPopup().document.body}var g=d.createTextRange();bo=bv(function(a){try{d.style.color=r(a).replace(c,p);var b=g.queryCommandValue("ForeColor");b=(b&255)<<16|b&65280|(b&16711680)>>>16;return"#"+("000000"+b.toString(16)).slice(-6)}catch(e){return"none"}})}else{var i=h.doc.createElement("i");i.title="Raphaël Colour Picker",i.style.display="none",h.doc.body.appendChild(i),bo=bv(function(a){i.style.color=a;return h.doc.defaultView.getComputedStyle(i,p).getPropertyValue("color")})}return bo(b)},bp=function(){return"hsb("+[this.h,this.s,this.b]+")"},bq=function(){return"hsl("+[this.h,this.s,this.l]+")"},br=function(){return this.hex},bs=function(b,c,d){c==null&&a.is(b,"object")&&"r"in b&&"g"in b&&"b"in b&&(d=b.b,c=b.g,b=b.r);if(c==null&&a.is(b,D)){var e=a.getRGB(b);b=e.r,c=e.g,d=e.b}if(b>1||c>1||d>1)b/=255,c/=255,d/=255;return[b,c,d]},bt=function(b,c,d,e){b*=255,c*=255,d*=255;var f={r:b,g:c,b:d,hex:a.rgb(b,c,d),toString:br};a.is(e,"finite")&&(f.opacity=e);return f};a.color=function(b){var c;a.is(b,"object")&&"h"in b&&"s"in b&&"b"in b?(c=a.hsb2rgb(b),b.r=c.r,b.g=c.g,b.b=c.b,b.hex=c.hex):a.is(b,"object")&&"h"in b&&"s"in b&&"l"in b?(c=a.hsl2rgb(b),b.r=c.r,b.g=c.g,b.b=c.b,b.hex=c.hex):(a.is(b,"string")&&(b=a.getRGB(b)),a.is(b,"object")&&"r"in b&&"g"in b&&"b"in b?(c=a.rgb2hsl(b),b.h=c.h,b.s=c.s,b.l=c.l,c=a.rgb2hsb(b),b.v=c.b):(b={hex:"none"},b.r=b.g=b.b=b.h=b.s=b.v=b.l=-1)),b.toString=br;return b},a.hsb2rgb=function(a,b,c,d){this.is(a,"object")&&"h"in a&&"s"in a&&"b"in a&&(c=a.b,b=a.s,a=a.h,d=a.o),a*=360;var e,f,g,h,i;a=a%360/60,i=c*b,h=i*(1-z(a%2-1)),e=f=g=c-i,a=~~a,e+=[i,h,0,0,h,i][a],f+=[h,i,i,h,0,0][a],g+=[0,0,h,i,i,h][a];return bt(e,f,g,d)},a.hsl2rgb=function(a,b,c,d){this.is(a,"object")&&"h"in a&&"s"in a&&"l"in a&&(c=a.l,b=a.s,a=a.h);if(a>1||b>1||c>1)a/=360,b/=100,c/=100;a*=360;var e,f,g,h,i;a=a%360/60,i=2*b*(c<.5?c:1-c),h=i*(1-z(a%2-1)),e=f=g=c-i/2,a=~~a,e+=[i,h,0,0,h,i][a],f+=[h,i,i,h,0,0][a],g+=[0,0,h,i,i,h][a];return bt(e,f,g,d)},a.rgb2hsb=function(a,b,c){c=bs(a,b,c),a=c[0],b=c[1],c=c[2];var d,e,f,g;f=x(a,b,c),g=f-y(a,b,c),d=g==0?null:f==a?(b-c)/g:f==b?(c-a)/g+2:(a-b)/g+4,d=(d+360)%6*60/360,e=g==0?0:g/f;return{h:d,s:e,b:f,toString:bp}},a.rgb2hsl=function(a,b,c){c=bs(a,b,c),a=c[0],b=c[1],c=c[2];var d,e,f,g,h,i;g=x(a,b,c),h=y(a,b,c),i=g-h,d=i==0?null:g==a?(b-c)/i:g==b?(c-a)/i+2:(a-b)/i+4,d=(d+360)%6*60/360,f=(g+h)/2,e=i==0?0:f<.5?i/(2*f):i/(2-2*f);return{h:d,s:e,l:f,toString:bq}},a._path2string=function(){return this.join(",").replace(Y,"$1")};var bw=a._preload=function(a,b){var c=h.doc.createElement("img");c.style.cssText="position:absolute;left:-9999em;top:-9999em",c.onload=function(){b.call(this),this.onload=null,h.doc.body.removeChild(this)},c.onerror=function(){h.doc.body.removeChild(this)},h.doc.body.appendChild(c),c.src=a};a.getRGB=bv(function(b){if(!b||!!((b=r(b)).indexOf("-")+1))return{r:-1,g:-1,b:-1,hex:"none",error:1,toString:bx};if(b=="none")return{r:-1,g:-1,b:-1,hex:"none",toString:bx};!X[g](b.toLowerCase().substring(0,2))&&b.charAt()!="#"&&(b=bo(b));var c,d,e,f,h,i,j,k=b.match(L);if(k){k[2]&&(f=R(k[2].substring(5),16),e=R(k[2].substring(3,5),16),d=R(k[2].substring(1,3),16)),k[3]&&(f=R((i=k[3].charAt(3))+i,16),e=R((i=k[3].charAt(2))+i,16),d=R((i=k[3].charAt(1))+i,16)),k[4]&&(j=k[4][s](W),d=Q(j[0]),j[0].slice(-1)=="%"&&(d*=2.55),e=Q(j[1]),j[1].slice(-1)=="%"&&(e*=2.55),f=Q(j[2]),j[2].slice(-1)=="%"&&(f*=2.55),k[1].toLowerCase().slice(0,4)=="rgba"&&(h=Q(j[3])),j[3]&&j[3].slice(-1)=="%"&&(h/=100));if(k[5]){j=k[5][s](W),d=Q(j[0]),j[0].slice(-1)=="%"&&(d*=2.55),e=Q(j[1]),j[1].slice(-1)=="%"&&(e*=2.55),f=Q(j[2]),j[2].slice(-1)=="%"&&(f*=2.55),(j[0].slice(-3)=="deg"||j[0].slice(-1)=="°")&&(d/=360),k[1].toLowerCase().slice(0,4)=="hsba"&&(h=Q(j[3])),j[3]&&j[3].slice(-1)=="%"&&(h/=100);return a.hsb2rgb(d,e,f,h)}if(k[6]){j=k[6][s](W),d=Q(j[0]),j[0].slice(-1)=="%"&&(d*=2.55),e=Q(j[1]),j[1].slice(-1)=="%"&&(e*=2.55),f=Q(j[2]),j[2].slice(-1)=="%"&&(f*=2.55),(j[0].slice(-3)=="deg"||j[0].slice(-1)=="°")&&(d/=360),k[1].toLowerCase().slice(0,4)=="hsla"&&(h=Q(j[3])),j[3]&&j[3].slice(-1)=="%"&&(h/=100);return a.hsl2rgb(d,e,f,h)}k={r:d,g:e,b:f,toString:bx},k.hex="#"+(16777216|f|e<<8|d<<16).toString(16).slice(1),a.is(h,"finite")&&(k.opacity=h);return k}return{r:-1,g:-1,b:-1,hex:"none",error:1,toString:bx}},a),a.hsb=bv(function(b,c,d){return a.hsb2rgb(b,c,d).hex}),a.hsl=bv(function(b,c,d){return a.hsl2rgb(b,c,d).hex}),a.rgb=bv(function(a,b,c){return"#"+(16777216|c|b<<8|a<<16).toString(16).slice(1)}),a.getColor=function(a){var b=this.getColor.start=this.getColor.start||{h:0,s:1,b:a||.75},c=this.hsb2rgb(b.h,b.s,b.b);b.h+=.075,b.h>1&&(b.h=0,b.s-=.2,b.s<=0&&(this.getColor.start={h:0,s:1,b:b.b}));return c.hex},a.getColor.reset=function(){delete this.start},a.parsePathString=function(b){if(!b)return null;var c=bz(b);if(c.arr)return bJ(c.arr);var d={a:7,c:6,h:1,l:2,m:2,r:4,q:4,s:4,t:2,v:1,z:0},e=[];a.is(b,E)&&a.is(b[0],E)&&(e=bJ(b)),e.length||r(b).replace(Z,function(a,b,c){var f=[],g=b.toLowerCase();c.replace(_,function(a,b){b&&f.push(+b)}),g=="m"&&f.length>2&&(e.push([b][n](f.splice(0,2))),g="l",b=b=="m"?"l":"L");if(g=="r")e.push([b][n](f));else while(f.length>=d[g]){e.push([b][n](f.splice(0,d[g])));if(!d[g])break}}),e.toString=a._path2string,c.arr=bJ(e);return e},a.parseTransformString=bv(function(b){if(!b)return null;var c={r:3,s:4,t:2,m:6},d=[];a.is(b,E)&&a.is(b[0],E)&&(d=bJ(b)),d.length||r(b).replace($,function(a,b,c){var e=[],f=v.call(b);c.replace(_,function(a,b){b&&e.push(+b)}),d.push([b][n](e))}),d.toString=a._path2string;return d});var bz=function(a){var b=bz.ps=bz.ps||{};b[a]?b[a].sleep=100:b[a]={sleep:100},setTimeout(function(){for(var c in b)b[g](c)&&c!=a&&(b[c].sleep--,!b[c].sleep&&delete b[c])});return b[a]};a.findDotsAtSegment=function(a,b,c,d,e,f,g,h,i){var j=1-i,k=A(j,3),l=A(j,2),m=i*i,n=m*i,o=k*a+l*3*i*c+j*3*i*i*e+n*g,p=k*b+l*3*i*d+j*3*i*i*f+n*h,q=a+2*i*(c-a)+m*(e-2*c+a),r=b+2*i*(d-b)+m*(f-2*d+b),s=c+2*i*(e-c)+m*(g-2*e+c),t=d+2*i*(f-d)+m*(h-2*f+d),u=j*a+i*c,v=j*b+i*d,x=j*e+i*g,y=j*f+i*h,z=90-w.atan2(q-s,r-t)*180/B;(q>s||r=a.x&&b<=a.x2&&c>=a.y&&c<=a.y2},a.isBBoxIntersect=function(b,c){var d=a.isPointInsideBBox;return d(c,b.x,b.y)||d(c,b.x2,b.y)||d(c,b.x,b.y2)||d(c,b.x2,b.y2)||d(b,c.x,c.y)||d(b,c.x2,c.y)||d(b,c.x,c.y2)||d(b,c.x2,c.y2)||(b.xc.x||c.xb.x)&&(b.yc.y||c.yb.y)},a.pathIntersection=function(a,b){return bH(a,b)},a.pathIntersectionNumber=function(a,b){return bH(a,b,1)},a.isPointInsidePath=function(b,c,d){var e=a.pathBBox(b);return a.isPointInsideBBox(e,c,d)&&bH(b,[["M",c,d],["H",e.x2+10]],1)%2==1},a._removedFactory=function(a){return function(){eve("raphael.log",null,"Raphaël: you are calling to method “"+a+"” of removed object",a)}};var bI=a.pathBBox=function(a){var b=bz(a);if(b.bbox)return b.bbox;if(!a)return{x:0,y:0,width:0,height:0,x2:0,y2:0};a=bR(a);var c=0,d=0,e=[],f=[],g;for(var h=0,i=a.length;h1&&(v=w.sqrt(v),c=v*c,d=v*d);var x=c*c,y=d*d,A=(f==g?-1:1)*w.sqrt(z((x*y-x*u*u-y*t*t)/(x*u*u+y*t*t))),C=A*c*u/d+(a+h)/2,D=A*-d*t/c+(b+i)/2,E=w.asin(((b-D)/d).toFixed(9)),F=w.asin(((i-D)/d).toFixed(9));E=aF&&(E=E-B*2),!g&&F>E&&(F=F-B*2)}else E=j[0],F=j[1],C=j[2],D=j[3];var G=F-E;if(z(G)>k){var H=F,I=h,J=i;F=E+k*(g&&F>E?1:-1),h=C+c*w.cos(F),i=D+d*w.sin(F),m=bO(h,i,c,d,e,0,g,I,J,[F,H,C,D])}G=F-E;var K=w.cos(E),L=w.sin(E),M=w.cos(F),N=w.sin(F),O=w.tan(G/4),P=4/3*c*O,Q=4/3*d*O,R=[a,b],S=[a+P*L,b-Q*K],T=[h+P*N,i-Q*M],U=[h,i];S[0]=2*R[0]-S[0],S[1]=2*R[1]-S[1];if(j)return[S,T,U][n](m);m=[S,T,U][n](m).join()[s](",");var V=[];for(var W=0,X=m.length;W"1e12"&&(l=.5),z(n)>"1e12"&&(n=.5),l>0&&l<1&&(q=bP(a,b,c,d,e,f,g,h,l),p.push(q.x),o.push(q.y)),n>0&&n<1&&(q=bP(a,b,c,d,e,f,g,h,n),p.push(q.x),o.push(q.y)),i=f-2*d+b-(h-2*f+d),j=2*(d-b)-2*(f-d),k=b-d,l=(-j+w.sqrt(j*j-4*i*k))/2/i,n=(-j-w.sqrt(j*j-4*i*k))/2/i,z(l)>"1e12"&&(l=.5),z(n)>"1e12"&&(n=.5),l>0&&l<1&&(q=bP(a,b,c,d,e,f,g,h,l),p.push(q.x),o.push(q.y)),n>0&&n<1&&(q=bP(a,b,c,d,e,f,g,h,n),p.push(q.x),o.push(q.y));return{min:{x:y[m](0,p),y:y[m](0,o)},max:{x:x[m](0,p),y:x[m](0,o)}}}),bR=a._path2curve=bv(function(a,b){var c=!b&&bz(a);if(!b&&c.curve)return bJ(c.curve);var d=bL(a),e=b&&bL(b),f={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},g={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},h=function(a,b){var c,d;if(!a)return["C",b.x,b.y,b.x,b.y,b.x,b.y];!(a[0]in{T:1,Q:1})&&(b.qx=b.qy=null);switch(a[0]){case"M":b.X=a[1],b.Y=a[2];break;case"A":a=["C"][n](bO[m](0,[b.x,b.y][n](a.slice(1))));break;case"S":c=b.x+(b.x-(b.bx||b.x)),d=b.y+(b.y-(b.by||b.y)),a=["C",c,d][n](a.slice(1));break;case"T":b.qx=b.x+(b.x-(b.qx||b.x)),b.qy=b.y+(b.y-(b.qy||b.y)),a=["C"][n](bN(b.x,b.y,b.qx,b.qy,a[1],a[2]));break;case"Q":b.qx=a[1],b.qy=a[2],a=["C"][n](bN(b.x,b.y,a[1],a[2],a[3],a[4]));break;case"L":a=["C"][n](bM(b.x,b.y,a[1],a[2]));break;case"H":a=["C"][n](bM(b.x,b.y,a[1],b.y));break;case"V":a=["C"][n](bM(b.x,b.y,b.x,a[1]));break;case"Z":a=["C"][n](bM(b.x,b.y,b.X,b.Y))}return a},i=function(a,b){if(a[b].length>7){a[b].shift();var c=a[b];while(c.length)a.splice(b++,0,["C"][n](c.splice(0,6)));a.splice(b,1),l=x(d.length,e&&e.length||0)}},j=function(a,b,c,f,g){a&&b&&a[g][0]=="M"&&b[g][0]!="M"&&(b.splice(g,0,["M",f.x,f.y]),c.bx=0,c.by=0,c.x=a[g][1],c.y=a[g][2],l=x(d.length,e&&e.length||0))};for(var k=0,l=x(d.length,e&&e.length||0);ke){if(c&&!l.start){m=cs(g,h,i[1],i[2],i[3],i[4],i[5],i[6],e-n),k+=["C"+m.start.x,m.start.y,m.m.x,m.m.y,m.x,m.y];if(f)return k;l.start=k,k=["M"+m.x,m.y+"C"+m.n.x,m.n.y,m.end.x,m.end.y,i[5],i[6]].join(),n+=j,g=+i[5],h=+i[6];continue}if(!b&&!c){m=cs(g,h,i[1],i[2],i[3],i[4],i[5],i[6],e-n);return{x:m.x,y:m.y,alpha:m.alpha}}}n+=j,g=+i[5],h=+i[6]}k+=i.shift()+i}l.end=k,m=b?n:c?l:a.findDotsAtSegment(g,h,i[0],i[1],i[2],i[3],i[4],i[5],1),m.alpha&&(m={x:m.x,y:m.y,alpha:m.alpha});return m}},cu=ct(1),cv=ct(),cw=ct(0,1);a.getTotalLength=cu,a.getPointAtLength=cv,a.getSubpath=function(a,b,c){if(this.getTotalLength(a)-c<1e-6)return cw(a,b).end;var d=cw(a,c,1);return b?cw(d,b).end:d},cl.getTotalLength=function(){if(this.type=="path"){if(this.node.getTotalLength)return this.node.getTotalLength();return cu(this.attrs.path)}},cl.getPointAtLength=function(a){if(this.type=="path")return cv(this.attrs.path,a)},cl.getSubpath=function(b,c){if(this.type=="path")return a.getSubpath(this.attrs.path,b,c)};var cx=a.easing_formulas={linear:function(a){return a},"<":function(a){return A(a,1.7)},">":function(a){return A(a,.48)},"<>":function(a){var b=.48-a/1.04,c=w.sqrt(.1734+b*b),d=c-b,e=A(z(d),1/3)*(d<0?-1:1),f=-c-b,g=A(z(f),1/3)*(f<0?-1:1),h=e+g+.5;return(1-h)*3*h*h+h*h*h},backIn:function(a){var b=1.70158;return a*a*((b+1)*a-b)},backOut:function(a){a=a-1;var b=1.70158;return a*a*((b+1)*a+b)+1},elastic:function(a){if(a==!!a)return a;return A(2,-10*a)*w.sin((a-.075)*2*B/.3)+1},bounce:function(a){var b=7.5625,c=2.75,d;a<1/c?d=b*a*a:a<2/c?(a-=1.5/c,d=b*a*a+.75):a<2.5/c?(a-=2.25/c,d=b*a*a+.9375):(a-=2.625/c,d=b*a*a+.984375);return d}};cx.easeIn=cx["ease-in"]=cx["<"],cx.easeOut=cx["ease-out"]=cx[">"],cx.easeInOut=cx["ease-in-out"]=cx["<>"],cx["back-in"]=cx.backIn,cx["back-out"]=cx.backOut;var cy=[],cz=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a){setTimeout(a,16)},cA=function(){var b=+(new Date),c=0;for(;c1&&!d.next){for(s in k)k[g](s)&&(r[s]=d.totalOrigin[s]);d.el.attr(r),cE(d.anim,d.el,d.anim.percents[0],null,d.totalOrigin,d.repeat-1)}d.next&&!d.stop&&cE(d.anim,d.el,d.next,null,d.totalOrigin,d.repeat)}}a.svg&&m&&m.paper&&m.paper.safari(),cy.length&&cz(cA)},cB=function(a){return a>255?255:a<0?0:a};cl.animateWith=function(b,c,d,e,f,g){var h=this;if(h.removed){g&&g.call(h);return h}var i=d instanceof cD?d:a.animation(d,e,f,g),j,k;cE(i,h,i.percents[0],null,h.attr());for(var l=0,m=cy.length;l.5)*2-1;i(m-.5,2)+i(n-.5,2)>.25&&(n=f.sqrt(.25-i(m-.5,2))*e+.5)&&n!=.5&&(n=n.toFixed(5)-1e-5*e)}return l}),e=e.split(/\s*\-\s*/);if(j=="linear"){var t=e.shift();t=-d(t);if(isNaN(t))return null;var u=[0,0,f.cos(a.rad(t)),f.sin(a.rad(t))],v=1/(g(h(u[2]),h(u[3]))||1);u[2]*=v,u[3]*=v,u[2]<0&&(u[0]=-u[2],u[2]=0),u[3]<0&&(u[1]=-u[3],u[3]=0)}var w=a._parseDots(e);if(!w)return null;k=k.replace(/[\(\)\s,\xb0#]/g,"_"),b.gradient&&k!=b.gradient.id&&(p.defs.removeChild(b.gradient),delete b.gradient);if(!b.gradient){s=q(j+"Gradient",{id:k}),b.gradient=s,q(s,j=="radial"?{fx:m,fy:n}:{x1:u[0],y1:u[1],x2:u[2],y2:u[3],gradientTransform:b.matrix.invert()}),p.defs.appendChild(s);for(var x=0,y=w.length;x1?G.opacity/100:G.opacity});case"stroke":G=a.getRGB(p),i.setAttribute(o,G.hex),o=="stroke"&&G[b]("opacity")&&q(i,{"stroke-opacity":G.opacity>1?G.opacity/100:G.opacity}),o=="stroke"&&d._.arrows&&("startString"in d._.arrows&&t(d,d._.arrows.startString),"endString"in d._.arrows&&t(d,d._.arrows.endString,1));break;case"gradient":(d.type=="circle"||d.type=="ellipse"||c(p).charAt()!="r")&&r(d,p);break;case"opacity":k.gradient&&!k[b]("stroke-opacity")&&q(i,{"stroke-opacity":p>1?p/100:p});case"fill-opacity":if(k.gradient){H=a._g.doc.getElementById(i.getAttribute("fill").replace(/^url\(#|\)$/g,l)),H&&(I=H.getElementsByTagName("stop"),q(I[I.length-1],{"stop-opacity":p}));break};default:o=="font-size"&&(p=e(p,10)+"px");var J=o.replace(/(\-.)/g,function(a){return a.substring(1).toUpperCase()});i.style[J]=p,d._.dirty=1,i.setAttribute(o,p)}}y(d,f),i.style.visibility=m},x=1.2,y=function(d,f){if(d.type=="text"&&!!(f[b]("text")||f[b]("font")||f[b]("font-size")||f[b]("x")||f[b]("y"))){var g=d.attrs,h=d.node,i=h.firstChild?e(a._g.doc.defaultView.getComputedStyle(h.firstChild,l).getPropertyValue("font-size"),10):10;if(f[b]("text")){g.text=f.text;while(h.firstChild)h.removeChild(h.firstChild);var j=c(f.text).split("\n"),k=[],m;for(var n=0,o=j.length;n"));var $=X.getBoundingClientRect();t.W=m.w=($.right-$.left)/Y,t.H=m.h=($.bottom-$.top)/Y,t.X=m.x,t.Y=m.y+t.H/2,("x"in i||"y"in i)&&(t.path.v=a.format("m{0},{1}l{2},{1}",f(m.x*u),f(m.y*u),f(m.x*u)+1));var _=["x","y","text","font","font-family","font-weight","font-style","font-size"];for(var ba=0,bb=_.length;ba.25&&(c=e.sqrt(.25-i(b-.5,2))*((c>.5)*2-1)+.5),m=b+n+c);return o}),f=f.split(/\s*\-\s*/);if(l=="linear"){var p=f.shift();p=-d(p);if(isNaN(p))return null}var q=a._parseDots(f);if(!q)return null;b=b.shape||b.node;if(q.length){b.removeChild(g),g.on=!0,g.method="none",g.color=q[0].color,g.color2=q[q.length-1].color;var r=[];for(var s=0,t=q.length;s')}}catch(c){F=function(a){return b.createElement("<"+a+' xmlns="urn:schemas-microsoft.com:vml" class="rvml">')}}},a._engine.initWin(a._g.win),a._engine.create=function(){var b=a._getContainer.apply(0,arguments),c=b.container,d=b.height,e,f=b.width,g=b.x,h=b.y;if(!c)throw new Error("VML container not found.");var i=new a._Paper,j=i.canvas=a._g.doc.createElement("div"),k=j.style;g=g||0,h=h||0,f=f||512,d=d||342,i.width=f,i.height=d,f==+f&&(f+="px"),d==+d&&(d+="px"),i.coordsize=u*1e3+n+u*1e3,i.coordorigin="0 0",i.span=a._g.doc.createElement("span"),i.span.style.cssText="position:absolute;left:-9999em;top:-9999em;padding:0;margin:0;line-height:1;",j.appendChild(i.span),k.cssText=a.format("top:0;left:0;width:{0};height:{1};display:inline-block;position:relative;clip:rect(0 {0} {1} 0);overflow:hidden",f,d),c==1?(a._g.doc.body.appendChild(j),k.left=g+"px",k.top=h+"px",k.position="absolute"):c.firstChild?c.insertBefore(j,c.firstChild):c.appendChild(j),i.renderfix=function(){};return i},a.prototype.clear=function(){a.eve("raphael.clear",this),this.canvas.innerHTML=o,this.span=a._g.doc.createElement("span"),this.span.style.cssText="position:absolute;left:-9999em;top:-9999em;padding:0;margin:0;line-height:1;display:inline;",this.canvas.appendChild(this.span),this.bottom=this.top=null},a.prototype.remove=function(){a.eve("raphael.remove",this),this.canvas.parentNode.removeChild(this.canvas);for(var b in this)this[b]=typeof this[b]=="function"?a._removedFactory(b):null;return!0};var G=a.st;for(var H in E)E[b](H)&&!G[b](H)&&(G[H]=function(a){return function(){var b=arguments;return this.forEach(function(c){c[a].apply(c,b)})}}(H))}(window.Raphael) \ No newline at end of file diff --git a/feynman/style.css b/feynman/style.css new file mode 100644 index 0000000..57e6981 --- /dev/null +++ b/feynman/style.css @@ -0,0 +1,11 @@ +#Canvas +{ + float:right; + position:relative; + width:1000px; + box-shadow: 0 6px 6px rgba(0,0,0,0.5); +} + +#menu { +float: left; +} \ No newline at end of file diff --git a/feynman/tmpfYL1eZ0 b/feynman/tmpfYL1eZ0 new file mode 100644 index 0000000..e69de29 diff --git a/feynman/tmpfyl5P0T b/feynman/tmpfyl5P0T new file mode 100644 index 0000000..e69de29 diff --git a/img/bg_texture.png b/img/bg_texture.png new file mode 100644 index 0000000..5c72656 Binary files /dev/null and b/img/bg_texture.png differ diff --git a/img/smig-export.svg b/img/smig-export.svg new file mode 100644 index 0000000..4eb2ea3 --- /dev/null +++ b/img/smig-export.svg @@ -0,0 +1,930 @@ + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + H + W + Z + Quarks + Leptons + Fermions + Bosons + 1. Gen. + 2. Gen. + 3. Gen. + Force Carriers + SymmetryBreaking + electromagnetic + strong + weak + color red/green/blue + charge + + + + + weak isospin + + stablematter + + diff --git a/index.html b/index.html new file mode 100644 index 0000000..ca8f0a8 --- /dev/null +++ b/index.html @@ -0,0 +1,41 @@ + + + + Summer Webfest + + + + + + + + + + + + + + + + + + + + + + diff --git a/main.html b/main.html index d6dfc5b..c9b5897 100644 --- a/main.html +++ b/main.html @@ -39,6 +39,97 @@ diff --git a/mozillaContestGuigui/EditorPart.html b/mozillaContestGuigui/EditorPart.html new file mode 100644 index 0000000..d1143c7 --- /dev/null +++ b/mozillaContestGuigui/EditorPart.html @@ -0,0 +1,42 @@ + + + + Index Test + + + + + + + +
+
+ + + \ No newline at end of file