{
  "information": {
    "Title": "ejss_model_MagneticBarFieldsecondmagnet06 Ejs Open Source 2 Bar Magnets and Compass Model java applet",
    "Author": [
      "lookang (weelookang@gmail.com) , Fu-Kwun Hwang, Wolfgang Chrisitan, Francisco Esquembre",
      "Fu-Kwun Hwang",
      "Wolfgang Chrisitan",
      "Francisco Esquembre",
      "Anne Cox",
      "tina"
    ],
    "AuthorLogo": [
      "./01authorlookang50x50.png",
      "./01authorfu-kwun.hwang.png",
      "./01authorwc_icon.png",
      "./01authorPacoEsquembre2011.png",
      "./cox.png",
      ""
    ],
    "Password": "",
    "Keywords": "magnetic field, dipole, bar magnet, 2 bar magnets",
    "Abstract": "e-mail: fem@um.es\nremixed by lookang here weelookang@gmail.com\nhttp://www.phy.ntnu.edu.tw/ntnujava/index.php?topic=1602\nEjs Open Source 2 Bar Magnets & Compass Model java applet\nhttp://weelookang.blogspot.sg/2010/06/ejs-open-source-2-bar-magnets-compass.html ",
    "Copyright": "CC-BY-SA-NC",
    "Level": "introductory",
    "Language": "english",
    "Logo": [
      "./Bar_magnet_and_compass_2/2016-05-31_1605s.png"
    ],
    "RunAlways": "true",
    "ModelTab": "",
    "ModelTabTitle": "",
    "ModelName": "",
    "FixedNavigationBar": "false",
    "CSSFile": "",
    "DetectedFiles": [
      "./01authorPacoEsquembre2011.png",
      "./01authorfu-kwun.hwang.png",
      "./01authorlookang50x50.png",
      "./01authorwc_icon.png",
      "./Bar_magnet_and_compass_2/2016-05-31_1605s.png",
      "./MagneticBarField/TwoBarMagnetsandCompass.html",
      "./MagneticBarField/barMagnetField.jpg",
      "./cox.png"
    ],
    "AuxiliaryFiles": [
      "./Bar_magnet_and_compass_2/"
    ],
    "HTMLHead": "\n<script \nasync=\"true\" src=\"https://www.googletagmanager.com/gtag/js?id=G-S9EWRY1CPJ\"></script>\n<script>\n  window.dataLayer = window.dataLayer || [];\n  function gtag(){dataLayer.push(arguments);}\n  gtag('js', new Date());\n\n  gtag('config', 'G-S9EWRY1CPJ');\n</script>\n\n<script data-ad-client=\"ca-pub-0121577198857509\" async=\"true\" src=\"https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js\"></script>",
    "SaveInXMLFormat": "false",
    "IncludeSource": "true",
    "IncludeLibrary": "true",
    "UglifyJS": "false",
    "PreviewFullModel": "false",
    "UseInterpreter": "true",
    "UseDeltaForODE": "false"
  },
  "description": {
    "pages": [
      {
        "Name": "Magnetic Bar Field",
        "Active": "true",
        "Internal": "false",
        "Type": "DESCRIPTION_EDITOR",
        "Locale": "_default_",
        "Title": "Magnetic Bar Field",
        "External": "true",
        "Code": "./MagneticBarField/TwoBarMagnetsandCompass.html"
      }
    ]
  },
  "model": {
    "variables": {
      "pages": [
        {
          "Name": "Field Vars",
          "Active": "true",
          "Internal": "false",
          "Type": "VARIABLE_EDITOR",
          "PageComment": "",
          "Variables": [
            {
              "Name": "",
              "Value": "",
              "Type": "int",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "print",
              "Value": "false",
              "Type": "boolean",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "fontb",
              "Value": "\"normal bold 2vw \"",
              "Type": "String",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "font",
              "Value": "\"normal normal 2vw \"",
              "Type": "String",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "nd",
              "Value": "22",
              "Type": "int",
              "Dimension": "",
              "Comment": "number of dipoles",
              "Domain": "public"
            },
            {
              "Name": "nd2",
              "Value": "nd+2",
              "Type": "int",
              "Dimension": "",
              "Comment": "unused",
              "Domain": "public"
            },
            {
              "Name": "dx",
              "Value": "1.0/(nd-1)",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "dipoles",
              "Value": "0",
              "Type": "double",
              "Dimension": "[nd+2][2]",
              "Comment": "positions of dipoles so that are 11 on each horizontal row again for symmetry space out from -0.5 to 0.5 by lookang",
              "Domain": "public"
            },
            {
              "Name": "dipolesearth",
              "Value": "0",
              "Type": "double",
              "Dimension": "[2][nd]",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "fieldValue",
              "Value": "\"0\"",
              "Type": "String",
              "Dimension": "",
              "Comment": "magnitude of magnetic field reported by compass",
              "Domain": "public"
            },
            {
              "Name": "fieldValueBx",
              "Value": "\"0\"",
              "Type": "String",
              "Dimension": "",
              "Comment": "added by lookang text value Bx resolve to axis of horizontal magnet",
              "Domain": "public"
            },
            {
              "Name": "fieldValueBy",
              "Value": "\"0\"",
              "Type": "String",
              "Dimension": "",
              "Comment": "added by lookang text value By resolve to axis of horizontal magnet",
              "Domain": "public"
            },
            {
              "Name": "fieldValueBx1",
              "Value": "\"\"",
              "Type": "String",
              "Dimension": "",
              "Comment": "added by lookang text value Bx resolve to universal x",
              "Domain": "public"
            },
            {
              "Name": "fieldValueBy1",
              "Value": "\"\"",
              "Type": "String",
              "Dimension": "",
              "Comment": "added by lookang text value Bx resolve to universal y",
              "Domain": "public"
            },
            {
              "Name": "fieldValueAngle",
              "Value": "\"0\"",
              "Type": "String",
              "Dimension": "",
              "Comment": "added by lookang text value Angle",
              "Domain": "public"
            },
            {
              "Name": "angledeg",
              "Value": "",
              "Type": "double",
              "Dimension": "",
              "Comment": "added by lookang text value Angle in degree calculation in double.",
              "Domain": "public"
            },
            {
              "Name": "angledeg1",
              "Value": "0",
              "Type": "double",
              "Dimension": "",
              "Comment": "universal angle  after adding rotation cta",
              "Domain": "public"
            },
            {
              "Name": "fieldValueAngledeg",
              "Value": "\"0\"",
              "Type": "String",
              "Dimension": "",
              "Comment": "added by lookang text value Angle in degree in string TT NOT USED",
              "Domain": "public"
            },
            {
              "Name": "fieldValueAngledeg1",
              "Value": "\"\"",
              "Type": "String",
              "Dimension": "",
              "Comment": "universal angle after adding rotation cta",
              "Domain": "public"
            },
            {
              "Name": "m",
              "Value": "0.05",
              "Type": "double",
              "Dimension": "",
              "Comment": "magnetic dipole moment",
              "Domain": "public"
            },
            {
              "Name": "xmax",
              "Value": "1.5",
              "Type": "double",
              "Dimension": "",
              "Comment": "panel size",
              "Domain": "public"
            },
            {
              "Name": "ymax",
              "Value": "1",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "nx",
              "Value": "41",
              "Type": "int",
              "Dimension": "",
              "Comment": "number of field vectors in x-direction change to 21 from 20 for symmetrically field vector by lookang",
              "Domain": "public"
            },
            {
              "Name": "ny",
              "Value": "41",
              "Type": "int",
              "Dimension": "",
              "Comment": "number of field vectors in y direction change to 21 from 20 for symmetrically field vector by lookang",
              "Domain": "public"
            },
            {
              "Name": "B",
              "Value": "",
              "Type": "double",
              "Dimension": "[4]",
              "Comment": "B compute lookang",
              "Domain": "public"
            },
            {
              "Name": "xField",
              "Value": "0",
              "Type": "double",
              "Dimension": "[nx][ny]",
              "Comment": "magnetic field x-component",
              "Domain": "public"
            },
            {
              "Name": "yField",
              "Value": "0",
              "Type": "double",
              "Dimension": "[nx][ny]",
              "Comment": "magnetic field y-component",
              "Domain": "public"
            },
            {
              "Name": "magField",
              "Value": "0",
              "Type": "double",
              "Dimension": "[nx][ny]",
              "Comment": "magnetic field magnitude",
              "Domain": "public"
            },
            {
              "Name": "negativexField",
              "Value": "0",
              "Type": "double",
              "Dimension": "[nx][ny]",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "negativeyField",
              "Value": "0",
              "Type": "double",
              "Dimension": "[nx][ny]",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "R",
              "Value": "2",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "",
              "Value": "",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "",
              "Value": "",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            }
          ]
        },
        {
          "Name": "Display Vars",
          "Active": "true",
          "Internal": "false",
          "Type": "VARIABLE_EDITOR",
          "PageComment": "",
          "Variables": [
            {
              "Name": "direction",
              "Value": "0",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "netForce",
              "Value": "0",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "massMagnet",
              "Value": "1",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "vxMagnet",
              "Value": "0",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "xMagnet",
              "Value": "0",
              "Type": "double",
              "Dimension": "",
              "Comment": "x position of magnet",
              "Domain": "public"
            },
            {
              "Name": "yMagnet",
              "Value": "0",
              "Type": "double",
              "Dimension": "",
              "Comment": "y position of magnet",
              "Domain": "public"
            },
            {
              "Name": "xMagnetDrag",
              "Value": "yMagnet+1",
              "Type": "double",
              "Dimension": "",
              "Comment": "x position of magnet",
              "Domain": "public"
            },
            {
              "Name": "yMagnetDrag",
              "Value": "yMagnet",
              "Type": "double",
              "Dimension": "",
              "Comment": "y position of magnet",
              "Domain": "public"
            },
            {
              "Name": "xMagnettransform",
              "Value": "0",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "yMagnettransform",
              "Value": "0",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "store",
              "Value": "41",
              "Type": "int",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "counter",
              "Value": "0",
              "Type": "int",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "xCompass",
              "Value": "0.7",
              "Type": "double",
              "Dimension": "",
              "Comment": "x position of compass",
              "Domain": "public"
            },
            {
              "Name": "xCompassstore",
              "Value": "-xmax-1",
              "Type": "double",
              "Dimension": "[store]",
              "Comment": "x position of compass",
              "Domain": "public"
            },
            {
              "Name": "yCompass",
              "Value": "0.01501501501501501",
              "Type": "double",
              "Dimension": "",
              "Comment": "y position of compass",
              "Domain": "public"
            },
            {
              "Name": "yCompassstore",
              "Value": "-ymax-1",
              "Type": "double",
              "Dimension": "[store]",
              "Comment": "y position of compass",
              "Domain": "public"
            },
            {
              "Name": "xCompasstransform",
              "Value": "0",
              "Type": "double",
              "Dimension": "",
              "Comment": "transform xCompass to new coordinate system after angle cta",
              "Domain": "public"
            },
            {
              "Name": "yCompasstransform",
              "Value": "0",
              "Type": "double",
              "Dimension": "",
              "Comment": "transform yCompass to new coordinate system after angle cta",
              "Domain": "public"
            },
            {
              "Name": "xCompasstransform1",
              "Value": "0",
              "Type": "double",
              "Dimension": "",
              "Comment": "transform back to universal coordinate system after angle -cta",
              "Domain": "public"
            },
            {
              "Name": "yCompasstransform1",
              "Value": "0",
              "Type": "double",
              "Dimension": "",
              "Comment": "transform back to universal coordinate system after angle -cta",
              "Domain": "public"
            },
            {
              "Name": "Magnetsizex",
              "Value": "1.12",
              "Type": "double",
              "Dimension": "",
              "Comment": "Magnetsizex added by lookang",
              "Domain": "public"
            },
            {
              "Name": "Magnetsizey",
              "Value": "0.22",
              "Type": "double",
              "Dimension": "",
              "Comment": "Magnetsizey added by lookang",
              "Domain": "public"
            },
            {
              "Name": "equilibriumTheta",
              "Value": "0",
              "Type": "double",
              "Dimension": "",
              "Comment": "angular orientation of compass at equilibrium",
              "Domain": "public"
            },
            {
              "Name": "hideField",
              "Value": "false",
              "Type": "boolean",
              "Dimension": "",
              "Comment": "whether to hide magnet and field vectors",
              "Domain": "public"
            },
            {
              "Name": "randomMagnetLocation",
              "Value": "false",
              "Type": "boolean",
              "Dimension": "",
              "Comment": "if magnet will be moved to a random position",
              "Domain": "public"
            },
            {
              "Name": "vectorfieldmax",
              "Value": "0",
              "Type": "double",
              "Dimension": "",
              "Comment": "for varying the magnetic field display",
              "Domain": "public"
            },
            {
              "Name": "vectorfieldmaxopposite",
              "Value": "100",
              "Type": "double",
              "Dimension": "",
              "Comment": "for varying the magnetic field display from 10 to 100",
              "Domain": "public"
            },
            {
              "Name": "insidemagnet",
              "Value": "",
              "Type": "boolean",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "magnetNS",
              "Value": "false",
              "Type": "boolean",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "flipmagnet",
              "Value": "",
              "Type": "boolean",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "showCompass",
              "Value": "",
              "Type": "boolean",
              "Dimension": "",
              "Comment": "for varying the magnetic field display from 10 to 100",
              "Domain": "public"
            },
            {
              "Name": "test",
              "Value": "",
              "Type": "boolean",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "",
              "Value": "",
              "Type": "boolean",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            }
          ]
        },
        {
          "Name": "ODE Vars",
          "Active": "true",
          "Internal": "false",
          "Type": "VARIABLE_EDITOR",
          "PageComment": "ODE variables for compass",
          "Variables": [
            {
              "Name": "k",
              "Value": "1",
              "Type": "double",
              "Dimension": "",
              "Comment": "Hooke's law restoring force",
              "Domain": "public"
            },
            {
              "Name": "damp",
              "Value": "2",
              "Type": "double",
              "Dimension": "",
              "Comment": "damping constant change from b to aviod confusion",
              "Domain": "public"
            },
            {
              "Name": "theta",
              "Value": "0",
              "Type": "double",
              "Dimension": "",
              "Comment": "angular orientation of compass needle",
              "Domain": "public"
            },
            {
              "Name": "thetastore",
              "Value": "0",
              "Type": "double",
              "Dimension": "[store]",
              "Comment": "angular orientation of compass needle",
              "Domain": "public"
            },
            {
              "Name": "deltaTheta",
              "Value": "",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "deltaThetastore",
              "Value": "",
              "Type": "double",
              "Dimension": "[store]",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "omega",
              "Value": "0",
              "Type": "double",
              "Dimension": "",
              "Comment": "angular velocity of compass needle",
              "Domain": "public"
            },
            {
              "Name": "omegastore",
              "Value": "0",
              "Type": "double",
              "Dimension": "[store]",
              "Comment": "angular velocity of compass needle",
              "Domain": "public"
            },
            {
              "Name": "t",
              "Value": "0",
              "Type": "double",
              "Dimension": "",
              "Comment": "time",
              "Domain": "public"
            },
            {
              "Name": "dt",
              "Value": "0.1",
              "Type": "double",
              "Dimension": "",
              "Comment": "time increment",
              "Domain": "public"
            },
            {
              "Name": "pi",
              "Value": "Math.PI",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "",
              "Value": "",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            }
          ]
        },
        {
          "Name": "earth",
          "Active": "true",
          "Internal": "false",
          "Type": "VARIABLE_EDITOR",
          "PageComment": "",
          "Variables": [
            {
              "Name": "earth",
              "Value": "false",
              "Type": "boolean",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "cta",
              "Value": "0",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "cs",
              "Value": "Math.cos(cta)",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "sc",
              "Value": "Math.sin(cta)",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "cs1",
              "Value": "Math.cos(-cta)",
              "Type": "double",
              "Dimension": "",
              "Comment": "needed for rotation backwards bt -cta",
              "Domain": "public"
            },
            {
              "Name": "sc1",
              "Value": "Math.sin(-cta)",
              "Type": "double",
              "Dimension": "",
              "Comment": "needed for rotation backwards bt -cta",
              "Domain": "public"
            },
            {
              "Name": "ca",
              "Value": "0",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "a2c",
              "Value": "pi/180",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "",
              "Value": "",
              "Type": "boolean",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "",
              "Value": "",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            }
          ]
        },
        {
          "Name": "2ndmagnet",
          "Active": "true",
          "Internal": "false",
          "Type": "VARIABLE_EDITOR",
          "PageComment": "",
          "Variables": [
            {
              "Name": "magnet1",
              "Value": "true",
              "Type": "boolean",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "magnet2",
              "Value": "false",
              "Type": "boolean",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "dipoles2",
              "Value": "0",
              "Type": "double",
              "Dimension": "[nd+2][2]",
              "Comment": "unused",
              "Domain": "public"
            },
            {
              "Name": "massMagnet2",
              "Value": "1",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "vxMagnet2",
              "Value": "0",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "xMagnet2",
              "Value": "0.6532091097308488",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "yMagnet2",
              "Value": "-0.07660455486542439",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "xMagnet2Drag",
              "Value": "xMagnet2+0.7",
              "Type": "double",
              "Dimension": "",
              "Comment": "x position of magnet",
              "Domain": "public"
            },
            {
              "Name": "yMagnet2Drag",
              "Value": "yMagnet2",
              "Type": "double",
              "Dimension": "",
              "Comment": "y position of magnet",
              "Domain": "public"
            },
            {
              "Name": "Magnetsizex2",
              "Value": "1.12",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "Magnetsizey2",
              "Value": "0.22",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "cta2",
              "Value": "",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "ca2",
              "Value": "0",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "cs2",
              "Value": "",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "sc2",
              "Value": "",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "cs3",
              "Value": "",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "sc3",
              "Value": "",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "xMagnettransform2",
              "Value": "",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "yMagnettransform2",
              "Value": "",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "xCompasstransform2",
              "Value": "",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "yCompasstransform2",
              "Value": "",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "xCompasstransform3",
              "Value": "",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "yCompasstransform3",
              "Value": "",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "randomMagnetLocation2",
              "Value": "",
              "Type": "boolean",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "bf1",
              "Value": "0",
              "Type": "double",
              "Dimension": "[2]",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "bf2",
              "Value": "0",
              "Type": "double",
              "Dimension": "[2]",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "lcst",
              "Value": "1",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "rcst",
              "Value": "0",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "scale",
              "Value": "1",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "bxField",
              "Value": "0.0",
              "Type": "double",
              "Dimension": "",
              "Comment": "at compass location ",
              "Domain": "public"
            },
            {
              "Name": "byField",
              "Value": "0.0",
              "Type": "double",
              "Dimension": "",
              "Comment": "at compass location by FKH",
              "Domain": "public"
            },
            {
              "Name": "",
              "Value": "",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            }
          ]
        },
        {
          "Name": "layout",
          "Active": "true",
          "Internal": "false",
          "Type": "VARIABLE_EDITOR",
          "PageComment": "",
          "Variables": [
            {
              "Name": "",
              "Value": "",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "textt",
              "Value": "\"select the different position of RED and Blue dots and click play\"",
              "Type": "String",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "Width",
              "Value": "(_isEPub)?\"400\":\"100%\"",
              "Type": "String",
              "Dimension": "",
              "Comment": "display width",
              "Domain": "public"
            },
            {
              "Name": "Height",
              "Value": "(_isEPub)?\"500\":\"100%\"",
              "Type": "String",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "Width1",
              "Value": "\"100%\"",
              "Type": "String",
              "Dimension": "",
              "Comment": "display width",
              "Domain": "public"
            },
            {
              "Name": "Width2",
              "Value": "\"0%\"",
              "Type": "String",
              "Dimension": "",
              "Comment": "display width",
              "Domain": "public"
            },
            {
              "Name": "Width3",
              "Value": "\"0%\"",
              "Type": "String",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "Width4",
              "Value": "\"0%\"",
              "Type": "String",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "Height1",
              "Value": "\"15\"",
              "Type": "String",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "graph",
              "Value": "true",
              "Type": "boolean",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "world",
              "Value": "true",
              "Type": "boolean",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "disabledworld",
              "Value": "false",
              "Type": "boolean",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "disabled",
              "Value": "false",
              "Type": "boolean",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "isAndroid",
              "Value": "checkAndroid()",
              "Type": "boolean",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "",
              "Value": "",
              "Type": "String",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "iOS",
              "Value": "/iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream",
              "Type": "boolean",
              "Dimension": "",
              "Comment": "http://stackoverflow.com/questions/9038625/detect-if-device-is-ios",
              "Domain": "public"
            },
            {
              "Name": "iPad",
              "Value": "/iPad/.test(navigator.userAgent) && !window.MSStream",
              "Type": "boolean",
              "Dimension": "",
              "Comment": "http://stackoverflow.com/questions/9038625/detect-if-device-is-ios",
              "Domain": "public"
            },
            {
              "Name": "iPhone",
              "Value": "/iPhone|iPod/.test(navigator.userAgent) && !window.MSStream",
              "Type": "boolean",
              "Dimension": "",
              "Comment": "http://stackoverflow.com/questions/9038625/detect-if-device-is-ios",
              "Domain": "public"
            },
            {
              "Name": "Android",
              "Value": "/Android|android/i.test(navigator.userAgent)",
              "Type": "boolean",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            }
          ]
        },
        {
          "Name": "Fieldlines",
          "Active": "true",
          "Internal": "false",
          "Type": "VARIABLE_EDITOR",
          "PageComment": "",
          "Variables": [
            {
              "Name": "inside",
              "Value": "\"\"",
              "Type": "String",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "selected",
              "Value": "\"magnet 1 on\"",
              "Type": "String",
              "Dimension": "[1]",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "selected2",
              "Value": "\"magnet 2 on\"",
              "Type": "String",
              "Dimension": "[1]",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "selected3",
              "Value": "\"one magnet point right\"",
              "Type": "String",
              "Dimension": "[1]",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "vectorIndex",
              "Value": "0",
              "Type": "int",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "FieldFlag",
              "Value": "true",
              "Type": "boolean",
              "Dimension": "",
              "Comment": "toggle for overlaying streamline field lines",
              "Domain": "public"
            },
            {
              "Name": "nVectors",
              "Value": "15",
              "Type": "int",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "nVectorsMax",
              "Value": "15",
              "Type": "int",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "nVectorsSq",
              "Value": "nVectors*nVectors",
              "Type": "int",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "Vectorx",
              "Value": "0.0",
              "Type": "double",
              "Dimension": "[nVectorsSq]",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "Vectory",
              "Value": "0.0",
              "Type": "double",
              "Dimension": "[nVectorsSq]",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "Fieldx",
              "Value": "0.000001",
              "Type": "double",
              "Dimension": "[nVectorsSq]",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "Fieldy",
              "Value": "0.0",
              "Type": "double",
              "Dimension": "[nVectorsSq]",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "BF1",
              "Value": "0.0",
              "Type": "double",
              "Dimension": "[2]",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "BF2",
              "Value": "0.0",
              "Type": "double",
              "Dimension": "[2]",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "posx",
              "Value": "0.0",
              "Type": "double",
              "Dimension": "[nVectorsSq]",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "posy",
              "Value": "0.0",
              "Type": "double",
              "Dimension": "[nVectorsSq]",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "textSetx",
              "Value": "\"\"",
              "Type": "String",
              "Dimension": "[nVectorsSq]",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "textSety",
              "Value": "\"\"",
              "Type": "String",
              "Dimension": "[nVectorsSq]",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "textSetthetaField",
              "Value": "\"\"",
              "Type": "String",
              "Dimension": "[nVectorsSq]",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "thetaField",
              "Value": "0",
              "Type": "double",
              "Dimension": "[nVectorsSq]",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "",
              "Value": "",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "nFieldLineSegmentsMax",
              "Value": "480",
              "Type": "int",
              "Dimension": "",
              "Comment": "maximum number of short segments used to draw field-line overlays",
              "Domain": "public"
            },
            {
              "Name": "fieldLineCount",
              "Value": "0",
              "Type": "int",
              "Dimension": "",
              "Comment": "current number of visible streamline segments",
              "Domain": "public"
            },
            {
              "Name": "fieldLineX",
              "Value": "0.0",
              "Type": "double",
              "Dimension": "[nFieldLineSegmentsMax]",
              "Comment": "x positions for streamline segment centers",
              "Domain": "public"
            },
            {
              "Name": "fieldLineY",
              "Value": "0.0",
              "Type": "double",
              "Dimension": "[nFieldLineSegmentsMax]",
              "Comment": "y positions for streamline segment centers",
              "Domain": "public"
            },
            {
              "Name": "fieldLineTheta",
              "Value": "0.0",
              "Type": "double",
              "Dimension": "[nFieldLineSegmentsMax]",
              "Comment": "segment orientations for streamline overlays",
              "Domain": "public"
            },
            {
              "Name": "fieldLineStep",
              "Value": "0.06",
              "Type": "double",
              "Dimension": "",
              "Comment": "integration step length for streamline tracing",
              "Domain": "public"
            },
            {
              "Name": "fieldLineSegmentLength",
              "Value": "0.05",
              "Type": "double",
              "Dimension": "",
              "Comment": "display length for each streamline segment",
              "Domain": "public"
            },
            {
              "Name": "fieldLineMaxSteps",
              "Value": "20",
              "Type": "int",
              "Dimension": "",
              "Comment": "maximum number of segments traced from each seed point",
              "Domain": "public"
            },
            {
              "Name": "fieldLineMargin",
              "Value": "0.08",
              "Type": "double",
              "Dimension": "",
              "Comment": "extra distance used for starting seeds and clipping bounds",
              "Domain": "public"
            }
          ]
        }
      ]
    },
    "initialization": {
      "pages": [
        {
          "Name": "Init Page",
          "Active": "true",
          "Internal": "false",
          "Type": "CODE_EDITOR",
          "Comment": "",
          "Code": "// spacing done by lookang to achieve perfectly symmetry of B\n// need nd =22 because from x =-0.5 to 0.5 put 11 each row\n// 2 rows so nd = 11*2 =22\n\nvar dx=1.0/(nd-2);    //set up dipoles under bar magnet\nfor(var i=0; i<=(nd-1); i++) {\n  dipoles[i][0]=-0.5+i*dx;   // x position of first line of dipoles bottom\n  dipoles[i][1]=-0.04;         // y position move down by -0.04 of first line of dipoles bottom\n  dipoles[i+1][0]=-0.5+i*dx; // x position of 2nd line of dipoles top\n  dipoles[i+1][1]=0.04;       // y position move up by +0.04 of top line of dipoles bottom\n  i++;\n}\n\n//magnet1=true;\n//magnet2=true;\ncomputeField();\n\n\n\n"
        },
        {
          "Name": "Init Page 2",
          "Active": "true",
          "Internal": "false",
          "Type": "CODE_EDITOR",
          "Comment": "",
          "Code": "for (var i = 0; i < nVectors; i++)\n{\n  for (var j = 0; j < nVectors; j++)\n  {\n    vectorIndex = i+nVectors*j;\n    \n    Vectorx[vectorIndex] = -xmax*scale+i/5;\n    Vectory[vectorIndex] = -ymax*scale+j/5;\n   posx[vectorIndex]=Vectorx[vectorIndex]-0.5*Fieldx[vectorIndex];\n   posy[vectorIndex]=Vectory[vectorIndex]-0.5*Fieldy[vectorIndex];\n  }\n}"
        },
        {
          "Name": "laytwo magnets",
          "Active": "true",
          "Internal": "false",
          "Type": "CODE_EDITOR",
          "Comment": "",
          "Code": "xMagnet = -1;\nyMagnet = 0;\nxMagnet2 = 1-0.2;\nyMagnet2 = 0;\nselected[0]=\"\u03b8\u2081 =0\u00b0\";\nselected2[0]=\"\u03b8\u2082 =0\u00b0\";\nca = 0;\n  cta=ca*a2c;\ncs=Math.cos(cta);\nsc=Math.sin(cta);\n//\nca2 = -0;\n  cta=ca2*a2c;\ncs=Math.cos(cta);\nsc=Math.sin(cta);\nmagnet1=true;\n if(magnet1)lcst=1;\nelse lcst=0;\n//computeField ();\n\nmagnet2=true;\n if(magnet2)rcst=1;\nelse rcst=0;\ncomputeField ();\n\n\nxMagnetDrag = xMagnet+0.7; //force rotate unicode to follow magnet\nyMagnetDrag = yMagnet;\nxMagnet2Drag = xMagnet2+0.7; //force rotate unicode to follow magnet\nyMagnet2Drag = yMagnet2;\n\n"
        }
      ]
    },
    "evolution": {
      "information": {
        "FPS": "25",
        "SPD": "1",
        "RealTimeVariable": "",
        "Autoplay": "true"
      },
      "pages": [
        {
          "Name": "Evol Page",
          "Active": "true",
          "Internal": "false",
          "Type": "ODE_EDITOR",
          "Comment": "",
          "IndependentVariable": "t",
          "Increment": "dt",
          "Equations": [
            {
              "state": "theta",
              "rate": "omega"
            },
            {
              "state": "omega",
              "rate": "-k*Math.sqrt(bxField*bxField+byField*byField)*(Math.sin(deltaTheta))-damp*omega"
            },
            {
              "state": "xMagnet",
              "rate": "vxMagnet"
            },
            {
              "state": "xMagnet2",
              "rate": "vxMagnet2"
            },
            {
              "state": "vxMagnet",
              "rate": "netForce/(massMagnet)"
            },
            {
              "state": "vxMagnet2",
              "rate": "netForce/(massMagnet2)"
            },
            {
              "state": "",
              "rate": ""
            }
          ],
          "Method": "RungeKuttaFehlberg",
          "AbsoluteTolerance": "0.00001",
          "PreliminaryCode": {
            "Code": "var deltaTheta=theta-equilibriumTheta;\n",
            "Comment": "Code to be executed before rate equations are evaluated"
          },
          "EventMaximumStep": "",
          "Events": {
            "pages": []
          },
          "ZenoEffect": {
            "Code": "",
            "Comment": "",
            "StopAfterEffect": "true"
          },
          "AccelerationIndependentOfVelocity": "false",
          "ForceSynchronization": "false",
          "UseBestInterpolation": "false",
          "EstimateFirstStep": "false",
          "MemoryLength": "",
          "InternalStep": "",
          "MaximumStep": "",
          "MaximumNumberOfSteps": "10000",
          "RelativeTolerance": "",
          "DelayList": "",
          "DelayMaximum": "",
          "DelayAddDiscont": "",
          "DelayInitialCondition": {
            "Code": "",
            "Comment": ""
          },
          "DirectIncidenceMatrix": "",
          "Discontinuities": {
            "pages": []
          },
          "ErrorHandling": {
            "pages": [
              {
                "Type": "ERROR_EDITOR",
                "Name": "Error handling code",
                "Active": "true",
                "Internal": "false",
                "Code": "",
                "Comment": "",
                "ErrorType": "ANY_ERROR"
              }
            ]
          }
        }
      ]
    },
    "fixed_relations": {
      "pages": [
        {
          "Name": "FixRel Page 2",
          "Active": "true",
          "Internal": "false",
          "Type": "CODE_EDITOR",
          "Comment": "",
          "Code": "cta = ca*a2c; // use to allow slider ca to control cta \ncs=Math.cos(cta);//FKH\nsc=Math.sin(cta);//FKH\ncs1=Math.cos(-cta); // use to rotate from magnet axes to universal axes\nsc1=Math.sin(-cta); // use to rotate from magnet axes to universal axes\n\n// required for compass in magnet to work to 255 \nxMagnettransform = xMagnet*cs+yMagnet*sc; // transform to magnet axes\nyMagnettransform = -xMagnet*sc+yMagnet*cs; // transform to magnet axes\nxCompasstransform = xCompass*cs+yCompass*sc; // transform to magnet axes\nyCompasstransform = -xCompass*sc+yCompass*cs; // transform to magnet axes\nxCompasstransform1 = xCompasstransform*cs1+yCompasstransform*sc1; // transform to universal axes\nyCompasstransform1 = -xCompasstransform*sc1+yCompasstransform*cs1; // transform to universal axes\n\n\n// for 2nd magnet\ncta2 = ca2*a2c; // use to allow slider ca to control cta \ncs2=Math.cos(cta2);//FKH\nsc2=Math.sin(cta2);//FKH\ncs3=Math.cos(-cta2); // use to rotate from magnet axes to universal axes\nsc3=Math.sin(-cta2); // use to rotate from magnet axes to universal axes\nxMagnettransform2 = xMagnet2*cs2+yMagnet2*sc2; // transform to magnet axes\nyMagnettransform2 = -xMagnet2*sc2+yMagnet2*cs2; // transform to magnet axes\nxCompasstransform2 = xCompass*cs2+yCompass*sc2; // transform to magnet axes\nyCompasstransform2 = -xCompass*sc2+yCompass*cs2; // transform to magnet axes\nxCompasstransform3 = xCompasstransform2*cs3+yCompasstransform2*sc3; // transform to universal axes\nyCompasstransform3 = -xCompasstransform2*sc3+yCompasstransform2*cs3; \n\n\nbf1=getB((xCompass-xMagnet)*cs+(yCompass-yMagnet)*sc,-(xCompass-xMagnet)*sc+(yCompass-yMagnet)*cs);//FKH\nbf2=getB((xCompass-xMagnet2)*cs2+(yCompass-yMagnet2)*sc2,-(xCompass-xMagnet2)*sc2+(yCompass-yMagnet2)*cs2);//FKH\n\n//https://www.kirupa.com/forum/showthread.php?336745-Mathematically-check-if-a-point-is-inside-a-rotated-rectangle\n \nvar dx =  xCompass-xMagnet;\nvar dy =  yCompass-yMagnet;\nvar currA = Math.atan2(dy,dx);\nvar newA = currA - cta;\nvar h1 = Math.sqrt(dx*dx+dy*dy);\nvar x2 =Math.cos(newA) * h1;\nvar y2 = Math.sin(newA) * h1;\n\nvar dx2 =  xCompass-xMagnet2;\nvar dy2 =  yCompass-yMagnet2;\nvar currA2 = Math.atan2(dy2,dx2);\nvar newA2 = currA2 - cta2;\nvar h2 = Math.sqrt(dx2*dx2+dy2*dy2);\nvar x22 =Math.cos(newA2) * h2;\nvar y22 = Math.sin(newA2) * h2;\n\n  //inside magnet1\n  if (magnet1===true&&(x2 > - 0.5 * Magnetsizex && x2 < 0.5 * Magnetsizex && y2 > - 0.5 * Magnetsizey && y2 < 0.5 * Magnetsizey))\n// if (xCompass<(xMagnet+Magnetsizex/2) && xCompass>(xMagnet-(Magnetsizex/2)) && yCompass<(yMagnet+Magnetsizey/2) && yCompass>(yMagnet-Magnetsizey/2))\n{\ntheta= cta;\nfieldValue=\"B= 225 T\";\nfieldValueBx1=\"Bx= \" +_view._format(225*Math.cos(theta),\"0.\")+ \" T\";  \nfieldValueBy1=\"By= \"+_view._format(225*Math.sin(theta),\"0.\")+ \" T\";\nfieldValueAngledeg1 = theta*180/pi;\n}\n\n\n  //inside magnet2\n  else if (magnet2===true&&(x22 > - 0.5 * Magnetsizex2 && x22 < 0.5 * Magnetsizex2 && y22 > - 0.5 * Magnetsizey2 && y22 < 0.5 * Magnetsizey2))\n// if (xCompass<(xMagnet+Magnetsizex/2) && xCompass>(xMagnet-(Magnetsizex/2)) && yCompass<(yMagnet+Magnetsizey/2) && yCompass>(yMagnet-Magnetsizey/2))\n{\ntheta= cta2;\nfieldValue=\"B= 225 T\";\nfieldValueBx1=\"Bx= \" +_view._format(225*Math.cos(theta),\"0.\")+ \" T\";  \nfieldValueBy1=\"By= \"+_view._format(225*Math.sin(theta),\"0.\")+ \" T\";\nfieldValueAngledeg1 = theta*180/pi;\n}\n \nelse{ // catch all\nbxField = lcst*(bf1[0]*cs-bf1[1]*sc)+rcst*(bf2[0]*cs2-bf2[1]*sc2);//FKH\n  byField = lcst*(bf1[0]*sc+bf1[1]*cs)+rcst*(bf2[0]*sc2+bf2[1]*cs2);//FKH\nequilibriumTheta=Math.atan2(byField,bxField);//b[3];\nfieldValue=\"B=\"+_view._format(Math.sqrt(bxField*bxField+byField*byField),\"0.0\")+ \" T\";\n\n\n// display as x and y\nfieldValueBx1=\"Bx= \" +_view._format(bxField,\"0.0\")+ \" T\";  \nfieldValueBy1=\"By= \"+_view._format(byField,\"0.0\")+ \" T\";\n\n// new angle after rotate cta of magnet with universal x and y\nangledeg1 = Math.atan2(byField,bxField)*180/Math.PI;\nfieldValueAngledeg1 = \"\u03b8 = \"+ _view._format(angledeg1,\"0.0\") + \"\u00b0\";\n\n\nif(omega>0)omega=Math.min(omega,Math.PI);  // keeps compass from spinning wildly\nelse omega=Math.max(omega,-Math.PI);\n\n\n// to make the strength slider 0 min and 100 max by weelk\nvectorfieldmax=100-vectorfieldmaxopposite;\n\n//\n//cs= Math.cos(cta);\n//sc=Math.sin(cta);\n//cta = ca*a2c;\n\n// prelim code moved to fix\ndeltaTheta=theta-equilibriumTheta;\n\n}"
        },
        {
          "Name": "fieldlines",
          "Active": "true",
          "Internal": "false",
          "Type": "CODE_EDITOR",
          "Comment": "",
          "Code": "// Field for the vectors\nfor (i = 0; i < nVectors; i++)\n{\n  for (j = 0; j < nVectors; j++)\n  {\n    vectorIndex = i+nVectors*j;\n//    bf1=getB((xCompass-xMagnet)*cs+(yCompass-yMagnet)*sc,-(xCompass-xMagnet)*sc+(yCompass-yMagnet)*cs);//FKH\n//bf2=getB((xCompass-xMagnet2)*cs2+(yCompass-yMagnet2)*sc2,-(xCompass-xMagnet2)*sc2+(yCompass-yMagnet2)*cs2);//FKH\n\n    BF1 = getBcomputeField((posx[vectorIndex]-xMagnet)*cs+(posy[vectorIndex]-yMagnet)*sc,-(posx[vectorIndex]-xMagnet)*sc+(posy[vectorIndex]-yMagnet)*cs);//FKH;\n    BF2 =getBcomputeField((posx[vectorIndex]-xMagnet2)*cs2+(posy[vectorIndex]-yMagnet2)*sc2,-(posx[vectorIndex]-xMagnet2)*sc2+(posy[vectorIndex]-yMagnet2)*cs2);//FKH\n   Fieldx[vectorIndex] = lcst*(BF1[0]*cs-BF1[1]*sc)+rcst*(BF2[0]*cs2-BF2[1]*sc2);//FKH\n   Fieldy[vectorIndex] = lcst*(BF1[0]*sc+BF1[1]*cs)+rcst*(BF2[0]*sc2+BF2[1]*cs2);//FKH\n    thetaField[vectorIndex]= Math.atan2(Fieldy[vectorIndex],Fieldx[vectorIndex]+0.00000001); //need a small amount to force answers to be correct\n //https://www.kirupa.com/forum/showthread.php?336745-Mathematically-check-if-a-point-is-inside-a-rotated-rectangle\n \nvar dx =  posx[vectorIndex]-xMagnet;\nvar dy =  posy[vectorIndex]-yMagnet;\nvar currA = Math.atan2(dy,dx);\nvar newA = currA - cta;\nvar h1 = Math.sqrt(dx*dx+dy*dy);\nvar x2 =Math.cos(newA) * h1;\nvar y2 = Math.sin(newA) * h1;\n  //inside magnet1\n  if (magnet1===true&&(x2 > - 0.5 * Magnetsizex && x2 < 0.5 * Magnetsizex && y2 > - 0.5 * Magnetsizey && y2 < 0.5 * Magnetsizey))\n// if (posx[vectorIndex]<(xMagnet+Magnetsizex/2) && posx[vectorIndex]>(xMagnet-(Magnetsizex/2)) && posy[vectorIndex]<(yMagnet+Magnetsizey/2) && posy[vectorIndex]>(yMagnet-Magnetsizey/2))\n{\nthetaField[vectorIndex]= cta;\n}\nvar dx2 =  posx[vectorIndex]-xMagnet2;\nvar dy2 =  posy[vectorIndex]-yMagnet2;\nvar currA2 = Math.atan2(dy2,dx2);\nvar newA2 = currA2 - cta2;\nvar h2 = Math.sqrt(dx2*dx2+dy2*dy2);\nvar x22 =Math.cos(newA2) * h2;\nvar y22 = Math.sin(newA2) * h2;\n  //inside magnet2\n  if (magnet2===true&&(x22 > - 0.5 * Magnetsizex2 && x22 < 0.5 * Magnetsizex2 && y22 > - 0.5 * Magnetsizey2 && y22 < 0.5 * Magnetsizey2))\n// if (posx[vectorIndex]<(xMagnet+Magnetsizex/2) && posx[vectorIndex]>(xMagnet-(Magnetsizex/2)) && posy[vectorIndex]<(yMagnet+Magnetsizey/2) && posy[vectorIndex]>(yMagnet-Magnetsizey/2))\n{\nthetaField[vectorIndex]= cta2;\n}\n\n\n textSetx[vectorIndex] = \"Fieldx\"+[vectorIndex]+\"=\"+_view._format(Fieldx[vectorIndex],\"0.00\");\n  textSety[vectorIndex] = \"Fieldy\"+[vectorIndex]+\"=\"+_view._format(Fieldy[vectorIndex],\"0.00\");\n // inside[vectorIndex] =\"0\";\n  textSetthetaField[vectorIndex] = [vectorIndex]+\"=\"+_view._format(thetaField[vectorIndex],\"0.00\");\n  \n  }\n}\n\nupdateFieldLineOverlay();\n"
        }
      ]
    },
    "custom": {
      "pages": [
        {
          "Name": "ComputeField2magnets",
          "Active": "true",
          "Internal": "false",
          "Type": "LIBRARY_EDITOR",
          "Comment": "",
          "Code": "//20151110 TT: note that the x and y are commented at this moment because \n//             there is not vectorField2d equivalent object in EJSS\n//             to be uncommented once such object is made available in future versions of EJSS.\n\nfunction computeField () {\n  var x, y;\n  for (var i=0; i<nx; i++) {\n    //TT   var x=_view.vectorField2D.indexToX(i);\n    x=1;\n    for (var j=0; j<ny; j++) {\n      //TT       var y=_view.vectorField2D.indexToY(j);\n      y=1;\n      bf1=getBcomputeField((x-xMagnet)*cs+(y-yMagnet)*sc,-(x-xMagnet)*sc+(y-yMagnet)*cs);//FKH\n      bf2=getBcomputeField((x-xMagnet2)*cs2+(y-yMagnet2)*sc2,-(x-xMagnet2)*sc2+(y-yMagnet2)*cs2);//FKH\n      \n      xField[i][j] = lcst*(bf1[0]*cs-bf1[1]*sc)+rcst*(bf2[0]*cs2-bf2[1]*sc2);//FKH\n      yField[i][j] = lcst*(bf1[0]*sc+bf1[1]*cs)+rcst*(bf2[0]*sc2+bf2[1]*cs2);//FKH\n      magField[i][j]= Math.sqrt(xField[i][j]*xField[i][j]+yField[i][j]*yField[i][j]);\n    }\n  }\n}"
        },
        {
          "Name": "checkDirection",
          "Active": "false",
          "Internal": "false",
          "Type": "LIBRARY_EDITOR",
          "Comment": "",
          "Code": "function checkDirection() {\n  \n\n   // weightX=-(cartAddMass+cartM)*g*Math.sin(angle)+m*g;\n  //  weightY=-(cartAddMass+cartM)*g*Math.cos(angle);\n  \n  if(Math.abs(weightX+springForce)>Math.abs(muStatic*weightY)) {  // sliding condition\n      direction=(weightX+springForce+m>0)?-1:1; // true: right +, false -\n      frictionForce=Math.sign(cartVx)*muKinetic*weightY; // replace v\n\n    } \n    \n    \n    else {\n      frictionForce=-weightX-springForce;\n      direction=0;  // static friction\n  \n    }\n   \n}\n\n"
        },
        {
          "Name": "GetBComputeField",
          "Active": "true",
          "Internal": "false",
          "Type": "LIBRARY_EDITOR",
          "Comment": "",
          "Code": "// computes magnetic field components and magnitude from dipoles\n// rename this getB to getBcomputeField because need to separate the calculation of Field from Compass\nfunction getBcomputeField(xm, ym) {\n  var b=[0,0]; //In JS you don't need to initialize the length of the array. It grows dynamically.  \n  var dx,dy,r2,r,r3,cos,sin;\n  \n  for(var i=0; i<=nd; i++) { // lookang change i<nd to i<=nd to account for the 11 dipoles each horizontal row\n    dx=xm-dipoles[i][0];////(xMagnet*cs+yMagnet*sc);//FKH\n    dy=ym-dipoles[i][1];//(-xMagnet*sc+yMagnet*cs);//FKH\n    r2=dx*dx+dy*dy;\n    r=Math.sqrt(r2);\n    r3=r2*r;\n    cos=dx/r;\n    sin=dy/r;\n\n    // taken from http://en.wikipedia.org/wiki/Magnetic_moment\n    b[0]+=m*(3*cos*cos-1)/r3;   //x component\n    b[1]+=m*3*sin*cos/r3;   //y component\n\n    if(r2===0) {\n      b[0]=b[1]=0;\n    }\n  }\n  return b;\n}\n"
        },
        {
          "Name": "FieldLineOverlayHelpers",
          "Active": "true",
          "Internal": "true",
          "Type": "undefined",
          "Comment": "",
          "Code": "function pointInsideRotatedMagnet(px, py, mx, my, angle, sx, sy) {\n  var dx = px-mx;\n  var dy = py-my;\n  var cosA = Math.cos(angle);\n  var sinA = Math.sin(angle);\n  var xLocal = dx*cosA + dy*sinA;\n  var yLocal = -dx*sinA + dy*cosA;\n  return xLocal > -0.5*sx && xLocal < 0.5*sx && yLocal > -0.5*sy && yLocal < 0.5*sy;\n}\n\nfunction pointInsideAnyMagnet(px, py) {\n  return (magnet1 && pointInsideRotatedMagnet(px, py, xMagnet, yMagnet, cta, Magnetsizex, Magnetsizey)) ||\n         (magnet2 && pointInsideRotatedMagnet(px, py, xMagnet2, yMagnet2, cta2, Magnetsizex2, Magnetsizey2));\n}\n\nfunction getNetFieldAtPoint(px, py) {\n  var left = getBcomputeField((px-xMagnet)*cs+(py-yMagnet)*sc,-(px-xMagnet)*sc+(py-yMagnet)*cs);\n  var right = getBcomputeField((px-xMagnet2)*cs2+(py-yMagnet2)*sc2,-(px-xMagnet2)*sc2+(py-yMagnet2)*cs2);\n  return [\n    lcst*(left[0]*cs-left[1]*sc)+rcst*(right[0]*cs2-right[1]*sc2),\n    lcst*(left[0]*sc+left[1]*cs)+rcst*(right[0]*sc2+right[1]*cs2)\n  ];\n}\n\nfunction traceFieldLineFromSeed(startX, startY, directionSign) {\n  var x = startX;\n  var y = startY;\n  for (var step = 0; step < fieldLineMaxSteps && fieldLineCount < nFieldLineSegmentsMax; step++) {\n    if (Math.abs(x) > xmax*scale + fieldLineMargin || Math.abs(y) > ymax*scale + fieldLineMargin) break;\n    if (pointInsideAnyMagnet(x, y) && step > 0) break;\n    var field = getNetFieldAtPoint(x, y);\n    var bx = field[0];\n    var by = field[1];\n    var mag = Math.sqrt(bx*bx + by*by);\n    if (!isFinite(mag) || mag < 1.0e-6) break;\n    var stepX = directionSign * fieldLineStep * bx / mag;\n    var stepY = directionSign * fieldLineStep * by / mag;\n    var nextX = x + stepX;\n    var nextY = y + stepY;\n    if (!isFinite(nextX) || !isFinite(nextY)) break;\n    if (Math.abs(nextX) > xmax*scale + fieldLineMargin || Math.abs(nextY) > ymax*scale + fieldLineMargin) break;\n    if (pointInsideAnyMagnet(nextX, nextY)) break;\n    fieldLineX[fieldLineCount] = 0.5*(x+nextX);\n    fieldLineY[fieldLineCount] = 0.5*(y+nextY);\n    fieldLineTheta[fieldLineCount] = Math.atan2(stepY, stepX);\n    fieldLineCount++;\n    x = nextX;\n    y = nextY;\n  }\n}\n\nfunction addFieldLineSeedsForMagnet(mx, my, angle, sx, sy) {\n  var offsets = [-0.26*sy, 0, 0.26*sy];\n  var lead = 0.5*sx + fieldLineMargin;\n  var cosA = Math.cos(angle);\n  var sinA = Math.sin(angle);\n  for (var pole = -1; pole <= 1; pole += 2) {\n    for (var k = 0; k < offsets.length; k++) {\n      var localX = pole * lead;\n      var localY = offsets[k];\n      var worldX = mx + localX*cosA - localY*sinA;\n      var worldY = my + localX*sinA + localY*cosA;\n      traceFieldLineFromSeed(worldX, worldY, 1);\n      traceFieldLineFromSeed(worldX, worldY, -1);\n      if (fieldLineCount >= nFieldLineSegmentsMax) return;\n    }\n  }\n}\n\nfunction updateFieldLineOverlay() {\n  fieldLineCount = 0;\n  if (!FieldFlag) return;\n  if (magnet1) addFieldLineSeedsForMagnet(xMagnet, yMagnet, cta, Magnetsizex, Magnetsizey);\n  if (magnet2) addFieldLineSeedsForMagnet(xMagnet2, yMagnet2, cta2, Magnetsizex2, Magnetsizey2);\n}"
        },
        {
          "Name": "GetBvalueCompass",
          "Active": "true",
          "Internal": "false",
          "Type": "LIBRARY_EDITOR",
          "Comment": "",
          "Code": "// computes magnetic field components and magnitude from dipoles\n// rename this getB to getBcomputeField because need to separate the calculation of Field from Compass\nfunction getB(xm, ym) {\n  var b=[0,0]; //In JS you don't need to initialize the length of the array. It grows dynamically.\n  var dx,dy,r2,r,r3,cos,sin;\n  for(var i=0; i<=nd; i++) { // lookang change i<nd to i<=nd to account for the 11 dipoles each horizontal row\n    dx=xm-dipoles[i][0];//-xm;////(xMagnet*cs+yMagnet*sc);//FKH\n    dy=ym-dipoles[i][1];//-ym;//(-xMagnet*sc+yMagnet*cs);//FKH\n \n    r2=dx*dx+dy*dy;\n    r=Math.sqrt(r2);\n    r3=r2*r;\n    cos=dx/r;\n    sin=dy/r;\n    b[0]+=m*(3*cos*cos-1)/r3*vectorfieldmaxopposite/100;   //x component\n    b[1]+=m*3*sin*cos/r3*vectorfieldmaxopposite/100; //y component\n    if(r2===0) {\n      b[0]=b[1]=0;\n    }\n  }\n  return b;\n}\n"
        },
        {
          "Name": "Random Location",
          "Active": "true",
          "Internal": "false",
          "Type": "LIBRARY_EDITOR",
          "Comment": "",
          "Code": "function setLocation () {\n  //move magnet to random location\n  if(randomMagnetLocation===true){    \n    xMagnet = (-xmax + 2*xmax*Math.random());\n    yMagnet = (-ymax + 2*ymax*Math.random());\n    randomMagnetLocation=false;\n  }\n else if (randomMagnetLocation2===true){    \n    xMagnet2 = (-xmax + 2*xmax*Math.random());\n    yMagnet2 = (-ymax + 2*ymax*Math.random());\n    randomMagnetLocation2=false;\n  }\n\ncomputeField();\n}\n\n\n"
        },
        {
          "Name": "fullscreen",
          "Active": "true",
          "Internal": "false",
          "Type": "LIBRARY_EDITOR",
          "Comment": "",
          "Code": "//https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Using_full_screen_mode\n// does not work for iOS \n/*jslint browser:true */\nfunction toggleFullScreen() {\n  if (!document.fullscreenElement &&    // alternative standard method\n      !document.mozFullScreenElement && !document.webkitFullscreenElement && !document.msFullscreenElement ) {  // current working methods\n    if (document.documentElement.requestFullscreen) {\n      document.documentElement.requestFullscreen();\n    } else if (document.documentElement.msRequestFullscreen) {\n      document.documentElement.msRequestFullscreen();\n    } else if (document.documentElement.mozRequestFullScreen) {\n      document.documentElement.mozRequestFullScreen();\n    } else if (document.documentElement.webkitRequestFullscreen) {\n      document.documentElement.webkitRequestFullscreen();\n    }\n  } else {\n    if (document.exitFullscreen) {\n      document.exitFullscreen();\n    } else if (document.msExitFullscreen) {\n      document.msExitFullscreen();\n    } else if (document.mozCancelFullScreen) {\n      document.mozCancelFullScreen();\n    } else if (document.webkitExitFullscreen) {\n      document.webkitExitFullscreen();\n    }\n  }\n}"
        },
        {
          "Name": "checkAndroid",
          "Active": "true",
          "Internal": "false",
          "Type": "LIBRARY_EDITOR",
          "Comment": "",
          "Code": "//code reference: http://davidwalsh.name/detect-android\nfunction checkAndroid() {\n  var ua = navigator.userAgent.toLowerCase();\n  return ua.indexOf(\"android\") > -1; //&& ua.indexOf(\"mobile\");\n}"
        }
      ]
    },
    "elements": {
      "list": []
    }
  },
  "view": {
    "Tree": [
      {
        "Name": "fullscreen",
        "Type": "Panel",
        "Expanded": "true",
        "Properties": [
          {
            "name": "Width",
            "value": "Width"
          }
        ],
        "Children": [
          {
            "Name": "controlPanel",
            "Type": "Panel",
            "Expanded": "true",
            "Properties": [
              {
                "name": "Width",
                "value": "\"100%\""
              },
              {
                "name": "Font",
                "value": "font"
              },
              {
                "name": "Display",
                "value": "print?\"none\":\"inline-flex\""
              }
            ],
            "Children": [
              {
                "Name": "comboBox",
                "Type": "ComboBox",
                "Properties": [
                  {
                    "name": "Options",
                    "value": "[\"NS unlike pole magnets LR\",\"SN unlike pole magnets LR\",\"two magnets point up\",\"NN like pole magnets LR\",\"SS like pole magnets LR\",\"two magnets point down\",\"compass show\",\"compass off\",\"user_defined\"]"
                  },
                  {
                    "name": "Tooltip",
                    "value": "\"select user_defined and drag the mass\""
                  },
                  {
                    "name": "OnChange",
                    "value": "var option = _view.comboBox.getProperty(\"SelectedOptions\");\n//alert(option);\n\nif ( option==\"user_defined\"){\n  \n  }\n\n\nelse if ( option==\"one magnet point right\"){\nxMagnet = 0;\nyMagnet = 0;\nselected[0]=\"\u03b8\u2081 =0\u00b0\";\nca = 0;\n  cta=ca*a2c;\ncs=Math.cos(cta);\nsc=Math.sin(cta);\n//\nmagnet1=true;\n if(magnet1)lcst=1;\nelse lcst=0;\n//computeField ();\nselected2[0]=\"magnet 2 off\";\nmagnet2=false;\n if(magnet2)rcst=1;\nelse rcst=0;\ncomputeField ();\n }\n else if ( option==\"one magnet point up\"){\nxMagnet = 0;\nyMagnet = 0;\nselected[0]=\"\u03b8\u2081 =90\u00b0\";\nca = 90;\n  cta=ca*a2c;\ncs=Math.cos(cta);\nsc=Math.sin(cta);\n//\nmagnet1=true;\n if(magnet1)lcst=1;\nelse lcst=0;\n//computeField ();\nselected2[0]=\"magnet 2 off\";\nmagnet2=false;\n if(magnet2)rcst=1;\nelse rcst=0;\ncomputeField ();\n }\n\nelse if ( option==\"one magnet point left\"){\nxMagnet = 0;\nyMagnet = 0;\nselected[0]=\"\u03b8\u2081 =180\u00b0\";\nca = 180;\n  cta=ca*a2c;\ncs=Math.cos(cta);\nsc=Math.sin(cta);\n//\nmagnet1=true;\n if(magnet1)lcst=1;\nelse lcst=0;\n//computeField ();\nselected2[0]=\"magnet 2 off\";\nmagnet2=false;\n if(magnet2)rcst=1;\nelse rcst=0;\ncomputeField ();\n }\n\nelse if ( option==\"one magnet point down\"){\nxMagnet = 0;\nyMagnet = 0;\nselected[0]=\"\u03b8\u2081 =-90\u00b0\";\nca = -90;\n  cta=ca*a2c;\ncs=Math.cos(cta);\nsc=Math.sin(cta);\n//\nmagnet1=true;\n if(magnet1)lcst=1;\nelse lcst=0;\n//computeField ();\nselected2[0]=\"magnet 2 off\";\nmagnet2=false;\n if(magnet2)rcst=1;\nelse rcst=0;\ncomputeField ();\n }\n\n\nelse if ( option==\"NS unlike pole magnets LR\"){\nxMagnet = -1;\nyMagnet = 0;\nxMagnet2 = 1-0.2;\nyMagnet2 = 0;\nselected[0]=\"\u03b8\u2081 =0\u00b0\";\nselected2[0]=\"\u03b8\u2082 =0\u00b0\";\nca = 0;\n  cta=ca*a2c;\ncs=Math.cos(cta);\nsc=Math.sin(cta);\n//\nca2 = -0;\n  cta=ca2*a2c;\ncs=Math.cos(cta);\nsc=Math.sin(cta);\nmagnet1=true;\n if(magnet1)lcst=1;\nelse lcst=0;\n//computeField ();\n\nmagnet2=true;\n if(magnet2)rcst=1;\nelse rcst=0;\ncomputeField ();\n }\n //new\n else if ( option==\"SN unlike pole magnets LR\"){\nxMagnet = -1;\nyMagnet = 0;\nxMagnet2 = 1-0.2;\nyMagnet2 = 0;\nselected[0]=\"\u03b8\u2081 =180\u00b0\";\nselected2[0]=\"\u03b8\u2082 =180\u00b0\";\nca = 180;\n  cta=ca*a2c;\ncs=Math.cos(cta);\nsc=Math.sin(cta);\n//\nca2 = -180;\n  cta=ca2*a2c;\ncs=Math.cos(cta);\nsc=Math.sin(cta);\nmagnet1=true;\n if(magnet1)lcst=1;\nelse lcst=0;\n//computeField ();\n\nmagnet2=true;\n if(magnet2)rcst=1;\nelse rcst=0;\ncomputeField ();\n }\nelse if ( option==\"two magnets point up\"){\nxMagnet = -0.7;\nyMagnet = 0;\nxMagnet2 = 0.5;\nyMagnet2 = 0;\nselected[0]=\"\u03b8\u2081 =90\u00b0\";\nselected2[0]=\"\u03b8\u2082 =90\u00b0\";\nca = 90;\n  cta=ca*a2c;\ncs=Math.cos(cta);\nsc=Math.sin(cta);\n//\nca2 = 90;\n  cta=ca2*a2c;\ncs=Math.cos(cta);\nsc=Math.sin(cta);\nmagnet1=true;\n if(magnet1)lcst=1;\nelse lcst=0;\n//computeField ();\n\nmagnet2=true;\n if(magnet2)rcst=1;\nelse rcst=0;\ncomputeField ();\n }\n else if ( option==\"SS like pole magnets LR\"){\nxMagnet = -1;\nyMagnet = 0;\nxMagnet2 = 1-0.2;\nyMagnet2 = 0;\n\nselected[0]=\"\u03b8\u2081 =180\u00b0\";\nselected2[0]=\"\u03b8\u2082 =0\u00b0\";\nca = 180;\n  cta=ca*a2c;\ncs=Math.cos(cta);\nsc=Math.sin(cta);\n//\nca2 = 0;\n  cta=ca2*a2c;\ncs=Math.cos(cta);\nsc=Math.sin(cta);\nmagnet1=true;\n if(magnet1)lcst=1;\nelse lcst=0;\n//computeField ();\n\nmagnet2=true;\n if(magnet2)rcst=1;\nelse rcst=0;\ncomputeField ();\n }\n else if ( option==\"NN like pole magnets LR\"){\nxMagnet = -1;\nyMagnet = 0;\nxMagnet2 = 1-0.2;\nyMagnet2 = 0;\n\nselected[0]=\"\u03b8\u2081 =0\u00b0\";\nselected2[0]=\"\u03b8\u2082 =180\u00b0\";\nca = 0;\n  cta=ca*a2c;\ncs=Math.cos(cta);\nsc=Math.sin(cta);\n//\nca2 = 180;\n  cta=ca2*a2c;\ncs=Math.cos(cta);\nsc=Math.sin(cta);\nmagnet1=true;\n if(magnet1)lcst=1;\nelse lcst=0;\n//computeField ();\n\nmagnet2=true;\n if(magnet2)rcst=1;\nelse rcst=0;\ncomputeField ();\n }\n \n \nelse if ( option==\"two magnets point down\"){\nxMagnet = -0.7;\nyMagnet = 0;\nxMagnet2 = 0.5;\nyMagnet2 = 0;\nselected[0]=\"\u03b8\u2081 =-90\u00b0\";\nselected2[0]=\"\u03b8\u2082 =-90\u00b0\";\nca = -90;\n  cta=ca*a2c;\ncs=Math.cos(cta);\nsc=Math.sin(cta);\n//\nca2 = -90;\n  cta=ca2*a2c;\ncs=Math.cos(cta);\nsc=Math.sin(cta);\nmagnet1=true;\n if(magnet1)lcst=1;\nelse lcst=0;\n//computeField ();\n\nmagnet2=true;\n if(magnet2)rcst=1;\nelse rcst=0;\ncomputeField ();\n }\nelse if ( option==\"compass show\"){\nshowCompass=true;\n_play();\n  }\n  else if ( option==\"compass off\"){\nshowCompass=false;\n  }\n else if ( option==\"data store\"){\n //for ( counter=0; counter<store /* Iterations */ ; counter++) {\n  xCompassstore[counter] = xCompass;\n   yCompassstore[counter] = yCompass;\n    thetastore[counter] = theta;\n//}\ncounter = counter+1;\n}\nelse if ( option==\"data store2\"){\n //for ( counter=0; counter<store /* Iterations */ ; counter++) {\n  xCompassstore[counter] = xCompass;\n   yCompassstore[counter] = yCompass;\n    thetastore[counter] = theta;\n//}\ncounter = counter+1;\n}\n\nxMagnetDrag = xMagnet+0.7; //force rotate unicode to follow magnet\nyMagnetDrag = yMagnet;\nxMagnet2Drag = xMagnet2+0.7; //force rotate unicode to follow magnet\nyMagnet2Drag = yMagnet2;\n"
                  },
                  {
                    "name": "Font",
                    "value": "font"
                  }
                ]
              },
              {
                "Name": "checkBox",
                "Type": "CheckBox",
                "Properties": [
                  {
                    "name": "Checked",
                    "value": "magnet1"
                  },
                  {
                    "name": "OnChange",
                    "value": "if(magnet1)lcst=1;\nelse lcst=0;\ncomputeField ();"
                  },
                  {
                    "name": "Text",
                    "value": "\"1\""
                  }
                ]
              },
              {
                "Name": "slider",
                "Type": "Slider",
                "Properties": [
                  {
                    "name": "Minimum",
                    "value": "-180"
                  },
                  {
                    "name": "Maximum",
                    "value": "180"
                  },
                  {
                    "name": "Value",
                    "value": "ca"
                  },
                  {
                    "name": "OnChange",
                    "value": "\n  cta=ca*a2c;\ncs=Math.cos(cta);\nsc=Math.sin(cta);\ncomputeField();"
                  },
                  {
                    "name": "Step",
                    "value": "10"
                  },
                  {
                    "name": "Width",
                    "value": "\"20%\""
                  }
                ]
              },
              {
                "Name": "comboBox2",
                "Type": "ComboBox",
                "Properties": [
                  {
                    "name": "Options",
                    "value": "[\"magnet 1 show\",\"magnet 1 off\",\"\u03b8\u2081 =-180\u00b0\",\"\u03b8\u2081 =-170\u00b0\",\"\u03b8\u2081 =-160\u00b0\",\"\u03b8\u2081 =-150\u00b0\",\"\u03b8\u2081 =-140\u00b0\",\"\u03b8\u2081 =-130\u00b0\",\"\u03b8\u2081 =-120\u00b0\",\"\u03b8\u2081 =-110\u00b0\",\"\u03b8\u2081 =-100\u00b0\",\"\u03b8\u2081 =-90\u00b0\",\"\u03b8\u2081 =-80\u00b0\",\"\u03b8\u2081 =-70\u00b0\",\"\u03b8\u2081 =-60\u00b0\",\"\u03b8\u2081 =-50\u00b0\",\"\u03b8\u2081 =-40\u00b0\",\"\u03b8\u2081 =-30\u00b0\",\"\u03b8\u2081 =-20\u00b0\",\"\u03b8\u2081 =-10\u00b0\",\"\u03b8\u2081 =0\u00b0\",\"\u03b8\u2081 =10\u00b0\",\"\u03b8\u2081 =20\u00b0\",\"\u03b8\u2081 =30\u00b0\",\"\u03b8\u2081 =40\u00b0\",\"\u03b8\u2081 =50\u00b0\",\"\u03b8\u2081 =60\u00b0\",\"\u03b8\u2081 =70\u00b0\",\"\u03b8\u2081 =80\u00b0\",\"\u03b8\u2081 =90\u00b0\",\"\u03b8\u2081 =100\u00b0\",\"\u03b8\u2081 =110\u00b0\",\"\u03b8\u2081 =120\u00b0\",\"\u03b8\u2081 =130\u00b0\",\"\u03b8\u2081 =140\u00b0\",\"\u03b8\u2081 =150\u00b0\",\"\u03b8\u2081 =160\u00b0\",\"\u03b8\u2081 =170\u00b0\",\"\u03b8\u2081 =180\u00b0\"]"
                  },
                  {
                    "name": "Tooltip",
                    "value": "\"select user_defined and drag the mass\""
                  },
                  {
                    "name": "OnChange",
                    "value": "var option = _view.comboBox2.getProperty(\"SelectedOptions\");\n//alert(option);\n\nif ( option==\"user_defined\"){\n  \n  }\n\nelse if ( option==\"magnet 1 show\"){\n magnet1=true;\n if(magnet1)lcst=1;\nelse lcst=0;\ncomputeField ();\n  }\n  else if ( option==\"magnet 1 off\"){\n magnet1=false;\n if(magnet1)lcst=1;\nelse lcst=0;\ncomputeField ();\n  }\n  else if ( option==\"\u03b8\u2081 =-180\u00b0\"){\n  ca = -180;\n  cta=ca*a2c;\ncs=Math.cos(cta);\nsc=Math.sin(cta);\ncomputeField();\n    }\nelse if ( option==\"\u03b8\u2081 =-170\u00b0\"){\n  ca = -170;\n  cta=ca*a2c;\ncs=Math.cos(cta);\nsc=Math.sin(cta);\ncomputeField();\n    }\n    else if ( option==\"\u03b8\u2081 =-160\u00b0\"){\n  ca = -160;\n  cta=ca*a2c;\ncs=Math.cos(cta);\nsc=Math.sin(cta);\ncomputeField();\n    }\nelse if ( option==\"\u03b8\u2081 =-150\u00b0\"){\n  ca = -150;\n  cta=ca*a2c;\ncs=Math.cos(cta);\nsc=Math.sin(cta);\ncomputeField();\n    }\n    else if ( option==\"\u03b8\u2081 =-140\u00b0\"){\n  ca = -140;\n  cta=ca*a2c;\ncs=Math.cos(cta);\nsc=Math.sin(cta);\ncomputeField();\n    }\n    else if ( option==\"\u03b8\u2081 =-130\u00b0\"){\n  ca = -130;\n  cta=ca*a2c;\ncs=Math.cos(cta);\nsc=Math.sin(cta);\ncomputeField();\n    }\nelse if ( option==\"\u03b8\u2081 =-120\u00b0\"){\n  ca = -120;\n  cta=ca*a2c;\ncs=Math.cos(cta);\nsc=Math.sin(cta);\ncomputeField();\n    }\n    else if ( option==\"\u03b8\u2081 =-110\u00b0\"){\n  ca = -110;\n  cta=ca*a2c;\ncs=Math.cos(cta);\nsc=Math.sin(cta);\ncomputeField();\n    }\n    else if ( option==\"\u03b8\u2081 =-100\u00b0\"){\n  ca = -100;\n  cta=ca*a2c;\ncs=Math.cos(cta);\nsc=Math.sin(cta);\ncomputeField();\n    }\n    else if ( option==\"\u03b8\u2081 =-90\u00b0\"){\n  ca = -90;\n  cta=ca*a2c;\ncs=Math.cos(cta);\nsc=Math.sin(cta);\ncomputeField();\n    }\n     else if ( option==\"\u03b8\u2081 =-80\u00b0\"){\n  ca = -80;\n  cta=ca*a2c;\ncs=Math.cos(cta);\nsc=Math.sin(cta);\ncomputeField();\n    }\n     else if ( option==\"\u03b8\u2081 =-70\u00b0\"){\n  ca = -70;\n  cta=ca*a2c;\ncs=Math.cos(cta);\nsc=Math.sin(cta);\ncomputeField();\n    }\n else if ( option==\"\u03b8\u2081 =-60\u00b0\"){\n  ca = -60;\n  cta=ca*a2c;\ncs=Math.cos(cta);\nsc=Math.sin(cta);\ncomputeField();\n    }\n     else if ( option==\"\u03b8\u2081 =-50\u00b0\"){\n  ca = -50;\n  cta=ca*a2c;\ncs=Math.cos(cta);\nsc=Math.sin(cta);\ncomputeField();\n    }\n     else if ( option==\"\u03b8\u2081 =-40\u00b0\"){\n  ca = -40;\n  cta=ca*a2c;\ncs=Math.cos(cta);\nsc=Math.sin(cta);\ncomputeField();\n    }\n     else if ( option==\"\u03b8\u2081 =-30\u00b0\"){\n  ca = -30;\n  cta=ca*a2c;\ncs=Math.cos(cta);\nsc=Math.sin(cta);\ncomputeField();\n    }\n     else if ( option==\"\u03b8\u2081 =-20\u00b0\"){\n  ca = -20;\n  cta=ca*a2c;\ncs=Math.cos(cta);\nsc=Math.sin(cta);\ncomputeField();\n    }\n     else if ( option==\"\u03b8\u2081 =-10\u00b0\"){\n  ca = -10;\n  cta=ca*a2c;\ncs=Math.cos(cta);\nsc=Math.sin(cta);\ncomputeField();\n    }\n     else if ( option==\"\u03b8\u2081 =0\u00b0\"){\n  ca = -0;\n  cta=ca*a2c;\ncs=Math.cos(cta);\nsc=Math.sin(cta);\ncomputeField();\n    }\nelse if ( option==\"\u03b8\u2081 =180\u00b0\"){\n  ca = 180;\n  cta=ca*a2c;\ncs=Math.cos(cta);\nsc=Math.sin(cta);\ncomputeField();\n    }\nelse if ( option==\"\u03b8\u2081 =170\u00b0\"){\n  ca = 170;\n  cta=ca*a2c;\ncs=Math.cos(cta);\nsc=Math.sin(cta);\ncomputeField();\n    }\n    else if ( option==\"\u03b8\u2081 =160\u00b0\"){\n  ca = 160;\n  cta=ca*a2c;\ncs=Math.cos(cta);\nsc=Math.sin(cta);\ncomputeField();\n    }\nelse if ( option==\"\u03b8\u2081 =150\u00b0\"){\n  ca = 150;\n  cta=ca*a2c;\ncs=Math.cos(cta);\nsc=Math.sin(cta);\ncomputeField();\n    }\n    else if ( option==\"\u03b8\u2081 =140\u00b0\"){\n  ca = 140;\n  cta=ca*a2c;\ncs=Math.cos(cta);\nsc=Math.sin(cta);\ncomputeField();\n    }\n    else if ( option==\"\u03b8\u2081 =130\u00b0\"){\n  ca = 130;\n  cta=ca*a2c;\ncs=Math.cos(cta);\nsc=Math.sin(cta);\ncomputeField();\n    }\nelse if ( option==\"\u03b8\u2081 =120\u00b0\"){\n  ca = 120;\n  cta=ca*a2c;\ncs=Math.cos(cta);\nsc=Math.sin(cta);\ncomputeField();\n    }\n    else if ( option==\"\u03b8\u2081 =110\u00b0\"){\n  ca = 110;\n  cta=ca*a2c;\ncs=Math.cos(cta);\nsc=Math.sin(cta);\ncomputeField();\n    }\n    else if ( option==\"\u03b8\u2081 =100\u00b0\"){\n  ca = 100;\n  cta=ca*a2c;\ncs=Math.cos(cta);\nsc=Math.sin(cta);\ncomputeField();\n    }\n    else if ( option==\"\u03b8\u2081 =90\u00b0\"){\n  ca = 90;\n  cta=ca*a2c;\ncs=Math.cos(cta);\nsc=Math.sin(cta);\ncomputeField();\n    }\n     else if ( option==\"\u03b8\u2081 =80\u00b0\"){\n  ca = 80;\n  cta=ca*a2c;\ncs=Math.cos(cta);\nsc=Math.sin(cta);\ncomputeField();\n    }\n     else if ( option==\"\u03b8\u2081 =70\u00b0\"){\n  ca = 70;\n  cta=ca*a2c;\ncs=Math.cos(cta);\nsc=Math.sin(cta);\ncomputeField();\n    }\n else if ( option==\"\u03b8\u2081 =60\u00b0\"){\n  ca = 60;\n  cta=ca*a2c;\ncs=Math.cos(cta);\nsc=Math.sin(cta);\ncomputeField();\n    }\n     else if ( option==\"\u03b8\u2081 =50\u00b0\"){\n  ca = 50;\n  cta=ca*a2c;\ncs=Math.cos(cta);\nsc=Math.sin(cta);\ncomputeField();\n    }\n     else if ( option==\"\u03b8\u2081 =40\u00b0\"){\n  ca = 40;\n  cta=ca*a2c;\ncs=Math.cos(cta);\nsc=Math.sin(cta);\ncomputeField();\n    }\n     else if ( option==\"\u03b8\u2081 =30\u00b0\"){\n  ca = 30;\n  cta=ca*a2c;\ncs=Math.cos(cta);\nsc=Math.sin(cta);\ncomputeField();\n    }\n     else if ( option==\"\u03b8\u2081 =20\u00b0\"){\n  ca = 20;\n  cta=ca*a2c;\ncs=Math.cos(cta);\nsc=Math.sin(cta);\ncomputeField();\n    }\n     else if ( option==\"\u03b8\u2081 =10\u00b0\"){\n  ca = 10;\n  cta=ca*a2c;\ncs=Math.cos(cta);\nsc=Math.sin(cta);\ncomputeField();\n    }\n"
                  },
                  {
                    "name": "Font",
                    "value": "font"
                  },
                  {
                    "name": "Display",
                    "value": "\"none\""
                  }
                ]
              },
              {
                "Name": "checkBox2",
                "Type": "CheckBox",
                "Properties": [
                  {
                    "name": "Checked",
                    "value": "magnet2"
                  },
                  {
                    "name": "OnChange",
                    "value": "if(magnet2)rcst=1;\nelse rcst=0;\ncomputeField ();"
                  },
                  {
                    "name": "Text",
                    "value": "\" 2\""
                  }
                ]
              },
              {
                "Name": "slider2",
                "Type": "Slider",
                "Properties": [
                  {
                    "name": "Minimum",
                    "value": "-180"
                  },
                  {
                    "name": "Maximum",
                    "value": "180"
                  },
                  {
                    "name": "Value",
                    "value": "ca2"
                  },
                  {
                    "name": "OnChange",
                    "value": " cta=ca2*a2c;\ncs=Math.cos(cta);\nsc=Math.sin(cta);\ncomputeField();"
                  },
                  {
                    "name": "Step",
                    "value": "10"
                  },
                  {
                    "name": "Width",
                    "value": "\"20%\""
                  }
                ]
              },
              {
                "Name": "comboBox3",
                "Type": "ComboBox",
                "Properties": [
                  {
                    "name": "Options",
                    "value": "[\"magnet 2 show\",\"magnet 2 off\",\"\u03b8\u2082 =-180\u00b0\",\"\u03b8\u2082 =-170\u00b0\",\"\u03b8\u2082 =-160\u00b0\",\"\u03b8\u2082 =-150\u00b0\",\"\u03b8\u2082 =-140\u00b0\",\"\u03b8\u2082 =-130\u00b0\",\"\u03b8\u2082 =-120\u00b0\",\"\u03b8\u2082 =-110\u00b0\",\"\u03b8\u2082 =-100\u00b0\",\"\u03b8\u2082 =-90\u00b0\",\"\u03b8\u2082 =-80\u00b0\",\"\u03b8\u2082 =-70\u00b0\",\"\u03b8\u2082 =-60\u00b0\",\"\u03b8\u2082 =-50\u00b0\",\"\u03b8\u2082 =-40\u00b0\",\"\u03b8\u2082 =-30\u00b0\",\"\u03b8\u2082 =-20\u00b0\",\"\u03b8\u2082 =-10\u00b0\",\"\u03b8\u2082 =0\u00b0\",\"\u03b8\u2082 =10\u00b0\",\"\u03b8\u2082 =20\u00b0\",\"\u03b8\u2082 =30\u00b0\",\"\u03b8\u2082 =40\u00b0\",\"\u03b8\u2082 =50\u00b0\",\"\u03b8\u2082 =60\u00b0\",\"\u03b8\u2082 =70\u00b0\",\"\u03b8\u2082 =80\u00b0\",\"\u03b8\u2082 =90\u00b0\",\"\u03b8\u2082 =100\u00b0\",\"\u03b8\u2082 =110\u00b0\",\"\u03b8\u2082 =120\u00b0\",\"\u03b8\u2082 =130\u00b0\",\"\u03b8\u2082 =140\u00b0\",\"\u03b8\u2082 =150\u00b0\",\"\u03b8\u2082 =160\u00b0\",\"\u03b8\u2082 =170\u00b0\",\"\u03b8\u2082 =180\u00b0\"]"
                  },
                  {
                    "name": "Tooltip",
                    "value": "\"select user_defined and drag the mass\""
                  },
                  {
                    "name": "OnChange",
                    "value": "var option = _view.comboBox3.getProperty(\"SelectedOptions\");\n//alert(option);\n\nif ( option==\"user_defined\"){\n  \n  }\n\nelse if ( option==\"magnet 2 show\"){\n magnet2=true;\n if(magnet2)rcst=1;\nelse rcst=0;\ncomputeField ();\n  }\n  else if ( option==\"magnet 2 off\"){\n magnet2=false;\n if(magnet2)rcst=1;\nelse rcst=0;\ncomputeField ();\n  }\n  else if ( option==\"\u03b8\u2082 =-180\u00b0\"){\n  ca2 = -180;\n  cta2=ca2*a2c;\ncs=Math.cos(cta);\nsc=Math.sin(cta);\ncomputeField();\n    }\nelse if ( option==\"\u03b8\u2082 =-170\u00b0\"){\n  ca2 = -170;\n  cta=ca2*a2c;\ncs=Math.cos(cta);\nsc=Math.sin(cta);\ncomputeField();\n    }\n    else if ( option==\"\u03b8\u2082 =-160\u00b0\"){\n  ca2 = -160;\n  cta=ca2*a2c;\ncs=Math.cos(cta);\nsc=Math.sin(cta);\ncomputeField();\n    }\nelse if ( option==\"\u03b8\u2082 =-150\u00b0\"){\n  ca2 = -150;\n  cta=ca2*a2c;\ncs=Math.cos(cta);\nsc=Math.sin(cta);\ncomputeField();\n    }\n    else if ( option==\"\u03b8\u2082 =-140\u00b0\"){\n  ca2 = -140;\n  cta=ca2*a2c;\ncs=Math.cos(cta);\nsc=Math.sin(cta);\ncomputeField();\n    }\n    else if ( option==\"\u03b8\u2082 =-130\u00b0\"){\n  ca2 = -130;\n  cta=ca2*a2c;\ncs=Math.cos(cta);\nsc=Math.sin(cta);\ncomputeField();\n    }\nelse if ( option==\"\u03b8\u2082 =-120\u00b0\"){\n  ca2 = -120;\n  cta=ca2*a2c;\ncs=Math.cos(cta);\nsc=Math.sin(cta);\ncomputeField();\n    }\n    else if ( option==\"\u03b8\u2082 =-110\u00b0\"){\n  ca2 = -110;\n  cta=ca2*a2c;\ncs=Math.cos(cta);\nsc=Math.sin(cta);\ncomputeField();\n    }\n    else if ( option==\"\u03b8\u2082 =-100\u00b0\"){\n  ca2 = -100;\n  cta=ca2*a2c;\ncs=Math.cos(cta);\nsc=Math.sin(cta);\ncomputeField();\n    }\n    else if ( option==\"\u03b8\u2082 =-90\u00b0\"){\n  ca2 = -90;\n  cta=ca2*a2c;\ncs=Math.cos(cta);\nsc=Math.sin(cta);\ncomputeField();\n    }\n     else if ( option==\"\u03b8\u2082 =-80\u00b0\"){\n  ca2 = -80;\n  cta=ca2*a2c;\ncs=Math.cos(cta);\nsc=Math.sin(cta);\ncomputeField();\n    }\n     else if ( option==\"\u03b8\u2082 =-70\u00b0\"){\n  ca2 = -70;\n  cta=ca2*a2c;\ncs=Math.cos(cta);\nsc=Math.sin(cta);\ncomputeField();\n    }\n else if ( option==\"\u03b8\u2082 =-60\u00b0\"){\n  ca2 = -60;\n  cta=ca2*a2c;\ncs=Math.cos(cta);\nsc=Math.sin(cta);\ncomputeField();\n    }\n     else if ( option==\"\u03b8\u2082 =-50\u00b0\"){\n  ca2 = -50;\n  cta=ca2*a2c;\ncs=Math.cos(cta);\nsc=Math.sin(cta);\ncomputeField();\n    }\n     else if ( option==\"\u03b8\u2082 =-40\u00b0\"){\n  ca2 = -40;\n  cta=ca2*a2c;\ncs=Math.cos(cta);\nsc=Math.sin(cta);\ncomputeField();\n    }\n     else if ( option==\"\u03b8\u2082 =-30\u00b0\"){\n  ca2 = -30;\n  cta=ca2*a2c;\ncs=Math.cos(cta);\nsc=Math.sin(cta);\ncomputeField();\n    }\n     else if ( option==\"\u03b8\u2082 =-20\u00b0\"){\n  ca2 = -20;\n  cta=ca2*a2c;\ncs=Math.cos(cta);\nsc=Math.sin(cta);\ncomputeField();\n    }\n     else if ( option==\"\u03b8\u2082 =-10\u00b0\"){\n  ca2 = -10;\n  cta=ca2*a2c;\ncs=Math.cos(cta);\nsc=Math.sin(cta);\ncomputeField();\n    }\n     else if ( option==\"\u03b8\u2082 =0\u00b0\"){\n  ca2 = -0;\n  cta=ca2*a2c;\ncs=Math.cos(cta);\nsc=Math.sin(cta);\ncomputeField();\n    }\nelse if ( option==\"\u03b8\u2082 =180\u00b0\"){\n  ca2 = 180;\n  cta=ca2*a2c;\ncs=Math.cos(cta);\nsc=Math.sin(cta);\ncomputeField();\n    }\nelse if ( option==\"\u03b8\u2082 =170\u00b0\"){\n  ca2 = 170;\n  cta=ca2*a2c;\ncs=Math.cos(cta);\nsc=Math.sin(cta);\ncomputeField();\n    }\n    else if ( option==\"\u03b8\u2082 =160\u00b0\"){\n  ca2 = 160;\n  cta=ca2*a2c;\ncs=Math.cos(cta);\nsc=Math.sin(cta);\ncomputeField();\n    }\nelse if ( option==\"\u03b8\u2082 =150\u00b0\"){\n  ca2 = 150;\n  cta=ca2*a2c;\ncs=Math.cos(cta);\nsc=Math.sin(cta);\ncomputeField();\n    }\n    else if ( option==\"\u03b8\u2082 =140\u00b0\"){\n  ca2 = 140;\n  cta=ca2*a2c;\ncs=Math.cos(cta);\nsc=Math.sin(cta);\ncomputeField();\n    }\n    else if ( option==\"\u03b8\u2082 =130\u00b0\"){\n  ca2 = 130;\n  cta=ca2*a2c;\ncs=Math.cos(cta);\nsc=Math.sin(cta);\ncomputeField();\n    }\nelse if ( option==\"\u03b8\u2082 =120\u00b0\"){\n  ca2 = 120;\n  cta=ca2*a2c;\ncs=Math.cos(cta);\nsc=Math.sin(cta);\ncomputeField();\n    }\n    else if ( option==\"\u03b8\u2082 =110\u00b0\"){\n  ca2 = 110;\n  cta=ca2*a2c;\ncs=Math.cos(cta);\nsc=Math.sin(cta);\ncomputeField();\n    }\n    else if ( option==\"\u03b8\u2082 =100\u00b0\"){\n  ca2 = 100;\n  cta=ca2*a2c;\ncs=Math.cos(cta);\nsc=Math.sin(cta);\ncomputeField();\n    }\n    else if ( option==\"\u03b8\u2082 =90\u00b0\"){\n  ca2 = 90;\n  cta=ca2*a2c;\ncs=Math.cos(cta);\nsc=Math.sin(cta);\ncomputeField();\n    }\n     else if ( option==\"\u03b8\u2082 =80\u00b0\"){\n  ca2 = 80;\n  cta=ca2*a2c;\ncs=Math.cos(cta);\nsc=Math.sin(cta);\ncomputeField();\n    }\n     else if ( option==\"\u03b8\u2082 =70\u00b0\"){\n  ca2 = 70;\n  cta=ca2*a2c;\ncs=Math.cos(cta);\nsc=Math.sin(cta);\ncomputeField();\n    }\n else if ( option==\"\u03b8\u2082 =60\u00b0\"){\n  ca2 = 60;\n  cta=ca2*a2c;\ncs=Math.cos(cta);\nsc=Math.sin(cta);\ncomputeField();\n    }\n     else if ( option==\"\u03b8\u2082 =50\u00b0\"){\n  ca2 = 50;\n  cta=ca2*a2c;\ncs=Math.cos(cta);\nsc=Math.sin(cta);\ncomputeField();\n    }\n     else if ( option==\"\u03b8\u2082 =40\u00b0\"){\n  ca2 = 40;\n  cta=ca2*a2c;\ncs=Math.cos(cta);\nsc=Math.sin(cta);\ncomputeField();\n    }\n     else if ( option==\"\u03b8\u2082 =30\u00b0\"){\n  ca2 = 30;\n  cta=ca2*a2c;\ncs=Math.cos(cta);\nsc=Math.sin(cta);\ncomputeField();\n    }\n     else if ( option==\"\u03b8\u2082 =20\u00b0\"){\n  ca2 = 20;\n  cta=ca2*a2c;\ncs=Math.cos(cta);\nsc=Math.sin(cta);\ncomputeField();\n    }\n     else if ( option==\"\u03b8\u2082 =10\u00b0\"){\n  ca2 = 10;\n  cta=ca2*a2c;\ncs=Math.cos(cta);\nsc=Math.sin(cta);\ncomputeField();\n    }\n//option=\"user_defined\";"
                  },
                  {
                    "name": "Font",
                    "value": "font"
                  },
                  {
                    "name": "Display",
                    "value": "\"none\""
                  }
                ]
              },
              {
                "Name": "checkBox22",
                "Type": "CheckBox",
                "Properties": [
                  {
                    "name": "Checked",
                    "value": "showCompass"
                  },
                  {
                    "name": "Text",
                    "value": "\"Compass\""
                  }
                ]
              },
              {
                "Name": "checkBoxFieldLines",
                "Type": "CheckBox",
                "Properties": [
                  {
                    "name": "Checked",
                    "value": "FieldFlag"
                  },
                  {
                    "name": "OnChange",
                    "value": "updateFieldLineOverlay();"
                  },
                  {
                    "name": "Text",
                    "value": "\"Field lines\""
                  },
                  {
                    "name": "Tooltip",
                    "value": "\"Overlay streamline field lines on the existing magnetic-field vectors.\""
                  },
                  {
                    "name": "Font",
                    "value": "font"
                  }
                ]
              },
              {
                "Name": "resetButton",
                "Type": "Button",
                "Properties": [
                  {
                    "name": "OnRelease",
                    "value": "_reset()"
                  },
                  {
                    "name": "Tooltip",
                    "value": "\"Reset button.\""
                  },
                  {
                    "name": "Text",
                    "value": "\"\u21bbReset\""
                  },
                  {
                    "name": "Font",
                    "value": "fontb"
                  }
                ]
              },
              {
                "Name": "print",
                "Type": "Button",
                "Properties": [
                  {
                    "name": "Tooltip",
                    "value": "\"Print\""
                  },
                  {
                    "name": "Text",
                    "value": "\"\ud83d\uddb6\""
                  },
                  {
                    "name": "OnPress",
                    "value": "print = true;"
                  },
                  {
                    "name": "Font",
                    "value": "fontb"
                  },
                  {
                    "name": "Display",
                    "value": "\"none\""
                  }
                ]
              }
            ]
          },
          {
            "Name": "displayPanel",
            "Type": "Panel",
            "Expanded": "false",
            "Properties": [
              {
                "name": "Height",
                "value": "\"100%\""
              },
              {
                "name": "Width",
                "value": "Width"
              }
            ],
            "Children": [
              {
                "Name": "vectorFieldplottingPanel",
                "Type": "PlottingPanel",
                "Expanded": "true",
                "Properties": [
                  {
                    "name": "Gutters",
                    "value": "[0,0,0,0]"
                  },
                  {
                    "name": "XFixedTick",
                    "value": "xmax"
                  },
                  {
                    "name": "Enabled",
                    "value": "true"
                  },
                  {
                    "name": "OnDoubleClick",
                    "value": "_pause();\ntoggleFullScreen();"
                  },
                  {
                    "name": "SquareAspect",
                    "value": "true"
                  },
                  {
                    "name": "MaximumY",
                    "value": "ymax*scale"
                  },
                  {
                    "name": "MaximumX",
                    "value": "xmax*scale"
                  },
                  {
                    "name": "YFixedTick",
                    "value": "0"
                  },
                  {
                    "name": "YAutoTicks",
                    "value": "false"
                  },
                  {
                    "name": "GridYShow",
                    "value": "false"
                  },
                  {
                    "name": "MinimumX",
                    "value": "-xmax*scale"
                  },
                  {
                    "name": "MinimumY",
                    "value": "-ymax*scale"
                  },
                  {
                    "name": "XTickStep",
                    "value": "0.2"
                  },
                  {
                    "name": "YTickStep",
                    "value": "0.2"
                  },
                  {
                    "name": "AutoScaleY",
                    "value": "false"
                  },
                  {
                    "name": "AutoScaleX",
                    "value": "false"
                  },
                  {
                    "name": "MarginX",
                    "value": "10"
                  },
                  {
                    "name": "MarginY",
                    "value": "10"
                  },
                  {
                    "name": "XAutoTicks",
                    "value": "false"
                  },
                  {
                    "name": "Height",
                    "value": "\"90vh\""
                  },
                  {
                    "name": "GridXShow",
                    "value": "false"
                  },
                  {
                    "name": "Width",
                    "value": "Width1"
                  }
                ],
                "Children": [
                  {
                    "Name": "arrowSet",
                    "Type": "ArrowSet2D",
                    "Properties": [
                      {
                        "name": "MarkStartColor",
                        "value": "\"RED\""
                      },
                      {
                        "name": "Transformation",
                        "value": "thetastore"
                      },
                      {
                        "name": "MarkMiddleHeight",
                        "value": "0.1"
                      },
                      {
                        "name": "Offset",
                        "value": "\"CENTERED\""
                      },
                      {
                        "name": "NumberOfElements",
                        "value": "store"
                      },
                      {
                        "name": "MarkEnd",
                        "value": "\"TRIANGLE\""
                      },
                      {
                        "name": "SizeX",
                        "value": "0.1"
                      },
                      {
                        "name": "MarkMiddleWidth",
                        "value": "0.1"
                      },
                      {
                        "name": "X",
                        "value": "xCompassstore"
                      },
                      {
                        "name": "Y",
                        "value": "yCompassstore"
                      },
                      {
                        "name": "MarkEndColor",
                        "value": "\"CYAN\""
                      },
                      {
                        "name": "MarkStart",
                        "value": "\"NONE\""
                      },
                      {
                        "name": "SizeY",
                        "value": "0"
                      }
                    ]
                  },
                  {
                    "Name": "fieldLineSegments",
                    "Type": "ArrowSet2D",
                    "Properties": [
                      {
                        "name": "NumberOfElements",
                        "value": "FieldFlag&&!hideField?fieldLineCount:0"
                      },
                      {
                        "name": "MarkStart",
                        "value": "\"NONE\""
                      },
                      {
                        "name": "MarkEnd",
                        "value": "\"NONE\""
                      },
                      {
                        "name": "FillColor",
                        "value": "\"#3a6ea5\""
                      },
                      {
                        "name": "LineColor",
                        "value": "\"#3a6ea5\""
                      },
                      {
                        "name": "LineWidth",
                        "value": "1.1"
                      },
                      {
                        "name": "SizeX",
                        "value": "fieldLineSegmentLength"
                      },
                      {
                        "name": "SizeY",
                        "value": "0"
                      },
                      {
                        "name": "Rotate",
                        "value": "fieldLineTheta"
                      },
                      {
                        "name": "X",
                        "value": "fieldLineX"
                      },
                      {
                        "name": "Y",
                        "value": "fieldLineY"
                      },
                      {
                        "name": "Offset",
                        "value": "\"CENTERED\""
                      }
                    ]
                  },
                  {
                    "Name": "markerGroup_hidefield_not_triggered",
                    "Type": "Group2D",
                    "Expanded": "false",
                    "Properties": [
                      {
                        "name": "Transformation",
                        "value": "cta"
                      },
                      {
                        "name": "X",
                        "value": "xMagnet"
                      },
                      {
                        "name": "Y",
                        "value": "yMagnet"
                      },
                      {
                        "name": "Visibility",
                        "value": "hideField"
                      }
                    ],
                    "Children": [
                      {
                        "Name": "leftMarker",
                        "Type": "Shape2D",
                        "Properties": [
                          {
                            "name": "FillColor",
                            "value": "\"CYAN\""
                          },
                          {
                            "name": "SizeX",
                            "value": "0.56"
                          },
                          {
                            "name": "ShapeType",
                            "value": "\"ROUND_RECTANGLE\""
                          },
                          {
                            "name": "X",
                            "value": "-0.28"
                          },
                          {
                            "name": "LineColor",
                            "value": "\"GRAY\""
                          },
                          {
                            "name": "Y",
                            "value": "0"
                          },
                          {
                            "name": "Visibility",
                            "value": "hideField"
                          },
                          {
                            "name": "SizeY",
                            "value": "0.22"
                          },
                          {
                            "name": "LineWidth",
                            "value": "2"
                          }
                        ]
                      },
                      {
                        "Name": "rightMarker",
                        "Type": "Shape2D",
                        "Properties": [
                          {
                            "name": "FillColor",
                            "value": "\"MAGENTA\""
                          },
                          {
                            "name": "SizeX",
                            "value": "0.56"
                          },
                          {
                            "name": "ShapeType",
                            "value": "\"ROUND_RECTANGLE\""
                          },
                          {
                            "name": "X",
                            "value": "0.28"
                          },
                          {
                            "name": "LineColor",
                            "value": "\"GRAY\""
                          },
                          {
                            "name": "Y",
                            "value": "0"
                          },
                          {
                            "name": "Visibility",
                            "value": "hideField"
                          },
                          {
                            "name": "SizeY",
                            "value": "0.22"
                          },
                          {
                            "name": "LineWidth",
                            "value": "2"
                          }
                        ]
                      },
                      {
                        "Name": "leftMarker2",
                        "Type": "Shape2D",
                        "Properties": [
                          {
                            "name": "FillColor",
                            "value": "\"MAGENTA\""
                          },
                          {
                            "name": "SizeX",
                            "value": "0.56"
                          },
                          {
                            "name": "ShapeType",
                            "value": "\"ROUND_RECTANGLE\""
                          },
                          {
                            "name": "X",
                            "value": "-0.28"
                          },
                          {
                            "name": "LineColor",
                            "value": "\"GRAY\""
                          },
                          {
                            "name": "Y",
                            "value": "0"
                          },
                          {
                            "name": "Visibility",
                            "value": "hideField&&magnetNS===true"
                          },
                          {
                            "name": "SizeY",
                            "value": "0.22"
                          },
                          {
                            "name": "LineWidth",
                            "value": "2"
                          }
                        ]
                      },
                      {
                        "Name": "rightMarker2",
                        "Type": "Shape2D",
                        "Properties": [
                          {
                            "name": "FillColor",
                            "value": "\"CYAN\""
                          },
                          {
                            "name": "SizeX",
                            "value": "0.56"
                          },
                          {
                            "name": "ShapeType",
                            "value": "\"ROUND_RECTANGLE\""
                          },
                          {
                            "name": "X",
                            "value": "0.28"
                          },
                          {
                            "name": "LineColor",
                            "value": "\"GRAY\""
                          },
                          {
                            "name": "Y",
                            "value": "0"
                          },
                          {
                            "name": "Visibility",
                            "value": "hideField&&magnetNS===true"
                          },
                          {
                            "name": "SizeY",
                            "value": "0.22"
                          },
                          {
                            "name": "LineWidth",
                            "value": "2"
                          }
                        ]
                      },
                      {
                        "Name": "middleMarker",
                        "Type": "Shape2D",
                        "Properties": [
                          {
                            "name": "Sensitivity",
                            "value": "0"
                          },
                          {
                            "name": "FillColor",
                            "value": "\"GRAY\""
                          },
                          {
                            "name": "MovesGroup",
                            "value": "true"
                          },
                          {
                            "name": "SizeX",
                            "value": "0.56"
                          },
                          {
                            "name": "ShapeType",
                            "value": "\"RECTANGLE\""
                          },
                          {
                            "name": "X",
                            "value": "0"
                          },
                          {
                            "name": "LineColor",
                            "value": "\"GRAY\""
                          },
                          {
                            "name": "Y",
                            "value": "0"
                          },
                          {
                            "name": "Visibility",
                            "value": "hideField"
                          },
                          {
                            "name": "SizeY",
                            "value": "0.22"
                          },
                          {
                            "name": "LineWidth",
                            "value": "2"
                          },
                          {
                            "name": "EnabledPosition",
                            "value": "\"ENABLED_ANY\""
                          }
                        ]
                      },
                      {
                        "Name": "dragMe",
                        "Type": "Text2D",
                        "Properties": [
                          {
                            "name": "FillColor",
                            "value": "\"YELLOW\""
                          },
                          {
                            "name": "RelativePosition",
                            "value": "\"SOUTH\""
                          },
                          {
                            "name": "LineColor",
                            "value": "\"YELLOW\""
                          },
                          {
                            "name": "Text",
                            "value": "\"Drag Me\""
                          },
                          {
                            "name": "Visibility",
                            "value": "hideField"
                          },
                          {
                            "name": "PixelSize",
                            "value": "true"
                          }
                        ]
                      },
                      {
                        "Name": "toMagnetPosition",
                        "Type": "Text2D",
                        "Properties": [
                          {
                            "name": "FillColor",
                            "value": "\"YELLOW\""
                          },
                          {
                            "name": "RelativePosition",
                            "value": "\"NORTH\""
                          },
                          {
                            "name": "LineColor",
                            "value": "\"YELLOW\""
                          },
                          {
                            "name": "Text",
                            "value": "\"(To Magnet Location)\""
                          },
                          {
                            "name": "Visibility",
                            "value": "hideField"
                          },
                          {
                            "name": "PixelSize",
                            "value": "true"
                          }
                        ]
                      }
                    ]
                  },
                  {
                    "Name": "magnet1Group",
                    "Type": "Group2D",
                    "Expanded": "true",
                    "Properties": [
                      {
                        "name": "Visibility",
                        "value": "magnet1"
                      }
                    ],
                    "Children": [
                      {
                        "Name": "imageMagnet1SN",
                        "Type": "Image2D",
                        "Properties": [
                          {
                            "name": "Transformation",
                            "value": "cta"
                          },
                          {
                            "name": "Sensitivity",
                            "value": "0"
                          },
                          {
                            "name": "SizeX",
                            "value": "Magnetsizex"
                          },
                          {
                            "name": "X",
                            "value": "xMagnet"
                          },
                          {
                            "name": "Y",
                            "value": "yMagnet"
                          },
                          {
                            "name": "ImageUrl",
                            "value": "\"./MagneticBarField/barMagnet.png\""
                          },
                          {
                            "name": "Visibility",
                            "value": "!hideField"
                          },
                          {
                            "name": "SizeY",
                            "value": "Magnetsizey"
                          },
                          {
                            "name": "EnabledPosition",
                            "value": "\"ENABLED_ANY\""
                          },
                          {
                            "name": "OnDrag",
                            "value": "computeField();\nselected3[0]=\"user_defined\";\nxMagnetDrag = xMagnet+0.7; //force rotate unicode to follow magnet\nyMagnetDrag = yMagnet;"
                          }
                        ]
                      },
                      {
                        "Name": "text",
                        "Type": "Text2D",
                        "Properties": [
                          {
                            "name": "X",
                            "value": "xMagnetDrag"
                          },
                          {
                            "name": "Y",
                            "value": "yMagnetDrag"
                          },
                          {
                            "name": "Text",
                            "value": "\"\u21ba\""
                          },
                          {
                            "name": "Font",
                            "value": "\"normal normal 7vw \""
                          }
                        ]
                      },
                      {
                        "Name": "rotate",
                        "Type": "Shape2D",
                        "Properties": [
                          {
                            "name": "Sensitivity",
                            "value": "0"
                          },
                          {
                            "name": "SizeX",
                            "value": "30"
                          },
                          {
                            "name": "ShapeType",
                            "value": "\"ELLIPSE\""
                          },
                          {
                            "name": "X",
                            "value": "xMagnetDrag"
                          },
                          {
                            "name": "Y",
                            "value": "yMagnetDrag"
                          },
                          {
                            "name": "SizeY",
                            "value": "30"
                          },
                          {
                            "name": "PixelSize",
                            "value": "true"
                          },
                          {
                            "name": "DrawLines",
                            "value": "false"
                          },
                          {
                            "name": "DrawFill",
                            "value": "false"
                          },
                          {
                            "name": "EnabledPosition",
                            "value": "\"ENABLED_ANY\""
                          },
                          {
                            "name": "OnDrag",
                            "value": "cta = Math.round(Math.atan2(yMagnetDrag-yMagnet,xMagnetDrag-xMagnet)*180/pi/10)/180*pi*10;\nca = cta/a2c;\n\ncs=Math.cos(cta);\nsc=Math.sin(cta);\ncomputeField();\n"
                          }
                        ]
                      }
                    ]
                  },
                  {
                    "Name": "magnet2Group",
                    "Type": "Group2D",
                    "Expanded": "true",
                    "Properties": [
                      {
                        "name": "Visibility",
                        "value": "magnet2"
                      }
                    ],
                    "Children": [
                      {
                        "Name": "imageMagnet2SN",
                        "Type": "Image2D",
                        "Properties": [
                          {
                            "name": "Transformation",
                            "value": "cta2"
                          },
                          {
                            "name": "Sensitivity",
                            "value": "0"
                          },
                          {
                            "name": "SizeX",
                            "value": "Magnetsizex2"
                          },
                          {
                            "name": "X",
                            "value": "xMagnet2"
                          },
                          {
                            "name": "Y",
                            "value": "yMagnet2"
                          },
                          {
                            "name": "ImageUrl",
                            "value": "\"./MagneticBarField/barMagnet.png\""
                          },
                          {
                            "name": "Visibility",
                            "value": "!hideField"
                          },
                          {
                            "name": "SizeY",
                            "value": "Magnetsizey2"
                          },
                          {
                            "name": "EnabledPosition",
                            "value": "\"ENABLED_ANY\""
                          },
                          {
                            "name": "OnDrag",
                            "value": "computeField();\nselected3[0]=\"user_defined\";\nxMagnet2Drag = xMagnet2+0.7; //force rotate unicode to follow magnet\nyMagnet2Drag = yMagnet2;\n"
                          }
                        ]
                      },
                      {
                        "Name": "text2",
                        "Type": "Text2D",
                        "Properties": [
                          {
                            "name": "X",
                            "value": "xMagnet2Drag"
                          },
                          {
                            "name": "Y",
                            "value": "yMagnet2Drag"
                          },
                          {
                            "name": "Text",
                            "value": "\"\u21ba\""
                          },
                          {
                            "name": "Font",
                            "value": "\"normal normal 7vw \""
                          }
                        ]
                      },
                      {
                        "Name": "rotate2",
                        "Type": "Shape2D",
                        "Properties": [
                          {
                            "name": "Sensitivity",
                            "value": "0"
                          },
                          {
                            "name": "SizeX",
                            "value": "30"
                          },
                          {
                            "name": "ShapeType",
                            "value": "\"ELLIPSE\""
                          },
                          {
                            "name": "X",
                            "value": "xMagnet2Drag"
                          },
                          {
                            "name": "Y",
                            "value": "yMagnet2Drag"
                          },
                          {
                            "name": "SizeY",
                            "value": "30"
                          },
                          {
                            "name": "PixelSize",
                            "value": "true"
                          },
                          {
                            "name": "DrawLines",
                            "value": "false"
                          },
                          {
                            "name": "DrawFill",
                            "value": "false"
                          },
                          {
                            "name": "EnabledPosition",
                            "value": "\"ENABLED_ANY\""
                          },
                          {
                            "name": "OnDrag",
                            "value": "cta2 = Math.round(Math.atan2(yMagnet2Drag-yMagnet2,xMagnet2Drag-xMagnet2)*180/pi/10)/180*pi*10;\nca2 = cta2/a2c;\n\ncs2=Math.cos(cta2);\nsc2=Math.sin(cta2);\ncomputeField();\n"
                          }
                        ]
                      }
                    ]
                  },
                  {
                    "Name": "shapeSet",
                    "Type": "ShapeSet2D",
                    "Properties": [
                      {
                        "name": "NumberOfElements",
                        "value": "nVectorsSq"
                      },
                      {
                        "name": "SizeX",
                        "value": "5"
                      },
                      {
                        "name": "ShapeType",
                        "value": "\"ELLIPSE\""
                      },
                      {
                        "name": "X",
                        "value": "posx"
                      },
                      {
                        "name": "Y",
                        "value": "posy"
                      },
                      {
                        "name": "SizeY",
                        "value": "5"
                      },
                      {
                        "name": "PixelSize",
                        "value": "true"
                      }
                    ]
                  },
                  {
                    "Name": "arrowSet2",
                    "Type": "ArrowSet2D",
                    "Properties": [
                      {
                        "name": "NumberOfElements",
                        "value": "nVectorsSq"
                      },
                      {
                        "name": "MarkEnd",
                        "value": "\"TRIANGLE\""
                      },
                      {
                        "name": "FillColor",
                        "value": "\"Green\""
                      },
                      {
                        "name": "SizeX",
                        "value": "0.1"
                      },
                      {
                        "name": "Rotate",
                        "value": "thetaField"
                      },
                      {
                        "name": "X",
                        "value": "posx"
                      },
                      {
                        "name": "LineColor",
                        "value": "\"Gray\""
                      },
                      {
                        "name": "Y",
                        "value": "posy"
                      },
                      {
                        "name": "MarkEndColor",
                        "value": "\"Red\""
                      },
                      {
                        "name": "SizeY",
                        "value": "0"
                      },
                      {
                        "name": "LineWidth",
                        "value": "2"
                      },
                      {
                        "name": "Offset",
                        "value": "\"CENTERED\""
                      }
                    ]
                  },
                  {
                    "Name": "textSet22",
                    "Type": "TextSet2D",
                    "Properties": [
                      {
                        "name": "NumberOfElements",
                        "value": "nVectorsSq"
                      },
                      {
                        "name": "RelativePosition",
                        "value": "\"WEST\""
                      },
                      {
                        "name": "X",
                        "value": "posx"
                      },
                      {
                        "name": "Y",
                        "value": "posy"
                      },
                      {
                        "name": "Text",
                        "value": "%textSetthetaField%"
                      },
                      {
                        "name": "Visibility",
                        "value": "false"
                      }
                    ]
                  },
                  {
                    "Name": "textSet2",
                    "Type": "TextSet2D",
                    "Properties": [
                      {
                        "name": "NumberOfElements",
                        "value": "nVectorsSq"
                      },
                      {
                        "name": "RelativePosition",
                        "value": "\"SOUTH\""
                      },
                      {
                        "name": "X",
                        "value": "posx"
                      },
                      {
                        "name": "Y",
                        "value": "posy"
                      },
                      {
                        "name": "Text",
                        "value": "%textSety%"
                      },
                      {
                        "name": "Visibility",
                        "value": "false"
                      }
                    ]
                  },
                  {
                    "Name": "textSet",
                    "Type": "TextSet2D",
                    "Properties": [
                      {
                        "name": "NumberOfElements",
                        "value": "nVectorsSq"
                      },
                      {
                        "name": "RelativePosition",
                        "value": "\"NORTH\""
                      },
                      {
                        "name": "X",
                        "value": "posx"
                      },
                      {
                        "name": "Y",
                        "value": "posy"
                      },
                      {
                        "name": "Text",
                        "value": "%textSetx%"
                      },
                      {
                        "name": "Visibility",
                        "value": "false"
                      }
                    ]
                  },
                  {
                    "Name": "dipoles",
                    "Type": "ShapeSet2D",
                    "Properties": [
                      {
                        "name": "NumberOfElements",
                        "value": "nd"
                      },
                      {
                        "name": "FillColor",
                        "value": "\"Yellow\""
                      },
                      {
                        "name": "SizeX",
                        "value": "20"
                      },
                      {
                        "name": "Position",
                        "value": "dipoles"
                      },
                      {
                        "name": "ShapeType",
                        "value": "\"ELLIPSE\""
                      },
                      {
                        "name": "Visibility",
                        "value": "false"
                      },
                      {
                        "name": "SizeY",
                        "value": "20"
                      },
                      {
                        "name": "PixelSize",
                        "value": "true"
                      }
                    ]
                  },
                  {
                    "Name": "Dragme1SN",
                    "Type": "Text2D",
                    "Properties": [
                      {
                        "name": "Transformation",
                        "value": "cta"
                      },
                      {
                        "name": "FillColor",
                        "value": "\"Yellow\""
                      },
                      {
                        "name": "X",
                        "value": "xMagnet"
                      },
                      {
                        "name": "LineColor",
                        "value": "\"Yellow\""
                      },
                      {
                        "name": "Y",
                        "value": "yMagnet"
                      },
                      {
                        "name": "Text",
                        "value": "\"Drag me 1\""
                      },
                      {
                        "name": "Visibility",
                        "value": "!hideField&&magnet1"
                      },
                      {
                        "name": "PixelSize",
                        "value": "true"
                      }
                    ]
                  },
                  {
                    "Name": "Dragme2SN",
                    "Type": "Text2D",
                    "Properties": [
                      {
                        "name": "Transformation",
                        "value": "cta2"
                      },
                      {
                        "name": "FillColor",
                        "value": "\"Yellow\""
                      },
                      {
                        "name": "X",
                        "value": "xMagnet2"
                      },
                      {
                        "name": "LineColor",
                        "value": "\"Yellow\""
                      },
                      {
                        "name": "Y",
                        "value": "yMagnet2"
                      },
                      {
                        "name": "Text",
                        "value": "\"Drag me 2\""
                      },
                      {
                        "name": "Visibility",
                        "value": "!hideField&&magnet2"
                      },
                      {
                        "name": "PixelSize",
                        "value": "true"
                      }
                    ]
                  },
                  {
                    "Name": "compassGroup",
                    "Type": "Group2D",
                    "Expanded": "false",
                    "Properties": [
                      {
                        "name": "X",
                        "value": "xCompass"
                      },
                      {
                        "name": "Y",
                        "value": "yCompass"
                      },
                      {
                        "name": "Visibility",
                        "value": "showCompass"
                      }
                    ],
                    "Children": [
                      {
                        "Name": "backGroundShape",
                        "Type": "Shape2D",
                        "Properties": [
                          {
                            "name": "FillColor",
                            "value": "\"rgba(0,255,255,0.5)\""
                          },
                          {
                            "name": "SizeX",
                            "value": "0.35"
                          },
                          {
                            "name": "SizeY",
                            "value": "0.35"
                          }
                        ]
                      },
                      {
                        "Name": "compassArrowSN",
                        "Type": "Arrow2D",
                        "Properties": [
                          {
                            "name": "MarkEnd",
                            "value": "\"TRIANGLE\""
                          },
                          {
                            "name": "Transformation",
                            "value": "theta"
                          },
                          {
                            "name": "SizeX",
                            "value": "0.2"
                          },
                          {
                            "name": "X",
                            "value": "0"
                          },
                          {
                            "name": "LineColor",
                            "value": "\"Red\""
                          },
                          {
                            "name": "Y",
                            "value": "0"
                          },
                          {
                            "name": "MarkEndColor",
                            "value": "\"Red\""
                          },
                          {
                            "name": "SizeY",
                            "value": "0"
                          },
                          {
                            "name": "LineWidth",
                            "value": "4"
                          },
                          {
                            "name": "Offset",
                            "value": "\"CENTERED\""
                          }
                        ]
                      },
                      {
                        "Name": "compassPivotShape",
                        "Type": "Shape2D",
                        "Properties": [
                          {
                            "name": "Sensitivity",
                            "value": "15"
                          },
                          {
                            "name": "FillColor",
                            "value": "\"black\""
                          },
                          {
                            "name": "MovesGroup",
                            "value": "true"
                          },
                          {
                            "name": "SizeX",
                            "value": "0.028"
                          },
                          {
                            "name": "X",
                            "value": "0"
                          },
                          {
                            "name": "LineColor",
                            "value": "\"black\""
                          },
                          {
                            "name": "Y",
                            "value": "0"
                          },
                          {
                            "name": "SizeY",
                            "value": "0.028"
                          },
                          {
                            "name": "EnabledPosition",
                            "value": "\"ENABLED_ANY\""
                          }
                        ]
                      },
                      {
                        "Name": "textboxShape",
                        "Type": "Shape2D",
                        "Properties": [
                          {
                            "name": "FillColor",
                            "value": "\"Yellow\""
                          },
                          {
                            "name": "SizeX",
                            "value": "0.5"
                          },
                          {
                            "name": "RelativePosition",
                            "value": "\"NORTH_WEST\""
                          },
                          {
                            "name": "ShapeType",
                            "value": "\"ROUND_RECTANGLE\""
                          },
                          {
                            "name": "X",
                            "value": "-0.2"
                          },
                          {
                            "name": "Y",
                            "value": "-0.17"
                          },
                          {
                            "name": "Visibility",
                            "value": "!hideField"
                          },
                          {
                            "name": "SizeY",
                            "value": "0.5"
                          }
                        ]
                      },
                      {
                        "Name": "imagecircle",
                        "Type": "Image2D",
                        "Properties": [
                          {
                            "name": "SizeX",
                            "value": "0.4"
                          },
                          {
                            "name": "X",
                            "value": "0"
                          },
                          {
                            "name": "ImageUrl",
                            "value": "\"./MagneticBarField/circle.gif\""
                          },
                          {
                            "name": "SizeY",
                            "value": "0.4"
                          }
                        ]
                      },
                      {
                        "Name": "fieldtext",
                        "Type": "Text2D",
                        "Properties": [
                          {
                            "name": "FillColor",
                            "value": "\"blue\""
                          },
                          {
                            "name": "RelativePosition",
                            "value": "\"CENTERED\""
                          },
                          {
                            "name": "X",
                            "value": "0.05"
                          },
                          {
                            "name": "LineColor",
                            "value": "\"blue\""
                          },
                          {
                            "name": "Y",
                            "value": "-0.22"
                          },
                          {
                            "name": "Text",
                            "value": "%fieldValue%"
                          },
                          {
                            "name": "Visibility",
                            "value": "!hideField"
                          },
                          {
                            "name": "PixelSize",
                            "value": "true"
                          }
                        ]
                      },
                      {
                        "Name": "fieldtextBx2",
                        "Type": "Text2D",
                        "Properties": [
                          {
                            "name": "FillColor",
                            "value": "\"BLUE\""
                          },
                          {
                            "name": "RelativePosition",
                            "value": "\"CENTERED\""
                          },
                          {
                            "name": "LineColor",
                            "value": "\"BLUE\""
                          },
                          {
                            "name": "X",
                            "value": "0.05"
                          },
                          {
                            "name": "Y",
                            "value": "-0.33"
                          },
                          {
                            "name": "Text",
                            "value": "%fieldValueBx1%"
                          },
                          {
                            "name": "Visibility",
                            "value": "!hideField"
                          },
                          {
                            "name": "PixelSize",
                            "value": "true"
                          },
                          {
                            "name": "LineWidth",
                            "value": "3"
                          }
                        ]
                      },
                      {
                        "Name": "fieldtextBy2",
                        "Type": "Text2D",
                        "Properties": [
                          {
                            "name": "FillColor",
                            "value": "\"BLUE\""
                          },
                          {
                            "name": "RelativePosition",
                            "value": "\"CENTERED\""
                          },
                          {
                            "name": "LineColor",
                            "value": "\"BLUE\""
                          },
                          {
                            "name": "X",
                            "value": "0.05"
                          },
                          {
                            "name": "Y",
                            "value": "-0.44"
                          },
                          {
                            "name": "Text",
                            "value": "%fieldValueBy1%"
                          },
                          {
                            "name": "Visibility",
                            "value": "!hideField"
                          },
                          {
                            "name": "PixelSize",
                            "value": "true"
                          }
                        ]
                      },
                      {
                        "Name": "fieldTextangle2",
                        "Type": "Text2D",
                        "Properties": [
                          {
                            "name": "FillColor",
                            "value": "\"BLUE\""
                          },
                          {
                            "name": "RelativePosition",
                            "value": "\"CENTERED\""
                          },
                          {
                            "name": "LineColor",
                            "value": "\"BLUE\""
                          },
                          {
                            "name": "X",
                            "value": "0.05"
                          },
                          {
                            "name": "Y",
                            "value": "-0.55"
                          },
                          {
                            "name": "Text",
                            "value": "%fieldValueAngledeg1%"
                          },
                          {
                            "name": "Visibility",
                            "value": "!hideField"
                          },
                          {
                            "name": "PixelSize",
                            "value": "true"
                          }
                        ]
                      }
                    ]
                  }
                ]
              }
            ]
          },
          {
            "Name": "html",
            "Type": "Panel",
            "Properties": [
              {
                "name": "Html",
                "value": "<h1>2 Bar Magnets, Field Vectors and Field Lines</h1>\n<iframe width=\"560\" height=\"315\" src=\"https://www.youtube.com/embed/q_mbO6NKsI8?si=C95PQBxpy4kHFnqV\" title=\"YouTube video player\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen></iframe><p>Use this model to compare three linked representations of magnetism: the bar magnets themselves, the magnetic field vectors, and the compass direction at a chosen point.</p>\n<h2>Suggested Inquiry Sequence</h2>\n<ol>\n  <li><strong>Start with unlike poles facing.</strong> Turn on <strong>Field lines</strong> and describe how the vectors and streamlines connect the two magnets.</li>\n  <li><strong>Switch to like poles facing.</strong> Look at the crowded region between the magnets. Where do the vectors change direction most quickly?</li>\n  <li><strong>Use the compass as a probe.</strong> Move the compass along one field line and check whether the needle stays tangent to the local field direction.</li>\n  <li><strong>Hide the field.</strong> Use only the compass to infer where the poles must be, then reveal the vectors and field lines to test your prediction.</li>\n  <li><strong>Rotate one magnet.</strong> Explain how the combined field pattern changes when one bar magnet is turned.</li>\n</ol>\n<h2>Teacher Notes</h2>\n<ul>\n  <li>Vectors show the <em>local</em> magnetic field direction and strength at many points.</li>\n  <li>Field lines help students see the <em>overall pattern</em> of attraction, repulsion and curvature.</li>\n  <li>The compass offers a third representation: it should align with the tangent direction of the nearby field line.</li>\n</ul>\n\n<h3>Explore More Magnetism Simulations</h3>\n\n<ul>\n  <li><a href=\"https://iwant2study.org/ospsg/index.php/interactive-resources/physics/05-electricity-and-magnetism/07-magnetism/397-magneticbarfieldrotationwee\" target=\"_blank\">Need a Bar Magnet and Earth?</a></li>\n  <li><a href=\"https://sg.iwant2study.org/ospsg/index.php/interactive-resources/physics/05-electricity-and-magnetism/07-magnetism/700-magnetbar\" target=\"_blank\">Need a Bar Magnet Field Line?</a></li>\n  <li><a href=\"https://sg.iwant2study.org/ospsg/index.php/interactive-resources/physics/05-electricity-and-magnetism/07-magnetism/268-magneticbarfieldsecondmagnet06\" target=\"_blank\">Need 2 Bars Magnet?</a></li>\n  <li><a href=\"https://iwant2study.org/ospsg/index.php/interactive-resources/physics/05-electricity-and-magnetism/07-magnetism/705-fieldlines3dwee\" target=\"_blank\">Need a 3D visualization of a Bar Magnet Field Line?</a></li>\n  <li><a href=\"https://sg.iwant2study.org/ospsg/index.php/interactive-resources/physics/05-electricity-and-magnetism/07-magnetism/972-twobarmagnetsonalevelledsurface\" target=\"_blank\">Need 2 Bar Magnets on a level surface for Primary School Science?</a></li>\n  <li><a href=\"https://sg.iwant2study.org/ospsg/index.php/interactive-resources/physics/05-electricity-and-magnetism/07-magnetism/994-hangingmagnet\" target=\"_blank\">Need Riveting and Rotating Paperclip and Magnet to demonstrate magnetism passes through non-magnetic materials?</a></li>\n  <li><a href=\"https://sg.iwant2study.org/ospsg/index.php/interactive-resources/physics/05-electricity-and-magnetism/07-magnetism/997-suspendedmagnet3\" target=\"_blank\">Need Suspended Magnet with effects of Heating?</a></li>\n  <li><a href=\"https://sg.iwant2study.org/ospsg/index.php/interactive-resources/physics/05-electricity-and-magnetism/07-magnetism/987-stackingmagnet8\" target=\"_blank\">Need Stacking Ring Magnets?</a></li>\n  <li><a href=\"https://sg.iwant2study.org/ospsg/index.php/interactive-resources/physics/05-electricity-and-magnetism/07-magnetism\" target=\"_blank\">Need More Simulations? Check this out!</a></li>\n</ul>"
              }
            ]
          }
        ]
      }
    ],
    "RootProperties": []
  },
  "metadata": {
    "APP": "WebEJS",
    "CreatedWith": "WebEJS : The web version of Easy JavaScript Simulations",
    "MoreInfo": "WebEJS 1.1",
    "version": "https://www.um.es/fem/wikis/webejs/"
  }
}