{
  "information": {
    "Title": "ejss_model_AAPTVernierCaliper Vernier Calipers Model Full Screen AAPTVernierCaliper",
    "Author": [
      "Fu-Kwun Hwang",
      "lookang"
    ],
    "AuthorLogo": [
      "./VernierCaliper/s200_fu-kwun.hwang.png",
      "./01authorlookang50x50.png"
    ],
    "Password": "",
    "Keywords": "Vernier calipers measurement physics",
    "Abstract": "http://weelookang.blogspot.sg/2015/07/ejss-vernier-caliper-model.html\nOriginal Source code by Fu-Kwun Hwang http://www.phy.ntnu.edu.tw/ntnujava/index.php?topic=567.msg2364#msg2364 Derived work by Loo Kang WEE under creative commons http://creativecommons.org/licenses/by/2.5/tw/deed.en\n\nhttp://www.phy.ntnu.edu.tw/ntnujava/index.php?topic=684.msg2452#msg2452\n\nhttp://weelookang.blogspot.sg/2012/01/vernier-calipers-with-njc-class-307.html https://sites.google.com/site/lookang/001-vernier-caliper",
    "Copyright": "creative commons attribution share alike",
    "Level": "secondary pre university",
    "Language": "english",
    "Logo": [
      "./VernierCaliper/Screen Shot 2017-02-24 at 8.40.53 AM (2).png"
    ],
    "RunAlways": "true",
    "ModelTab": "",
    "ModelTabTitle": "",
    "ModelName": "",
    "FixedNavigationBar": "false",
    "CSSFile": "",
    "DetectedFiles": [
      "./01authorlookang50x50.png",
      "./VernierCaliper/Screen Shot 2017-02-24 at 8.40.53 AM (2).png",
      "./VernierCaliper/VernierCaliper.PNG",
      "./VernierCaliper/VernierCaliper.html",
      "./VernierCaliper/s200_fu-kwun.hwang.png"
    ],
    "AuxiliaryFiles": [
      "./VernierCaliper/"
    ],
    "HTMLHead": "\n<script async=\"true\" src=\"https://www.googletagmanager.com/gtag/js?id=UA-3326007-19\"></script>\n<script>\n  window.dataLayer = window.dataLayer || [];\n  function gtag(){dataLayer.push(arguments);}\n  gtag('js', new Date());\n  gtag('config', 'UA-3326007-19');\n</script>\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": "About",
        "Active": "true",
        "Internal": "false",
        "Type": "DESCRIPTION_EDITOR",
        "Locale": "_default_",
        "Title": "About",
        "External": "false",
        "Code": "<html>\n<head></head>\n<body>\n<p> </p><h2> <a href=\"https://www.seab.gov.sg/content/syllabus/olevel/2015Syllabus/5059_2015.pdf\">Topics</a> </h2><p>    Measurement of length and time<br>    </p><h2>      Description    </h2><p>    Play with the Vernier Caliper Model. Test what you've learned by trying     the input field.<br><br>Vernier calipers can measure internal dimensions     (using the uppermost jaws in the picture at right), external dimensions     using the pictured lower jaws, and depending on the manufacturer, depth     measurements by the use of a probe that is attached to the movable head     and slides along the centre of the body. This probe is slender and can get     into deep grooves that may prove difficult for other measuring tools.<br>The     vernier scales can be in <a href=\"http://en.wikipedia.org/wiki/Metre\">metric</a>     measurements on the upper and lower part of the scale.<br>Vernier calipers     commonly used in industry provide a precision to a hundredth of a     millimetre (10 <a href=\"http://en.wikipedia.org/wiki/Micrometre\">micrometres</a>).<br>A     more precise instrument used for the same purpose is the <a href=\"http://en.wikipedia.org/wiki/Micrometer_%28device%29\">micrometer</a><br><br><br>    </p><h2>      Parts of a vernier caliper:    </h2><p>    Outside jaws: used to measure external diameter or width of an object     (Blue)<br><br>Inside jaws: used to measure internal diameter of an object<br>Depth     probe: used to measure depths of an object or a hole ( not shown in this     model)<br><br>Main scale: gives measurements in mm.<br>Vernier gives     measurements up to one decimal places in mm<br>Retainer: used to block     movable part to allow the easy transferring a measurement ( not shown in     this model)<br><br>The Vernier calipers model has<br><br>an object (Blue)     for the internal jaws to measure width of an object with slider to control     width of the object and simple drag action to control position of object.<br>an     object (Green) for external jaws to measure internal diameter of a     cylinder for example with slider to control dimensions of the cylinder.<br>a     slider for zero error slider<br>checkbox for hint to scaffold the learners     attention and point of focus<br>checkbox for answer to show the meaning of     reading on the main scale and the vernier scale with zero error     calculations if any.<br>drop down menu of the various common vernier     scales for sense making and additional testing out by learners their ideas     of how vernier works.<br>fine &lt;&gt; control buttons for learners to     manipulate the model with single incremental precision<br>slider control     for fast changes in the vernier measurement<br>reset button to bring     simulaton back to original (default) setting.<br><br><br>    </p><h2>      Sample Learning Goals    </h2><p>    (g) describe how to measure a variety of lengths with appropriate accuracy     by means of tapes, rules, micrometers and calipers, using a vernier scale     as necessary.<br>    </p><h2>      Research    </h2><p> <a href=\"http://arxiv.org/abs/1408.3803\">arXiv:1408.3803</a> [<a href=\"http://arxiv.org/pdf/1408.3803\">pdf</a>]<br>Vernier     caliper and micrometer computer models using Easy Java Simulation and its     pedagogical design feature-ideas to augment learning with real instruments<br><a href=\"http://arxiv.org/find/physics/1/au:+Wee_L/0/1/0/all/0/1\">Loo     Kang Wee</a>, <a href=\"http://arxiv.org/find/physics/1/au:+Ning_H/0/1/0/all/0/1\">Hwee     Tiang Ning</a><br>Comments: 8 pages, 8 figures, Physics Education journal<br>Subjects:     Physics Education (physics.ed-ph); Instrumentation and Detectors     (physics.ins-det)<br><a href=\"https://youtu.be/jHoA5M-_1R4\">https://youtu.be/jHoA5M-_1R4</a><br></p><div class=\"se-component se-video-container __se__float-none\" contenteditable=\"false\" style=\"width: 100%;\"><figure style=\"width: 100%; height: 56.25%; padding-bottom: 56.25%; margin: 0px;\"><iframe src=\"https://www.youtube.com/embed/jHoA5M-_1R4\" frameborder=\"0\" allowfullscreen=\"\" data-percentage=\"100%,56.25%\" data-size=\"100%,56.25%\" data-align=\"none\" data-index=\"0\" data-file-name=\"jHoA5M-_1R4\" data-file-size=\"0\" data-origin=\"100%,56.25%\" style=\"width: 100%; height: 100%; pointer-events: auto;\"></iframe></figure></div><p> </p><div> <h2>        Video      </h2> <div> <a href=\"https://youtu.be/zz4Fha5sISo\">https://youtu.be/zz4Fha5sISo</a> </div> </div><div class=\"se-component se-video-container __se__float-\" contenteditable=\"false\" style=\"width: 100%;\"><figure style=\"width: 100%; height: 56.25%; padding-bottom: 56.25%; margin: 0px;\"><iframe src=\"https://www.youtube.com/embed/zz4Fha5sISo\" frameborder=\"0\" allowfullscreen=\"\" data-percentage=\"100%,56.25%\" data-size=\"100%,56.25%\" data-align=\"\" data-index=\"1\" data-file-name=\"zz4Fha5sISo\" data-file-size=\"0\" data-origin=\"100%,56.25%\" style=\"width: 100%; height: 100%; pointer-events: auto;\">      </iframe></figure></div><div><br></div><div> <br>      <a href=\"https://youtu.be/qXtE07tbK8s\">https://youtu.be/qXtE07tbK8s</a><br></div><div class=\"se-component se-video-container __se__float-\" contenteditable=\"false\" style=\"width: 100%;\"><figure style=\"width: 100%; height: 56.25%; padding-bottom: 56.25%; margin: 0px;\"><iframe src=\"https://www.youtube.com/embed/qXtE07tbK8s\" frameborder=\"0\" allowfullscreen=\"\" data-percentage=\"100%,56.25%\" data-size=\"100%,56.25%\" data-align=\"\" data-index=\"2\" data-file-name=\"qXtE07tbK8s\" data-file-size=\"0\" data-origin=\"100%,56.25%\" style=\"width: 100%; height: 100%; pointer-events: auto;\"></iframe></figure></div><div><br></div><div> <h2>        Version:      </h2> <ol><li> <a href=\"http://weelookang.blogspot.sg/2015/07/ejss-vernier-caliper-model.html\">http://weelookang.blogspot.sg/2015/07/ejss-vernier-caliper-model.html</a> </li><li> <a href=\"http://weelookang.blogspot.sg/2010/06/ejs-open-source-vernier-calipers-java.html\">http://weelookang.blogspot.sg/2010/06/ejs-open-source-vernier-calipers-java.html</a> </li><li> <a href=\"http://iwant2study.org/lookangejss/01_measurement/ejs/ejs_model_AAPTVernierCaliper.jar\">http://iwant2study.org/lookangejss/01_measurement/ejs/ejs_model_AAPTVernierCaliper.jar</a> </li><li> <a href=\"http://www.opensourcephysics.org/items/detail.cfm?ID=9707\">http://www.opensourcephysics.org/items/detail.cfm?ID=9707</a> </li><li> <a href=\"http://www.phy.ntnu.edu.tw/ntnujava/index.php?topic=684.msg2452#msg2452\">http://www.phy.ntnu.edu.tw/ntnujava/index.php?topic=684.msg2452#msg2452</a> </li><li> <a href=\"http://www.phy.ntnu.edu.tw/ntnujava/index.php?topic=567.msg2364#msg2364\">http://www.phy.ntnu.edu.tw/ntnujava/index.php?topic=567.msg2364#msg2364</a> </li></ol> <div> <div> <ol></ol> <div> <br>          </div> </div> </div> </div><p> </p>\n</body>\n</html>"
      },
      {
        "Name": "VernierCaliper",
        "Active": "true",
        "Internal": "false",
        "Type": "DESCRIPTION_EDITOR",
        "Locale": "_default_",
        "Title": "VernierCaliper",
        "External": "true",
        "Code": "./VernierCaliper/VernierCaliper.html"
      }
    ]
  },
  "model": {
    "variables": {
      "pages": [
        {
          "Name": "coordinate",
          "Active": "true",
          "Internal": "false",
          "Type": "VARIABLE_EDITOR",
          "PageComment": "",
          "Variables": [
            {
              "Name": "display",
              "Value": "\"none\"",
              "Type": "String",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "inputdropmenu",
              "Value": "true",
              "Type": "boolean",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "font",
              "Value": "_isMobile?\"normal normal 2vw \":\"normal normal 3vw \"",
              "Type": "String",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "range",
              "Value": "200",
              "Type": "double",
              "Dimension": "",
              "Comment": "range",
              "Domain": "public"
            },
            {
              "Name": "xmin",
              "Value": "-range",
              "Type": "double",
              "Dimension": "",
              "Comment": "x minimum",
              "Domain": "public"
            },
            {
              "Name": "xmax",
              "Value": "range",
              "Type": "double",
              "Dimension": "",
              "Comment": "x maximum",
              "Domain": "public"
            },
            {
              "Name": "ymin",
              "Value": "-range/2",
              "Type": "double",
              "Dimension": "",
              "Comment": "y minimum",
              "Domain": "public"
            },
            {
              "Name": "ymax",
              "Value": "range/2",
              "Type": "double",
              "Dimension": "",
              "Comment": "y maximum",
              "Domain": "public"
            },
            {
              "Name": "t",
              "Value": "0",
              "Type": "int",
              "Dimension": "",
              "Comment": "time",
              "Domain": "public"
            },
            {
              "Name": "dt",
              "Value": "1",
              "Type": "int",
              "Dimension": "",
              "Comment": "time step",
              "Domain": "public"
            },
            {
              "Name": "size",
              "Value": "range/20",
              "Type": "double",
              "Dimension": "",
              "Comment": "particle size",
              "Domain": "public"
            },
            {
              "Name": "size2",
              "Value": "size/2",
              "Type": "double",
              "Dimension": "",
              "Comment": "size divide by 2",
              "Domain": "public"
            },
            {
              "Name": "stroke",
              "Value": "1",
              "Type": "double",
              "Dimension": "",
              "Comment": "stroke line thickness",
              "Domain": "public"
            },
            {
              "Name": "autoscale",
              "Value": "",
              "Type": "boolean",
              "Dimension": "",
              "Comment": "autoscale",
              "Domain": "public"
            },
            {
              "Name": "zoom",
              "Value": "1",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "",
              "Value": " -796.173,-319.262 -819.969,-305.382 -837.816,-279.603 -845.748,-247.875 -859.629,-214.164 -875.493,-168.555 -885.408,-134.844 -895.323,-97.167 -903.255,-67.422 -929.034,27.762 ",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "",
              "Value": "",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            }
          ]
        },
        {
          "Name": "MainScale",
          "Active": "true",
          "Internal": "false",
          "Type": "VARIABLE_EDITOR",
          "PageComment": "",
          "Variables": [
            {
              "Name": "x1",
              "Value": "0.9*xmin",
              "Type": "double",
              "Dimension": "",
              "Comment": "x1 coordinate of leftmost position of main scale",
              "Domain": "public"
            },
            {
              "Name": "x2",
              "Value": "x1-0.1*xmin",
              "Type": "double",
              "Dimension": "",
              "Comment": "x2 coordinate of left position of main scale",
              "Domain": "public"
            },
            {
              "Name": "y1",
              "Value": "ymax*0.7",
              "Type": "double",
              "Dimension": "",
              "Comment": "used in the markings top scale position",
              "Domain": "public"
            },
            {
              "Name": "y2",
              "Value": "0.0",
              "Type": "double",
              "Dimension": "",
              "Comment": "y2  position of main scale",
              "Domain": "public"
            },
            {
              "Name": "y3",
              "Value": "-y1",
              "Type": "double",
              "Dimension": "",
              "Comment": "y3 lowest position of main scale",
              "Domain": "public"
            },
            {
              "Name": "points",
              "Value": "11",
              "Type": "int",
              "Dimension": "",
              "Comment": "points of drawing for main scale",
              "Domain": "public"
            },
            {
              "Name": "x7",
              "Value": "[xmax,x2+size*1.5,x2+size/2,x2,x2,x2+size/2,x2+size/2,x2,x1,x1,x2-size,x2,x2,x2-size/2,x2-size/2,x2,xmax]",
              "Type": "double",
              "Dimension": "[points]",
              "Comment": "grey part starting coordinates top right going anticlockwise ends at bottom right corner",
              "Domain": "public"
            },
            {
              "Name": "y7",
              "Value": "[y1,y1,y1+5*size2,y1+6*size2,y1+size/2,y1+size/2,y1,y1,y1,y3/2,y3+size/2,y3,y2-size,y2-size,y2,y2,y2]",
              "Type": "double",
              "Dimension": "[points]",
              "Comment": "grey part appears to be a way to draw top base  y7 ={y1,y1,y3/2,y3+size2,y3,y2,y2} and {y1,y1,y1,y1+size2,y1+2*size2,y1+3*size2,y1,y3/2,y3+size2,y3,y2,y2}",
              "Domain": "public"
            },
            {
              "Name": "xy7",
              "Value": "[[xmax,y1],[x2+size*1.5,y1],[x2+size/2,y1+5*size2],[x2,y1+6*size2],[x2,y1+size/2],[x2+size/2,y1+size/2],[x2+size/2,y1],[x2,y1],[x1,y1],[x1,y3/2],[x2-size,y3+size/2],[x2,y3],[x2,y2-size],[x2-size/2,y2-size],[x2-size/2,y2],[x2,y2],[xmax,y2]]",
              "Type": "double",
              "Dimension": "[17][2]",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "xy71",
              "Value": "[[-794.331,-317.28],[ -813.926,-309.744],[ -827.491,-297.686],[ -933,27.884],[ 890.796,27.884],[ 893.811,12.812],[ -782.273,9.797],[ -785.288,18.841],[ -801.868,18.841],[ -791.317,-320.295 ]]",
              "Type": "double",
              "Dimension": "[10][2]",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "",
              "Value": "",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "",
              "Value": "",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            }
          ]
        },
        {
          "Name": "RulerMainScaleMarking",
          "Active": "true",
          "Internal": "false",
          "Type": "VARIABLE_EDITOR",
          "PageComment": "",
          "Variables": [
            {
              "Name": "nm",
              "Value": "70",
              "Type": "int",
              "Dimension": "",
              "Comment": "number of marking of top scale",
              "Domain": "public"
            },
            {
              "Name": "nmt",
              "Value": "nm/10",
              "Type": "int",
              "Dimension": "",
              "Comment": "number of marking text",
              "Domain": "public"
            },
            {
              "Name": "xm",
              "Value": "0.0",
              "Type": "double",
              "Dimension": "[nm]",
              "Comment": "Array xm[nm] store the coordinates for all the upper marker (vertical lines) and the separation between lines is dxm.",
              "Domain": "public"
            },
            {
              "Name": "ym",
              "Value": "0.0",
              "Type": "double",
              "Dimension": "[nm]",
              "Comment": "y coordinate of markings",
              "Domain": "public"
            },
            {
              "Name": "dym",
              "Value": "0.0",
              "Type": "double",
              "Dimension": "[nm]",
              "Comment": "height of the markings on top scale",
              "Domain": "public"
            },
            {
              "Name": "xmt",
              "Value": "0.0",
              "Type": "double",
              "Dimension": "[nmt]",
              "Comment": "x coordinate of text",
              "Domain": "public"
            },
            {
              "Name": "tmt",
              "Value": "",
              "Type": "String",
              "Dimension": "[nmt]",
              "Comment": "text marking ",
              "Domain": "public"
            },
            {
              "Name": "zerox",
              "Value": "size/2",
              "Type": "double",
              "Dimension": "",
              "Comment": "zero x position",
              "Domain": "public"
            },
            {
              "Name": "dxm",
              "Value": "(xmax-x2)/nm",
              "Type": "double",
              "Dimension": "",
              "Comment": "separation between the lower marker (vertical lines) lines",
              "Domain": "public"
            },
            {
              "Name": "zero",
              "Value": "0",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "zeroxm",
              "Value": "zerox",
              "Type": "double",
              "Dimension": "",
              "Comment": "zero x marking",
              "Domain": "public"
            },
            {
              "Name": "n2",
              "Value": "51",
              "Type": "int",
              "Dimension": "",
              "Comment": "number of points",
              "Domain": "public"
            },
            {
              "Name": "n2t",
              "Value": "11",
              "Type": "int",
              "Dimension": "",
              "Comment": "number of text 01234567890=11",
              "Domain": "public"
            },
            {
              "Name": "n2s",
              "Value": "n2",
              "Type": "int",
              "Dimension": "",
              "Comment": "number of ticker for the lower scale ?",
              "Domain": "public"
            },
            {
              "Name": "nmode",
              "Value": "10",
              "Type": "int",
              "Dimension": "",
              "Comment": "number mode",
              "Domain": "public"
            },
            {
              "Name": "xm2",
              "Value": "0.0",
              "Type": "double",
              "Dimension": "[n2]",
              "Comment": "x marking 2",
              "Domain": "public"
            },
            {
              "Name": "ym2",
              "Value": "0.0",
              "Type": "double",
              "Dimension": "[n2]",
              "Comment": "y marking 2",
              "Domain": "public"
            },
            {
              "Name": "dy2",
              "Value": "0.0",
              "Type": "double",
              "Dimension": "[n2]",
              "Comment": "delta y 2 ",
              "Domain": "public"
            },
            {
              "Name": "xm2t",
              "Value": "0.0",
              "Type": "double",
              "Dimension": "[n2t]",
              "Comment": "x marking 2 text",
              "Domain": "public"
            },
            {
              "Name": "tm2t",
              "Value": "\"\"",
              "Type": "String",
              "Dimension": "[n2t]",
              "Comment": "text marking text",
              "Domain": "public"
            },
            {
              "Name": "dx2",
              "Value": "49*dxm/50",
              "Type": "double",
              "Dimension": "",
              "Comment": "delta x 2 ",
              "Domain": "public"
            },
            {
              "Name": "dycst",
              "Value": "1.0",
              "Type": "double",
              "Dimension": "",
              "Comment": "delta y cst",
              "Domain": "public"
            },
            {
              "Name": "dychk",
              "Value": "true",
              "Type": "boolean",
              "Dimension": "",
              "Comment": "delta y check",
              "Domain": "public"
            },
            {
              "Name": "",
              "Value": "",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            }
          ]
        },
        {
          "Name": "basic",
          "Active": "true",
          "Internal": "false",
          "Type": "VARIABLE_EDITOR",
          "PageComment": "",
          "Variables": [
            {
              "Name": "x",
              "Value": "0",
              "Type": "double",
              "Dimension": "",
              "Comment": "x coordinate of the measurement",
              "Domain": "public"
            },
            {
              "Name": "xreplacedrag",
              "Value": "-50",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "y",
              "Value": "0",
              "Type": "double",
              "Dimension": "",
              "Comment": "unused",
              "Domain": "public"
            },
            {
              "Name": "vx",
              "Value": "1",
              "Type": "double",
              "Dimension": "",
              "Comment": "unused",
              "Domain": "public"
            },
            {
              "Name": "vy",
              "Value": "0",
              "Type": "double",
              "Dimension": "",
              "Comment": "unused",
              "Domain": "public"
            },
            {
              "Name": "mx",
              "Value": "-10",
              "Type": "double",
              "Dimension": "",
              "Comment": "mouse x coordinate",
              "Domain": "public"
            },
            {
              "Name": "my",
              "Value": "0",
              "Type": "double",
              "Dimension": "",
              "Comment": "mouse y coordinate",
              "Domain": "public"
            },
            {
              "Name": "mxs",
              "Value": "0.0",
              "Type": "double",
              "Dimension": "",
              "Comment": "mx stored",
              "Domain": "public"
            },
            {
              "Name": "xs",
              "Value": "0.0",
              "Type": "double",
              "Dimension": "",
              "Comment": "x stored",
              "Domain": "public"
            },
            {
              "Name": "mode",
              "Value": "\"cm show\"",
              "Type": "String",
              "Dimension": "[1]",
              "Comment": "mode",
              "Domain": "public"
            },
            {
              "Name": "unit",
              "Value": "0.0",
              "Type": "double",
              "Dimension": "",
              "Comment": "unit",
              "Domain": "public"
            },
            {
              "Name": "xp",
              "Value": "0.0",
              "Type": "double",
              "Dimension": "",
              "Comment": "position of red line botttom x coordinate",
              "Domain": "public"
            },
            {
              "Name": "xpt",
              "Value": "0.0",
              "Type": "double",
              "Dimension": "",
              "Comment": "introduce by wee to make top scale pointer",
              "Domain": "public"
            },
            {
              "Name": "out",
              "Value": "0.0",
              "Type": "double",
              "Dimension": "",
              "Comment": "appears to be the integer value measurement in mm 16.76 = 16",
              "Domain": "public"
            },
            {
              "Name": "vs",
              "Value": "0",
              "Type": "int",
              "Dimension": "",
              "Comment": "the interval of the lower scale wee",
              "Domain": "public"
            },
            {
              "Name": "vsid",
              "Value": "0",
              "Type": "int",
              "Dimension": "",
              "Comment": "the interval of the lower scale wee identity",
              "Domain": "public"
            },
            {
              "Name": "vsidarray",
              "Value": "0",
              "Type": "int",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "vss",
              "Value": "0",
              "Type": "int",
              "Dimension": "",
              "Comment": "introduce by wee to draw top pointer out is the same as my vss, it is the top number",
              "Domain": "public"
            },
            {
              "Name": "vssidarray",
              "Value": "0",
              "Type": "int",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "error",
              "Value": "0",
              "Type": "int",
              "Dimension": "",
              "Comment": "error",
              "Domain": "public"
            },
            {
              "Name": "",
              "Value": "",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            }
          ]
        },
        {
          "Name": "VernierScale",
          "Active": "true",
          "Internal": "false",
          "Type": "VARIABLE_EDITOR",
          "PageComment": "",
          "Variables": [
            {
              "Name": "L",
              "Value": "50*dxm+size",
              "Type": "double",
              "Dimension": "",
              "Comment": "length",
              "Domain": "public"
            },
            {
              "Name": "x6",
              "Value": "[x2,x2,x2+size,x2+3*size,x2+L,x2+L]",
              "Type": "double",
              "Dimension": "[6]",
              "Comment": "start from top left corner anticlockwise",
              "Domain": "public"
            },
            {
              "Name": "y6",
              "Value": "[y2,y3,y3+size2,y3/1.7,y3/1.7,y2]",
              "Type": "double",
              "Dimension": "[6]",
              "Comment": "y coordinates start from top left corner anticlockwise",
              "Domain": "public"
            },
            {
              "Name": "xy6",
              "Value": "[[x2,y2],[x2,y3],[x2+size,y3+size2],[x2+3*size,y3/1.7],[x2+L,y3/1.7],[x2+L,y2]]",
              "Type": "double",
              "Dimension": "[6][2]",
              "Comment": "start from top left corner anticlockwise",
              "Domain": "public"
            },
            {
              "Name": "topnutx",
              "Value": "",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "topnuty",
              "Value": "",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "xdrag",
              "Value": "-160+x",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "",
              "Value": "",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            }
          ]
        },
        {
          "Name": "language",
          "Active": "true",
          "Internal": "false",
          "Type": "VARIABLE_EDITOR",
          "PageComment": "unused",
          "Variables": [
            {
              "Name": "cmshow",
              "Value": "false",
              "Type": "boolean",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "l_play",
              "Value": "\"play\"",
              "Type": "String",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "l_pause",
              "Value": "\"pause\"",
              "Type": "String",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "l_reset",
              "Value": "\"reset\"",
              "Type": "String",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "l_init",
              "Value": "\"initialize\"",
              "Type": "String",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "label",
              "Value": "\"play\"",
              "Type": "String",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "l_step",
              "Value": "\"step\"",
              "Type": "String",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "l_unit",
              "Value": "\"\"",
              "Type": "String",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "l_unit2",
              "Value": "\"\"",
              "Type": "String",
              "Dimension": "",
              "Comment": "the smallest unit label",
              "Domain": "public"
            },
            {
              "Name": "show",
              "Value": "",
              "Type": "boolean",
              "Dimension": "",
              "Comment": "show answer checkbox",
              "Domain": "public"
            },
            {
              "Name": "l_x",
              "Value": "\"d= ??? mm\"",
              "Type": "String",
              "Dimension": "",
              "Comment": "label of x",
              "Domain": "public"
            },
            {
              "Name": "showhint",
              "Value": "",
              "Type": "boolean",
              "Dimension": "",
              "Comment": "show hint check box",
              "Domain": "public"
            },
            {
              "Name": "",
              "Value": "",
              "Type": "String",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            }
          ]
        },
        {
          "Name": "numbers",
          "Active": "true",
          "Internal": "false",
          "Type": "VARIABLE_EDITOR",
          "PageComment": "",
          "Variables": [
            {
              "Name": "text2",
              "Value": "",
              "Type": "String",
              "Dimension": "",
              "Comment": "text 2 red hint",
              "Domain": "public"
            },
            {
              "Name": "text2cm",
              "Value": "",
              "Type": "String",
              "Dimension": "",
              "Comment": "text 2 red hint",
              "Domain": "public"
            },
            {
              "Name": "text1",
              "Value": "",
              "Type": "String",
              "Dimension": "",
              "Comment": "text 1 magenta text",
              "Domain": "public"
            },
            {
              "Name": "condition",
              "Value": "0",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "",
              "Value": "",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            }
          ]
        },
        {
          "Name": "topjaw",
          "Active": "true",
          "Internal": "false",
          "Type": "VARIABLE_EDITOR",
          "PageComment": "",
          "Variables": [
            {
              "Name": "topjawpoints",
              "Value": "7",
              "Type": "int",
              "Dimension": "",
              "Comment": "top jaw points",
              "Domain": "public"
            },
            {
              "Name": "x5",
              "Value": "[x2-size/2,x2-size/2,x2,x2,x2-size/2,x2-size*1.5,x2]",
              "Type": "double",
              "Dimension": "[topjawpoints]",
              "Comment": "x coordinates start bottom left",
              "Domain": "public"
            },
            {
              "Name": "y5",
              "Value": "[y1,y1+size/2,y1+size/2,y1+6*size2,y1+5*size2,y1,y1]",
              "Type": "double",
              "Dimension": "[topjawpoints]",
              "Comment": "y coordinates",
              "Domain": "public"
            },
            {
              "Name": "xy5",
              "Value": "[[x2-size/2,y1],[x2-size/2,y1+size/2],[x2,y1+size/2],[x2,y1+6*size2],[x2-size/2,y1+5*size2],[x2-size*1.5,y1],[x2,y1]]",
              "Type": "double",
              "Dimension": "[topjawpoints][2]",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "",
              "Value": "",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            }
          ]
        },
        {
          "Name": "object",
          "Active": "true",
          "Internal": "false",
          "Type": "VARIABLE_EDITOR",
          "PageComment": "",
          "Variables": [
            {
              "Name": "shapetype",
              "Value": "\"RECTANGLE\"",
              "Type": "String",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "roundshapetype",
              "Value": "false",
              "Type": "boolean",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "w",
              "Value": "Math.max(40*Math.random(),10)",
              "Type": "double",
              "Dimension": "",
              "Comment": "width of object",
              "Domain": "public"
            },
            {
              "Name": "oxmin",
              "Value": "x2",
              "Type": "double",
              "Dimension": "",
              "Comment": "oxmin is by guess -135 - width /2 but debug to by x2 corner of lower jaw",
              "Domain": "public"
            },
            {
              "Name": "oxmax",
              "Value": "oxmin+x",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "h",
              "Value": "size*2",
              "Type": "double",
              "Dimension": "",
              "Comment": "height of object",
              "Domain": "public"
            },
            {
              "Name": "y0",
              "Value": "y3-h*1.5",
              "Type": "double",
              "Dimension": "",
              "Comment": "y initial of blue object",
              "Domain": "public"
            },
            {
              "Name": "ox",
              "Value": "oxmin+w/2",
              "Type": "double",
              "Dimension": "",
              "Comment": "object x coordinate",
              "Domain": "public"
            },
            {
              "Name": "oy",
              "Value": "",
              "Type": "double",
              "Dimension": "",
              "Comment": "object y coordinate",
              "Domain": "public"
            },
            {
              "Name": "topone",
              "Value": "",
              "Type": "boolean",
              "Dimension": "",
              "Comment": "topone is the top jaws used",
              "Domain": "public"
            },
            {
              "Name": "botone",
              "Value": "",
              "Type": "boolean",
              "Dimension": "",
              "Comment": "bottom jaws use",
              "Domain": "public"
            },
            {
              "Name": "ratio",
              "Value": "(x2-x1)/60",
              "Type": "double",
              "Dimension": "",
              "Comment": "ratio may be unused",
              "Domain": "public"
            },
            {
              "Name": "value",
              "Value": "(x-x1)/ratio-0.05",
              "Type": "double",
              "Dimension": "",
              "Comment": "value may be unused",
              "Domain": "public"
            },
            {
              "Name": "d",
              "Value": "x1-oxmin+0.65",
              "Type": "double",
              "Dimension": "",
              "Comment": "unused by wee",
              "Domain": "public"
            },
            {
              "Name": "oymax",
              "Value": "y2",
              "Type": "double",
              "Dimension": "",
              "Comment": "debug to be y2 bottom of jaw",
              "Domain": "public"
            },
            {
              "Name": "oymin",
              "Value": "y3",
              "Type": "double",
              "Dimension": "",
              "Comment": "oymin is for the internal jaws lowest point for clearance",
              "Domain": "public"
            },
            {
              "Name": "xdmin",
              "Value": "ox+d+w/2",
              "Type": "double",
              "Dimension": "",
              "Comment": "x distance minimum",
              "Domain": "public"
            },
            {
              "Name": "b",
              "Value": "size*20*Math.random()",
              "Type": "double",
              "Dimension": "",
              "Comment": "is the internal diameter of the green object",
              "Domain": "public"
            },
            {
              "Name": "a",
              "Value": "size",
              "Type": "double",
              "Dimension": "",
              "Comment": "x thickness of the green object",
              "Domain": "public"
            },
            {
              "Name": "n8",
              "Value": "8",
              "Type": "int",
              "Dimension": "",
              "Comment": "number of vertices to draw green object px py",
              "Domain": "public"
            },
            {
              "Name": "x0",
              "Value": "x2-a",
              "Type": "double",
              "Dimension": "",
              "Comment": "coordinate of start of the green object top left corner start",
              "Domain": "public"
            },
            {
              "Name": "ya",
              "Value": "ymax+size*2",
              "Type": "double",
              "Dimension": "",
              "Comment": "y coordinate ",
              "Domain": "public"
            },
            {
              "Name": "yb",
              "Value": "ya-4*size",
              "Type": "double",
              "Dimension": "",
              "Comment": "y coordinate of green object",
              "Domain": "public"
            },
            {
              "Name": "px",
              "Value": "[x0,x0+2*a+b,x0+2*a+b,x0+a+b,x0+a+b,x0+a,x0+a,x0]",
              "Type": "double",
              "Dimension": "[n8]",
              "Comment": "top object start from top left corner anticlockwise",
              "Domain": "public"
            },
            {
              "Name": "py",
              "Value": "[ya,ya,yb,yb,ya-a,ya-a,yb,yb]",
              "Type": "double",
              "Dimension": "[n8]",
              "Comment": "top object start from top left corner anticlockwise",
              "Domain": "public"
            },
            {
              "Name": "pxy",
              "Value": "[[x0,ya],[x0+2*a+b,ya],[x0+2*a+b,yb],[x0+a+b,yb],[x0+a+b,ya-a],[x0+a,ya-a],[x0+a,yb],[x0,yb]]",
              "Type": "double",
              "Dimension": "[n8][2]",
              "Comment": "top object start from top left corner anticlockwise",
              "Domain": "public"
            },
            {
              "Name": "insideinnerjaws",
              "Value": "",
              "Type": "boolean",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "outobject",
              "Value": "",
              "Type": "boolean",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "bottomdragmesizemax",
              "Value": "20",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "bottomdragmesize",
              "Value": "bottomdragmesizemax",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "bottomresizex",
              "Value": "ox+w/2",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "topresizex",
              "Value": "b+(x0+2*a)",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "tailresizex",
              "Value": "xmax+size",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "",
              "Value": "",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            }
          ]
        },
        {
          "Name": "Tail",
          "Active": "true",
          "Internal": "false",
          "Type": "VARIABLE_EDITOR",
          "PageComment": "",
          "Variables": [
            {
              "Name": "increment",
              "Value": "",
              "Type": "double",
              "Dimension": "",
              "Comment": "increment",
              "Domain": "public"
            },
            {
              "Name": "",
              "Value": "",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "",
              "Value": "",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "xt",
              "Value": "[xmax,xmax,xmax-size*2,xmax-size*2,-size*16,-size*16]",
              "Type": "double",
              "Dimension": "[6]",
              "Comment": "start bottom right corner and go anticlockwise",
              "Domain": "public"
            },
            {
              "Name": "yt",
              "Value": "[0,size/2,size/2,size,size,0]",
              "Type": "double",
              "Dimension": "[6]",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "xytail",
              "Value": "[[xmax,0],[xmax,size/2],[xmax-size*2,size/2],[xmax-size*2,size],[-size*16,size],[-size*16,0],[xmax,0]]",
              "Type": "double",
              "Dimension": "[7][2]",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "x4",
              "Value": "xmax/1.5-size",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "y4",
              "Value": "-4*size",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "td",
              "Value": "xmax+((size+30)*Math.random())",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "td2",
              "Value": "td+size",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "h2",
              "Value": "size*1.2",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "oxtail",
              "Value": "[xmax,xmax,xmax+td,xmax+td,xmax,xmax,xmax+td+size,xmax+td+size]",
              "Type": "double",
              "Dimension": "[8]",
              "Comment": "start bottom left  corner and go clockwise",
              "Domain": "public"
            },
            {
              "Name": "oytail",
              "Value": "[y1/2-h2*2,y1/2-h2,y1/2-h2,y1/2+h2,y1/2+h2,y1/2+h2*2,y1/2+h2*2,y1/2-h2*2]",
              "Type": "double",
              "Dimension": "[8]",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "oxytail",
              "Value": "[[xmax,y1/2-h2*2],[xmax,y1/2-h2],[xmax+td,y1/2-h2],[xmax+td,y1/2+h2],[xmax,y1/2+h2],[xmax,y1/2+h2*2],[xmax+td+size,y1/2+h2*2],[xmax+td+size,y1/2-h2*2]]",
              "Type": "double",
              "Dimension": "[8][2]",
              "Comment": "start bottom left  corner and go clockwise",
              "Domain": "public"
            },
            {
              "Name": "xtail",
              "Value": "",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "tdmin",
              "Value": "",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "tail",
              "Value": "",
              "Type": "boolean",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "",
              "Value": "",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            }
          ]
        },
        {
          "Name": "check",
          "Active": "true",
          "Internal": "false",
          "Type": "VARIABLE_EDITOR",
          "PageComment": "",
          "Variables": [
            {
              "Name": "showAnswerFlag",
              "Value": "false",
              "Type": "boolean",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "counter",
              "Value": "0",
              "Type": "int",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "answer",
              "Value": "",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "l_answer",
              "Value": "\"\"",
              "Type": "String",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "l_enterK1f",
              "Value": "\"\"",
              "Type": "String",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "entry",
              "Value": "",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "enterK1f",
              "Value": "0",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "K1fcorrect",
              "Value": "\"\"",
              "Type": "String",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "K1fcorrectbackground",
              "Value": "\"\"",
              "Type": "String",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "background",
              "Value": "",
              "Type": "String",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "",
              "Value": "",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            }
          ]
        },
        {
          "Name": "magnify",
          "Active": "true",
          "Internal": "false",
          "Type": "VARIABLE_EDITOR",
          "PageComment": "",
          "Variables": [
            {
              "Name": "showmagnify",
              "Value": "",
              "Type": "boolean",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "xmagnify",
              "Value": "",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "ymagnify",
              "Value": "",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "factor",
              "Value": "0.8",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "factordrag",
              "Value": "factor*10",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "wmagnify",
              "Value": "100",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "ratiomagnify",
              "Value": "wmagnify/factor",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "",
              "Value": "",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            }
          ]
        },
        {
          "Name": "layout",
          "Active": "true",
          "Internal": "false",
          "Type": "VARIABLE_EDITOR",
          "PageComment": "",
          "Variables": [
            {
              "Name": "selected",
              "Value": "\"shm_with_xo=0,vo=2\"",
              "Type": "String",
              "Dimension": "[1]",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "text",
              "Value": "\"drag the yellow vernier to measure length\"",
              "Type": "String",
              "Dimension": "",
              "Comment": "null",
              "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": "null",
              "Domain": "public"
            },
            {
              "Name": "Width1",
              "Value": "\"100%\"",
              "Type": "String",
              "Dimension": "",
              "Comment": "display width",
              "Domain": "public"
            },
            {
              "Name": "Width2",
              "Value": "\"50%\"",
              "Type": "String",
              "Dimension": "",
              "Comment": "display width",
              "Domain": "public"
            },
            {
              "Name": "world",
              "Value": "true",
              "Type": "boolean",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "graph",
              "Value": "true",
              "Type": "boolean",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "disabledworld",
              "Value": "false",
              "Type": "boolean",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "disabled",
              "Value": "false",
              "Type": "boolean",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "isAndroid",
              "Value": "checkAndroid()",
              "Type": "boolean",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "Android",
              "Value": "/Android|android/i.test(navigator.userAgent)",
              "Type": "boolean",
              "Dimension": "",
              "Comment": "null",
              "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": "iOSapp",
              "Value": "",
              "Type": "boolean",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "Androidapp",
              "Value": "",
              "Type": "boolean",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            }
          ]
        },
        {
          "Name": "clevercodemenu",
          "Active": "true",
          "Internal": "false",
          "Type": "VARIABLE_EDITOR",
          "PageComment": "",
          "Variables": [
            {
              "Name": "",
              "Value": "",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "resultofstringvalue",
              "Value": "",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "resultofstringvalue2",
              "Value": "",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "resultofstringvalue3",
              "Value": "",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "",
              "Value": "",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "resultofstringvaluegame",
              "Value": "",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "resultofstringvaluegame2",
              "Value": "",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "resultofstringvaluegame3",
              "Value": "",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "test",
              "Value": "",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            }
          ]
        },
        {
          "Name": "dragme",
          "Active": "true",
          "Internal": "false",
          "Type": "VARIABLE_EDITOR",
          "PageComment": "",
          "Variables": [
            {
              "Name": "",
              "Value": "",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "dragmex",
              "Value": "size*3",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "dragmexs",
              "Value": "dragmex",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "dragmey",
              "Value": "ymin*3/4",
              "Type": "double",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "dragemetrue",
              "Value": "",
              "Type": "boolean",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            },
            {
              "Name": "dragemetrue2",
              "Value": "",
              "Type": "boolean",
              "Dimension": "",
              "Comment": "null",
              "Domain": "public"
            }
          ]
        }
      ]
    },
    "initialization": {
      "pages": [
        {
          "Name": "drawlowernumbers",
          "Active": "true",
          "Internal": "false",
          "Type": "CODE_EDITOR",
          "Comment": "",
          "Code": "for(var i=0;i<n2t;i++) {\n  // n2t is set to 11 because 01234567890\n  tm2t[i] = i+\"\";\n  //  tm2t[i]=i+\"\";\n  if(i===n2t-1)\n    tm2t[i] = \"0\"; // i think is to draw 0 in place of 10\n}\n\nzeroxm = zerox+error*unit*dxm; // for zero error scale to move when there is zero error"
        },
        {
          "Name": "App",
          "Active": "true",
          "Internal": "false",
          "Type": "CODE_EDITOR",
          "Comment": "",
          "Code": "try { // allow code to run in Student Learning Space \n   iOSapp =  (typeof parent.device != 'undefined' && parent.device.platform == \"iOS\");\n   Androidapp = (typeof parent.device != 'undefined' && parent.device.platform == \"Android\");\n} catch(e) {\n   iOSapp = false;\n   Androidapp = false;\n}"
        },
        {
          "Name": "MEssage",
          "Active": "true",
          "Internal": "false",
          "Type": "CODE_EDITOR",
          "Comment": "",
          "Code": "if (_isMobile){\n  //do nothing\n  }\n  \n  else{\n    // copy this into the initialization\n// make the font bigger\n\n_view.plottingPanel.getMessageDecoration(\"TL\").getFont().setFontSize(\"1vw\");\n_view.plottingPanel.getMessageDecoration(\"TR\").getFont().setFontSize(\"1vw\");\n_view.plottingPanel.getMessageDecoration(\"BL\").getFont().setFontSize(\"1vw\");\n_view.plottingPanel.getMessageDecoration(\"BR\").getFont().setFontSize(\"2vw\");\n    }"
        },
        {
          "Name": "drawupperscale",
          "Active": "true",
          "Internal": "false",
          "Type": "CODE_EDITOR",
          "Comment": "",
          "Code": "for(var i=0;i<nm;i++) {\n  xm[i]=x2+zerox+i*dxm; //Initizlize Tab: xm=x2+zerox+i*dxm; drawing the top scale\n  if(i%10==0) {\n    dym[i]=y1/2;\n    xmt[i/10]=xm[i];  // numbers position\n    tmt[i/10]=i+\"\";    // texts for upper scale\n  } else if(i%5==0)dym[i]=y1/4+size/2;\n  else dym[i]=y1/4;\n}"
        },
        {
          "Name": "mode",
          "Active": "true",
          "Internal": "false",
          "Type": "CODE_EDITOR",
          "Comment": "",
          "Code": "// edit here for starting option cm currently\n\n  dx2=9*dxm/20; // smaller means smaller widrh of vernier scale\n  n2s=21;\n  dycst=0.;\n  nmode=2;\n  L=10*dxm+size; // control length of veriner\n\n  // added by wee for left right button\n  // increment = 0.25718*2;// take 257.16 divide 50 mm divide 10\n  // increment = dxm/10 ;\n  // l_unit=\"0.1mm\";\n  unit=0.1;\n  increment = dxm/(1/unit);\n  cmshow=true;\n\n\nl_unit=unit+\"mm\";\nx6[4]=x6[5]=x2+L;\n\n\n"
        },
        {
          "Name": "mode 2",
          "Active": "true",
          "Internal": "false",
          "Type": "CODE_EDITOR",
          "Comment": "",
          "Code": "var option = _view.comboBox.getProperty(\"SelectedOptions\");  // array of options\nif(option==\"0.02 mm v1\") {\n  dycst=1.;\n  n2s=51;\n  dx2=49*dxm/50;\n  nmode=5;\n  L=50*dxm+size;\n  unit=0.02;\n  increment = dxm/(1/unit);\n  cmshow=false;\n}\nelse if(option==\"0.1 mm v1\") {\n  dycst=0.;\n  n2s=51;\n  dx2=49*dxm/50;\n  nmode=5;\n  L=50*dxm+size;\n  unit=0.1;\n  increment = dxm/(1/unit);\n  cmshow=false;\n}\nelse if(option==\"0.05 mm v1\") {\n  dx2=39*dxm/40*2; // control the spacing of the numbers on lower scale\n  n2s=21; // number of intervals on the lower scale\n  dycst=1.; // dycst=0; no minor ticks. dycst=1; draw minus ticks.\n  nmode=2; // numbers position align with the ticks on lower scale\n  L=40*dxm+size; // control the size of the lower scale in x direction\n  // l_unit=\"0.05mm\";\n  unit=0.05;\n  increment = dxm/(1/unit);\n  cmshow=false;\n}\nelse if(option==\"0.1 mm v2\") {\n  dx2=39*dxm/40*2;\n  n2s=21;\n  dycst=0.;\n  nmode=2;\n  L=40*dxm+size;\n  unit=0.1;\n  increment = dxm/(1/unit);\n  cmshow=false;\n}\nelse if(option==\"0.05 mm v2\") {\n  dx2=19*dxm/20;\n  n2s=21;\n  dycst=1.;\n  nmode=2;\n  L=20*dxm+size;\n  // added by wee for left right button\n  // increment = 0.25718;// take 257.16 divide 50 mm divide 20\n  //  increment = dxm/20 ;\n\n  // l_unit=\"0.05mm\";\n  unit=0.05;\n  increment = dxm/(1/unit);\n  cmshow=false;\n}\nelse if(option==\"0.1 mm v3\") {\n  dx2=19*dxm/20;\n  n2s=21;\n  dycst=0.;\n  nmode=2;\n  L=20*dxm+size;\n\n  // added by wee for left right button\n  // increment = 0.25718*2;// take 257.16 divide 50 mm divide 10\n  // increment = dxm/10 ;\n  // l_unit=\"0.1mm\";\n  unit=0.1;\n  increment = dxm/(1/unit);\n  cmshow=false;\n}\n//lookang adding\nelse if(option==\"0.1 mm v4\") {// added due to request by another version 0.1 mm Vernier constant where 10 divisions of vernier will coincide will 9 divisions of the main scale. {\n  dx2=9*dxm/20; // smaller means smaller widrh of vernier scale\n  n2s=21;\n  dycst=0.;\n  nmode=2;\n  L=10*dxm+size; // control length of veriner\n\n  // added by wee for left right button\n  // increment = 0.25718*2;// take 257.16 divide 50 mm divide 10\n  // increment = dxm/10 ;\n  // l_unit=\"0.1mm\";\n  unit=0.1;\n  increment = dxm/(1/unit);\n  cmshow=false;\n}\nelse if(option==\"cm show\") {// added due to request by another version 0.1 mm Vernier constant where 10 divisions of vernier will coincide will 9 divisions of the main scale. {\n  dx2=9*dxm/20; // smaller means smaller widrh of vernier scale\n  n2s=21;\n  dycst=0.;\n  nmode=2;\n  L=10*dxm+size; // control length of veriner\n\n  // added by wee for left right button\n  // increment = 0.25718*2;// take 257.16 divide 50 mm divide 10\n  // increment = dxm/10 ;\n  // l_unit=\"0.1mm\";\n  unit=0.1;\n  increment = dxm/(1/unit);\n  cmshow=true;\n}\nl_unit=unit+\"mm\";\nx6[4]=x6[5]=x2+L;"
        },
        {
          "Name": "smallestunitshow",
          "Active": "true",
          "Internal": "false",
          "Type": "CODE_EDITOR",
          "Comment": "",
          "Code": "l_unit2=l_unit;\n// to initialize to appear at beginning of simulation start\ntext1 =\"\"+dvalue(parseInt(x/dxm),unit);"
        },
        {
          "Name": "undefined",
          "Active": "true",
          "Internal": "false",
          "Type": "CODE_EDITOR",
          "Comment": "",
          "Code": "if (dragemetrue==undefined){\n  dragemetrue=false;\n  } \n  if (dragemetrue2==undefined){\n  dragemetrue2=false;\n  }\n  \n  \nif (oy==undefined){\n  oy=y0 + 20;\n  }  \n  if (xmagnify==undefined){\n  xmagnify=-50;\n  } \n \n //show\n if (show==undefined){\n  show=true;\n  } \n  if (showhint==undefined){\n  showhint=true;\n  }\n  \n  //objects\n  if (topone==undefined){\n  topone=false;\n  }\n  if (botone==undefined){\n  botone=true;\n  }\n   if (tail==undefined){\n  tail=false;\n  }\n \n"
        },
        {
          "Name": "svg",
          "Active": "true",
          "Internal": "false",
          "Type": "CODE_EDITOR",
          "Comment": "",
          "Code": "var container = document.createElement('div');\nvar svggradient = '<svg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\"><defs>'+\n  '  <radialGradient id=\"mygrandient\" cx=\"50%\" cy=\"50%\" r=\"80%\" fx=\"30%\" fy=\"30%\">'+\n  '    <stop offset=\"0%\" style=\"stop-color:rgb(0,255,255); stop-opacity:1\" />'+\n  '    <stop offset=\"100%\" style=\"stop-color:rgb(0,0,255);stop-opacity:1\" />'+\n  '  </radialGradient>'+\n  '</defs></svg>';\ncontainer.innerHTML = svggradient;\ndocument.body.appendChild(container);\n//\"url(#mygrandient)\"\n\nvar container = document.createElement('div');\nvar svggradient = '<svg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\"><defs>'+\n  '  <radialGradient id=\"mygrandient1\" cx=\"50%\" cy=\"50%\" r=\"80%\" fx=\"30%\" fy=\"30%\">'+\n  '    <stop offset=\"0%\" style=\"stop-color:rgb(255,255,255); stop-opacity:1\" />'+\n  '    <stop offset=\"100%\" style=\"stop-color:rgb(192,192,192);stop-opacity:1\" />'+\n  '  </radialGradient>'+\n  '</defs></svg>';\ncontainer.innerHTML = svggradient;\ndocument.body.appendChild(container);\n//\"url(#mygrandient1)\"\n\nvar container = document.createElement('div');\nvar svggradient = '<svg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\"><defs>'+\n  '  <radialGradient id=\"mygrandient2\" cx=\"50%\" cy=\"50%\" r=\"80%\" fx=\"30%\" fy=\"30%\">'+\n  '    <stop offset=\"0%\" style=\"stop-color:rgb(128,128,128); stop-opacity:1\" />'+\n  '    <stop offset=\"100%\" style=\"stop-color:rgb(0,0,0);stop-opacity:1\" />'+\n  '  </radialGradient>'+\n  '</defs></svg>';\ncontainer.innerHTML = svggradient;\ndocument.body.appendChild(container);\n//\"url(#mygrandient2)\"\n\nvar container = document.createElement('div');\nvar svggradient = '<svg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\"><defs>'+\n  '  <radialGradient id=\"mygrandient3\" cx=\"50%\" cy=\"50%\" r=\"80%\" fx=\"30%\" fy=\"30%\">'+\n  '    <stop offset=\"0%\" style=\"stop-color:rgb(200,220,208); stop-opacity:1\" />'+\n  '    <stop offset=\"100%\" style=\"stop-color:rgb(0,0,0);stop-opacity:1\" />'+\n  '  </radialGradient>'+\n  '</defs></svg>';\ncontainer.innerHTML = svggradient;\ndocument.body.appendChild(container);\n//\"url(#mygrandient3)\" \"rgba(200,220,208,1)\"\n\nvar container = document.createElement('div');\nvar svggradient = '<svg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\"><defs>'+\n  '  <radialGradient id=\"mygrandient4\" cx=\"50%\" cy=\"50%\" r=\"80%\" fx=\"30%\" fy=\"30%\">'+\n  '    <stop offset=\"0%\" style=\"stop-color:rgb(192,192,192); stop-opacity:1\" />'+\n  '    <stop offset=\"100%\" style=\"stop-color:rgb(255,255,255);stop-opacity:1\" />'+\n  '  </radialGradient>'+\n  '</defs></svg>';\ncontainer.innerHTML = svggradient;\ndocument.body.appendChild(container);\n//\"url(#mygrandient4)\" \"rgba(200,220,208,1)\"\n\n// \"url(#mygrandientgolden)\" \nvar container = document.createElement('div');\nvar svggradient = '<svg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\"><defs>'+\n  '  <radialGradient id=\"mygrandientgolden\" cx=\"50%\" cy=\"50%\" r=\"80%\" fx=\"30%\" fy=\"30%\">'+\n  '    <stop offset=\"0%\" style=\"stop-color:rgb(255,255,255); stop-opacity:1\" />'+\n  '    <stop offset=\"100%\" style=\"stop-color:rgb(255,255,0);stop-opacity:0\" />'+\n  '  </radialGradient>'+\n  '</defs></svg>';\ncontainer.innerHTML = svggradient;\ndocument.body.appendChild(container);"
        }
      ]
    },
    "evolution": {
      "information": {
        "FPS": "20",
        "SPD": "1",
        "RealTimeVariable": "",
        "Autoplay": "false"
      },
      "pages": [
        {
          "Name": "Evol Page",
          "Active": "true",
          "Internal": "false",
          "Type": "ODE_EDITOR",
          "Comment": "",
          "IndependentVariable": "t",
          "Increment": "dt",
          "Equations": [
            {
              "state": "x",
              "rate": "vx"
            },
            {
              "state": "xdrag",
              "rate": "vx"
            }
          ],
          "Method": "RungeKutta",
          "AbsoluteTolerance": "0.00001",
          "PreliminaryCode": {
            "Code": "",
            "Comment": "Code to be executed before rate equations are evaluated"
          },
          "EventMaximumStep": "",
          "Events": {
            "pages": [
              {
                "Type": "EVENT_EDITOR",
                "Name": "Event",
                "Active": "true",
                "Internal": "false",
                "EventType": "CROSSING_EVENT",
                "Method": "BISECTION",
                "Iterations": "100",
                "Tolerance": "1.0e-5",
                "StopAtEvent": "true",
                "ZeroCondition": "return x-xmax;",
                "Action": "vx = -1;",
                "Comment": ""
              },
              {
                "Type": "EVENT_EDITOR",
                "Name": "Event 2",
                "Active": "true",
                "Internal": "false",
                "EventType": "CROSSING_EVENT",
                "Method": "BISECTION",
                "Iterations": "100",
                "Tolerance": "1.0e-5",
                "StopAtEvent": "true",
                "ZeroCondition": "return  (ox+w/2)-x;// ox=x2+x-w/2",
                "Action": "vx =1;\n_pause();\n\ntext = \"paused\";\n",
                "Comment": ""
              }
            ]
          },
          "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": []
          }
        }
      ]
    },
    "fixed_relations": {
      "pages": [
        {
          "Name": "object",
          "Active": "true",
          "Internal": "false",
          "Type": "CODE_EDITOR",
          "Comment": "",
          "Code": "\noxmax=oxmin+x;\nbottomresizex = ox+w/2; // sync drag resize added by lookang\n// to check boundary of blue object with the parts of the vernier caliper\nif((ox-w/2>oxmin-20) && (ox+w/2<oxmax+20) && (oy+h/2>oymin))\n  outobject=false;\nelse\n  outobject = true;\n\nif((ox-w/2<=oxmin) && (oy+h/2-oymin)>0) {\n  // check left boundary true\n  ox=oxmin+w/2;\n\n  if((x2+x<=ox+w/2) && (oy>oymin-h/2)) {\n    // check object and jaws to stop motion&& object y above object y minimum\n    x=w;\n    xdrag=-160+x; // added code to force alignment between  x and xdrag used in new implementation\n  }\n}\n\nif(x<0)\n  x=0; // for the 2 jaws to meet at zero\n\n// old code b4 suggest by wolfgang\nelse if((ox>x2+x-w/2) && (oy>oymin-h/2) && (oy<=oymax-h/2)) {\n  // right jaw hit object and inside jaws\n  ox=x2+x-w/2; // to force the blue object into the open jaws\n//  xdrag=-160+x; // added code to force alignment between  x and xdrag used in new implementation\n}\n\nif(oy>=oymax-h/2)\n  oy=oymax-h/2; // check top boundary codes changes to suit lookang thinking\n\n// xdmin=ox+d+w/2; // define with xdmin means\nxdmin=ox+d+w/2; // define with xdmin means\n\nif(botone) {\n  //set bottomdragme object width\n  if (w < bottomdragmesizemax){\n    bottomdragmesize = w;\n  } else {\n    bottomdragmesize = bottomdragmesizemax;\n  }\n}\n\nif(topone) {\n  if(x>=b) {\n    x=b;\n    xdrag=-160+x; // added code to force alignment between  x and xdrag used in new implementation\n    if ((ox>x2+x-w/2) && (oy>oymin-h/2)) {\n      // check blue touch jaw touch green\n      ox=x0+a+b-w/2; // force object x to be fixed just enough like blocked\n    }\n  } // block upper jaw on green object as jaw move\n  pxy[2][0]=pxy[1][0]=px[2]=px[1]=x0+2*a+b; // extreme right corner outer\n  pxy[3][0]=pxy[4][0]=px[3]=px[4]=x0+a+b;  // extreme right corner inner\n}\n\n// for tail hitting the inside depth of the object tube\n// td is initialised to be >xmax.\n// x value should only be set to when td is > xmax\nif(tail) {\n  oxytail[2][0] = oxytail[3][0] = oxtail[2]=oxtail[3]=td; \n  oxytail[6][0] = oxytail[7][0] = oxtail[6]=oxtail[7]=td+size;\n tailresizex= td ; // force sync between td and resizetail \n  if(x>=td-xmax) { \n    x=td-xmax;\n    xdrag=-160+x; // added code to force alignment between  x and xdrag used in new implementation\n  }\n}\n\n"
        },
        {
          "Name": "topscaleneedredrawing",
          "Active": "true",
          "Internal": "false",
          "Type": "CODE_EDITOR",
          "Comment": "",
          "Code": "for(var i=0;i<nm;i++){\n xm[i]=x2+zerox+i*dxm; //Initizlize Tab: xm=x2+zerox+i*dxm; drawing the top scale\n if(i%10==0){\n  dym[i]=y1/2;\n  xmt[i/10]=xm[i];  // numbers position\n// for cm and mm\n if (cmshow==false){\ntmt[i/10]=i+\"\";    // texts for upper scale\n\n}\nelse if (cmshow==true){ // request by techers for cm\ntmt[i/10]=i/10+\"\";    // texts for upper scale\n}\n}else if(i%5==0)dym[i]=y1/4+size/2;\n else dym[i]=y1/4;\n}"
        },
        {
          "Name": "answer",
          "Active": "true",
          "Internal": "false",
          "Type": "CODE_EDITOR",
          "Comment": "",
          "Code": "zero=0;\n//xpt=xm[Math.floor(out+error * unit)]; // new codes by lookang in javascript\nxm2t[0]=x2+x+zeroxm+0*0; // does not work to force lower scale numbers to stick to lower scale\n// for spacings\nfor(var i=0;i<n2s;i++){\n xm2[i]=x2+zeroxm+i*dx2+x; // spacings in lower scale\nif(i%nmode==0){\n   dy2[i]=-y1/4; // inbetween lines shorter \n   xm2t[i/nmode]=xm2[i]; // numbers on lower scale x spacing\n  }\n  else dy2[i]=-y1/8*dycst;\n}\n\n//l_x=_view._format(dvalue(x/dxm,unit),\"0.00\")+\"mm\";//+unit+\":\"; // l_x is the label for the final answer\nanswer = ddvalue(x/dxm,unit); // answer is the double for check\nl_answer= dvalue(x/dxm,unit)+\"\";\n\nif(unit==0.1){\n  // out is the same as my vss, it is the top number\n vs=parseInt(out/unit+0.5)-parseInt(out)*10+error;\n // vs=parseInt((parseInt(out*100)-100*parseInt(out))/(unit*100)+0.5)+error;\n  if(vs>n2s-2-10)vs-=(n2s-1-10); // bug fixed n2s =11 for unit ===0.1\n  else if(vs<0)vs+=(n2s-1-10);\n\n  // adding this code to solve array out of bound error 803\n  // http://www.phy.ntnu.edu.tw/ntnujava/index.php?topic=1183.0 solution discussed\n//  if(vs>-1 && vs<n2t)vsidarray=vs;\n//  else vsidarray=0;// or other valid values.\n\n  // this line is causing array ou of bound error 803\n  xp=xm2t[vs]; // this is the way to determine position of lower scale pointer\n  //xp=xm2t[vsidarray];\n}\n// added by wee to fix bug 0.08 show as 0.05 instead of 0.1\n//out is output answer\n//error*unit is zero error\n//vs is counter of vernier\n\nelse{\n vs=parseInt((parseInt(out*100)-100*parseInt(out))/(unit*100)+0.5)+error; // vs is the counter of number of scale right of 0 for the lower scale\n if(vs>n2s-2)vs-=(n2s-1);\n else if(vs<0)vs+=(n2s-1);\n xp=xm2[vs]; // this is the way to determine position of lower scale pointer\n}\n\nif(vs>51)vs=0; // vs greater 51 than reset to 0 becuase 50 tickers\n\n//hints working\n//xpt is magenta hint\n //xpt=xm[Math.floor(out+error * unit)]; // new codes by lookang in javascript to work for hints without show/answer\n //xpt=xm[parseInt(out+error * unit)];\n xpt=xm[parseInt(answer+error * unit)];\n  text2 = dvalue(vs*unit,unit);\n//  text2cm = dvalue(vs*unit/10,unit);\n  text2cm = (dvalue(vs*unit,unit)/10).toFixed(2);\n\nif(show){\n  l_unit2=l_unit; \n \n  //pointer\n // vss = parseInt((x / dxm + error * unit + 2.0e-2)); // introduce to point to include zero error and debug need + 1.0e-2 for cases where there may be error is calculation\n \n //   vss = parseInt((x / dxm + error * unit )); // introduce to point to include zero error and debug need + 1.0e-2 for cases where there may be error is calculation\n  vss = parseInt((x / dxm + error * unit ));\n  //vss = (int)(x/dxm); // old code without zero error\n // if (vss > -1 && vss < nm) vssidarray = vss;\n // else vssidarray = 0; // or other valid values.\n//  xpt=xm[vss]; // x point\n//   xpt=xm[Math.floor(out+error * unit)]; // new codes by lookang in javascript\n // xpt=xm[vssidarray]; \n // if (!cmshow){\n // text2 = dvalue(vs*unit,unit);\n//  text2cm = dvalue(vs*unit/10,unit);\n//  text2cm = (dvalue(vs*unit,unit)/10).toFixed(2);\n//}\n//else if (cmshow){\n // text2 = dvalue(vs*unit/10,unit);\n // }\n\nif (cmshow==false){\n// l_x=\"d=\" + _view._format(dvalue(parseInt(x/dxm+error * unit),unit),\"0.00\")+ \"+\" +_view._format(vs*unit,\"0.00\")+ \"-(\" + _view._format(dvalue(+error*unit,unit),\"0.00\")+ \") = \" +_view._format(dvalue(x/dxm,unit),\"0.00\")+\"mm\";\nl_x=\"d=\" + _view._format(Math.floor(answer+error*unit),\"0.0\")+ \"+\" +_view._format(vs*unit,\"0.00\")+ \"-(\" + _view._format(dvalue(+error*unit,unit),\"0.00\")+ \") = \" +_view._format(dvalue(x/dxm,unit),\"0.00\")+\"mm\";\n\n}\nelse if (cmshow=true){\n//  l_x=\"d=\" + _view._format(dvalue(parseInt(x/dxm+error * unit),unit)/10,\"0.00\")+ \"+\" +_view._format(vs*unit/10,\"0.00\")+ \"-(\" + _view._format(dvalue(+error*unit,unit)/10,\"0.00\")+ \") = \" +_view._format(dvalue(x/dxm,unit)/10,\"0.00\")+\"cm\";\nl_x=\"d=\" + _view._format(Math.floor(answer+error*unit)/10,\"0.0\")+ \"+\" +_view._format(vs*unit/10,\"0.00\")+ \"-(\" + _view._format(dvalue(+error*unit,unit)/10,\"0.00\")+ \") = \" +_view._format(dvalue(x/dxm,unit)/10,\"0.00\")+\"cm\";\n//\n  }\n\n    \n} // for show\n\nelse {\n  l_x=\"d= ??? mm\";  // added to make the answer show ??? all the time\n} "
        },
        {
          "Name": "checkmm",
          "Active": "true",
          "Internal": "false",
          "Type": "CODE_EDITOR",
          "Comment": "",
          "Code": "\nif (showAnswerFlag===false){ \nK1fcorrect = \"\";\n}\nelse {\n\n//  if(l_answer===l_enterK1f){\n  // mm\n if((l_enterK1f===_view._format(l_answer,\"0.0\"))&&(unit===0.1)&&!cmshow){\n   K1fcorrect = \"Great! You have the right answer!\";\nK1fcorrectbackground = \"rgba(0,255,0,255)\";\n}\n\n//cm and unit =0.1\nelse if((l_enterK1f===_view._format(l_answer/10,\"0.00\"))&&(unit===0.1)&&cmshow){\n//  else if((l_enterK1f*10==l_answer.toFixed(2))&&(unit===0.1)&&cmshow){\n   K1fcorrect = \"Great! You have the right answer!\";\nK1fcorrectbackground = \"rgba(0,255,0,255)\";\n}\n//mm\nelse if((l_enterK1f===_view._format(l_answer,\"0.00\"))&&(unit<0.1)&&!cmshow){\n   K1fcorrect = \"Great! You have the right answer!\";\nK1fcorrectbackground = \"rgba(0,255,0,255)\";\n}\n//cm\nelse if((l_enterK1f===_view._format(l_answer,\"0.00\"))&&(unit<0.1)&&!cmshow){\n   K1fcorrect = \"Great! You have the right answer!\";\nK1fcorrectbackground = \"rgba(0,255,0,255)\";\n}\n\n//wrong dp\n \nelse {\n// if(Math.abs(answer-l_enterK1f)<1.e-7&&!cmshow){// same value but different digits or incorrect format\nif((Math.abs(answer-l_enterK1f)<1.e-7&&!cmshow)||(Math.abs(answer-l_enterK1f*10)<1.e-7&&cmshow)){\n//K1fcorrect = \" Check the number of digits \";\nK1fcorrect = \" Check the number of digits \";\nK1fcorrectbackground = \"rgba(255,200,0,255)\";\n }\n\n else if (!cmshow) {\n\nK1fcorrect = \" Incorrect, Your input is out by \"+ _view._format(answer-l_enterK1f,\"0.00\") + \" mm\";\nK1fcorrectbackground = \"rgba(255,0,0,255)\";\n }\n// else if (cmshow) {\n else  {\n//K1fcorrect = \" Incorrect, Your input is out by \"+ _view._format(answer-l_enterK1f,\"0.0\") ;\nK1fcorrect = \" Incorrect, Your input is out by \"+ (answer/10-l_enterK1f).toFixed(2) + \" cm\";\nK1fcorrectbackground = \"rgba(255,0,0,255)\";\n }\n\n\n\n\n\n\n}\nif(parent.cordova&&counter>0) { // check it is running in Android\n       parent.TTS.speak(K1fcorrect, function () {\n            // success\n        }, function (reason) {\n            // error\n        });\n    }\n    else if (!parent.cordova&&counter>0){\n  var msg2 = new SpeechSynthesisUtterance(K1fcorrect);\nwindow.speechSynthesis.speak(msg2);\n}\ncounter =0; // make speak once\nshowAnswerFlag=false; // set back to false\n\n}\n\n"
        },
        {
          "Name": "magnify",
          "Active": "true",
          "Internal": "false",
          "Type": "CODE_EDITOR",
          "Comment": "",
          "Code": "//xmin = (xmin-0)*zoom;\n//xmax = (xmax-0)*zoom;\n//ymin = (ymin-0)*zoom;\n//ymax =  (ymax-0)*zoom;\nif (showmagnify ===true) // to make magnify enable only after show ==true\n{\n  //xmagnify=xp;\n  ymagnify=0;\n  }\n  else {\n   // xmagnify=0; // shift back to default centre?\n  ymagnify=0;\n    }\nif (xmagnify >xmax*3/4)xmagnify = xmax*3/4; // prevent magnifer from going beyond\nif (xmagnify <xmin*3/4)xmagnify = xmin*3/4;\nif (ymagnify >ymax*3/4)ymagnify = ymax*3/4;\nif (ymagnify <ymin*3/4)ymagnify = ymin*3/4;\n  "
        }
      ]
    },
    "custom": {
      "pages": [
        {
          "Name": "dvalue",
          "Active": "true",
          "Internal": "false",
          "Type": "LIBRARY_EDITOR",
          "Comment": "",
          "Code": "var dv=0;\nfunction dvalue (v,unit) {\n  if(v>0)\n    dv=0.5;\n  else if(v<0)\n     dv=-0.5;\n  else \n    dv=0; // else dv=0.;\n  \n  if (unit===0.1)\n    out=(parseInt(v*10.0+dv, 10)/10.0).toFixed(1);\n  else if (unit===0.02)\n    out=parseInt(v*50.0+dv,10)/50.0; // 50. instead of 50 fix bug of pointer\n  //else if(unit==0.05)out=((int)(v*100.+dv)/5)/20.;\n  else if (unit===0.05)\n    out=parseInt(v*20.0+dv, 10)/20.0; // by hwang to fix bug when 0.08 being read as 0.05 instead of 0.1  if the marking are 0, 0.05 0.1.\n  // if(unit!=0.1 && out*10-parseInt(out*10)===0)return out+\"0\"; //lookang 0 to address 14.00 instead of14.0\n  return out;\n}"
        },
        {
          "Name": "AdsMob",
          "Active": "true",
          "Internal": "false",
          "Type": "LIBRARY_EDITOR",
          "Comment": "",
          "Code": "function showRewardVideo() {\n  const e = new Event(\"click\");\n  try { // allow code to run in browser\n  const element = parent.document.getElementById(\"banner\");\n  element.dispatchEvent(e);\n  } catch(e) {\n   const element = false; \n    }\n }\n function showBannerAd() {\n  const e = new Event(\"click\");\n  try { // allow code to run in browser \n  const element = parent.document.getElementById(\"reward\");\n  element.dispatchEvent(e);\n  } catch(e) {\n   const element = false; \n    }\n }\n function showInterstitialAds() {\n  const e = new Event(\"click\");\n  try { // allow code to run  in browser\n  const element = parent.document.getElementById(\"interstitial\");\n  element.dispatchEvent(e);\n  } catch(e) {\n   const element = false; \n    }\n }"
        },
        {
          "Name": "ddvalue",
          "Active": "true",
          "Internal": "false",
          "Type": "LIBRARY_EDITOR",
          "Comment": "",
          "Code": "var ddv=0.0;\n\nfunction ddvalue (v,unit) {\n  if(v>0)\n    ddv=0.5;\n  else if(v<0)\n    ddv=-0.5;\n  else\n    ddv=0;\n\n  if(unit===0.1)\n    out=parseInt(v*10.0+ddv, 10)/10.0;\n   // alert(out);\n  else if(unit===0.02)\n    out=parseInt(v*50.0+ddv, 10)/50.0;\n  //else if(unit==0.05)out=((int)(v*100.+dv)/5)/20.;\n  else if(unit===0.05)\n    out=parseInt(v*20.0+ddv, 10)/20.0; // by hwang to fix bug when 0.08 being read as 0.05 instead of 0.1  if the marking are 0, 0.05 0.1.\n  if(unit!=0.1 && out*10-parseInt(out*10, 10)===0)\n    return out*1;\n  return out;\n}"
        },
        {
          "Name": "Lib Page",
          "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": "tail_n_depth illustration",
          "Active": "true",
          "Internal": "false",
          "Type": "LIBRARY_EDITOR",
          "Comment": "",
          "Code": "/*\nPosition of xytail = x, y1/2 = 0, ymax*0.7/2 = 0, ((range/2)*0.7)/2 = 0, 35\nInitial Coordinates for xytail: \nxytail[0] = [xmax,0] = range, 0 = 200, 0\nxytail[1] = [xmax,size/2] = range, (range/20)/2 = 200, 5\nxytail[2] = [xmax-size*2,size/2] = range-((range/20) *2), (range/20)/2 = 180, 5\nxytail[3] = [xmax-size*2,size] = range-((range/20) *2), (range/20) = 180, 10\nxytail[4] = [-size*16,size] = -(range/20)*16, (range/20) = -160, 10\nxytail[5] = [-size*16,0] = -(range/20)*16 = -160, 0\n\nPosition of oxytail = 0,0\nInitial Coordinates for oxytail: \noxytail[0] = [xmax,y1/2-h2*2] = range, (ymax*0.7)/2 - (size*1.2)*2  = 200, 35-24 = 200, 9\noxytail[1] = [xmax,y1/2-h2] = range,  (ymax*0.7)/2 - (size*1.2) = 200, 35 - 12 = 200, 23\noxytail[2] = [xmax+td,y1/2-h2] = range+(xmax/2*Math.random()),  (ymax*0.7)/2 - (size*1.2) = range+(range/2*Math.random()), 35 - 12 = 300, 23\noxytail[3] = [xmax+td,y1/2+h2] = range+(xmax/2*Math.random()), (ymax*0.7)/2 + (size*1.2)  = range+(range/2*Math.random()), 35+12 = 300, 47\noxytail[4] = [xmax,y1/2+h2] = range,(ymax*0.7)/2 + (size*1.2)  = 200, 35+12 = 200, 47\noxytail[5] = [xmax,y1/2+h2*2] = range, (ymax*0.7)/2 + (size*1.2)*2  = 200, 35+24  = 200, 59\noxytail[6] = [xmax+td+size,y1/2+h2*2] = range+(xmax/2*Math.random())+(range/20),  (ymax*0.7)/2 + (size*1.2)*2  = range+(range/2*Math.random())+10, 35+24= 310,59\noxytail[7] = [xmax+td+size,y1/2-h2*2] = range+(xmax/2*Math.random())+(range/20), (ymax*0.7)/2 - (size*1.2)*2  = range+(range/2*Math.random())+10, 35-24= 310, 9\n\ntd = xmax+((size+30)*Math.random())\n        \n59                                             5--------------td+size---------6\n                                               |                              |\n47                                             4-------td = <100 --------3    |\n10+35    4------------------------------3                                |    |                                        \n         |                              |                                |    | \n5+35     |            xytail            2------1                         |    | \n         |                                     |                         |    | \n0+35     5-------------------------------------0                         |    |\n23                                             1-------------------------2    |\n                                               |            oxytail           |\n9                                              0------------------------------7\n       -160           0              180      200                       300  310\n                  initial x                   xmax\n                      \nLimits of td is 0 to xmax + xmax\nInitial value of td = (xmax/2)*Math.random = less than 100\n\nxy7\n[xmax,y1],\n[x2+size*1.5,y1]\n[x2+size/2,y1+5*size2]\n[x2,y1+6*size2],\n[x2,y1+size/2],\n[x2+size/2,y1+size/2],\n[x2+size/2,y1],\n[x2,y1],\n[x1,y1],\n[x1,y3/2],\n[x2-size,y3+size/2],\n[x2,y3],[x2,y2-size],\n[x2-size/2,y2-size],\n[x2-size/2,y2],\n[x2,y2],\n[xmax,y2]]\n\nxy6\n[[x2,y2],\n[x2,y3],\n[x2+size,y3+size2],\n[x2+3*size,y3/1.7],\n[x2+L,y3/1.7],\n[x2+L,y2]]\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}"
        },
        {
          "Name": "changeOrentiaition",
          "Active": "true",
          "Internal": "false",
          "Type": "LIBRARY_EDITOR",
          "Comment": "",
          "Code": "// code to be copied to EJSS source code under Custom and used in drawingPanel3D and plottingPanel2D\n// address the problem is height difference is iOS app , epub, and Firefox\n// user need to change only k and kepub\n// copy %changeOrientation()% into the Height Field of drawingPanel3D and plottingPanel2D\nfunction changeOrientation() {\n \nvar k =1 ; // k control height 1 is for full screen, 0.9 shorten etc\nvar kapple =0.95 // control apple app height\nvar kepub =0.95 ;\n// check platform for Apps\ntry { // allow code to run in Student Learning Space \n  var iOSapp =  (typeof parent.device != 'undefined' && parent.device.platform == \"iOS\");\n  var Androidapp = (typeof parent.device != 'undefined' && parent.device.platform == \"Android\");\n} catch(e) {\n  var iOSapp = false;\n  var Androidapp = false;\n}\n// check platform for web browsers\nvar iOS =/iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;\nvar iPad =/iPad/.test(navigator.userAgent) && !window.MSStream;\nvar iPhone = /iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;\nvar Android= /Android|android/i.test(navigator.userAgent);\n\n//navigator\nvar Firefox = navigator.userAgent.indexOf(\"Firefox\") != -1;\n \nswitch (window.orientation) { // using window.orientation as deciding factor\n  case 0:\n  case 180:\n    this.screenOrientation = 'portrait';\n    if (iOSapp){ // does not seems to work\n      \n      return window.screen.height*kapple;  //0.1 for app and 0.1 for nonfullscreenapp  \n    \n    }\n    else if (_isEPub){ // does not seems to work\n      //   return Math.max(window.screen.width,window.screen.height)*0.9;\n      return window.innerHeight*kepub;  //0.1 for app and 0.1 for nonfullscreenapp  \n      // return window.screen.height;\n      //  return window.innerHeight;\n      // return document.documentElement.clientHeight;\n    }\n   \n    else {\n     \n      return 100*k+\"vh\";\n    }\n    break;\n  case 90:\n  case -90:\n    this.screenOrientation = 'landscape';\n \n    if (iOSapp){ // App\n      return window.screen.width*kapple;  \n      // return window.screen.height;\n      //  return window.innerHeight;\n      //  return document.documentElement.clientHeight;\n    }\n    else if (_isEPub){ // does not seems to work\n      //   return Math.max(window.screen.width,window.screen.height)*0.9;\n      return window.innerHeight*kepub;  //0.1 for app and 0.1 for nonfullscreenapp  \n      // return window.screen.height;\n      //  return window.innerHeight;\n      // return document.documentElement.clientHeight;\n    }\n   \n    else {\n      return 100*k+\"vh\";\n      }\n    break;\n  default:\n    this.screenOrientation = 'unknown';\n    //       return (iPad)?\"\"+(window.screen.width+window.screen.height)*0.4:((iPhone)?\"\"+window.screen.width:_view._format(window.innerHeight*0.9,\"0\"));\n     if (Firefox){\n      return window.innerHeight*k;// number as of 20180831 Firefox does not support vh yet so need a separate line to handle\n      }\n      \n      else {\n        return 100*k+\"vh\"; // string every other solid deployment, Android Android App web chrome etc\n       //  works in EjsS_5.3_180131\n        //return window.innerHeight*k;\n}\n\n}\n \n}"
        }
      ]
    },
    "elements": {
      "list": []
    }
  },
  "view": {
    "Tree": [
      {
        "Name": "full",
        "Type": "Panel",
        "Expanded": "true",
        "Properties": [
          {
            "name": "Background",
            "value": "\"Cyan\""
          },
          {
            "name": "Height",
            "value": "\"100%\""
          },
          {
            "name": "Width",
            "value": "\"100%\""
          }
        ],
        "Children": [
          {
            "Name": "panel",
            "Type": "Panel",
            "Expanded": "true",
            "Properties": [
              {
                "name": "CSS",
                "value": "{\n  \"position\" : \"absolute\",\n  \"top\" : \"0%\",\n   \"margin-left\":\"0px\",\n   \"left\":\"0%\"\n}"
              },
              {
                "name": "Height",
                "value": "\"100%\""
              },
              {
                "name": "Width",
                "value": "\"100%\""
              }
            ],
            "Children": [
              {
                "Name": "plottingPanel",
                "Type": "PlottingPanel",
                "Expanded": "true",
                "Properties": [
                  {
                    "name": "Gutters",
                    "value": "[0,0,0,0]"
                  },
                  {
                    "name": "ShowAreaRectangle",
                    "value": "false"
                  },
                  {
                    "name": "ShowCoordinates",
                    "value": "true"
                  },
                  {
                    "name": "EnabledZooming",
                    "value": "true"
                  },
                  {
                    "name": "OnDoubleClick",
                    "value": "_pause();\ntoggleFullScreen();"
                  },
                  {
                    "name": "TRMessage",
                    "value": "%K1fcorrect%"
                  },
                  {
                    "name": "AllowScalingDragging",
                    "value": "true"
                  },
                  {
                    "name": "Height",
                    "value": "%changeOrientation()%"
                  },
                  {
                    "name": "OnPress",
                    "value": "showBannerAd();"
                  },
                  {
                    "name": "GridXShow",
                    "value": "false"
                  },
                  {
                    "name": "Width",
                    "value": "Width1"
                  },
                  {
                    "name": "TLMessage",
                    "value": "_isMobile?\"\":\"Vernier Caliper made in \ud83c\uddf8\ud83c\uddec\""
                  },
                  {
                    "name": "Enabled",
                    "value": "true"
                  },
                  {
                    "name": "Title",
                    "value": "\"Vernier Caliper Model\""
                  },
                  {
                    "name": "MaximumY",
                    "value": "120"
                  },
                  {
                    "name": "OnDrag",
                    "value": "_view.plottingPanel.setProperty(\"MinimumX\",Math.max(_view.plottingPanel.getProperty(\"MinimumX\"),-200));\n_view.plottingPanel.setProperty(\"MaximumX\",Math.min(_view.plottingPanel.getProperty(\"MaximumX\"),250));\n_view.plottingPanel.setProperty(\"MinimumY\",Math.max(_view.plottingPanel.getProperty(\"MinimumY\"),-100));\n_view.plottingPanel.setProperty(\"MaximumY\",Math.min(_view.plottingPanel.getProperty(\"MaximumY\"),100));\n_view.plottingPanel.setZoomLimits([100,450]);"
                  },
                  {
                    "name": "MaximumX",
                    "value": "75"
                  },
                  {
                    "name": "EnabledDragging",
                    "value": "\"ENABLED_X\""
                  },
                  {
                    "name": "GridYShow",
                    "value": "false"
                  },
                  {
                    "name": "MinimumX",
                    "value": "-175"
                  },
                  {
                    "name": "MinimumY",
                    "value": "-100"
                  },
                  {
                    "name": "AutoScaleY",
                    "value": "false"
                  },
                  {
                    "name": "OnZoom",
                    "value": "_view.plottingPanel.setZoomLimits([100,450]);"
                  },
                  {
                    "name": "AutoScaleX",
                    "value": "false"
                  },
                  {
                    "name": "BRMessage",
                    "value": "%l_x%"
                  }
                ],
                "Children": [
                  {
                    "Name": "topnutscrewSVG",
                    "Type": "Shape2D",
                    "Properties": [
                      {
                        "name": "FillColor",
                        "value": "\"url(#mygrandient1)\""
                      },
                      {
                        "name": "SizeX",
                        "value": "size/2"
                      },
                      {
                        "name": "RelativePosition",
                        "value": "\"SOUTH\""
                      },
                      {
                        "name": "ShapeType",
                        "value": "\"RECTANGLE\""
                      },
                      {
                        "name": "X",
                        "value": "x+x2+size*5"
                      },
                      {
                        "name": "Y",
                        "value": "zero+y1"
                      },
                      {
                        "name": "SizeY",
                        "value": "size/2"
                      }
                    ]
                  },
                  {
                    "Name": "topnutSVG",
                    "Type": "Shape2D",
                    "Properties": [
                      {
                        "name": "FillColor",
                        "value": "\"url(#mygrandient1)\""
                      },
                      {
                        "name": "SizeX",
                        "value": "size"
                      },
                      {
                        "name": "ShapeType",
                        "value": "\"ROUND_RECTANGLE\""
                      },
                      {
                        "name": "X",
                        "value": "x+x2+size*5"
                      },
                      {
                        "name": "Y",
                        "value": "zero+y1+size/2"
                      },
                      {
                        "name": "SizeY",
                        "value": "size/2"
                      }
                    ]
                  },
                  {
                    "Name": "tail2",
                    "Type": "Polygon2D",
                    "Properties": [
                      {
                        "name": "FillColor",
                        "value": "\"DarkGray\""
                      },
                      {
                        "name": "Points",
                        "value": "xytail"
                      },
                      {
                        "name": "X",
                        "value": "x"
                      },
                      {
                        "name": "Y",
                        "value": "y1/2"
                      }
                    ]
                  },
                  {
                    "Name": "tail",
                    "Type": "Polygon2D",
                    "Properties": [
                      {
                        "name": "FillColor",
                        "value": "\"url(#mygrandientgolden)\""
                      },
                      {
                        "name": "Points",
                        "value": "xytail"
                      },
                      {
                        "name": "X",
                        "value": "x"
                      },
                      {
                        "name": "Y",
                        "value": "y1/2"
                      }
                    ]
                  },
                  {
                    "Name": "top",
                    "Type": "Group2D",
                    "Expanded": "true",
                    "Properties": [],
                    "Children": [
                      {
                        "Name": "xy71",
                        "Type": "Polygon2D",
                        "Properties": [
                          {
                            "name": "PointsY",
                            "value": "[0,1.712,3.766,50,50,40,40,0]"
                          },
                          {
                            "name": "PointsX",
                            "value": "[0,-2.739,-5.250,-19.63,-1,-1,0,0]"
                          },
                          {
                            "name": "FillColor",
                            "value": "\"Cyan\""
                          },
                          {
                            "name": "LineColor",
                            "value": "\"Black\""
                          },
                          {
                            "name": "X",
                            "value": "-160"
                          },
                          {
                            "name": "Y",
                            "value": "-y1"
                          },
                          {
                            "name": "SizeY",
                            "value": "1.41"
                          },
                          {
                            "name": "LineWidth",
                            "value": "2"
                          }
                        ]
                      },
                      {
                        "Name": "ruler",
                        "Type": "Shape2D",
                        "Properties": [
                          {
                            "name": "FillColor",
                            "value": "\"url(#mygrandient2)\""
                          },
                          {
                            "name": "SizeX",
                            "value": "380"
                          },
                          {
                            "name": "RelativePosition",
                            "value": "\"SOUTH_WEST\""
                          },
                          {
                            "name": "ShapeType",
                            "value": "\"RECTANGLE\""
                          },
                          {
                            "name": "X",
                            "value": "-180"
                          },
                          {
                            "name": "Y",
                            "value": "0"
                          },
                          {
                            "name": "SizeY",
                            "value": "70"
                          }
                        ]
                      },
                      {
                        "Name": "bottomcasing",
                        "Type": "Polygon2D",
                        "Properties": [
                          {
                            "name": "PointsY",
                            "value": "[0,1.712,3.766,50,55 ,55 ,50 ,50 ,50,40,40,0]"
                          },
                          {
                            "name": "PointsX",
                            "value": "[0,-2.739,-5.250,-19.63,-20 ,360.0 ,360 ,1.324 ,-1,-1,0,0]"
                          },
                          {
                            "name": "FillColor",
                            "value": "\"url(#mygrandient3)\""
                          },
                          {
                            "name": "X",
                            "value": "-160"
                          },
                          {
                            "name": "Y",
                            "value": "-y1"
                          },
                          {
                            "name": "SizeY",
                            "value": "1.4"
                          }
                        ]
                      },
                      {
                        "Name": "topcasing",
                        "Type": "Shape2D",
                        "Properties": [
                          {
                            "name": "FillColor",
                            "value": "\"url(#mygrandient3)\""
                          },
                          {
                            "name": "SizeX",
                            "value": "380"
                          },
                          {
                            "name": "RelativePosition",
                            "value": "\"NORTH_WEST\""
                          },
                          {
                            "name": "ShapeType",
                            "value": "\"RECTANGLE\""
                          },
                          {
                            "name": "X",
                            "value": "-180"
                          },
                          {
                            "name": "Y",
                            "value": "70"
                          },
                          {
                            "name": "SizeY",
                            "value": "5*1.41"
                          }
                        ]
                      },
                      {
                        "Name": "xy7smalltipsshapeSVG4",
                        "Type": "Polygon2D",
                        "Properties": [
                          {
                            "name": "PointsY",
                            "value": "[0,1.255,3.5,10,10,0]"
                          },
                          {
                            "name": "PointsX",
                            "value": "[0,-1.2,-3.5,-3.5,0,0]"
                          },
                          {
                            "name": "FillColor",
                            "value": "\"url(#mygrandient4)\" "
                          },
                          {
                            "name": "X",
                            "value": "-160"
                          },
                          {
                            "name": "Y",
                            "value": "-y1"
                          }
                        ]
                      },
                      {
                        "Name": "xy7top",
                        "Type": "Polygon2D",
                        "Properties": [
                          {
                            "name": "PointsY",
                            "value": "[0,-1.201,-3.597,-7.362,-11.24,-26,-26,-25.05,-22.65,-15.46,-13.29,-12.84,0]"
                          },
                          {
                            "name": "PointsX",
                            "value": "[0,2.948,5.800,8.424,9.679,9.679,0,1.921,3.5,3.5,1.693,0,0]"
                          },
                          {
                            "name": "FillColor",
                            "value": "\"url(#mygrandient3)\""
                          },
                          {
                            "name": "SizeX",
                            "value": "1.5"
                          },
                          {
                            "name": "RelativePosition",
                            "value": "\"WEST\""
                          },
                          {
                            "name": "X",
                            "value": "-160"
                          },
                          {
                            "name": "Y",
                            "value": "96"
                          }
                        ]
                      },
                      {
                        "Name": "xy7topsmallpiece",
                        "Type": "Polygon2D",
                        "Properties": [
                          {
                            "name": "PointsY",
                            "value": "[0,-0.725,-2.356,-4.892,-17,-17,-15.5,-13.59,-12.87]"
                          },
                          {
                            "name": "PointsX",
                            "value": "[0.000,1.812,4.530,6.704,7.067,3.5,3.5,1.993,0]"
                          },
                          {
                            "name": "FillColor",
                            "value": "\"LightGray\""
                          },
                          {
                            "name": "SizeX",
                            "value": "1.5"
                          },
                          {
                            "name": "RelativePosition",
                            "value": "\"WEST\""
                          },
                          {
                            "name": "X",
                            "value": "-160"
                          },
                          {
                            "name": "Y",
                            "value": "96"
                          }
                        ]
                      },
                      {
                        "Name": "dragme2",
                        "Type": "Shape2D",
                        "Properties": [
                          {
                            "name": "FillColor",
                            "value": "\"Black\""
                          },
                          {
                            "name": "SizeX",
                            "value": "10"
                          },
                          {
                            "name": "ShapeType",
                            "value": "\"WHEEL\""
                          },
                          {
                            "name": "X",
                            "value": "xm[1]"
                          },
                          {
                            "name": "Y",
                            "value": "dym[0]"
                          },
                          {
                            "name": "SizeY",
                            "value": "10"
                          },
                          {
                            "name": "PixelSize",
                            "value": "true"
                          },
                          {
                            "name": "EnabledPosition",
                            "value": "\"ENABLED_X\""
                          }
                        ]
                      },
                      {
                        "Name": "segmentSet",
                        "Type": "SegmentSet2D",
                        "Properties": [
                          {
                            "name": "NumberOfElements",
                            "value": "nm"
                          },
                          {
                            "name": "SizeX",
                            "value": "zero"
                          },
                          {
                            "name": "X",
                            "value": "xm"
                          },
                          {
                            "name": "LineColor",
                            "value": "\"White\""
                          },
                          {
                            "name": "Y",
                            "value": "y2"
                          },
                          {
                            "name": "SizeY",
                            "value": "dym"
                          },
                          {
                            "name": "LineWidth",
                            "value": "2"
                          }
                        ]
                      },
                      {
                        "Name": "cmshow",
                        "Type": "Text2D",
                        "Properties": [
                          {
                            "name": "FillColor",
                            "value": "\"White\""
                          },
                          {
                            "name": "SizeX",
                            "value": "10"
                          },
                          {
                            "name": "X",
                            "value": "xm[nm-8]"
                          },
                          {
                            "name": "LineColor",
                            "value": "\"White\""
                          },
                          {
                            "name": "Y",
                            "value": "dym[0]"
                          },
                          {
                            "name": "Text",
                            "value": "\"cm \ud83c\uddf8\ud83c\uddec\""
                          },
                          {
                            "name": "Visibility",
                            "value": "cmshow"
                          },
                          {
                            "name": "SizeY",
                            "value": "10"
                          },
                          {
                            "name": "PixelSize",
                            "value": "true"
                          },
                          {
                            "name": "EnabledPosition",
                            "value": "\"ENABLED_X\""
                          },
                          {
                            "name": "Font",
                            "value": "font"
                          }
                        ]
                      },
                      {
                        "Name": "unitLabel",
                        "Type": "Text2D",
                        "Properties": [
                          {
                            "name": "FillColor",
                            "value": "\"White\""
                          },
                          {
                            "name": "SizeX",
                            "value": "10"
                          },
                          {
                            "name": "X",
                            "value": "xm[nm-8]"
                          },
                          {
                            "name": "LineColor",
                            "value": "\"White\""
                          },
                          {
                            "name": "Y",
                            "value": "dym[0]"
                          },
                          {
                            "name": "Text",
                            "value": "\"mm\""
                          },
                          {
                            "name": "Visibility",
                            "value": "!cmshow"
                          },
                          {
                            "name": "SizeY",
                            "value": "10"
                          },
                          {
                            "name": "PixelSize",
                            "value": "true"
                          },
                          {
                            "name": "EnabledPosition",
                            "value": "\"ENABLED_X\""
                          }
                        ]
                      },
                      {
                        "Name": "textSetnumberonmainscale",
                        "Type": "TextSet2D",
                        "Properties": [
                          {
                            "name": "NumberOfElements",
                            "value": "nmt"
                          },
                          {
                            "name": "FillColor",
                            "value": "\"White\""
                          },
                          {
                            "name": "SizeX",
                            "value": "size"
                          },
                          {
                            "name": "RelativePosition",
                            "value": "\"SOUTH\""
                          },
                          {
                            "name": "X",
                            "value": "xmt"
                          },
                          {
                            "name": "Y",
                            "value": "y1/2+size/4"
                          },
                          {
                            "name": "Text",
                            "value": "%tmt%"
                          },
                          {
                            "name": "SizeY",
                            "value": "size"
                          },
                          {
                            "name": "PixelSize",
                            "value": "true"
                          },
                          {
                            "name": "Font",
                            "value": "font"
                          }
                        ]
                      }
                    ]
                  },
                  {
                    "Name": "bottom3",
                    "Type": "Group2D",
                    "Expanded": "true",
                    "Properties": [],
                    "Children": [
                      {
                        "Name": "xdrag",
                        "Type": "Group2D",
                        "Expanded": "true",
                        "Properties": [],
                        "Children": [
                          {
                            "Name": "bottomdrawingSVG2",
                            "Type": "Polygon2D",
                            "Properties": [
                              {
                                "name": "PointsY",
                                "value": "[0,95,95,120,120,60,60,10.86,4.656,1.862]"
                              },
                              {
                                "name": "PointsX",
                                "value": "[0,0,3,3,600,600,43.35,14.18,9.520,4.863]"
                              },
                              {
                                "name": "FillColor",
                                "value": "\"DarkGray\""
                              },
                              {
                                "name": "OnDrag",
                                "value": "dragemetrue2=true;\nx = 160+xdrag;\n//xdrag = -160+x;\nif (xdrag >=  -160+xmax-x2-1) xdrag=  -160+xmax-x2-1;\nif ((xdrag <=  -160)&&(oy<-70)) xdrag=  -160; //object not inside jaws\nif ((xdrag <=  -160+w)&&(oy>-70)) {\n  xdrag=  -160+w; //object inside jaws\n//alert();\n}//if (x >= xmax-x2-1) x= xmax-x2-1;\ny = 0; "
                              },
                              {
                                "name": "Sensitivity",
                                "value": "0"
                              },
                              {
                                "name": "SizeX",
                                "value": "0.4"
                              },
                              {
                                "name": "X",
                                "value": "xdrag"
                              },
                              {
                                "name": "LineColor",
                                "value": "\"Gray\""
                              },
                              {
                                "name": "Y",
                                "value": "-70"
                              },
                              {
                                "name": "OnPress",
                                "value": "x = 160+xdrag;\n//xdrag = -160+x;\nif (xdrag >=  -160+xmax-x2-1) xdrag=  -160+xmax-x2-1;\nif (xdrag <=  -160) xdrag=  -160;\n//if (x >= xmax-x2-1) x= xmax-x2-1;\ny = 0; "
                              },
                              {
                                "name": "SizeY",
                                "value": "0.58"
                              },
                              {
                                "name": "LineWidth",
                                "value": "3"
                              },
                              {
                                "name": "EnabledPosition",
                                "value": "\"ENABLED_X\""
                              }
                            ]
                          },
                          {
                            "Name": "bottomdrawingSVG",
                            "Type": "Polygon2D",
                            "Properties": [
                              {
                                "name": "PointsY",
                                "value": "[0,95,95,120,120,60,60,10.86,4.656,1.862]"
                              },
                              {
                                "name": "PointsX",
                                "value": "[0,0,3,3,600,600,43.35,14.18,9.520,4.863]"
                              },
                              {
                                "name": "FillColor",
                                "value": "\"url(#mygrandientgolden)\""
                              },
                              {
                                "name": "OnDrag",
                                "value": "dragemetrue2=true;\nx = 160+xdrag;\n//xdrag = -160+x;\nif (xdrag >=  -160+xmax-x2-50) { //-50 is offset to keep drawing nice\n  xdrag=  -160+xmax-x2-50;\n  //alert(\"1\");\n  }\nif ((xdrag <=  -160)&&(oy<-70)) xdrag=  -160; //object not inside jaws\nif ((xdrag <=  -160+w)&&(oy>-70)) {\n  xdrag=  -160+w; //object inside jaws\n//alert();\n}//if (x >= xmax-x2-1) x= xmax-x2-1;\ny = 0; \n\n"
                              },
                              {
                                "name": "Sensitivity",
                                "value": "0"
                              },
                              {
                                "name": "SizeX",
                                "value": "0.4"
                              },
                              {
                                "name": "X",
                                "value": "xdrag"
                              },
                              {
                                "name": "LineColor",
                                "value": "\"Gray\""
                              },
                              {
                                "name": "Y",
                                "value": "-70"
                              },
                              {
                                "name": "OnPress",
                                "value": "x = 160+xdrag;\n//xdrag = -160+x;\nif (xdrag >=  -160+xmax-x2-1) xdrag=  -160+xmax-x2-1;\nif (xdrag <=  -160) xdrag=  -160;\n//if (x >= xmax-x2-1) x= xmax-x2-1;\ny = 0; \n\n"
                              },
                              {
                                "name": "SizeY",
                                "value": "0.58"
                              },
                              {
                                "name": "LineWidth",
                                "value": "3"
                              },
                              {
                                "name": "EnabledPosition",
                                "value": "\"ENABLED_X\""
                              }
                            ]
                          }
                        ]
                      },
                      {
                        "Name": "screwSVG3",
                        "Type": "Polygon2D",
                        "Properties": [
                          {
                            "name": "PointsY",
                            "value": "[0.133,0.133,-5.508,-5.195,-9.269,-10.84,-13.97,-12.72,-14.91,-16.79,-16.16,-14.91,-13.34,-14.28,-11.15,-9.895,-5.195,-5.195,-0.180]"
                          },
                          {
                            "name": "PointsX",
                            "value": "[5.564E-2,34.53,34.22,31.71,30.45,31.71,26.07,24.81,20.11,20.43,14.16,14.78,9.457,8.831,3.816,5.070,2.876,0.996,-0.258]"
                          },
                          {
                            "name": "FillColor",
                            "value": "\"url(#mygrandient3)\""
                          },
                          {
                            "name": "X",
                            "value": "x-50"
                          },
                          {
                            "name": "Y",
                            "value": "-35"
                          }
                        ]
                      },
                      {
                        "Name": "xy7smalltipsshape2SVG4",
                        "Type": "Polygon2D",
                        "Properties": [
                          {
                            "name": "PointsY",
                            "value": "[0,1.255,3.5,10,10,0]"
                          },
                          {
                            "name": "PointsX",
                            "value": "[0,1.2,3.5,3.5,0,0]"
                          },
                          {
                            "name": "FillColor",
                            "value": "\"url(#mygrandient1)\""
                          },
                          {
                            "name": "X",
                            "value": "-160+x"
                          },
                          {
                            "name": "Y",
                            "value": "-y1"
                          },
                          {
                            "name": "EnabledPosition",
                            "value": "\"ENABLED_NO_MOVE\""
                          }
                        ]
                      },
                      {
                        "Name": "dragme32",
                        "Type": "Text2D",
                        "Properties": [
                          {
                            "name": "X",
                            "value": "dragmex"
                          },
                          {
                            "name": "Y",
                            "value": "dragmey"
                          },
                          {
                            "name": "Text",
                            "value": "\"drag me\""
                          },
                          {
                            "name": "Visibility",
                            "value": "(dragemetrue2===false)"
                          },
                          {
                            "name": "EnabledPosition",
                            "value": "\"ENABLED_ANY\""
                          }
                        ]
                      },
                      {
                        "Name": "arrowdragme2",
                        "Type": "Arrow2D",
                        "Properties": [
                          {
                            "name": "MarkEnd",
                            "value": "\"ANGLE\""
                          },
                          {
                            "name": "SizeX",
                            "value": "x-dragmex"
                          },
                          {
                            "name": "X",
                            "value": "dragmex"
                          },
                          {
                            "name": "LineColor",
                            "value": "\"Red\""
                          },
                          {
                            "name": "Y",
                            "value": "dragmey"
                          },
                          {
                            "name": "Visibility",
                            "value": "dragemetrue2===false"
                          },
                          {
                            "name": "SizeY",
                            "value": "-size*3-dragmey"
                          },
                          {
                            "name": "LineWidth",
                            "value": "2"
                          },
                          {
                            "name": "Offset",
                            "value": "\"SOUTH_WEST\""
                          }
                        ]
                      },
                      {
                        "Name": "segmentSet2",
                        "Type": "SegmentSet2D",
                        "Properties": [
                          {
                            "name": "NumberOfElements",
                            "value": "n2s"
                          },
                          {
                            "name": "SizeX",
                            "value": "zero"
                          },
                          {
                            "name": "X",
                            "value": "xm2"
                          },
                          {
                            "name": "LineColor",
                            "value": "\"Black\""
                          },
                          {
                            "name": "Y",
                            "value": "y2"
                          },
                          {
                            "name": "SizeY",
                            "value": "dy2"
                          },
                          {
                            "name": "LineWidth",
                            "value": "2"
                          }
                        ]
                      },
                      {
                        "Name": "textSet2",
                        "Type": "TextSet2D",
                        "Properties": [
                          {
                            "name": "NumberOfElements",
                            "value": "n2t"
                          },
                          {
                            "name": "FillColor",
                            "value": "\"Black\""
                          },
                          {
                            "name": "SizeX",
                            "value": "size*2"
                          },
                          {
                            "name": "RelativePosition",
                            "value": "\"NORTH\""
                          },
                          {
                            "name": "X",
                            "value": "xm2t"
                          },
                          {
                            "name": "Y",
                            "value": "-y1/4-size/4"
                          },
                          {
                            "name": "Text",
                            "value": "%tm2t%"
                          },
                          {
                            "name": "SizeY",
                            "value": "size*2"
                          },
                          {
                            "name": "PixelSize",
                            "value": "true"
                          }
                        ]
                      }
                    ]
                  },
                  {
                    "Name": "xy7top22SVG2",
                    "Type": "Polygon2D",
                    "Properties": [
                      {
                        "name": "PointsY",
                        "value": "[0,-1.201,-3.597,-7.362,-11.24,-26,-26,-25.05,-22.65,-15.46,-13.29,-12.84,0]"
                      },
                      {
                        "name": "PointsX",
                        "value": "[0,-2.948,-5.800,-8.424,-9.679,-9.679,-0,-1.921,-3.5,-3.5,-1.693,0,0]"
                      },
                      {
                        "name": "FillColor",
                        "value": "\"Gray\""
                      },
                      {
                        "name": "SizeX",
                        "value": "1.5"
                      },
                      {
                        "name": "RelativePosition",
                        "value": "\"WEST\""
                      },
                      {
                        "name": "X",
                        "value": "-160+x"
                      },
                      {
                        "name": "Y",
                        "value": "96"
                      }
                    ]
                  },
                  {
                    "Name": "xy7top22SVG",
                    "Type": "Polygon2D",
                    "Properties": [
                      {
                        "name": "PointsY",
                        "value": "[0,-1.201,-3.597,-7.362,-11.24,-26,-26,-25.05,-22.65,-15.46,-13.29,-12.84,0]"
                      },
                      {
                        "name": "PointsX",
                        "value": "[0,-2.948,-5.800,-8.424,-9.679,-9.679,-0,-1.921,-3.5,-3.5,-1.693,0,0]"
                      },
                      {
                        "name": "FillColor",
                        "value": "\"url(#mygrandientgolden)\""
                      },
                      {
                        "name": "SizeX",
                        "value": "1.5"
                      },
                      {
                        "name": "RelativePosition",
                        "value": "\"WEST\""
                      },
                      {
                        "name": "X",
                        "value": "-160+x"
                      },
                      {
                        "name": "Y",
                        "value": "96"
                      }
                    ]
                  },
                  {
                    "Name": "xy7topsmallpiece2",
                    "Type": "Polygon2D",
                    "Properties": [
                      {
                        "name": "PointsY",
                        "value": "[0,-0.725,-2.356,-4.892,-17,-17,-15.5,-13.59,-12.87]"
                      },
                      {
                        "name": "PointsX",
                        "value": "[0.000,-1.812,-4.530,-6.704,-7.067,-3.5,-3.5,-1.993,0]"
                      },
                      {
                        "name": "FillColor",
                        "value": "\"url(#mygrandient4)\" "
                      },
                      {
                        "name": "SizeX",
                        "value": "1.5"
                      },
                      {
                        "name": "RelativePosition",
                        "value": "\"WEST\""
                      },
                      {
                        "name": "X",
                        "value": "-160+x"
                      },
                      {
                        "name": "Y",
                        "value": "96"
                      }
                    ]
                  },
                  {
                    "Name": "hintmagentamainscale",
                    "Type": "Group2D",
                    "Expanded": "true",
                    "Properties": [],
                    "Children": [
                      {
                        "Name": "text14cm",
                        "Type": "Text2D",
                        "Properties": [
                          {
                            "name": "FillColor",
                            "value": "\"Cyan\""
                          },
                          {
                            "name": "SizeX",
                            "value": "size*2"
                          },
                          {
                            "name": "RelativePosition",
                            "value": "\"WEST\""
                          },
                          {
                            "name": "X",
                            "value": "xpt"
                          },
                          {
                            "name": "Y",
                            "value": "y2+6*size"
                          },
                          {
                            "name": "Text",
                            "value": "_view._format(Math.floor(answer+error*unit)/10,\"0.0\")"
                          },
                          {
                            "name": "Visibility",
                            "value": "showhint&&cmshow"
                          },
                          {
                            "name": "SizeY",
                            "value": "size*2"
                          },
                          {
                            "name": "PixelSize",
                            "value": "true"
                          }
                        ]
                      },
                      {
                        "Name": "text14mm",
                        "Type": "Text2D",
                        "Properties": [
                          {
                            "name": "FillColor",
                            "value": "\"Cyan\""
                          },
                          {
                            "name": "SizeX",
                            "value": "size*2"
                          },
                          {
                            "name": "RelativePosition",
                            "value": "\"WEST\""
                          },
                          {
                            "name": "X",
                            "value": "xpt"
                          },
                          {
                            "name": "Y",
                            "value": "y2+6*size"
                          },
                          {
                            "name": "Text",
                            "value": "_view._format(Math.floor(answer+error*unit),\"0\")"
                          },
                          {
                            "name": "Visibility",
                            "value": "showhint&&!cmshow"
                          },
                          {
                            "name": "SizeY",
                            "value": "size*2"
                          },
                          {
                            "name": "PixelSize",
                            "value": "true"
                          }
                        ]
                      },
                      {
                        "Name": "arrow2",
                        "Type": "Arrow2D",
                        "Properties": [
                          {
                            "name": "SizeX",
                            "value": "zero"
                          },
                          {
                            "name": "X",
                            "value": "xpt"
                          },
                          {
                            "name": "LineColor",
                            "value": "\"Cyan\""
                          },
                          {
                            "name": "Y",
                            "value": "y2+5*size"
                          },
                          {
                            "name": "Visibility",
                            "value": "showhint"
                          },
                          {
                            "name": "SizeY",
                            "value": "-5*size"
                          },
                          {
                            "name": "LineWidth",
                            "value": "2"
                          }
                        ]
                      }
                    ]
                  },
                  {
                    "Name": "hintred",
                    "Type": "Group2D",
                    "Expanded": "true",
                    "Properties": [],
                    "Children": [
                      {
                        "Name": "arrow",
                        "Type": "Arrow2D",
                        "Properties": [
                          {
                            "name": "SizeX",
                            "value": "zero"
                          },
                          {
                            "name": "X",
                            "value": "xp"
                          },
                          {
                            "name": "LineColor",
                            "value": "\"Red\""
                          },
                          {
                            "name": "Attributes",
                            "value": "{ \"stroke-dasharray\":\"8 8 8 8\" } "
                          },
                          {
                            "name": "Y",
                            "value": "y2-size"
                          },
                          {
                            "name": "Visibility",
                            "value": "showhint"
                          },
                          {
                            "name": "SizeY",
                            "value": "size*6"
                          },
                          {
                            "name": "LineWidth",
                            "value": "2"
                          },
                          {
                            "name": "Offset",
                            "value": "\"NORTH_EAST\""
                          }
                        ]
                      },
                      {
                        "Name": "textmm",
                        "Type": "Text2D",
                        "Properties": [
                          {
                            "name": "FillColor",
                            "value": "\"Red\""
                          },
                          {
                            "name": "SizeX",
                            "value": "size*5"
                          },
                          {
                            "name": "RelativePosition",
                            "value": "\"WEST\""
                          },
                          {
                            "name": "X",
                            "value": "xp"
                          },
                          {
                            "name": "Y",
                            "value": "y2-5*size"
                          },
                          {
                            "name": "Text",
                            "value": "%text2%"
                          },
                          {
                            "name": "Visibility",
                            "value": "showhint&&!cmshow"
                          },
                          {
                            "name": "SizeY",
                            "value": "size*2"
                          },
                          {
                            "name": "PixelSize",
                            "value": "true"
                          }
                        ]
                      },
                      {
                        "Name": "text2cm",
                        "Type": "Text2D",
                        "Properties": [
                          {
                            "name": "FillColor",
                            "value": "\"Red\""
                          },
                          {
                            "name": "SizeX",
                            "value": "size*5"
                          },
                          {
                            "name": "RelativePosition",
                            "value": "\"WEST\""
                          },
                          {
                            "name": "X",
                            "value": "xp"
                          },
                          {
                            "name": "Y",
                            "value": "y2-5*size"
                          },
                          {
                            "name": "Text",
                            "value": "%text2cm%"
                          },
                          {
                            "name": "Visibility",
                            "value": "showhint&&cmshow"
                          },
                          {
                            "name": "SizeY",
                            "value": "size*2"
                          },
                          {
                            "name": "PixelSize",
                            "value": "true"
                          }
                        ]
                      }
                    ]
                  },
                  {
                    "Name": "bottomObjectGroup",
                    "Type": "Group2D",
                    "Expanded": "true",
                    "Properties": [],
                    "Children": [
                      {
                        "Name": "bottomDragme",
                        "Type": "Shape2D",
                        "Properties": [
                          {
                            "name": "SizeX",
                            "value": "bottomdragmesize"
                          },
                          {
                            "name": "ShapeType",
                            "value": "\"RECTANGLE\""
                          },
                          {
                            "name": "X",
                            "value": "ox"
                          },
                          {
                            "name": "LineColor",
                            "value": "\"White\""
                          },
                          {
                            "name": "Y",
                            "value": "oy"
                          },
                          {
                            "name": "Visibility",
                            "value": "botone"
                          },
                          {
                            "name": "PixelSize",
                            "value": "true"
                          },
                          {
                            "name": "SizeY",
                            "value": "bottomdragmesize"
                          },
                          {
                            "name": "DrawFill",
                            "value": "false"
                          },
                          {
                            "name": "EnabledPosition",
                            "value": "\"ENABLED_ANY\""
                          },
                          {
                            "name": "OnDrag",
                            "value": "oxmax=oxmin+x;\nxdrag=-160+x; // added code to force alignment between  x and xdrag used in new implementation\nif(w>x){ // if width of blue object larger than jaws gap\n  if(oy>oymin-h/2)oy=oymin-h/2; // if blue object try to move in the jaws, block it with oy=oymin-h/2\n  outobject=true; // outside object is true \n}else{// object is smaller than the width\n if(outobject){ // if outisde object is true\n   if(ox-w/2>oxmin && ox+w/2<oxmax && oy+h/2>oymin){// move inside\n     outobject=false; // blue object is inside jaws\n   }else{\n     if(ox-w/2<oxmin || ox+w/2>oxmax){ // if blue object is force outwards\n       if(oy+h/2>oymin)oy=oymin-h/2; // if also inside jaws, then block with oy=oymin-h/2\n     }\n   }\n }else{\n  if(oy+h/2<oymin)outobject=true;// move outside again\n  else{\n   if(oy+h/2>oymax)oy=oymax-h/2; // top limit reach, block\n   if(ox-w/2<oxmin)ox=oxmin+w/2; // left limit reach,block\n   else if(ox+w/2>oxmax)ox=oxmax-w/2; //right limit reach, block\n  }\n }  \n}"
                          }
                        ]
                      },
                      {
                        "Name": "bottomObject2",
                        "Type": "Shape2D",
                        "Properties": [
                          {
                            "name": "FillColor",
                            "value": "\"url(#mygrandient)\""
                          },
                          {
                            "name": "Sensitivity",
                            "value": "0"
                          },
                          {
                            "name": "SizeX",
                            "value": "w"
                          },
                          {
                            "name": "ShapeType",
                            "value": "\"RECTANGLE\""
                          },
                          {
                            "name": "X",
                            "value": "ox"
                          },
                          {
                            "name": "OnEnter",
                            "value": "bottomresizex= ox+w/2;"
                          },
                          {
                            "name": "Y",
                            "value": "oy"
                          },
                          {
                            "name": "Visibility",
                            "value": "botone&&roundshapetype==false"
                          },
                          {
                            "name": "SizeY",
                            "value": "h"
                          },
                          {
                            "name": "EnabledPosition",
                            "value": "\"ENABLED_ANY\""
                          },
                          {
                            "name": "OnDrag",
                            "value": "oxmax=oxmin+x;\n\nif(w>x){ // if width of blue object larger than jaws gap\n  if(oy>oymin-h/2)oy=oymin-h/2; // if blue object try to move in the jaws, block it with oy=oymin-h/2\n  outobject=true; // outside object is true \n}else{// object is smaller than the width\n if(outobject){ // if outisde object is true\n   if(ox-w/2>oxmin && ox+w/2<oxmax && oy+h/2>oymin){// move inside\n     outobject=false; // blue object is inside jaws\n   }else{\n     if(ox-w/2<oxmin || ox+w/2>oxmax){ // if blue object is force outwards\n       if(oy+h/2>oymin)oy=oymin-h/2; // if also inside jaws, then block with oy=oymin-h/2\n     }\n   }\n }else{\n  if(oy+h/2<oymin)outobject=true;// move outside again\n  else{\n   if(oy+h/2>oymax)oy=oymax-h/2; // top limit reach, block\n   if(ox-w/2<oxmin)ox=oxmin+w/2; // left limit reach,block\n   else if(ox+w/2>oxmax)ox=oxmax-w/2; //right limit reach, block\n  }\n }  \n}\n\n"
                          }
                        ]
                      },
                      {
                        "Name": "bottomObject",
                        "Type": "Shape2D",
                        "Properties": [
                          {
                            "name": "FillColor",
                            "value": "\"url(#mygrandient)\""
                          },
                          {
                            "name": "Sensitivity",
                            "value": "0"
                          },
                          {
                            "name": "SizeX",
                            "value": "w"
                          },
                          {
                            "name": "ShapeType",
                            "value": "\"ELLIPSE\""
                          },
                          {
                            "name": "X",
                            "value": "ox"
                          },
                          {
                            "name": "OnEnter",
                            "value": "bottomresizex= ox+w/2;"
                          },
                          {
                            "name": "Y",
                            "value": "oy"
                          },
                          {
                            "name": "Visibility",
                            "value": "botone&&roundshapetype"
                          },
                          {
                            "name": "SizeY",
                            "value": "h"
                          },
                          {
                            "name": "EnabledPosition",
                            "value": "\"ENABLED_ANY\""
                          },
                          {
                            "name": "OnDrag",
                            "value": "oxmax=oxmin+x;\n\nif(w>x){ // if width of blue object larger than jaws gap\n  if(oy>oymin-h/2)oy=oymin-h/2; // if blue object try to move in the jaws, block it with oy=oymin-h/2\n  outobject=true; // outside object is true \n}else{// object is smaller than the width\n if(outobject){ // if outisde object is true\n   if(ox-w/2>oxmin && ox+w/2<oxmax && oy+h/2>oymin){// move inside\n     outobject=false; // blue object is inside jaws\n   }else{\n     if(ox-w/2<oxmin || ox+w/2>oxmax){ // if blue object is force outwards\n       if(oy+h/2>oymin)oy=oymin-h/2; // if also inside jaws, then block with oy=oymin-h/2\n     }\n   }\n }else{\n  if(oy+h/2<oymin)outobject=true;// move outside again\n  else{\n   if(oy+h/2>oymax)oy=oymax-h/2; // top limit reach, block\n   if(ox-w/2<oxmin)ox=oxmin+w/2; // left limit reach,block\n   else if(ox+w/2>oxmax)ox=oxmax-w/2; //right limit reach, block\n  }\n }  \n}\n\n"
                          }
                        ]
                      },
                      {
                        "Name": "bottomresize",
                        "Type": "Shape2D",
                        "Properties": [
                          {
                            "name": "SizeX",
                            "value": "bottomdragmesize"
                          },
                          {
                            "name": "ShapeType",
                            "value": "\"RECTANGLE\""
                          },
                          {
                            "name": "X",
                            "value": "bottomresizex"
                          },
                          {
                            "name": "Y",
                            "value": "oy+h/2"
                          },
                          {
                            "name": "Visibility",
                            "value": "botone"
                          },
                          {
                            "name": "PixelSize",
                            "value": "true"
                          },
                          {
                            "name": "SizeY",
                            "value": "bottomdragmesize"
                          },
                          {
                            "name": "DrawFill",
                            "value": "false"
                          },
                          {
                            "name": "EnabledPosition",
                            "value": "\"ENABLED_X\""
                          },
                          {
                            "name": "OnDrag",
                            "value": "dragemetrue=true;\nw = (bottomresizex -ox)*2;\nxdrag=-160+x; // added code to force alignment between  x and xdrag used in new implementation\n\n\nif (roundshapetype==true) h=w; // force height to be same as width"
                          }
                        ]
                      },
                      {
                        "Name": "arrowdragme",
                        "Type": "Arrow2D",
                        "Properties": [
                          {
                            "name": "MarkEnd",
                            "value": "\"ANGLE\""
                          },
                          {
                            "name": "SizeX",
                            "value": "bottomresizex-dragmex"
                          },
                          {
                            "name": "X",
                            "value": "dragmex"
                          },
                          {
                            "name": "LineColor",
                            "value": "\"Red\""
                          },
                          {
                            "name": "Y",
                            "value": "dragmey"
                          },
                          {
                            "name": "Visibility",
                            "value": "dragemetrue===false&&botone"
                          },
                          {
                            "name": "SizeY",
                            "value": "oy+h/2-dragmey"
                          },
                          {
                            "name": "LineWidth",
                            "value": "2"
                          },
                          {
                            "name": "Offset",
                            "value": "\"SOUTH_WEST\""
                          }
                        ]
                      },
                      {
                        "Name": "dragme3",
                        "Type": "Text2D",
                        "Properties": [
                          {
                            "name": "X",
                            "value": "dragmex"
                          },
                          {
                            "name": "Y",
                            "value": "dragmey"
                          },
                          {
                            "name": "Text",
                            "value": "\"drag me\""
                          },
                          {
                            "name": "Visibility",
                            "value": "(dragemetrue===false&&botone)"
                          },
                          {
                            "name": "EnabledPosition",
                            "value": "\"ENABLED_ANY\""
                          }
                        ]
                      }
                    ]
                  },
                  {
                    "Name": "topObject",
                    "Type": "Polygon2D",
                    "Properties": [
                      {
                        "name": "FillColor",
                        "value": "\"Green\""
                      },
                      {
                        "name": "Points",
                        "value": "pxy"
                      },
                      {
                        "name": "Visibility",
                        "value": "topone"
                      }
                    ]
                  },
                  {
                    "Name": "topresize",
                    "Type": "Shape2D",
                    "Properties": [
                      {
                        "name": "FillColor",
                        "value": "\"rgba(0,200,0,1.0)\""
                      },
                      {
                        "name": "SizeX",
                        "value": "bottomdragmesize"
                      },
                      {
                        "name": "ShapeType",
                        "value": "\"RECTANGLE\""
                      },
                      {
                        "name": "X",
                        "value": "topresizex"
                      },
                      {
                        "name": "Y",
                        "value": "yb"
                      },
                      {
                        "name": "Visibility",
                        "value": "topone"
                      },
                      {
                        "name": "PixelSize",
                        "value": "true"
                      },
                      {
                        "name": "SizeY",
                        "value": "bottomdragmesize"
                      },
                      {
                        "name": "DrawFill",
                        "value": "false"
                      },
                      {
                        "name": "EnabledPosition",
                        "value": "\"ENABLED_X\""
                      },
                      {
                        "name": "OnDrag",
                        "value": " b = topresizex-(x0+2*a); \n if(b>1.5*xmax){\n b=ymax;\n topresizex = 1.5*xmax+(x0+2*a);\n  b = topresizex -(x0+2*a);\n  }\nelse if(b<=w){\nb=w;\ntopresizex = w+(x0+2*a);\nb = topresizex-(x0+2*a);\n  }\n  "
                      }
                    ]
                  },
                  {
                    "Name": "tailObject",
                    "Type": "Polygon2D",
                    "Properties": [
                      {
                        "name": "FillColor",
                        "value": "\"Pink\""
                      },
                      {
                        "name": "Points",
                        "value": "oxytail"
                      },
                      {
                        "name": "X",
                        "value": "0"
                      },
                      {
                        "name": "Y",
                        "value": "0"
                      },
                      {
                        "name": "Visibility",
                        "value": "tail"
                      }
                    ]
                  },
                  {
                    "Name": "tailresize",
                    "Type": "Shape2D",
                    "Properties": [
                      {
                        "name": "FillColor",
                        "value": "\"rgba(200,175,175,1.0)\""
                      },
                      {
                        "name": "SizeX",
                        "value": "20"
                      },
                      {
                        "name": "ShapeType",
                        "value": "\"RECTANGLE\""
                      },
                      {
                        "name": "X",
                        "value": "tailresizex"
                      },
                      {
                        "name": "Y",
                        "value": "y1/2-h2"
                      },
                      {
                        "name": "Visibility",
                        "value": "tail"
                      },
                      {
                        "name": "PixelSize",
                        "value": "true"
                      },
                      {
                        "name": "SizeY",
                        "value": "20"
                      },
                      {
                        "name": "EnabledPosition",
                        "value": "\"ENABLED_X\""
                      },
                      {
                        "name": "OnDrag",
                        "value": "if (tailresizex< xmax+size){\n  tailresizex = xmax+size;\n  }\nelse  if (tailresizex> 2*xmax){\n  tailresizex = 2*xmax;\n  }\n  td = tailresizex ;\n oxytail[2][0] = oxytail[3][0] = oxtail[2]=oxtail[3]=td; \noxytail[6][0] = oxytail[7][0] = oxtail[6]=oxtail[7]=td+size;\n\n\n"
                      }
                    ]
                  },
                  {
                    "Name": "answer3",
                    "Type": "Group2D",
                    "Expanded": "true",
                    "Properties": [
                      {
                        "name": "X",
                        "value": "xmagnify"
                      },
                      {
                        "name": "Y",
                        "value": "size*9"
                      }
                    ],
                    "Children": [
                      {
                        "Name": "answer",
                        "Type": "Text2D",
                        "Properties": [
                          {
                            "name": "FillColor",
                            "value": "K1fcorrectbackground"
                          },
                          {
                            "name": "X",
                            "value": "0"
                          },
                          {
                            "name": "Y",
                            "value": "0"
                          },
                          {
                            "name": "Text",
                            "value": "%K1fcorrect%"
                          },
                          {
                            "name": "Font",
                            "value": "\"normal normal 30px \""
                          },
                          {
                            "name": "EnabledPosition",
                            "value": "\"ENABLED_ANY\""
                          }
                        ]
                      }
                    ]
                  },
                  {
                    "Name": "step",
                    "Type": "Group2D",
                    "Expanded": "true",
                    "Properties": [
                      {
                        "name": "X",
                        "value": "xmagnify"
                      },
                      {
                        "name": "Y",
                        "value": "ymagnify"
                      }
                    ],
                    "Children": [
                      {
                        "Name": "arrow22",
                        "Type": "Arrow2D",
                        "Properties": [
                          {
                            "name": "MarkEnd",
                            "value": "\"TRIANGLE\""
                          },
                          {
                            "name": "SizeX",
                            "value": "-20"
                          },
                          {
                            "name": "X",
                            "value": "-10"
                          },
                          {
                            "name": "OnPress",
                            "value": "\nif(x<=0||xdrag<=-160){\nx=0;\nxdrag = -160;\n}\nelse {\nx=x-Math.abs(increment);\nvx=-Math.abs(vx);\n\n}\nxdrag=-160+x; //sync polygon xdrag with x\n_view._update();\n"
                          },
                          {
                            "name": "SizeY",
                            "value": "0"
                          },
                          {
                            "name": "PixelSize",
                            "value": "true"
                          },
                          {
                            "name": "EnabledPosition",
                            "value": "\"ENABLED_NO_MOVE\""
                          }
                        ]
                      },
                      {
                        "Name": "arrow3",
                        "Type": "Arrow2D",
                        "Properties": [
                          {
                            "name": "MarkEnd",
                            "value": "\"TRIANGLE\""
                          },
                          {
                            "name": "SizeX",
                            "value": "20"
                          },
                          {
                            "name": "X",
                            "value": "10"
                          },
                          {
                            "name": "OnPress",
                            "value": "xdrag=-160+x; //sync polygon xdrag with x\nif(x>=xmax-x2){\nx=xmax-x2;\nxdrag=-160+x; //sync polygon xdrag with x\n}\nelse {\nx=x+increment;\nxdrag=-160+x; //sync polygon xdrag with x\n}\nxdrag=-160+x; //sync polygon xdrag with x\n_view._update();\n"
                          },
                          {
                            "name": "SizeY",
                            "value": "0"
                          },
                          {
                            "name": "PixelSize",
                            "value": "true"
                          },
                          {
                            "name": "EnabledPosition",
                            "value": "\"ENABLED_NO_MOVE\""
                          }
                        ]
                      }
                    ]
                  }
                ]
              }
            ]
          },
          {
            "Name": "control",
            "Type": "Panel",
            "Expanded": "true",
            "Properties": [],
            "Children": [
              {
                "Name": "collate",
                "Type": "TwoStateButton",
                "Properties": [
                  {
                    "name": "OffClick",
                    "value": "display = \"none\";\n//_view.inputfield.getStyle().setDisplay(\"none\");\nkheight=0.96;\n//_view.plottingPanel.getGraphics().setHeight(changeOrientation(0.95));"
                  },
                  {
                    "name": "TextOn",
                    "value": "\"\u2630\""
                  },
                  {
                    "name": "CSS",
                    "value": "{\"position\": \"fixed\", \"display\": \"block\", \"top\":\"0px\",\"right\": \"0px\"}"
                  },
                  {
                    "name": "TextOff",
                    "value": "\"\u25c0\""
                  },
                  {
                    "name": "OnClick",
                    "value": "display = \"inline-flex\";\n//_view.inputfield.getStyle().setDisplay(\"inline-flex\");\n//changeOrientation(0.5);\nkheight=0.90;\n//_view.plottingPanel.getGraphics().setHeight(changeOrientation(0.85));\n//_view.plottingPanel.propertyChanged(\"Height\",\"100%\");\n//_view._update();\n"
                  },
                  {
                    "name": "Font",
                    "value": "\"normal normal 3vw \""
                  }
                ]
              },
              {
                "Name": "inputfield",
                "Type": "Panel",
                "Expanded": "true",
                "Properties": [
                  {
                    "name": "CSS",
                    "value": "{\n  \"position\" : \"absolute\",\n  \"top\" : \"0%\",\n   \"margin-right\":\"0px\",\n   \"right\":\"5%\"\n}"
                  },
                  {
                    "name": "Width",
                    "value": "\"95%\""
                  },
                  {
                    "name": "Display",
                    "value": "%display%"
                  }
                ],
                "Children": [
                  {
                    "Name": "comboBox",
                    "Type": "ComboBox",
                    "Properties": [
                      {
                        "name": "Options",
                        "value": "[\"type?\",\"0.02 mm v1\",\"0.1 mm v1\",\"0.05 mm v1\",\"0.1 mm v2\",\"0.05 mm v2\",\"0.1 mm v3\",\"0.1 mm v4\",\"Need a digital version?\",\"Need a cm version?\",\"Need a mm version?\",\"Need a fullscreen version?\"]"
                      },
                      {
                        "name": "Tooltip",
                        "value": "\"select user_defined and drag the mass\""
                      },
                      {
                        "name": "OnChange",
                        "value": "var opts = _view.comboBox.getProperty(\"SelectedOptions\");  // array of options\n    var option = (opts.length > 0)? opts[0]:\"\"; // selected option \n\n\nif(option==\"hint show\") {\n  showhint=true;\n//show=true;\n  }\n  else if(option==\"hint off\") {\n  showhint=false;\n//show=false;\n  }\n  else if(option==\"cm show\") {\n  cmshow=true;\ndx2=9*dxm/20; // smaller means smaller widrh of vernier scale\n  n2s=21;\n  dycst=0.;\n  nmode=2;\n  L=10*dxm+size; // control length of veriner\n\n  // added by wee for left right button\n  // increment = 0.25718*2;// take 257.16 divide 50 mm divide 10\n  // increment = dxm/10 ;\n  // l_unit=\"0.1mm\";\n  unit=0.1;\n  increment = dxm/(1/unit);\n  cmshow=true;\n  }\n   else if(option==\"mm show\") {\n  \n  cmshow=false;\n // alert(cmshow);\n\n  }\n  \n else if(option==\"0.02 mm v1\") {\n  dycst=1.;\n  n2s=51;\n  dx2=49*dxm/50;\n  nmode=5;\n  L=50*dxm+size;\n  unit=0.02;\n  increment = dxm/(1/unit);\n  cmshow=false;\n}\nelse if(option==\"0.1 mm v1\") {\n  dycst=0.;\n  n2s=51;\n  dx2=49*dxm/50;\n  nmode=5;\n  L=50*dxm+size;\n  unit=0.1;\n  increment = dxm/(1/unit);\n  cmshow=false;\n}\nelse if(option==\"0.05 mm v1\") {\n  dx2=39*dxm/40*2; // control the spacing of the numbers on lower scale\n  n2s=21; // number of intervals on the lower scale\n  dycst=1.; // dycst=0; no minor ticks. dycst=1; draw minus ticks.\n  nmode=2; // numbers position align with the ticks on lower scale\n  L=40*dxm+size; // control the size of the lower scale in x direction\n  // l_unit=\"0.05mm\";\n  unit=0.05;\n  increment = dxm/(1/unit);\n  cmshow=false;\n}\nelse if(option==\"0.1 mm v2\") {\n  dx2=39*dxm/40*2;\n  n2s=21;\n  dycst=0.;\n  nmode=2;\n  L=40*dxm+size;\n  unit=0.1;\n  increment = dxm/(1/unit);\n  cmshow=false;\n}\nelse if(option==\"0.05 mm v2\") {\n  dx2=19*dxm/20;\n  n2s=21;\n  dycst=1.;\n  nmode=2;\n  L=20*dxm+size;\n  // added by wee for left right button\n  // increment = 0.25718;// take 257.16 divide 50 mm divide 20\n  //  increment = dxm/20 ;\n\n  // l_unit=\"0.05mm\";\n  unit=0.05;\n  increment = dxm/(1/unit);\n  cmshow=false;\n}\nelse if(option==\"0.1 mm v3\") {\n  dx2=19*dxm/20;\n  n2s=21;\n  dycst=0.;\n  nmode=2;\n  L=20*dxm+size;\n\n  // added by wee for left right button\n  // increment = 0.25718*2;// take 257.16 divide 50 mm divide 10\n  // increment = dxm/10 ;\n  // l_unit=\"0.1mm\";\n  unit=0.1;\n  increment = dxm/(1/unit);\n  cmshow=false;\n}\n//lookang adding\nelse if(option==\"0.1 mm v4\") {// added due to request by another version 0.1 mm Vernier constant where 10 divisions of vernier will coincide will 9 divisions of the main scale. {\n  dx2=9*dxm/20; // smaller means smaller widrh of vernier scale\n  n2s=21;\n  dycst=0.;\n  nmode=2;\n  L=10*dxm+size; // control length of veriner\n\n  // added by wee for left right button\n  // increment = 0.25718*2;// take 257.16 divide 50 mm divide 10\n  // increment = dxm/10 ;\n  // l_unit=\"0.1mm\";\n  unit=0.1;\n  increment = dxm/(1/unit);\n  cmshow=false;\n}\n  else if (option==\"External diameter\"){\n    botone=true;\ntail=false;\ntopone=false;\nroundshapetype=true;\nh=w; // make as circle\n_view.plottingPanel.setProperty(\"MinimumX\",-200);\n_view.plottingPanel.setProperty(\"MaximumX\",250);\n_view.plottingPanel.setProperty(\"MinimumY\",-100);\n_view.plottingPanel.setProperty(\"MaximumY\",100);\n    }\n      else if (option==\"Internal diameter\"){\n    botone=false;\ntail=false;\ntopone=true;\noy=-80 -h/2; // set object lower to prevent inside jaws cases\n_view.plottingPanel.setProperty(\"MinimumX\",-175);\n_view.plottingPanel.setProperty(\"MaximumX\",75);\n_view.plottingPanel.setProperty(\"MinimumY\",-150);\n_view.plottingPanel.setProperty(\"MaximumY\",150);\n\n    }\n      else if (option==\"Depth\"){\n    botone=false;\ntail=true;\ntopone=false;\noy=-80 -h/2; // set object lower to prevent inside jaws cases\n_view.plottingPanel.setProperty(\"MinimumX\",0);\n_view.plottingPanel.setProperty(\"MaximumX\",300);\n_view.plottingPanel.setProperty(\"MinimumY\",-150);\n_view.plottingPanel.setProperty(\"MaximumY\",150);\n    }\n  \n  //\"magnify on\",\"magnify off\"\n  else if(option==\"magnify x1\") {\n \nshowmagnify=true;\nfactor =1;\nratiomagnify=wmagnify/factor;\n  }\n  else if(option==\"magnify x2\") {\n \nshowmagnify=true;\nfactor =2;\nratiomagnify=wmagnify/factor;\n  }\n  else if(option==\"magnify x3\") {\n \nshowmagnify=true;\nfactor =3;\nratiomagnify=wmagnify/factor;\n  }\n  else if(option==\"magnify x4\") {\n \nshowmagnify=true;\nfactor =4;\nratiomagnify=wmagnify/factor;\n  }\n  else if(option==\"magnify x5\") {\n \nshowmagnify=true;\nfactor =5;\nratiomagnify=wmagnify/factor;\n  }\n  else if(option==\"magnify off\") {\n \nshowmagnify=false;\nfactor =1;\nratiomagnify=wmagnify/factor;\n  }\n  else if(option==\"answer show\") {\n \nshow=true;\n  }\n  else if(option==\"answer off\") {\n  \nshow=false;\n  }\n\n else if(option==\"object show\") {\nbotone=true;\ntail=false;\ntopone=false;\nroundshapetype=false;\n_view.plottingPanel.setProperty(\"MinimumX\",-175);\n_view.plottingPanel.setProperty(\"MaximumX\",75);\n_view.plottingPanel.setProperty(\"MinimumY\",-100);\n_view.plottingPanel.setProperty(\"MaximumY\",120);\n }\n else if(option==\"object off\") {\nbotone=false;\ntail=false;\ntopone=false;\n }\n else if(option==\"z err=-5\") {\n error =-5; \n   }\n else if(option==\"z err=-4\") {\n error =-4; \n   }\n   else if(option==\"z err=-3\") {\n error =-3; \n   }\n   else if(option==\"z err=-2\") {\n error =-2; \n   }\n   else if(option==\"z err=-1\") {\n error =-1; \n   }\n   else if(option==\"zero error=0\") {\n error =0; \n   }\n   else if(option==\"z err=5\") {\n error =5; \n   }\n else if(option==\"z err=4\") {\n error =4; \n   }\n   else if(option==\"z err=3\") {\n error =3; \n   }\n   else if(option==\"z err=2\") {\n error =2; \n   }\n   else if(option==\"z err=1\") {\n error =1; \n   }\n\nelse if (option==\"Buy from Shopee\")\n{\n  window.open(\"https://shope.ee/2flTsKNmFN?share_channel_code=1\");\n  }\n //\"Need a cm version?\",\"Need a mm version?\",\"\"Need a fullscreen version?\"\n \n else if (option==\"Need a cm version?\")\n{\n  window.open(\"https://iwant2study.org/ospsg/index.php/interactive-resources/physics/01-measurements/1004-vernierccalipercmversion\");\n  }\n  else if (option==\"Need a mm version?\")\n{\n  window.open(\"https://iwant2study.org/ospsg/index.php/interactive-resources/physics/01-measurements/1003-vernierccalipermmversion\");\n  }\n  else if (option==\"Need a fullscreen version?\")\n{\n  window.open(\"https://iwant2study.org/ospsg/index.php/interactive-resources/physics/01-measurements/5-vernierccaliper\");\n  }\n   else if (option==\"Need a digital version?\")\n{\n  window.open(\"https://iwant2study.org/ospsg/index.php/1187-aaptverniercalipermmdigitalversion\");\n  }\n//_initialize(); // need this for zero error correctly shown\n/*\nif(parent.cordova) { // check it is running in Android\n\n       parent.TTS.speak(option, function () {\n            // success\n        }, function (reason) {\n            // error\n        });\n    }\n    else {\n  var msg = new SpeechSynthesisUtterance(option);\nwindow.speechSynthesis.speak(msg);\n}\n*/\n//_initialize();"
                      },
                      {
                        "name": "Width",
                        "value": "\"15%\""
                      },
                      {
                        "name": "Font",
                        "value": "font"
                      }
                    ]
                  },
                  {
                    "Name": "comboBox2",
                    "Type": "ComboBox",
                    "Properties": [
                      {
                        "name": "Options",
                        "value": "[\"hint show\",\"hint off\",\"answer show\",\"answer off\",\"object show\",\"object off\",\"External diameter\",\"Internal diameter\",\"Depth\"]"
                      },
                      {
                        "name": "Tooltip",
                        "value": "\"select user_defined and drag the mass\""
                      },
                      {
                        "name": "OnChange",
                        "value": "var opts = _view.comboBox2.getProperty(\"SelectedOptions\");  // array of options\n    var option = (opts.length > 0)? opts[0]:\"\"; // selected option \n\n\nif(option==\"hint show\") {\n  showhint=true;\n//show=true;\n  }\n  else if(option==\"hint off\") {\n  showhint=false;\n//show=false;\n  }\n  else if(option==\"cm show\") {\n  cmshow=true;\ndx2=9*dxm/20; // smaller means smaller widrh of vernier scale\n  n2s=21;\n  dycst=0.;\n  nmode=2;\n  L=10*dxm+size; // control length of veriner\n\n  // added by wee for left right button\n  // increment = 0.25718*2;// take 257.16 divide 50 mm divide 10\n  // increment = dxm/10 ;\n  // l_unit=\"0.1mm\";\n  unit=0.1;\n  increment = dxm/(1/unit);\n  cmshow=true;\n  }\n   else if(option==\"mm show\") {\n  \n  cmshow=false;\n // alert(cmshow);\n\n  }\n  \n else if(option==\"0.02 mm v1\") {\n  dycst=1.;\n  n2s=51;\n  dx2=49*dxm/50;\n  nmode=5;\n  L=50*dxm+size;\n  unit=0.02;\n  increment = dxm/(1/unit);\n  cmshow=false;\n}\nelse if(option==\"0.1 mm v1\") {\n  dycst=0.;\n  n2s=51;\n  dx2=49*dxm/50;\n  nmode=5;\n  L=50*dxm+size;\n  unit=0.1;\n  increment = dxm/(1/unit);\n  cmshow=false;\n}\nelse if(option==\"0.05 mm v1\") {\n  dx2=39*dxm/40*2; // control the spacing of the numbers on lower scale\n  n2s=21; // number of intervals on the lower scale\n  dycst=1.; // dycst=0; no minor ticks. dycst=1; draw minus ticks.\n  nmode=2; // numbers position align with the ticks on lower scale\n  L=40*dxm+size; // control the size of the lower scale in x direction\n  // l_unit=\"0.05mm\";\n  unit=0.05;\n  increment = dxm/(1/unit);\n  cmshow=false;\n}\nelse if(option==\"0.1 mm v2\") {\n  dx2=39*dxm/40*2;\n  n2s=21;\n  dycst=0.;\n  nmode=2;\n  L=40*dxm+size;\n  unit=0.1;\n  increment = dxm/(1/unit);\n  cmshow=false;\n}\nelse if(option==\"0.05 mm v2\") {\n  dx2=19*dxm/20;\n  n2s=21;\n  dycst=1.;\n  nmode=2;\n  L=20*dxm+size;\n  // added by wee for left right button\n  // increment = 0.25718;// take 257.16 divide 50 mm divide 20\n  //  increment = dxm/20 ;\n\n  // l_unit=\"0.05mm\";\n  unit=0.05;\n  increment = dxm/(1/unit);\n  cmshow=false;\n}\nelse if(option==\"0.1 mm v3\") {\n  dx2=19*dxm/20;\n  n2s=21;\n  dycst=0.;\n  nmode=2;\n  L=20*dxm+size;\n\n  // added by wee for left right button\n  // increment = 0.25718*2;// take 257.16 divide 50 mm divide 10\n  // increment = dxm/10 ;\n  // l_unit=\"0.1mm\";\n  unit=0.1;\n  increment = dxm/(1/unit);\n  cmshow=false;\n}\n//lookang adding\nelse if(option==\"0.1 mm v4\") {// added due to request by another version 0.1 mm Vernier constant where 10 divisions of vernier will coincide will 9 divisions of the main scale. {\n  dx2=9*dxm/20; // smaller means smaller widrh of vernier scale\n  n2s=21;\n  dycst=0.;\n  nmode=2;\n  L=10*dxm+size; // control length of veriner\n\n  // added by wee for left right button\n  // increment = 0.25718*2;// take 257.16 divide 50 mm divide 10\n  // increment = dxm/10 ;\n  // l_unit=\"0.1mm\";\n  unit=0.1;\n  increment = dxm/(1/unit);\n  cmshow=false;\n}\n  else if (option==\"External diameter\"){\n    botone=true;\ntail=false;\ntopone=false;\nroundshapetype=true;\nh=w; // make as circle\n_view.plottingPanel.setProperty(\"MinimumX\",-175);\n_view.plottingPanel.setProperty(\"MaximumX\",75);\n_view.plottingPanel.setProperty(\"MinimumY\",-100);\n_view.plottingPanel.setProperty(\"MaximumY\",125);\n    }\n      else if (option==\"Internal diameter\"){\n    botone=false;\ntail=false;\ntopone=true;\noy=-80 -h/2; // set object lower to prevent inside jaws cases\n_view.plottingPanel.setProperty(\"MinimumX\",-175);\n_view.plottingPanel.setProperty(\"MaximumX\",75);\n_view.plottingPanel.setProperty(\"MinimumY\",-100);\n_view.plottingPanel.setProperty(\"MaximumY\",150);\n\n    }\n      else if (option==\"Depth\"){\n    botone=false;\ntail=true;\ntopone=false;\noy=-80 -h/2; // set object lower to prevent inside jaws cases\n_view.plottingPanel.setProperty(\"MinimumX\",0);\n_view.plottingPanel.setProperty(\"MaximumX\",300);\n_view.plottingPanel.setProperty(\"MinimumY\",-150);\n_view.plottingPanel.setProperty(\"MaximumY\",150);\n    }\n  \n  //\"magnify on\",\"magnify off\"\n  else if(option==\"magnify x1\") {\n \nshowmagnify=true;\nfactor =1;\nratiomagnify=wmagnify/factor;\n  }\n  else if(option==\"magnify x2\") {\n \nshowmagnify=true;\nfactor =2;\nratiomagnify=wmagnify/factor;\n  }\n  else if(option==\"magnify x3\") {\n \nshowmagnify=true;\nfactor =3;\nratiomagnify=wmagnify/factor;\n  }\n  else if(option==\"magnify x4\") {\n \nshowmagnify=true;\nfactor =4;\nratiomagnify=wmagnify/factor;\n  }\n  else if(option==\"magnify x5\") {\n \nshowmagnify=true;\nfactor =5;\nratiomagnify=wmagnify/factor;\n  }\n  else if(option==\"magnify off\") {\n \nshowmagnify=false;\nfactor =1;\nratiomagnify=wmagnify/factor;\n  }\n  else if(option==\"answer show\") {\n \nshow=true;\n  }\n  else if(option==\"answer off\") {\n  \nshow=false;\n  }\n\n else if(option==\"object show\") {\nbotone=true;\ntail=false;\ntopone=false;\nroundshapetype=false;\n_view.plottingPanel.setProperty(\"MinimumX\",-175);\n_view.plottingPanel.setProperty(\"MaximumX\",75);\n_view.plottingPanel.setProperty(\"MinimumY\",-100);\n_view.plottingPanel.setProperty(\"MaximumY\",120);\n }\n else if(option==\"object off\") {\nbotone=false;\ntail=false;\ntopone=false;\n }\n else if(option==\"z err=-5\") {\n error =-5; \n   }\n else if(option==\"z err=-4\") {\n error =-4; \n   }\n   else if(option==\"z err=-3\") {\n error =-3; \n   }\n   else if(option==\"z err=-2\") {\n error =-2; \n   }\n   else if(option==\"z err=-1\") {\n error =-1; \n   }\n   else if(option==\"zero error=0\") {\n error =0; \n   }\n   else if(option==\"z err=5\") {\n error =5; \n   }\n else if(option==\"z err=4\") {\n error =4; \n   }\n   else if(option==\"z err=3\") {\n error =3; \n   }\n   else if(option==\"z err=2\") {\n error =2; \n   }\n   else if(option==\"z err=1\") {\n error =1; \n   }\n\n\n \n//_initialize(); // need this for zero error correctly shown\n/*\nif(parent.cordova) { // check it is running in Android\n\n       parent.TTS.speak(option, function () {\n            // success\n        }, function (reason) {\n            // error\n        });\n    }\n    else {\n  var msg = new SpeechSynthesisUtterance(option);\nwindow.speechSynthesis.speak(msg);\n}\n*/\n//_initialize();"
                      },
                      {
                        "name": "Width",
                        "value": "\"20%\""
                      },
                      {
                        "name": "Font",
                        "value": "font"
                      }
                    ]
                  },
                  {
                    "Name": "comboBox3",
                    "Type": "ComboBox",
                    "Properties": [
                      {
                        "name": "Options",
                        "value": "[\"zero error=0\",\"z err=-9\",\"z err=-8\",\"z err=-7\",\"z err=-6\",\"z err=-5\",\"z err=-4\",\"z err=-3\",\"z err=-2\",\"z err=-1\",\"\",\"z err=1\",\"z err=2\",\"z err=3\",\"z err=4\",\"z err=5\",\"z err=6\",\"z err=7\",\"z err=8\",\"z err=9\"]"
                      },
                      {
                        "name": "Tooltip",
                        "value": "\"select user_defined and drag the mass\""
                      },
                      {
                        "name": "OnChange",
                        "value": "var opts = _view.comboBox3.getProperty(\"SelectedOptions\");  // array of options\n    var option = (opts.length > 0)? opts[0]:\"\"; // selected option \n\n\nif(option==\"hint show\") {\n  showhint=true;\n//show=true;\n  }\n  else if(option==\"hint off\") {\n  showhint=false;\n//show=false;\n  }\n  else if(option==\"cm show\") {\n  cmshow=true;\ndx2=9*dxm/20; // smaller means smaller widrh of vernier scale\n  n2s=21;\n  dycst=0.;\n  nmode=2;\n  L=10*dxm+size; // control length of veriner\n\n  // added by wee for left right button\n  // increment = 0.25718*2;// take 257.16 divide 50 mm divide 10\n  // increment = dxm/10 ;\n  // l_unit=\"0.1mm\";\n  unit=0.1;\n  increment = dxm/(1/unit);\n  cmshow=true;\n  }\n   else if(option==\"mm show\") {\n  \n  cmshow=false;\n // alert(cmshow);\n\n  }\n  \n else if(option==\"0.02 mm v1\") {\n  dycst=1.;\n  n2s=51;\n  dx2=49*dxm/50;\n  nmode=5;\n  L=50*dxm+size;\n  unit=0.02;\n  increment = dxm/(1/unit);\n  cmshow=false;\n}\nelse if(option==\"0.1 mm v1\") {\n  dycst=0.;\n  n2s=51;\n  dx2=49*dxm/50;\n  nmode=5;\n  L=50*dxm+size;\n  unit=0.1;\n  increment = dxm/(1/unit);\n  cmshow=false;\n}\nelse if(option==\"0.05 mm v1\") {\n  dx2=39*dxm/40*2; // control the spacing of the numbers on lower scale\n  n2s=21; // number of intervals on the lower scale\n  dycst=1.; // dycst=0; no minor ticks. dycst=1; draw minus ticks.\n  nmode=2; // numbers position align with the ticks on lower scale\n  L=40*dxm+size; // control the size of the lower scale in x direction\n  // l_unit=\"0.05mm\";\n  unit=0.05;\n  increment = dxm/(1/unit);\n  cmshow=false;\n}\nelse if(option==\"0.1 mm v2\") {\n  dx2=39*dxm/40*2;\n  n2s=21;\n  dycst=0.;\n  nmode=2;\n  L=40*dxm+size;\n  unit=0.1;\n  increment = dxm/(1/unit);\n  cmshow=false;\n}\nelse if(option==\"0.05 mm v2\") {\n  dx2=19*dxm/20;\n  n2s=21;\n  dycst=1.;\n  nmode=2;\n  L=20*dxm+size;\n  // added by wee for left right button\n  // increment = 0.25718;// take 257.16 divide 50 mm divide 20\n  //  increment = dxm/20 ;\n\n  // l_unit=\"0.05mm\";\n  unit=0.05;\n  increment = dxm/(1/unit);\n  cmshow=false;\n}\nelse if(option==\"0.1 mm v3\") {\n  dx2=19*dxm/20;\n  n2s=21;\n  dycst=0.;\n  nmode=2;\n  L=20*dxm+size;\n\n  // added by wee for left right button\n  // increment = 0.25718*2;// take 257.16 divide 50 mm divide 10\n  // increment = dxm/10 ;\n  // l_unit=\"0.1mm\";\n  unit=0.1;\n  increment = dxm/(1/unit);\n  cmshow=false;\n}\n//lookang adding\nelse if(option==\"0.1 mm v4\") {// added due to request by another version 0.1 mm Vernier constant where 10 divisions of vernier will coincide will 9 divisions of the main scale. {\n  dx2=9*dxm/20; // smaller means smaller widrh of vernier scale\n  n2s=21;\n  dycst=0.;\n  nmode=2;\n  L=10*dxm+size; // control length of veriner\n\n  // added by wee for left right button\n  // increment = 0.25718*2;// take 257.16 divide 50 mm divide 10\n  // increment = dxm/10 ;\n  // l_unit=\"0.1mm\";\n  unit=0.1;\n  increment = dxm/(1/unit);\n  cmshow=false;\n}\n  else if (option==\"External diameter\"){\n    botone=true;\ntail=false;\ntopone=false;\nroundshapetype=true;\nh=w; // make as circle\n_view.plottingPanel.setProperty(\"MinimumX\",-200);\n_view.plottingPanel.setProperty(\"MaximumX\",250);\n_view.plottingPanel.setProperty(\"MinimumY\",-100);\n_view.plottingPanel.setProperty(\"MaximumY\",100);\n    }\n      else if (option==\"Internal diameter\"){\n    botone=false;\ntail=false;\ntopone=true;\noy=-80 -h/2; // set object lower to prevent inside jaws cases\n_view.plottingPanel.setProperty(\"MinimumX\",-175);\n_view.plottingPanel.setProperty(\"MaximumX\",75);\n_view.plottingPanel.setProperty(\"MinimumY\",-150);\n_view.plottingPanel.setProperty(\"MaximumY\",150);\n\n    }\n      else if (option==\"Depth\"){\n    botone=false;\ntail=true;\ntopone=false;\noy=-80 -h/2; // set object lower to prevent inside jaws cases\n_view.plottingPanel.setProperty(\"MinimumX\",0);\n_view.plottingPanel.setProperty(\"MaximumX\",300);\n_view.plottingPanel.setProperty(\"MinimumY\",-150);\n_view.plottingPanel.setProperty(\"MaximumY\",150);\n    }\n  \n  //\"magnify on\",\"magnify off\"\n  else if(option==\"magnify x1\") {\n \nshowmagnify=true;\nfactor =1;\nratiomagnify=wmagnify/factor;\n  }\n  else if(option==\"magnify x2\") {\n \nshowmagnify=true;\nfactor =2;\nratiomagnify=wmagnify/factor;\n  }\n  else if(option==\"magnify x3\") {\n \nshowmagnify=true;\nfactor =3;\nratiomagnify=wmagnify/factor;\n  }\n  else if(option==\"magnify x4\") {\n \nshowmagnify=true;\nfactor =4;\nratiomagnify=wmagnify/factor;\n  }\n  else if(option==\"magnify x5\") {\n \nshowmagnify=true;\nfactor =5;\nratiomagnify=wmagnify/factor;\n  }\n  else if(option==\"magnify off\") {\n \nshowmagnify=false;\nfactor =1;\nratiomagnify=wmagnify/factor;\n  }\n  else if(option==\"answer show\") {\n \nshow=true;\n  }\n  else if(option==\"answer off\") {\n  \nshow=false;\n  }\n\n else if(option==\"object show\") {\nbotone=true;\ntail=false;\ntopone=false;\nroundshapetype=false;\n_view.plottingPanel.setProperty(\"MinimumX\",-175);\n_view.plottingPanel.setProperty(\"MaximumX\",75);\n_view.plottingPanel.setProperty(\"MinimumY\",-100);\n_view.plottingPanel.setProperty(\"MaximumY\",120);\n }\n else if(option==\"object off\") {\nbotone=false;\ntail=false;\ntopone=false;\n }\n else if(option==\"z err=-9\") {\n error =-9; \n   }\n else if(option==\"z err=-8\") {\n error =-8; \n   }\n else if(option==\"z err=-7\") {\n error =-7; \n   }\n else if(option==\"z err=-6\") {\n error =-6; \n   }\n else if(option==\"z err=-5\") {\n error =-5; \n   }\n else if(option==\"z err=-4\") {\n error =-4; \n   }\n   else if(option==\"z err=-3\") {\n error =-3; \n   }\n   else if(option==\"z err=-2\") {\n error =-2; \n   }\n   else if(option==\"z err=-1\") {\n error =-1; \n   }\n   else if(option==\"zero error=0\") {\n error =0; \n   }\n   else if(option==\"z err=9\") {\n error =9; \n   }\n else if(option==\"z err=8\") {\n error =8; \n   }\n else if(option==\"z err=7\") {\n error =7; \n   }\n else if(option==\"z err=6\") {\n error =6; \n   }\n   else if(option==\"z err=5\") {\n error =5; \n   }\n else if(option==\"z err=4\") {\n error =4; \n   }\n   else if(option==\"z err=3\") {\n error =3; \n   }\n   else if(option==\"z err=2\") {\n error =2; \n   }\n   else if(option==\"z err=1\") {\n error =1; \n   }\n\n\n \n_initialize(); // need this for zero error correctly shown\n\n\n/*\nif(parent.cordova) { // check it is running in Android\n\n       parent.TTS.speak(option, function () {\n            // success\n        }, function (reason) {\n            // error\n        });\n    }\n    else {\n  var msg = new SpeechSynthesisUtterance(option);\nwindow.speechSynthesis.speak(msg);\n}\n*/\n//_initialize();"
                      },
                      {
                        "name": "Width",
                        "value": "\"15%\""
                      },
                      {
                        "name": "Font",
                        "value": "font"
                      }
                    ]
                  },
                  {
                    "Name": "playPauseButton",
                    "Type": "TwoStateButton",
                    "Properties": [
                      {
                        "name": "OffClick",
                        "value": "text=\"paused\";\n_pause();"
                      },
                      {
                        "name": "TextOn",
                        "value": "\"\u25ba\""
                      },
                      {
                        "name": "State",
                        "value": "_isPaused"
                      },
                      {
                        "name": "Tooltip",
                        "value": "\"Play/Pause\""
                      },
                      {
                        "name": "TextOff",
                        "value": "\"||\""
                      },
                      {
                        "name": "OnClick",
                        "value": "_play();\ntext=\"playing\";"
                      },
                      {
                        "name": "Width",
                        "value": "\"10%\""
                      },
                      {
                        "name": "Font",
                        "value": "font"
                      },
                      {
                        "name": "Display",
                        "value": "\"inline-block\""
                      }
                    ]
                  },
                  {
                    "Name": "resetButtonAdsMob",
                    "Type": "Button",
                    "Properties": [
                      {
                        "name": "Tooltip",
                        "value": "\"Watch an Ads to support the development. Thank you!\""
                      },
                      {
                        "name": "Text",
                        "value": "\"\ud83c\udfa5\ud83d\udc4dAds\u21bb\""
                      },
                      {
                        "name": "Width",
                        "value": "\"10%\""
                      },
                      {
                        "name": "OnClick",
                        "value": "showBannerAd();\nif (Math.random()<0.5){\nshowInterstitialAds();\n}\nelse{\n\nshowRewardVideo();\n}\n_reset();\n"
                      },
                      {
                        "name": "Font",
                        "value": "font"
                      },
                      {
                        "name": "Display",
                        "value": "(iOSapp||Androidapp)?\"inline-block\":\"none\""
                      }
                    ]
                  },
                  {
                    "Name": "resetButton",
                    "Type": "Button",
                    "Properties": [
                      {
                        "name": "Text",
                        "value": "\"\u21bb\""
                      },
                      {
                        "name": "Width",
                        "value": "\"10%\""
                      },
                      {
                        "name": "OnClick",
                        "value": "//showBannerAd();\n_reset();\n"
                      },
                      {
                        "name": "Font",
                        "value": "font"
                      }
                    ]
                  },
                  {
                    "Name": "answer2",
                    "Type": "Label",
                    "Properties": [
                      {
                        "name": "Background",
                        "value": "K1fcorrectbackground"
                      },
                      {
                        "name": "Text",
                        "value": "\"?=\""
                      },
                      {
                        "name": "OnClick",
                        "value": "if (inputdropmenu==true){\n  inputdropmenu=false;\n  }\n  else if (inputdropmenu==false){\n  inputdropmenu=true;\n  }"
                      },
                      {
                        "name": "Width",
                        "value": "\"10%\""
                      },
                      {
                        "name": "Font",
                        "value": "font"
                      }
                    ]
                  },
                  {
                    "Name": "cm",
                    "Type": "ComboBox",
                    "Properties": [
                      {
                        "name": "Options",
                        "value": "[\"0.00\",\"0.01\",\"0.02\",\"0.03\",\"0.04\",\"0.05\",\"0.06\",\"0.07\",\"0.08\",\"0.09\",\"0.10\",\"0.11\",\"0.12\",\"0.13\",\"0.14\",\"0.15\",\"0.16\",\"0.17\",\"0.18\",\"0.19\",\"0.20\",\"0.21\",\"0.22\",\"0.23\",\"0.24\",\"0.25\",\"0.26\",\"0.27\",\"0.28\",\"0.29\",\"0.30\",\"0.31\",\"0.32\",\"0.33\",\"0.34\",\"0.35\",\"0.36\",\"0.37\",\"0.38\",\"0.39\",\"0.40\",\"0.41\",\"0.42\",\"0.43\",\"0.44\",\"0.45\",\"0.46\",\"0.47\",\"0.48\",\"0.49\",\"0.50\",\"0.51\",\"0.52\",\"0.53\",\"0.54\",\"0.55\",\"0.56\",\"0.57\",\"0.58\",\"0.59\",\"0.60\",\"0.61\",\"0.62\",\"0.63\",\"0.64\",\"0.65\",\"0.66\",\"0.67\",\"0.68\",\"0.69\",\"0.70\",\"0.71\",\"0.72\",\"0.73\",\"0.74\",\"0.75\",\"0.76\",\"0.77\",\"0.78\",\"0.79\",\"0.80\",\"0.81\",\"0.82\",\"0.83\",\"0.84\",\"0.85\",\"0.86\",\"0.87\",\"0.88\",\"0.89\",\"0.90\",\"0.91\",\"0.92\",\"0.93\",\"0.94\",\"0.95\",\"0.96\",\"0.97\",\"0.98\",\"0.99\",\"1.00\",\"1.01\",\"1.02\",\"1.03\",\"1.04\",\"1.05\",\"1.06\",\"1.07\",\"1.08\",\"1.09\",\"1.10\",\"1.11\",\"1.12\",\"1.13\",\"1.14\",\"1.15\",\"1.16\",\"1.17\",\"1.18\",\"1.19\",\"1.20\",\"1.21\",\"1.22\",\"1.23\",\"1.24\",\"1.25\",\"1.26\",\"1.27\",\"1.28\",\"1.29\",\"1.30\",\"1.31\",\"1.32\",\"1.33\",\"1.34\",\"1.35\",\"1.36\",\"1.37\",\"1.38\",\"1.39\",\"1.40\",\"1.41\",\"1.42\",\"1.43\",\"1.44\",\"1.45\",\"1.46\",\"1.47\",\"1.48\",\"1.49\",\"1.50\",\"1.51\",\"1.52\",\"1.53\",\"1.54\",\"1.55\",\"1.56\",\"1.57\",\"1.58\",\"1.59\",\"1.60\",\"1.61\",\"1.62\",\"1.63\",\"1.64\",\"1.65\",\"1.66\",\"1.67\",\"1.68\",\"1.69\",\"1.70\",\"1.71\",\"1.72\",\"1.73\",\"1.74\",\"1.75\",\"1.76\",\"1.77\",\"1.78\",\"1.79\",\"1.80\",\"1.81\",\"1.82\",\"1.83\",\"1.84\",\"1.85\",\"1.86\",\"1.87\",\"1.88\",\"1.89\",\"1.90\",\"1.91\",\"1.92\",\"1.93\",\"1.94\",\"1.95\",\"1.96\",\"1.97\",\"1.98\",\"1.99\",\"2.00\",\"2.01\",\"2.02\",\"2.03\",\"2.04\",\"2.05\",\"2.06\",\"2.07\",\"2.08\",\"2.09\",\"2.10\",\"2.11\",\"2.12\",\"2.13\",\"2.14\",\"2.15\",\"2.16\",\"2.17\",\"2.18\",\"2.19\",\"2.20\",\"2.21\",\"2.22\",\"2.23\",\"2.24\",\"2.25\",\"2.26\",\"2.27\",\"2.28\",\"2.29\",\"2.30\",\"2.31\",\"2.32\",\"2.33\",\"2.34\",\"2.35\",\"2.36\",\"2.37\",\"2.38\",\"2.39\",\"2.40\",\"2.41\",\"2.42\",\"2.43\",\"2.44\",\"2.45\",\"2.46\",\"2.47\",\"2.48\",\"2.49\",\"2.50\",\"2.51\",\"2.52\",\"2.53\",\"2.54\",\"2.55\",\"2.56\",\"2.57\",\"2.58\",\"2.59\",\"2.60\",\"2.61\",\"2.62\",\"2.63\",\"2.64\",\"2.65\",\"2.66\",\"2.67\",\"2.68\",\"2.69\",\"2.70\",\"2.71\",\"2.72\",\"2.73\",\"2.74\",\"2.75\",\"2.76\",\"2.77\",\"2.78\",\"2.79\",\"2.80\",\"2.81\",\"2.82\",\"2.83\",\"2.84\",\"2.85\",\"2.86\",\"2.87\",\"2.88\",\"2.89\",\"2.90\",\"2.91\",\"2.92\",\"2.93\",\"2.94\",\"2.95\",\"2.96\",\"2.97\",\"2.98\",\"2.99\"   ,\"3.00\",\"3.01\",\"3.02\",\"3.03\",\"3.04\",\"3.05\",\"3.06\",\"3.07\",\"3.08\",\"3.09\",\"3.10\",\"3.11\",\"3.12\",\"3.13\",\"3.14\",\"3.15\",\"3.16\",\"3.17\",\"3.18\",\"3.19\",\"3.20\",\"3.21\",\"3.22\",\"3.23\",\"3.24\",\"3.25\",\"3.26\",\"3.27\",\"3.28\",\"3.29\",\"3.30\",\"3.31\",\"3.32\",\"3.33\",\"3.34\",\"3.35\",\"3.36\",\"3.37\",\"3.38\",\"3.39\",\"3.40\",\"3.41\",\"3.42\",\"3.43\",\"3.44\",\"3.45\",\"3.46\",\"3.47\",\"3.48\",\"3.49\",\"3.50\",\"3.51\",\"3.52\",\"3.53\",\"3.54\",\"3.55\",\"3.56\",\"3.57\",\"3.58\",\"3.59\",\"3.60\",\"3.61\",\"3.62\",\"3.63\",\"3.64\",\"3.65\",\"3.66\",\"3.67\",\"3.68\",\"3.69\",\"3.70\",\"3.71\",\"3.72\",\"3.73\",\"3.74\",\"3.75\",\"3.76\",\"3.77\",\"3.78\",\"3.79\",\"3.80\",\"3.81\",\"3.82\",\"3.83\",\"3.84\",\"3.85\",\"3.86\",\"3.87\",\"3.88\",\"3.89\",\"3.90\",\"3.91\",\"3.92\",\"3.93\",\"3.94\",\"3.95\",\"3.96\",\"3.97\",\"3.98\",\"3.99\",\"4.00\",\"4.01\",\"4.02\",\"4.03\",\"4.04\",\"4.05\",\"4.06\",\"4.07\",\"4.08\",\"4.09\",\"4.10\",\"4.11\",\"4.12\",\"4.13\",\"4.14\",\"4.15\",\"4.16\",\"4.17\",\"4.18\",\"4.19\",\"4.20\",\"4.21\",\"4.22\",\"4.23\",\"4.24\",\"4.25\",\"4.26\",\"4.27\",\"4.28\",\"4.29\",\"4.30\",\"4.31\",\"4.32\",\"4.33\",\"4.34\",\"4.35\",\"4.36\",\"4.37\",\"4.38\",\"4.39\",\"4.40\",\"4.41\",\"4.42\",\"4.43\",\"4.44\",\"4.45\",\"4.46\",\"4.47\",\"4.48\",\"4.49\",\"4.50\",\"4.51\",\"4.52\",\"4.53\",\"4.54\",\"4.55\",\"4.56\",\"4.57\",\"4.58\",\"4.59\",\"4.60\",\"4.61\",\"4.62\",\"4.63\",\"4.64\",\"4.65\",\"4.66\",\"4.67\",\"4.68\",\"4.69\",\"4.70\",\"4.71\",\"4.72\",\"4.73\",\"4.74\",\"4.75\",\"4.76\",\"4.77\",\"4.78\",\"4.79\",\"4.80\",\"4.81\",\"4.82\",\"4.83\",\"4.84\",\"4.85\",\"4.86\",\"4.87\",\"4.88\",\"4.89\",\"4.90\",\"4.91\",\"4.92\",\"4.93\",\"4.94\",\"4.95\",\"4.96\",\"4.97\",\"4.98\",\"4.99\",\"5.00\",\"5.01\",\"5.02\",\"5.03\",\"5.04\",\"5.05\",\"5.06\",\"5.07\",\"5.08\",\"5.09\",\"5.10\",\"5.11\",\"5.12\",\"5.13\",\"5.14\",\"5.15\",\"5.16\",\"5.17\",\"5.18\",\"5.19\",\"5.20\",\"5.21\",\"5.22\",\"5.23\",\"5.24\",\"5.25\",\"5.26\",\"5.27\",\"5.28\",\"5.29\",\"5.30\",\"5.31\",\"5.32\",\"5.33\",\"5.34\",\"5.35\",\"5.36\",\"5.37\",\"5.38\",\"5.39\",\"5.40\",\"5.41\",\"5.42\",\"5.43\",\"5.44\",\"5.45\",\"5.46\",\"5.47\",\"5.48\",\"5.49\",\"5.50\",\"5.51\",\"5.52\",\"5.53\",\"5.54\",\"5.55\",\"5.56\",\"5.57\",\"5.58\",\"5.59\",\"5.60\",\"5.61\",\"5.62\",\"5.63\",\"5.64\",\"5.65\",\"5.66\",\"5.67\",\"5.68\",\"5.69\",\"5.70\",\"5.71\",\"5.72\",\"5.73\",\"5.74\",\"5.75\",\"5.76\",\"5.77\",\"5.78\",\"5.79\",\"5.80\",\"5.81\",\"5.82\",\"5.83\",\"5.84\",\"5.85\",\"5.86\",\"5.87\",\"5.88\",\"5.89\",\"5.90\",\"5.91\",\"5.92\",\"5.93\",\"5.94\",\"5.95\",\"5.96\",\"5.97\",\"5.98\",\"5.99\",\"6.00\"]"
                      },
                      {
                        "name": "Tooltip",
                        "value": "\"select user_defined and drag the mass\""
                      },
                      {
                        "name": "OnChange",
                        "value": "var opts = _view.cm.getProperty(\"SelectedOptions\");  // array of options\n    var option = (opts.length > 0)? opts[0]:\"\"; // selected option \n\nl_enterK1f =option; //convert to mm *10\nshowAnswerFlag=true;\ncounter =1; // make speak once\n   if(parent.cordova) { // check it is running in Android\n\n       parent.TTS.speak(option, function () {\n            // success\n        }, function (reason) {\n            // error\n        });\n    }\n    else {\n  var msg = new SpeechSynthesisUtterance(option);\nwindow.speechSynthesis.speak(msg);\n}"
                      },
                      {
                        "name": "Visibility",
                        "value": "cmshow"
                      },
                      {
                        "name": "Width",
                        "value": "(cmshow)?\"10%\":\"0\""
                      },
                      {
                        "name": "Font",
                        "value": "font"
                      },
                      {
                        "name": "Display",
                        "value": "inputdropmenu?\"inline-block\":\"none\""
                      }
                    ]
                  },
                  {
                    "Name": "mm",
                    "Type": "ComboBox",
                    "Properties": [
                      {
                        "name": "Options",
                        "value": "[\"0.0\",\"0.1\",\"0.2\",\"0.3\",\"0.4\",\"0.5\",\"0.6\",\"0.7\",\"0.8\",\"0.9\",\"1.0\",\"1.1\",\"1.2\",\"1.3\",\"1.4\",\"1.5\",\"1.6\",\"1.7\",\"1.8\",\"1.9\",\"2.0\",\"2.1\",\"2.2\",\"2.3\",\"2.4\",\"2.5\",\"2.6\",\"2.7\",\"2.8\",\"2.9\",\"3.0\",\"3.1\",\"3.2\",\"3.3\",\"3.4\",\"3.5\",\"3.6\",\"3.7\",\"3.8\",\"3.9\",\"4.0\",\"4.1\",\"4.2\",\"4.3\",\"4.4\",\"4.5\",\"4.6\",\"4.7\",\"4.8\",\"4.9\",\"5.0\",\"5.1\",\"5.2\",\"5.3\",\"5.4\",\"5.5\",\"5.6\",\"5.7\",\"5.8\",\"5.9\",\"6.0\",\"6.1\",\"6.2\",\"6.3\",\"6.4\",\"6.5\",\"6.6\",\"6.7\",\"6.8\",\"6.9\", \"7.0\",\"7.1\",\"7.2\",\"7.3\",\"7.4\",\"7.5\",\"7.6\",\"7.7\",\"7.8\",\"7.9\",\"8.0\",\"8.1\",\"8.2\",\"8.3\",\"8.4\",\"8.5\",\"8.6\",\"8.7\",\"8.8\",\"8.9\",\"9.0\",\"9.1\",\"9.2\",\"9.3\",\"9.4\",\"9.5\",\"9.6\",\"9.7\",\"9.8\",\"9.9\",\"10.0\",\"10.1\",\"10.2\",\"10.3\",\"10.4\",\"10.5\",\"10.6\",\"10.7\",\"10.8\",\"10.9\",\"11.0\",\"11.1\",\"11.2\",\"11.3\",\"11.4\",\"11.5\",\"11.6\",\"11.7\",\"11.8\",\"11.9\",\"12.0\",\"12.1\",\"12.2\",\"12.3\",\"12.4\",\"12.5\",\"12.6\",\"12.7\",\"12.8\",\"12.9\",\"13.0\",\"13.1\",\"13.2\",\"13.3\",\"13.4\",\"13.5\",\"13.6\",\"13.7\",\"13.8\",\"13.9\",\"14.0\",\"14.1\",\"14.2\",\"14.3\",\"14.4\",\"14.5\",\"14.6\",\"14.7\",\"14.8\",\"14.9\",\"15.0\",\"15.1\",\"15.2\",\"15.3\",\"15.4\",\"15.5\",\"15.6\",\"15.7\",\"15.8\",\"15.9\",\"16.0\",\"16.1\",\"16.2\",\"16.3\",\"16.4\",\"16.5\",\"16.6\",\"16.7\",\"16.8\",\"16.9\", \"17.0\",\"17.1\",\"17.2\",\"17.3\",\"17.4\",\"17.5\",\"17.6\",\"17.7\",\"17.8\",\"17.9\",\"18.0\",\"18.1\",\"18.2\",\"18.3\",\"18.4\",\"18.5\",\"18.6\",\"18.7\",\"18.8\",\"18.9\",\"19.0\",\"19.1\",\"19.2\",\"19.3\",\"19.4\",\"19.5\",\"19.6\",\"19.7\",\"19.8\",\"19.9\",\"20.0\",\"20.1\",\"20.2\",\"20.3\",\"20.4\",\"20.5\",\"20.6\",\"20.7\",\"20.8\",\"20.9\",\"21.0\",\"21.1\",\"21.2\",\"21.3\",\"21.4\",\"21.5\",\"21.6\",\"21.7\",\"21.8\",\"21.9\",\"22.0\",\"22.1\",\"22.2\",\"22.3\",\"22.4\",\"22.5\",\"22.6\",\"22.7\",\"22.8\",\"22.9\",\"23.0\",\"23.1\",\"23.2\",\"23.3\",\"23.4\",\"23.5\",\"23.6\",\"23.7\",\"23.8\",\"23.9\",\"24.0\",\"24.1\",\"24.2\",\"24.3\",\"24.4\",\"24.5\",\"24.6\",\"24.7\",\"24.8\",\"24.9\",\"25.0\",\"25.1\",\"25.2\",\"25.3\",\"25.4\",\"25.5\",\"25.6\",\"25.7\",\"25.8\",\"25.9\",\"26.0\",\"26.1\",\"26.2\",\"26.3\",\"26.4\",\"26.5\",\"26.6\",\"26.7\",\"26.8\",\"26.9\", \"27.0\",\"27.1\",\"27.2\",\"27.3\",\"27.4\",\"27.5\",\"27.6\",\"27.7\",\"27.8\",\"27.9\",\"28.0\",\"28.1\",\"28.2\",\"28.3\",\"28.4\",\"28.5\",\"28.6\",\"28.7\",\"28.8\",\"28.9\",\"29.0\",\"29.1\",\"29.2\",\"29.3\",\"29.4\",\"29.5\",\"29.6\",\"29.7\",\"29.8\",\"29.9\",\"30.0\",\"30.1\",\"30.2\",\"30.3\",\"30.4\",\"30.5\",\"30.6\",\"30.7\",\"30.8\",\"30.9\",\"31.0\",\"31.1\",\"31.2\",\"31.3\",\"31.4\",\"31.5\",\"31.6\",\"31.7\",\"31.8\",\"31.9\",\"32.0\",\"32.1\",\"32.2\",\"32.3\",\"32.4\",\"32.5\",\"32.6\",\"32.7\",\"32.8\",\"32.9\",\"33.0\",\"33.1\",\"33.2\",\"33.3\",\"33.4\",\"33.5\",\"33.6\",\"33.7\",\"33.8\",\"33.9\",\"34.0\",\"34.1\",\"34.2\",\"34.3\",\"34.4\",\"34.5\",\"34.6\",\"34.7\",\"34.8\",\"34.9\",\"35.0\",\"35.1\",\"35.2\",\"35.3\",\"35.4\",\"35.5\",\"35.6\",\"35.7\",\"35.8\",\"35.9\",\"36.0\",\"36.1\",\"36.2\",\"36.3\",\"36.4\",\"36.5\",\"36.6\",\"36.7\",\"36.8\",\"36.9\", \"37.0\",\"37.1\",\"37.2\",\"37.3\",\"37.4\",\"37.5\",\"37.6\",\"37.7\",\"37.8\",\"37.9\",\"38.0\",\"38.1\",\"38.2\",\"38.3\",\"38.4\",\"38.5\",\"38.6\",\"38.7\",\"38.8\",\"38.9\",\"39.0\",\"39.1\",\"39.2\",\"39.3\",\"39.4\",\"39.5\",\"39.6\",\"39.7\",\"39.8\",\"39.9\",\"40.0\",\"40.1\",\"40.2\",\"40.3\",\"40.4\",\"40.5\",\"40.6\",\"40.7\",\"40.8\",\"40.9\",\"41.0\",\"41.1\",\"41.2\",\"41.3\",\"41.4\",\"41.5\",\"41.6\",\"41.7\",\"41.8\",\"41.9\",\"42.0\",\"42.1\",\"42.2\",\"42.3\",\"42.4\",\"42.5\",\"42.6\",\"42.7\",\"42.8\",\"42.9\",\"43.0\",\"43.1\",\"43.2\",\"43.3\",\"43.4\",\"43.5\",\"43.6\",\"43.7\",\"43.8\",\"43.9\",\"44.0\",\"44.1\",\"44.2\",\"44.3\",\"44.4\",\"44.5\",\"44.6\",\"44.7\",\"44.8\",\"44.9\",\"45.0\",\"45.1\",\"45.2\",\"45.3\",\"45.4\",\"45.5\",\"45.6\",\"45.7\",\"45.8\",\"45.9\",\"46.0\",\"46.1\",\"46.2\",\"46.3\",\"46.4\",\"46.5\",\"46.6\",\"46.7\",\"46.8\",\"46.9\", \"47.0\",\"47.1\",\"47.2\",\"47.3\",\"47.4\",\"47.5\",\"47.6\",\"47.7\",\"47.8\",\"47.9\",\"48.0\",\"48.1\",\"48.2\",\"48.3\",\"48.4\",\"48.5\",\"48.6\",\"48.7\",\"48.8\",\"48.9\",\"49.0\",\"49.1\",\"49.2\",\"49.3\",\"49.4\",\"49.5\",\"49.6\",\"49.7\",\"49.8\",\"49.9\",\"50.0\",\"50.1\",\"50.2\",\"50.3\",\"50.4\",\"50.5\",\"50.6\",\"50.7\",\"50.8\",\"50.9\",\"51.0\",\"51.1\",\"51.2\",\"51.3\",\"51.4\",\"51.5\",\"51.6\",\"51.7\",\"51.8\",\"51.9\",\"52.0\",\"52.1\",\"52.2\",\"52.3\",\"52.4\",\"52.5\",\"52.6\",\"52.7\",\"52.8\",\"52.9\",\"53.0\",\"53.1\",\"53.2\",\"53.3\",\"53.4\",\"53.5\",\"53.6\",\"53.7\",\"53.8\",\"53.9\",\"54.0\",\"54.1\",\"54.2\",\"54.3\",\"54.4\",\"54.5\",\"54.6\",\"54.7\",\"54.8\",\"54.9\",\"55.0\",\"55.1\",\"55.2\",\"55.3\",\"55.4\",\"55.5\",\"55.6\",\"55.7\",\"55.8\",\"55.9\",\"56.0\",\"56.1\",\"56.2\",\"56.3\",\"56.4\",\"56.5\",\"56.6\",\"56.7\",\"56.8\",\"56.9\", \"57.0\",\"57.1\",\"57.2\",\"57.3\",\"57.4\",\"57.5\",\"57.6\",\"57.7\",\"57.8\",\"57.9\",\"58.0\",\"58.1\",\"58.2\",\"58.3\",\"58.4\",\"58.5\",\"58.6\",\"58.7\",\"58.8\",\"58.9\",\"59.0\",\"59.1\",\"59.2\",\"59.3\",\"59.4\",\"59.5\",\"59.6\",\"59.7\",\"59.8\",\"59.9\",\"60.0\"]"
                      },
                      {
                        "name": "Tooltip",
                        "value": "\"select user_defined and drag the mass\""
                      },
                      {
                        "name": "OnChange",
                        "value": "var opts = _view.mm.getProperty(\"SelectedOptions\");  // array of options\n    var option = (opts.length > 0)? opts[0]:\"\"; // selected option \n\nl_enterK1f =option;\nshowAnswerFlag=true;\ncounter =1; // make speak once\n   if(parent.cordova) { // check it is running in Android\n\n       parent.TTS.speak(option, function () {\n            // success\n        }, function (reason) {\n            // error\n        });\n    }\n    else {\n  var msg = new SpeechSynthesisUtterance(option);\nwindow.speechSynthesis.speak(msg);\n}"
                      },
                      {
                        "name": "Visibility",
                        "value": "!cmshow"
                      },
                      {
                        "name": "Width",
                        "value": "(cmshow)?\"0\":\"10%\""
                      },
                      {
                        "name": "Font",
                        "value": "font"
                      },
                      {
                        "name": "Display",
                        "value": "inputdropmenu?\"inline-block\":\"none\""
                      }
                    ]
                  },
                  {
                    "Name": "textField2",
                    "Type": "TextField",
                    "Properties": [
                      {
                        "name": "Background",
                        "value": "K1fcorrectbackground"
                      },
                      {
                        "name": "Tooltip",
                        "value": "\"key in your answer key\""
                      },
                      {
                        "name": "Value",
                        "value": "l_enterK1f"
                      },
                      {
                        "name": "OnChange",
                        "value": "showAnswerFlag=true;\ncounter =1; // make speak once"
                      },
                      {
                        "name": "Width",
                        "value": "\"10%\""
                      },
                      {
                        "name": "Font",
                        "value": "font"
                      },
                      {
                        "name": "Display",
                        "value": "!inputdropmenu?\"inline-block\":\"none\""
                      }
                    ]
                  },
                  {
                    "Name": "mm2",
                    "Type": "Label",
                    "Properties": [
                      {
                        "name": "Background",
                        "value": "K1fcorrectbackground"
                      },
                      {
                        "name": "Tooltip",
                        "value": "\"millimetre\""
                      },
                      {
                        "name": "Text",
                        "value": "\" mm \""
                      },
                      {
                        "name": "Visibility",
                        "value": "!cmshow"
                      },
                      {
                        "name": "Width",
                        "value": "(cmshow)?\"0\":\"5%\""
                      },
                      {
                        "name": "OnClick",
                        "value": "cmshow=true;\ndx2=9*dxm/20; // smaller means smaller widrh of vernier scale\n  n2s=21;\n  dycst=0.;\n  nmode=2;\n  L=10*dxm+size; // control length of veriner\n\n  // added by wee for left right button\n  // increment = 0.25718*2;// take 257.16 divide 50 mm divide 10\n  // increment = dxm/10 ;\n  // l_unit=\"0.1mm\";\n  unit=0.1;\n  increment = dxm/(1/unit);\n  cmshow=true;\n  _view.comboBox.setSelectedOptions([\"cm show\"]);\n\n"
                      },
                      {
                        "name": "Font",
                        "value": "font"
                      }
                    ]
                  },
                  {
                    "Name": "cm2",
                    "Type": "Label",
                    "Properties": [
                      {
                        "name": "Background",
                        "value": "K1fcorrectbackground"
                      },
                      {
                        "name": "Tooltip",
                        "value": "\"centimetre\""
                      },
                      {
                        "name": "Text",
                        "value": "\" cm \""
                      },
                      {
                        "name": "Visibility",
                        "value": "cmshow"
                      },
                      {
                        "name": "Width",
                        "value": "(cmshow)?\"5%\":\"0\""
                      },
                      {
                        "name": "OnClick",
                        "value": " cmshow=false;\n   _view.comboBox.setSelectedOptions([\"mm show\"]);\n"
                      },
                      {
                        "name": "Font",
                        "value": "font"
                      }
                    ]
                  }
                ]
              }
            ]
          }
        ]
      },
      {
        "Name": "text",
        "Type": "Panel",
        "Properties": [
          {
            "name": "CSS",
            "value": "{\n  \"position\" : \"absolute\",\n  \"top\" : \"100%\",\n   \"margin-left\":\"0px\",\n   \"left\":\"0%\"\n}"
          },
          {
            "name": "Html",
            "value": "<iframe width=\"560\" height=\"315\" src=\"https://www.youtube.com/embed/PYglrq_1hqA?si=R0OZmWY5SJfRf5uO\" 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> <h2>General Description</h2>\n\n    <p>This JavaScript App simulates the Vernier Caliper. The simulation shows the instrument setup with a rectangular\n        object.</p>\n    <p>The Vernier calipers model has an object (Blue) for the internal jaws to measure the width of an object with a\n        slider to control the width of the object and simple drag action to control the position of the object.</p>\n    <p>An object (Green) for external jaws to measure the internal diameter of a cylinder, for example, with a slider to\n        control the dimensions of the cylinder.</p>\n    <p>A test tube (Pink) for depth measurement via the depth probe.</p>\n\n    <h2>Visual Elements</h2>\n    <ul>\n        <li>Outside jaws: used to measure the external diameter or width of an object (Blue). </li>\n        <li>Inside jaws: used to measure the internal diameter of an object. </li>\n        <li>Depth probe: used to measure depths of an object or a hole (not shown in this model). </li>\n        <li>Main scale: gives measurements in mm. </li>\n        <li>Vernier gives measurements up to one decimal place in mm. </li>\n        <li>Retainer: used to block the movable part to allow easy transferring a measurement (not shown in this model). </li>\n        <li>fine control buttons for learners to manipulate the model with single incremental precision control. </li>\n        <li>Vernier gives measurements up to one decimal place in mm. </li>\n    </ul>\n\n    <h2>Controls</h2>\n    <ul>\n\n        <li>ComboBox 1: Sets the type of caliper scales.</li>\n        <li>ComboBox 2: Show and hide hints, answers, common objects, etc </li>\n        <li>ComboBox 3: Sets the zero error. </li>\n        <li>play button to run the caliper to move automatically.</li>\n        <li>reset button to bring simulation back to original (default) setting.</li>\n        <li>?= click to toggle between combobox or input field.</li>\n        <li>combobox/input field to ease selecting answers like 0.00 and key in numbers.</li>\n        <li>cm/mm text click to toggle between the 2 units, centimeter and millimeter.</li>\n        <li>double click on the screen to go full screen, especially useful on mobile browsers.</li>\n        <li>drag on the screen reposition, especially useful on mobile browsers.</li>\n        <li>pinch in/out to zoom in/out, especially useful on observing the vernier scale readings.</li>\n        <li>menu to show or hide the control panel.</li>\n    </ul>\n\n    <h2>Others</h2>\n    <ul>\n\n        <li><a href=\"https://iwant2study.org/ospsg/index.php/1187-aaptverniercalipermmdigitalversion\"\n                target=\"_blank\">Need a digital version?</a></li>\n        <li><a href=\"https://iwant2study.org/ospsg/index.php/interactive-resources/physics/01-measurements/1004-vernierccalipercmversion\"\n                target=\"_blank\">Need a cm version?</a></li>\n        <li><a href=\"https://iwant2study.org/ospsg/index.php/interactive-resources/physics/01-measurements/1003-vernierccalipermmversion\"\n                target=\"_blank\">Need a mm version?</a></li>\n        <li><a href=\"https://iwant2study.org/ospsg/index.php/interactive-resources/physics/01-measurements/5-vernierccaliper\"\n                target=\"_blank\">Need a fullscreen version?</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/"
  }
}