{
  "information": {
    "Title": "ejss_model_shmmassscale Reading Scale Simulator",
    "Author": [
      "lookang"
    ],
    "AuthorLogo": [
      "./01authorlookang50x50.png"
    ],
    "Password": "",
    "Keywords": "",
    "Abstract": "",
    "Copyright": "creative commons attribution",
    "Level": "primary",
    "Language": "english",
    "Logo": [
      "./massscale/Screen Shot 2017-05-23 at 11.29.31 AM (2).png"
    ],
    "RunAlways": "true",
    "ModelTab": "",
    "ModelTabTitle": "",
    "ModelName": "",
    "FixedNavigationBar": "false",
    "CSSFile": "",
    "DetectedFiles": [
      "./01authorlookang50x50.png",
      "./massscale/Screen Shot 2017-05-23 at 11.29.31 AM (2).png",
      "./massscale/reading scales.html"
    ],
    "AuxiliaryFiles": [
      "./massscale/"
    ],
    "HTMLHead": "<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>\n\n",
    "SaveInXMLFormat": "false",
    "IncludeSource": "true",
    "IncludeLibrary": "true",
    "UglifyJS": "false",
    "PreviewFullModel": "false",
    "UseInterpreter": "true",
    "UseDeltaForODE": "false"
  },
  "description": {
    "pages": [
      {
        "Name": "Intro Page",
        "Active": "true",
        "Internal": "true",
        "Type": "DESCRIPTION_EDITOR",
        "Locale": "_default_",
        "Title": "Intro Page",
        "External": "true",
        "Code": "./massscale/reading scales.html"
      }
    ]
  },
  "model": {
    "variables": {
      "pages": [
        {
          "Name": "Var Table",
          "Active": "true",
          "Internal": "false",
          "Type": "VARIABLE_EDITOR",
          "PageComment": "",
          "Variables": [
            {
              "Name": "inputdropmenu",
              "Value": "true",
              "Type": "boolean",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "font",
              "Value": "\"normal normal 1.5vw \"",
              "Type": "String",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "gramshow",
              "Value": "true",
              "Type": "boolean",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "factor",
              "Value": "1",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "xmin",
              "Value": "-1",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "xmax",
              "Value": "1",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "ymin",
              "Value": "-1",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "ymax",
              "Value": "1",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "rangex",
              "Value": "xmax-xmin",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "rangey",
              "Value": "ymax-ymin",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "sizex",
              "Value": "rangex/20",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "sizey",
              "Value": "rangey/20",
              "Type": "String",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "elementinteracted",
              "Value": "0",
              "Type": "int",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "selected",
              "Value": "\"\"",
              "Type": "String",
              "Dimension": "[1]",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "decimal",
              "Value": "2",
              "Type": "int",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "text",
              "Value": "\"click reset or choose a scale \\nto generate a reading\"",
              "Type": "String",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "pi",
              "Value": "Math.PI",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "y1",
              "Value": "sizey*5/2",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "ysize",
              "Value": "0.2",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "g",
              "Value": "9.81",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "vvst",
              "Value": "true",
              "Type": "boolean",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "avst",
              "Value": "true",
              "Type": "boolean",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            }
          ]
        },
        {
          "Name": "simplespring",
          "Active": "true",
          "Internal": "false",
          "Type": "VARIABLE_EDITOR",
          "PageComment": "",
          "Variables": [
            {
              "Name": "m",
              "Value": "1",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "scaletype",
              "Value": "1",
              "Type": "double",
              "Dimension": "",
              "Comment": "1,4,5",
              "Domain": "public"
            },
            {
              "Name": "massscale",
              "Value": "0",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "massscaleo",
              "Value": "Math.round(Math.random()*50)/50",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "k",
              "Value": "10",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "l",
              "Value": "0",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "x",
              "Value": "0.72",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "xo",
              "Value": "0",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "y",
              "Value": "0",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "yo",
              "Value": "0",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "ye",
              "Value": "-g*m/k",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "vx",
              "Value": "0",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "vy",
              "Value": "0",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "v",
              "Value": "0",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "t",
              "Value": "0",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "tcst",
              "Value": "0",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "X",
              "Value": "x-l",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "T",
              "Value": "2*pi*Math.sqrt(m/k)",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "dt",
              "Value": "T/50",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "w",
              "Value": "2*pi/T",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "a",
              "Value": "-w^2*x",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "f",
              "Value": "0",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "",
              "Value": "",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            }
          ]
        },
        {
          "Name": "pendulum",
          "Active": "true",
          "Internal": "false",
          "Type": "VARIABLE_EDITOR",
          "PageComment": "",
          "Variables": [
            {
              "Name": "theta",
              "Value": "2*pi",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "thetas",
              "Value": "theta",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "thetadegrees",
              "Value": "theta*180/pi",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "thetao",
              "Value": "2*pi-massscaleo/5*(2*pi)",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "thetaodegrees",
              "Value": "thetao*180/pi",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "omega",
              "Value": "0",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "omegas",
              "Value": "0",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "omegao",
              "Value": "0",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "alpha",
              "Value": "0",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "alphas",
              "Value": "0",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "L",
              "Value": "0.72",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "xs",
              "Value": "0",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "ys",
              "Value": "0",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "vxs",
              "Value": "0",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "vys",
              "Value": "0",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "answershow",
              "Value": "",
              "Type": "boolean",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "",
              "Value": "",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            }
          ]
        },
        {
          "Name": "advancedspring",
          "Active": "true",
          "Internal": "false",
          "Type": "VARIABLE_EDITOR",
          "PageComment": "",
          "Variables": [
            {
              "Name": "b",
              "Value": "2",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "amplitude",
              "Value": "0.5",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "frequency",
              "Value": "0",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "potentialEnergy",
              "Value": "0",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "kineticEnergy",
              "Value": "0",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "totalEnergy",
              "Value": "0",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "afrequency",
              "Value": "0",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "Hertz",
              "Value": "0",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "",
              "Value": "",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            }
          ]
        },
        {
          "Name": "peroid",
          "Active": "true",
          "Internal": "false",
          "Type": "VARIABLE_EDITOR",
          "PageComment": "",
          "Variables": [
            {
              "Name": "n1",
              "Value": "0",
              "Type": "int",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "nc",
              "Value": "0",
              "Type": "int",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "numberofswing",
              "Value": "0",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "omegastored",
              "Value": "0",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "T1",
              "Value": "0",
              "Type": "double",
              "Dimension": "[100]",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "ts",
              "Value": "0",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "",
              "Value": "",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            }
          ]
        },
        {
          "Name": "check",
          "Active": "true",
          "Internal": "false",
          "Type": "VARIABLE_EDITOR",
          "PageComment": "",
          "Variables": [
            {
              "Name": "showAnswerFlag",
              "Value": "false",
              "Type": "boolean",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "K1fcorrect",
              "Value": "\"\"",
              "Type": "String",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "l_enterK1f",
              "Value": "\"\"",
              "Type": "String",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "K1fcorrectbackground",
              "Value": "\"\"",
              "Type": "String",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "enterK1f",
              "Value": "0",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "l_answer",
              "Value": "\"\"",
              "Type": "String",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "hintStage",
              "Value": "0",
              "Type": "int",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "justRevealedAnswer",
              "Value": "false",
              "Type": "boolean",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "",
              "Value": "",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            }
          ]
        },
        {
          "Name": "layout",
          "Active": "true",
          "Internal": "false",
          "Type": "VARIABLE_EDITOR",
          "PageComment": "",
          "Variables": [
            {
              "Name": "isAndroid",
              "Value": "checkAndroid()",
              "Type": "boolean",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "Android",
              "Value": "/Android|android/i.test(navigator.userAgent)",
              "Type": "boolean",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "iOS",
              "Value": "/iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream",
              "Type": "boolean",
              "Dimension": "",
              "Comment": "http://stackoverflow.com/questions/9038625/detect-if-device-is-ios",
              "Domain": "public"
            },
            {
              "Name": "iPad",
              "Value": "/iPad/.test(navigator.userAgent) && !window.MSStream",
              "Type": "boolean",
              "Dimension": "",
              "Comment": "http://stackoverflow.com/questions/9038625/detect-if-device-is-ios",
              "Domain": "public"
            },
            {
              "Name": "iPhone",
              "Value": "/iPhone|iPod/.test(navigator.userAgent) && !window.MSStream",
              "Type": "boolean",
              "Dimension": "",
              "Comment": "http://stackoverflow.com/questions/9038625/detect-if-device-is-ios",
              "Domain": "public"
            },
            {
              "Name": "Width",
              "Value": "(_isEPub)?\"400\":\"100%\"",
              "Type": "String",
              "Dimension": "",
              "Comment": "display width",
              "Domain": "public"
            },
            {
              "Name": "selectedview",
              "Value": "\"world\"",
              "Type": "String",
              "Dimension": "[1]",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "Height",
              "Value": "(_isEPub)?\"500\":\"100%\"",
              "Type": "String",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "Width1",
              "Value": "",
              "Type": "String",
              "Dimension": "",
              "Comment": "display width",
              "Domain": "public"
            },
            {
              "Name": "Width2",
              "Value": "",
              "Type": "String",
              "Dimension": "",
              "Comment": "display width",
              "Domain": "public"
            },
            {
              "Name": "disabledworld",
              "Value": "",
              "Type": "boolean",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "disabled",
              "Value": "false",
              "Type": "boolean",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "iOSapp",
              "Value": "",
              "Type": "boolean",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "Androidapp",
              "Value": "",
              "Type": "boolean",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "stillMode",
              "Value": "false",
              "Type": "boolean",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "",
              "Value": "",
              "Type": "boolean",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            }
          ]
        },
        {
          "Name": "draw",
          "Active": "true",
          "Internal": "false",
          "Type": "VARIABLE_EDITOR",
          "PageComment": "",
          "Variables": [
            {
              "Name": "maxy",
              "Value": "1",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "n",
              "Value": "10",
              "Type": "int",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "n2",
              "Value": "n*10",
              "Type": "int",
              "Dimension": "",
              "Comment": "number of ticks of the clock 60",
              "Domain": "public"
            },
            {
              "Name": "c",
              "Value": "pi*2/n",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "cs",
              "Value": "0",
              "Type": "double",
              "Dimension": "[n]",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "xline",
              "Value": "0.0",
              "Type": "double",
              "Dimension": "[n]",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "yline",
              "Value": "0.0",
              "Type": "double",
              "Dimension": "[n]",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "msg",
              "Value": "\"\"",
              "Type": "String",
              "Dimension": "[n]",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "Rs",
              "Value": "xmax*0.75",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "dxs",
              "Value": "0.0",
              "Type": "double",
              "Dimension": "[n2]",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "ds",
              "Value": "Rs*0.045",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "xline2",
              "Value": "0.0",
              "Type": "double",
              "Dimension": "[n]",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "yline2",
              "Value": "0.0",
              "Type": "double",
              "Dimension": "[n]",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "dys",
              "Value": "0.0",
              "Type": "double",
              "Dimension": "[n2]",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "D",
              "Value": "(xmax-xmin)*0.9",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "D2",
              "Value": "D/2",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "red",
              "Value": "Math.floor((Math.random()*255)+1)",
              "Type": "int",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "green",
              "Value": "Math.floor((Math.random()*255)+1)",
              "Type": "int",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "blue",
              "Value": "Math.floor((Math.random()*255)+1)",
              "Type": "int",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "color",
              "Value": "\"rgba(%red%,%green%,%blue%,255)\"",
              "Type": "String",
              "Dimension": "[n2]",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "stroke",
              "Value": "1",
              "Type": "int",
              "Dimension": "[n2]",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "",
              "Value": "",
              "Type": "String",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            }
          ]
        },
        {
          "Name": "dragable",
          "Active": "true",
          "Internal": "false",
          "Type": "VARIABLE_EDITOR",
          "PageComment": "",
          "Variables": [
            {
              "Name": "xdrag",
              "Value": "x",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "ydrag",
              "Value": "y",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "thetadrag",
              "Value": "theta",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "",
              "Value": "",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "xdragtop",
              "Value": "y",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "ydragtop",
              "Value": "x",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "thetadragtop",
              "Value": "theta",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "",
              "Value": "",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "xodragtop",
              "Value": "y",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "yodragtop",
              "Value": "x",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "thetaodragtop",
              "Value": "theta",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "",
              "Value": "",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            }
          ]
        },
        {
          "Name": "functionY",
          "Active": "true",
          "Internal": "false",
          "Type": "VARIABLE_EDITOR",
          "PageComment": "",
          "Variables": [
            {
              "Name": "counter",
              "Value": "0",
              "Type": "int",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "selectedmodel",
              "Value": "\"0\"",
              "Type": "String",
              "Dimension": "[1]",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "functionY",
              "Value": "selectedmodel+\"\"",
              "Type": "String",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "functionY2",
              "Value": "selectedmodel+\"\"",
              "Type": "String",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "xmodel",
              "Value": "",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "showmodel",
              "Value": "false",
              "Type": "boolean",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            }
          ]
        },
        {
          "Name": "object",
          "Active": "true",
          "Internal": "false",
          "Type": "VARIABLE_EDITOR",
          "PageComment": "",
          "Variables": [
            {
              "Name": "appleshow",
              "Value": "",
              "Type": "boolean",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "pineappleshow",
              "Value": "",
              "Type": "boolean",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "coinshow",
              "Value": "",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            },
            {
              "Name": "",
              "Value": "",
              "Type": "double",
              "Dimension": "",
              "Comment": "",
              "Domain": "public"
            }
          ]
        }
      ]
    },
    "initialization": {
      "pages": [
        {
          "Name": "undefined",
          "Active": "true",
          "Internal": "false",
          "Type": "CODE_EDITOR",
          "Comment": "",
          "Code": "\nif (answershow==undefined){\nanswershow = false;\n  }\n\nif (hintStage==undefined){\nhintStage = 0;\n  }\n\nif (justRevealedAnswer==undefined){\njustRevealedAnswer = false;\n  }\n\nif (stillMode==undefined){\nstillMode = false;\n  }\n\nif (K1fcorrectbackground==undefined || K1fcorrectbackground===\"\"){\nK1fcorrectbackground = \"rgba(255,255,255,255)\";\n  }\n\n  if (Width1==undefined){\nWidth1 = \"100%\";\n  }\n  if (Width2==undefined){\nWidth2 = \"0%\";\n  }\n  //appleshow\n if (appleshow==undefined){\nappleshow = false;\n  }\n  if (pineappleshow==undefined){\npineappleshow = false;\n  }\n  //coinshow\n  if (coinshow==undefined){\ncoinshow = false;\n  }"
        },
        {
          "Name": "draw",
          "Active": "true",
          "Internal": "false",
          "Type": "CODE_EDITOR",
          "Comment": "",
          "Code": "setScaleFace(1);"
        },
        {
          "Name": "svgradial",
          "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=\"10%\" style=\"stop-color:rgb(255,255,255); stop-opacity:1\" />'+\n  '    <stop offset=\"100%\" style=\"stop-color:rgb(0,255,255);stop-opacity:1\" />'+\n  '  </radialGradient>'+\n  '</defs></svg>';\ncontainer.innerHTML = svggradient;\ndocument.body.appendChild(container);\n\n"
        },
        {
          "Name": "axes",
          "Active": "true",
          "Internal": "false",
          "Type": "CODE_EDITOR",
          "Comment": "",
          "Code": "_view.plottingPanelxvst.getAxisX().setPosition([0,0.045]);\n_view.plottingPanelxvst.getTitleX().setPosition([0.95,0.045]);\n_view.plottingPanelxvst.getAxisY().setPosition([0.045,0]);\n_view.plottingPanelxvst.getTitleY().setPosition([0.075,0.9]);"
        },
        {
          "Name": "zoom",
          "Active": "true",
          "Internal": "false",
          "Type": "CODE_EDITOR",
          "Comment": "",
          "Code": "_view.plottingPanel.setZoomLimits([0.7,8]);"
        },
        {
          "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}"
        }
      ]
    },
    "evolution": {
      "information": {
        "FPS": "20",
        "SPD": "1",
        "RealTimeVariable": "",
        "Autoplay": "true"
      },
      "pages": [
        {
          "Name": "Evol Page",
          "Active": "true",
          "Internal": "false",
          "Type": "ODE_EDITOR",
          "Comment": "choose cash-karp better than runge-kutta solve 4n5kg thetao wrong sometimes SPD =5 causes set back to 1",
          "IndependentVariable": "t",
          "Increment": "dt",
          "Equations": [
            {
              "state": "theta",
              "rate": "omega"
            },
            {
              "state": "omega",
              "rate": "-k*((theta)-(thetao))/m-b*(omega)/m"
            }
          ],
          "Method": "RungeKuttaFehlberg",
          "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": "\n//return (theta -thetao)-0.0001;\nreturn (theta -thetao); // debugging what sometime 4 n 5 kg random is weird\n",
                "Action": "_pause();\ndisabled=true;\nif (stillMode){\n  text = \"Read the scale and enter your answer.\";\n}\nelse{\n  text = \"The pointer has settled. Read the scale and enter your answer.\";\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": "FixRel Page",
          "Active": "true",
          "Internal": "false",
          "Type": "CODE_EDITOR",
          "Comment": "",
          "Code": "x= L*Math.cos(theta);\ny = L*Math.sin(theta);\n//xdragtop = x/0.72*Math.sin(theta); // sync dragable to actual\n//ydragtop = y/0.72*Math.sin(theta);\nthetadegrees = theta*180/pi;\nvx = -omega*L*Math.sin(theta);\nvy = omega*L*Math.cos(theta);\nv = Math.sqrt(vx*vx+vy*vy);\n\n\n\nxo= L*Math.cos(thetao);\nyo = L*Math.sin(thetao);\n"
        },
        {
          "Name": "angletomass",
          "Active": "true",
          "Internal": "false",
          "Type": "CODE_EDITOR",
          "Comment": "",
          "Code": "//if ( _view.comboBox.getProperty(\"SelectedOptions\")==\"1.00 kg\"){\nif ( scaletype==1){\n  maxy=1;\n}\n\n//else if ( _view.comboBox.getProperty(\"SelectedOptions\")==\"4.00 kg\"){\nelse if ( scaletype==4){\n  maxy=4;\n}\n//else if ( _view.comboBox.getProperty(\"SelectedOptions\")==\"5.0 kg\"){\nelse if ( scaletype==5){\n  maxy=5;\n}\nmassscale = getActualMassFromAngle(theta, scaletype);\nmassscaleo = getActualMassFromAngle(thetao, scaletype);\n//massscale=maxy/(2*pi)*((2*pi)-theta);\n"
        },
        {
          "Name": "getcorrectl_answer",
          "Active": "true",
          "Internal": "false",
          "Type": "CODE_EDITOR",
          "Comment": "",
          "Code": "//if ( _view.comboBox.getProperty(\"SelectedOptions\")==\"1.00 kg\"||_view.comboBox.getProperty(\"SelectedOptions\")==\"4.00 kg\"){\n\nif ( (scaletype==1||scaletype==4)&&!gramshow){\nl_answer=_view._format(massscaleo,\"0.00\")+\"\";\n \n}\n// else if ( _view.comboBox.getProperty(\"SelectedOptions\")==\"5.0 kg\"){\n  else if (( scaletype==5)&&!gramshow){\nl_answer=_view._format(massscaleo,\"0.0\")+\"\";\n}\nelse if ( (scaletype==1||scaletype==4)&&gramshow){\nl_answer=_view._format(massscaleo*1000,\"0\")+\"\";\n}\n// else if ( _view.comboBox.getProperty(\"SelectedOptions\")==\"5.0 kg\"){\n  else if (( scaletype==5)&&gramshow){\nl_answer=_view._format(massscaleo*1000,\"0\")+\"\";\n}"
        },
        {
          "Name": "check",
          "Active": "true",
          "Internal": "false",
          "Type": "CODE_EDITOR",
          "Comment": "",
          "Code": "var actualKg = massscaleo;\nvar actualShown = gramshow ? actualKg*1000 : actualKg;\nvar answerValue = Number(functionY);\nvar stepSize = gramshow ? getKgStepForScale(scaletype)*1000 : getKgStepForScale(scaletype);\n\nif (showAnswerFlag==false) {\n  K1fcorrect = \"\";\n}\nelse if (counter>0) {\n  if (justRevealedAnswer) {\n    K1fcorrect = \"Answer shown:\\n\" + getAnswerWithUnitText();\n    K1fcorrectbackground = \"rgba(255,240,180,255)\";\n    EJSS_INTERFACE.BoxPanel.showOkDialog(\"Answer shown:<br/>\" + getAnswerWithUnitText());\n  }\n  else if (!isFinite(answerValue)) {\n    K1fcorrect = \"Type digits only.\\nDo not type the unit.\";\n    K1fcorrectbackground = \"rgba(255,200,0,255)\";\n    EJSS_INTERFACE.BoxPanel.showOkDialog(K1fcorrect);\n  }\n  else if (gramshow && Math.abs(answerValue-actualKg)<1.e-7) {\n    K1fcorrect = \"You found the right mass,\\nbut the answer should be in grams.\";\n    K1fcorrectbackground = \"rgba(255,200,0,255)\";\n    EJSS_INTERFACE.BoxPanel.showOkDialog(K1fcorrect);\n  }\n  else if (!gramshow && Math.abs(answerValue-actualKg*1000)<1.e-7) {\n    K1fcorrect = \"You found the right mass,\\nbut the answer should be in kilograms.\";\n    K1fcorrectbackground = \"rgba(255,200,0,255)\";\n    EJSS_INTERFACE.BoxPanel.showOkDialog(K1fcorrect);\n  }\n  else if (Math.abs(answerValue-actualShown)<1.e-7) {\n    if (functionY===l_answer) {\n      K1fcorrect = \"Great!\\nThe reading is \" + getAnswerWithUnitText() + \".\";\n      K1fcorrectbackground = \"rgba(0,255,0,255)\";\n      EJSS_INTERFACE.BoxPanel.showOkDialog(\"Great!<br/>The reading is \" + getAnswerWithUnitText() + \".\");\n    }\n    else {\n      K1fcorrect = \"Correct value.\\nWrite it as \" + getAnswerWithUnitText() + \".\";\n      K1fcorrectbackground = \"rgba(255,200,0,255)\";\n      EJSS_INTERFACE.BoxPanel.showOkDialog(K1fcorrect);\n    }\n  }\n  else {\n    var diff = answerValue-actualShown;\n    var stepsOff = Math.max(1, Math.round(Math.abs(diff)/stepSize));\n    var direction = (diff>0) ? \"high\" : \"low\";\n\n    if (stepsOff<=3) {\n      K1fcorrect = \"Close.\\nYou are \" + stepsOff + \" small division\";\n      if (stepsOff>1) K1fcorrect += \"s\";\n      K1fcorrect += \" too \" + direction + \".\";\n    }\n    else {\n      K1fcorrect = \"Incorrect.\\nCheck the value of each small division first.\";\n    }\n\n    K1fcorrect += \"\\nThen count from the nearest labelled mark.\";\n    K1fcorrectbackground = \"rgba(255,0,0,255)\";\n    EJSS_INTERFACE.BoxPanel.showOkDialog(K1fcorrect);\n  }\n\n  counter = 0;\n}"
        }
      ]
    },
    "custom": {
      "pages": [
        {
          "Name": "Lib Page",
          "Active": "true",
          "Internal": "false",
          "Type": "LIBRARY_EDITOR",
          "Comment": "",
          "Code": "function rgb(r, g, b){\n  return \"rgb(\"+r+\",\"+g+\",\"+b+\")\";\n}"
        },
        {
          "Name": "AdsMob",
          "Active": "true",
          "Internal": "false",
          "Type": "LIBRARY_EDITOR",
          "Comment": "",
          "Code": "function showRewardVideo() {\n\t\tconst e = new Event(\"click\");\n\t\ttry { // allow code to run in normal browser\n\t\tconst element = parent.document.getElementById(\"banner\");\n\t\telement.dispatchEvent(e);\n\t\t} catch(e) {\n\t\t const element = false; \n\t\t  }\n\t}\n\tfunction showBannerAd() {\n\t\tconst e = new Event(\"click\");\n\t\ttry { // allow code to run in Snormal browser \n\t\tconst element = parent.document.getElementById(\"reward\");\n\t\telement.dispatchEvent(e);\n\t\t} catch(e) {\n\t\t const element = false; \n\t\t  }\n\t}\n\tfunction showInterstitialAds() {\n\t\tconst e = new Event(\"click\");\n\t\ttry { // allow code to run in normal browser\n\t\tconst element = parent.document.getElementById(\"interstitial\");\n\t\telement.dispatchEvent(e);\n\t\t} catch(e) {\n\t\t const element = false; \n\t\t  }\n\t}"
        },
        {
          "Name": "AdsMob 2",
          "Active": "false",
          "Internal": "false",
          "Type": "LIBRARY_EDITOR",
          "Comment": "",
          "Code": "function showRewardVideo() {\n\t\tconst e = new Event(\"click\");\n\t\tconst element = parent.document.getElementById(\"banner\");\n\t\telement.dispatchEvent(e);\n\t}\n\tfunction showBannerAd() {\n\t\tconst e = new Event(\"click\");\n\t\tconst element = parent.document.getElementById(\"reward\");\n\t\telement.dispatchEvent(e);\n\t}\n\tfunction showInterstitialAds() {\n\t\tconst e = new Event(\"click\");\n\t\tconst element = parent.document.getElementById(\"interstitial\");\n\t\telement.dispatchEvent(e);\n\t}"
        },
        {
          "Name": "Lib Page 2",
          "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": "android",
          "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": "changeOrientation",
          "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 =0.9 ; // k control height 1 is for full screen, 0.9 shorten etc\nvar kepub =0.9 ;\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*k;  //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*k;  \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        //console.log('hello');\n}\n\n}\n \n}"
        },
        {
          "Name": "Pedagogy",
          "Active": "true",
          "Internal": "false",
          "Type": "LIBRARY_EDITOR",
          "Comment": "",
          "Code": "function getKgFormatForScale(type) {\n  return (type===5) ? \"0.0\" : \"0.00\";\n}\n\nfunction getKgStepForScale(type) {\n  if (type===1) return 0.02;\n  if (type===4) return 0.05;\n  return 0.1;\n}\n\nfunction getMajorStepForScale(type) {\n  if (type===1) return 0.1;\n  return 1;\n}\n\nfunction getMaxKgForScale(type) {\n  if (type===1) return 1;\n  if (type===4) return 4;\n  return 5;\n}\n\nfunction getScaleLabelText(type) {\n  if (type===1) return \"1.00 kg\";\n  if (type===4) return \"4.00 kg\";\n  return \"5.0 kg\";\n}\n\nfunction formatKgValueForScale(valueKg, type) {\n  return _view._format(valueKg, getKgFormatForScale(type));\n}\n\nfunction snapMassForScale(valueKg, type) {\n  var step = getKgStepForScale(type);\n  var snapped = Math.round(valueKg/step)*step;\n  var decimals = (type===5) ? 1 : 2;\n  return +snapped.toFixed(decimals);\n}\n\nfunction getActualMassFromAngle(angle, type) {\n  var actual = getMaxKgForScale(type)/(2*pi)*((2*pi)-angle);\n  if (actual<0) actual += getMaxKgForScale(type);\n  return snapMassForScale(actual, type);\n}\n\nfunction formatMassForCurrentUnit(valueKg) {\n  valueKg = snapMassForScale(valueKg, scaletype);\n  if (gramshow) {\n    return _view._format(valueKg*1000,\"0\") + \" g\";\n  }\n  return formatKgValueForScale(valueKg, scaletype) + \" kg\";\n}\n\nfunction getAnswerWithUnitText() {\n  return formatMassForCurrentUnit(snapMassForScale(massscaleo, scaletype));\n}\n\nfunction getSmallDivisionText() {\n  var kgStep = getKgStepForScale(scaletype);\n  if (gramshow) {\n    return _view._format(kgStep*1000, \"0\") + \" g\";\n  }\n  return _view._format(kgStep, getKgFormatForScale(scaletype)) + \" kg\";\n}\n\nfunction setScaleFace(type) {\n  scaletype = type;\n  decimal = (type===5) ? 1 : 2;\n\n  if (type===1) {\n    n = 10;\n    n2 = 100;\n  }\n  else if (type===4) {\n    n = 4;\n    n2 = 80;\n  }\n  else {\n    n = 5;\n    n2 = 50;\n  }\n\n  var c = Math.PI*2/n;\n  var j;\n  for (var i=0; i<n; i++) {\n    j = i+1;\n    cs[i] = -c*j;\n    xline[i] = Rs*0.7*Math.sin(c*j);\n    yline[i] = Rs*0.7*Math.cos(c*j);\n    if (type===1) {\n      msg[i] = (j===n) ? \"0\" : j+\"00\";\n    }\n    else if (type===4) {\n      msg[i] = (j===n) ? \"4.00 kg\" : j+\".00 kg\";\n    }\n    else {\n      msg[i] = (j===n) ? \"0.0 kg\" : j+\".0 kg\";\n    }\n  }\n\n  var c2 = Math.PI*2/n2;\n  var ci;\n  for (var tick=0; tick<n2; tick++) {\n    ci = c2*tick;\n    xline2[tick] = L*Math.sin(ci);\n    yline2[tick] = L*Math.cos(ci);\n    dxs[tick] = -ds*Math.sin(ci);\n    dys[tick] = -ds*Math.cos(ci);\n    color[tick] = rgb(0,0,0);\n    stroke[tick] = 2;\n\n    if (type===1) {\n      if (tick%5===0) {\n        dxs[tick] = 2*dxs[tick];\n        dys[tick] = 2*dys[tick];\n        color[tick] = rgb(255,0,0);\n        stroke[tick] = 2;\n      }\n      if (tick%10===0) {\n        dxs[tick] = 2.2*dxs[tick];\n        dys[tick] = 2.2*dys[tick];\n        color[tick] = rgb(255,0,0);\n        stroke[tick] = 4;\n      }\n    }\n    else if (type===4) {\n      if (tick%2===0) {\n        dxs[tick] = 2*dxs[tick];\n        dys[tick] = 2*dys[tick];\n      }\n      if (tick%10===0) {\n        dxs[tick] = 1.5*dxs[tick];\n        dys[tick] = 1.5*dys[tick];\n        color[tick] = rgb(255,0,0);\n        stroke[tick] = 3;\n      }\n      if (tick%20===0) {\n        dxs[tick] = 1.2*dxs[tick];\n        dys[tick] = 1.2*dys[tick];\n        color[tick] = rgb(255,0,0);\n        stroke[tick] = 4;\n      }\n    }\n    else {\n      if (tick%5===0) {\n        dxs[tick] = 2*dxs[tick];\n        dys[tick] = 2*dys[tick];\n        color[tick] = rgb(255,0,0);\n        stroke[tick] = 2;\n      }\n      if (tick%10===0) {\n        dxs[tick] = 1.5*dxs[tick];\n        dys[tick] = 1.5*dys[tick];\n        color[tick] = rgb(255,0,0);\n        stroke[tick] = 3;\n      }\n      if (tick%20===0) {\n        dxs[tick] = 1.2*dxs[tick];\n        dys[tick] = 1.2*dys[tick];\n        color[tick] = rgb(255,0,0);\n        stroke[tick] = 4;\n      }\n    }\n  }\n}\n\nfunction pickRandomMassForScale(type) {\n  if (type===1) return +(Math.round(Math.random()*50)/50).toFixed(2);\n  if (type===4) return +(Math.round(Math.random()*80)/20).toFixed(2);\n  return +(Math.round(Math.random()*50)/10).toFixed(1);\n}\n\nfunction setNeedleForMass(valueKg) {\n  valueKg = snapMassForScale(valueKg, scaletype);\n  massscaleo = valueKg;\n  thetao = 2*pi-valueKg/getMaxKgForScale(scaletype)*(2*pi);\n}\n\nfunction setDefaultPlotRange() {\n  ymin = -1;\n  ymax = 1;\n  try {\n    _view.plottingPanel.setProperty(\"MaximumY\",1);\n    _view.plottingPanel.setProperty(\"MinimumY\",-1);\n  } catch (err) {}\n}\n\nfunction clearObjectSelection() {\n  appleshow = false;\n  pineappleshow = false;\n  coinshow = false;\n}\n\nfunction resetFeedbackOnly() {\n  hintStage = 0;\n  answershow = false;\n  showAnswerFlag = false;\n  justRevealedAnswer = false;\n  counter = 0;\n  K1fcorrect = \"\";\n  K1fcorrectbackground = \"rgba(255,255,255,255)\";\n}\n\nfunction clearResponseInputs() {\n  functionY = \"\";\n  showmodel = false;\n  try { _view.models2gram.setSelectedOptions([]); } catch (err) {}\n  try { _view.models2.setSelectedOptions([]); } catch (err) {}\n  try { _view.models3scaletype4.setSelectedOptions([]); } catch (err) {}\n  try { _view.models3.setSelectedOptions([]); } catch (err) {}\n  try { _view.modelsscaletype5.setSelectedOptions([]); } catch (err) {}\n  try { _view.models.setSelectedOptions([]); } catch (err) {}\n}\n\nfunction setPromptText(message) {\n  if (message!==undefined && message!==null) {\n    text = message;\n    return;\n  }\n  if (stillMode) {\n    text = \"Read the scale and enter your answer.\";\n  }\n  else {\n    text = \"Watch the pointer settle, then read the scale.\";\n  }\n}\n\nfunction positionNeedleForMode(stillMessage, animatedMessage) {\n  omega = 0;\n  alpha = 0;\n  if (stillMode) {\n    theta = thetao;\n    _pause();\n    disabled = true;\n    setPromptText(stillMessage || \"Read the scale and enter your answer.\");\n  }\n  else {\n    theta = 2*pi;\n    disabled = false;\n    setPromptText(animatedMessage || \"Watch the pointer settle, then read the scale.\");\n    _play();\n  }\n}\n\nfunction buildHintMessage() {\n  if (hintStage<=0) {\n    setPromptText();\n    return text;\n  }\n\n  if (hintStage===1) {\n    return \"Hint 1: This scale goes from 0 to \" + getScaleLabelText(scaletype) + \". Decide whether you are answering in g or kg.\";\n  }\n\n  if (hintStage===2) {\n    var shownMass = snapMassForScale(massscaleo, scaletype);\n    var majorStep = getMajorStepForScale(scaletype);\n    var baseMark = Math.floor((shownMass+1.e-9)/majorStep)*majorStep;\n    var ticksPast = Math.round((shownMass-baseMark)/getKgStepForScale(scaletype));\n    return \"Hint 2: Each small division is \" + getSmallDivisionText() + \". Count \" + ticksPast + \" small division(s) from \" + formatMassForCurrentUnit(baseMark) + \".\";\n  }\n\n  return \"Answer shown: \" + getAnswerWithUnitText();\n}\n\nfunction advanceHint() {\n  hintStage = hintStage + 1;\n  if (hintStage>3) {\n    hintStage = 0;\n  }\n  answershow = (hintStage>=3);\n  text = buildHintMessage();\n}\n\nfunction clearHints() {\n  hintStage = 0;\n  answershow = false;\n  setPromptText();\n}\n\nfunction startRandomQuestion() {\n  clearObjectSelection();\n  setDefaultPlotRange();\n  resetFeedbackOnly();\n  clearResponseInputs();\n  setScaleFace(scaletype);\n  setNeedleForMass(pickRandomMassForScale(scaletype));\n  positionNeedleForMode(\"Read the scale and enter your answer.\", \"Watch the pointer settle, then read the scale.\");\n}\n\nfunction replayCurrentReading() {\n  resetFeedbackOnly();\n  clearResponseInputs();\n  positionNeedleForMode(\"Read the same scale again and enter your answer.\", \"Watch the same reading settle again.\");\n}\n\nfunction setExampleTheta(exampleName) {\n  var rawTheta = 2*pi;\n  if (exampleName===\"apple\") {\n    if (scaletype===1) rawTheta = 5.65486677646128;\n    else if (scaletype===4) rawTheta = 6.1225;\n    else rawTheta = 6.154;\n  }\n  else if (exampleName===\"pineapple\") {\n    if (scaletype===1) rawTheta = 0.63;\n    else if (scaletype===4) rawTheta = 4.8675;\n    else rawTheta = 5.15;\n  }\n  else if (exampleName===\"$1 coin\") {\n    if (scaletype===1) rawTheta = 6.157521601;\n    else if (scaletype===4) rawTheta = 6.2485;\n    else rawTheta = 6.2548;\n  }\n  setNeedleForMass(getActualMassFromAngle(rawTheta, scaletype));\n}\n\nfunction applyExample(exampleName) {\n  clearObjectSelection();\n  resetFeedbackOnly();\n  clearResponseInputs();\n  setScaleFace(scaletype);\n\n  if (exampleName===\"apple\") {\n    appleshow = true;\n    ymin = -1;\n    ymax = 1.75;\n    try {\n      _view.plottingPanel.setProperty(\"MaximumY\",1.7);\n      _view.plottingPanel.setProperty(\"MinimumY\",-1);\n    } catch (err) {}\n  }\n  else if (exampleName===\"pineapple\") {\n    pineappleshow = true;\n    ymin = -1;\n    ymax = 2.5;\n    try {\n      _view.plottingPanel.setProperty(\"MaximumY\",3);\n      _view.plottingPanel.setProperty(\"MinimumY\",-1);\n    } catch (err) {}\n  }\n  else if (exampleName===\"$1 coin\") {\n    coinshow = true;\n    ymin = -1;\n    ymax = 1.5;\n    try {\n      _view.plottingPanel.setProperty(\"MaximumY\",1.5);\n      _view.plottingPanel.setProperty(\"MinimumY\",-1);\n    } catch (err) {}\n  }\n\n  setExampleTheta(exampleName);\n  positionNeedleForMode(\"Read the scale for the \" + exampleName + \".\", \"Watch the pointer settle, then read the scale for the \" + exampleName + \".\");\n}\n\nfunction handleModelSelection(widgetName) {\n  var opts = _view[widgetName].getProperty(\"SelectedOptions\");\n  var option = (opts.length>0) ? opts[0] : \"\";\n\n  showmodel = true;\n  showAnswerFlag = true;\n  justRevealedAnswer = false;\n  functionY = option + \"\";\n\n  if (option===\"show me\") {\n    functionY = l_answer;\n    justRevealedAnswer = true;\n    hintStage = 3;\n    answershow = true;\n    text = buildHintMessage();\n    _view[widgetName].setSelectedOptions([l_answer]);\n  }\n\n  counter = 1;\n}\n\nfunction handleManualAnswer() {\n  showmodel = true;\n  showAnswerFlag = true;\n  justRevealedAnswer = false;\n  counter = 1;\n}"
        }
      ]
    },
    "elements": {
      "list": []
    }
  },
  "view": {
    "Tree": [
      {
        "Name": "fullscreen",
        "Type": "Panel",
        "Expanded": "true",
        "Properties": [
          {
            "name": "Height",
            "value": "Height"
          },
          {
            "name": "Width",
            "value": "Width"
          },
          {
            "name": "OnClick",
            "value": "showBannerAd();"
          }
        ],
        "Children": [
          {
            "Name": "bottomPanel2",
            "Type": "Panel",
            "Expanded": "false",
            "Properties": [
              {
                "name": "Width",
                "value": "\"100%\""
              },
              {
                "name": "Display",
                "value": "\"inline-flex\""
              }
            ],
            "Children": [
              {
                "Name": "comboBox",
                "Type": "ComboBox",
                "Properties": [
                  {
                    "name": "Options",
                    "value": "[\"random\",\"$1 coin\",\"apple\",\"pineapple\",\"\",\"scale type\u2696\",\"1.00 kg\",\"4.00 kg\",\"5.0 kg\",\"\",\"hint\",\"hint off\"]"
                  },
                  {
                    "name": "Tooltip",
                    "value": "\"choose a random question, an object example, or a scale type\""
                  },
                  {
                    "name": "OnChange",
                    "value": "var opts = _view.comboBox.getProperty(\"SelectedOptions\");\nvar option = (opts.length > 0) ? opts[0] : \"\";\n\nif (option==\"1.00 kg\"){\n  setScaleFace(1);\n  startRandomQuestion();\n}\nelse if (option==\"4.00 kg\"){\n  setScaleFace(4);\n  startRandomQuestion();\n}\nelse if (option==\"5.0 kg\"){\n  setScaleFace(5);\n  startRandomQuestion();\n}\nelse if (option==\"hint\"){\n  advanceHint();\n}\nelse if (option==\"hint off\"){\n  clearHints();\n}\nelse if (option==\"apple\" || option==\"pineapple\" || option==\"$1 coin\"){\n  applyExample(option);\n}\nelse if (option==\"random\"){\n  startRandomQuestion();\n}"
                  },
                  {
                    "name": "Font",
                    "value": "font"
                  }
                ]
              },
              {
                "Name": "answer",
                "Type": "Label",
                "Properties": [
                  {
                    "name": "Background",
                    "value": "K1fcorrectbackground"
                  },
                  {
                    "name": "Tooltip",
                    "value": "\"click to change to input field for keying in using keyboard\""
                  },
                  {
                    "name": "Text",
                    "value": "\"?=\""
                  },
                  {
                    "name": "OnClick",
                    "value": "if (inputdropmenu==true){\n  inputdropmenu=false;\n  }\n  else if (inputdropmenu==false){\n  inputdropmenu=true;\n  }"
                  },
                  {
                    "name": "Font",
                    "value": "font"
                  }
                ]
              },
              {
                "Name": "models2gram",
                "Type": "ComboBox",
                "Properties": [
                  {
                    "name": "Options",
                    "value": "[\"0\",\"20\",\"40\",\"60\",\"80\",\"100\",\"120\",\"140\",\"160\",\"180\",\"200\",\"220\",\"240\",\"260\",\"280\",\"300\",\"320\",\"340\",\"360\",\"380\",\"400\",\"420\",\"440\",\"460\",\"480\",\"500\",\"520\",\"540\",\"560\",\"580\",\"600\",\"620\",\"640\",\"660\",\"680\",\"700\",\"720\",\"740\",\"760\",\"780\",\"800\",\"820\",\"840\",\"860\",\"880\",\"900\",\"920\",\"940\",\"960\",\"980\",\"1000\",\"show me\"]"
                  },
                  {
                    "name": "Background",
                    "value": "K1fcorrectbackground"
                  },
                  {
                    "name": "Tooltip",
                    "value": "\"select suggested models\""
                  },
                  {
                    "name": "OnChange",
                    "value": "handleModelSelection(\"models2gram\");"
                  },
                  {
                    "name": "Font",
                    "value": "font"
                  },
                  {
                    "name": "Display",
                    "value": "(inputdropmenu&&gramshow&&scaletype==1)?\"inline-block\":\"none\""
                  }
                ]
              },
              {
                "Name": "models2",
                "Type": "ComboBox",
                "Properties": [
                  {
                    "name": "Options",
                    "value": "[\"0.00\",\"0.02\",\"0.04\",\"0.06\",\"0.08\",\"0.10\",\"0.12\",\"0.14\",\"0.16\",\"0.18\",\"0.20\",\"0.22\",\"0.24\",\"0.26\",\"0.28\",\"0.30\",\"0.30\",\"0.32\",\"0.34\",\"0.36\",\"0.38\",\"0.40\",\"0.42\",\"0.44\",\"0.46\",\"0.48\",\"0.50\",\"0.52\",\"0.54\",\"0.56\",\"0.58\",\"0.60\",\"0.60\",\"0.62\",\"0.64\",\"0.66\",\"0.68\",\"0.70\",\"0.72\",\"0.74\",\"0.76\",\"0.78\",\"0.80\",\"0.82\",\"0.84\",\"0.86\",\"0.88\",\"0.90\",\"0.92\",\"0.94\",\"0.96\",\"0.98\",\"1.00\",\"show me\"]"
                  },
                  {
                    "name": "Background",
                    "value": "K1fcorrectbackground"
                  },
                  {
                    "name": "Tooltip",
                    "value": "\"select suggested models\""
                  },
                  {
                    "name": "OnChange",
                    "value": "handleModelSelection(\"models2\");"
                  },
                  {
                    "name": "Font",
                    "value": "font"
                  },
                  {
                    "name": "Display",
                    "value": "(inputdropmenu&&scaletype==1&&!gramshow)?\"inline-block\":\"none\""
                  }
                ]
              },
              {
                "Name": "models3scaletype4",
                "Type": "ComboBox",
                "Properties": [
                  {
                    "name": "Options",
                    "value": "[\"0\",\"50\",\"100\",\"150\",\"200\",\"250\",\"300\",\"350\",\"400\",\"450\",\"500\",\"550\",\"600\",\"650\",\"700\",\"750\",\"800\",\"850\",\"900\",\"950\",\"1000\",\"1050\",\"1100\",\"1150\",\"1200\",\"1250\",\"1300\",\"1350\",\"1400\",\"1450\",\"1500\",\"1550\",\"1600\",\"1650\",\"1700\",\"1750\",\"1800\",\"1850\",\"1900\",\"1950\",\"2000\",\"2050\",\"2100\",\"2150\",\"2200\",\"2250\",\"2300\",\"2350\",\"2400\",\"2450\",\"2500\",\"2550\",\"2600\",\"2650\",\"2700\",\"2750\",\"2800\",\"2850\",\"2900\",\"2950\",\"3000\",\"3050\",\"3100\",\"3150\",\"3200\",\"3250\",\"3300\",\"3350\",\"3400\",\"3450\",\"3500\",\"3550\",\"3600\",\"3650\",\"3700\",\"3750\",\"3800\",\"3850\",\"3900\",\"3950\",\"4000\",\"show me\"]"
                  },
                  {
                    "name": "Background",
                    "value": "K1fcorrectbackground"
                  },
                  {
                    "name": "Tooltip",
                    "value": "\"select suggested models\""
                  },
                  {
                    "name": "OnChange",
                    "value": "handleModelSelection(\"models3scaletype4\");"
                  },
                  {
                    "name": "Font",
                    "value": "font"
                  },
                  {
                    "name": "Display",
                    "value": "(inputdropmenu&&gramshow&&scaletype==4)?\"inline-block\":\"none\""
                  }
                ]
              },
              {
                "Name": "models3",
                "Type": "ComboBox",
                "Properties": [
                  {
                    "name": "Options",
                    "value": "[\"0.00\",\"0.05\",\"0.10\",\"0.15\",\"0.20\",\"0.25\",\"0.30\",\"0.35\",\"0.40\",\"0.45\",\"0.50\",\"0.55\",\"0.60\",\"0.65\",\"0.70\",\"0.75\",\"0.80\",\"0.85\",\"0.90\",\"0.95\",\"1.00\",\"1.05\",\"1.10\",\"1.15\",\"1.20\",\"1.25\",\"1.30\",\"1.35\",\"1.40\",\"1.45\",\"1.50\",\"1.55\",\"1.60\",\"1.65\",\"1.70\",\"1.75\",\"1.80\",\"1.85\",\"1.90\",\"1.95\",\"2.00\",\"2.05\",\"2.10\",\"2.15\",\"2.20\",\"2.25\",\"2.30\",\"2.35\",\"2.40\",\"2.45\",\"2.50\",\"2.55\",\"2.60\",\"2.65\",\"2.70\",\"2.75\",\"2.80\",\"2.85\",\"2.90\",\"2.95\",\"3.00\",\"3.05\",\"3.10\",\"3.15\",\"3.20\",\"3.25\",\"3.30\",\"3.35\",\"3.40\",\"3.45\",\"3.50\",\"3.55\",\"3.60\",\"3.65\",\"3.70\",\"3.75\",\"3.80\",\"3.85\",\"3.90\",\"3.95\",\"4.00\",\"show me\"]"
                  },
                  {
                    "name": "Background",
                    "value": "K1fcorrectbackground"
                  },
                  {
                    "name": "Tooltip",
                    "value": "\"select suggested models\""
                  },
                  {
                    "name": "OnChange",
                    "value": "handleModelSelection(\"models3\");"
                  },
                  {
                    "name": "Font",
                    "value": "font"
                  },
                  {
                    "name": "Display",
                    "value": "(inputdropmenu&&scaletype==4&&!gramshow)?\"inline-block\":\"none\""
                  }
                ]
              },
              {
                "Name": "modelsscaletype5",
                "Type": "ComboBox",
                "Properties": [
                  {
                    "name": "Options",
                    "value": "[\"0\",\"100\",\"200\",\"300\",\"400\",\"500\",\"600\",\"700\",\"800\",\"900\",\"1000\",\"1100\",\"1200\",\"1300\",\"1400\",\"1500\",\"1600\",\"1700\",\"1800\",\"1900\",\"2000\",\"2100\",\"2200\",\"2300\",\"2400\",\"2500\",\"2600\",\"2700\",\"2800\",\"2900\",\"3000\",\"3100\",\"3200\",\"3300\",\"3400\",\"3500\",\"3600\",\"3700\",\"3800\",\"3900\",\"4000\",\"4100\",\"4200\",\"4300\",\"4400\",\"4500\",\"4600\",\"4700\",\"4800\",\"4900\",\"5000\",\"show me\"]"
                  },
                  {
                    "name": "Background",
                    "value": "K1fcorrectbackground"
                  },
                  {
                    "name": "Tooltip",
                    "value": "\"select suggested models\""
                  },
                  {
                    "name": "OnChange",
                    "value": "handleModelSelection(\"modelsscaletype5\");"
                  },
                  {
                    "name": "Font",
                    "value": "font"
                  },
                  {
                    "name": "Display",
                    "value": "(inputdropmenu&&gramshow&&scaletype==5)?\"inline-block\":\"none\""
                  }
                ]
              },
              {
                "Name": "models",
                "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\",\"show me\"]"
                  },
                  {
                    "name": "Background",
                    "value": "K1fcorrectbackground"
                  },
                  {
                    "name": "Tooltip",
                    "value": "\"select suggested models\""
                  },
                  {
                    "name": "OnChange",
                    "value": "handleModelSelection(\"models\");"
                  },
                  {
                    "name": "Font",
                    "value": "font"
                  },
                  {
                    "name": "Display",
                    "value": "(inputdropmenu&&scaletype==5&&!gramshow)?\"inline-block\":\"none\""
                  }
                ]
              },
              {
                "Name": "fField",
                "Type": "Function",
                "Properties": [
                  {
                    "name": "Background",
                    "value": "K1fcorrectbackground"
                  },
                  {
                    "name": "Tooltip",
                    "value": "\"type the mass reading using digits only\""
                  },
                  {
                    "name": "Value",
                    "value": "%functionY%"
                  },
                  {
                    "name": "OnChange",
                    "value": "handleManualAnswer();"
                  },
                  {
                    "name": "Width",
                    "value": "\"10vw\""
                  },
                  {
                    "name": "Font",
                    "value": "font"
                  },
                  {
                    "name": "Display",
                    "value": "!inputdropmenu?\"inline-block\":\"none\""
                  }
                ]
              },
              {
                "Name": "g",
                "Type": "Label",
                "Properties": [
                  {
                    "name": "Background",
                    "value": "K1fcorrectbackground"
                  },
                  {
                    "name": "Tooltip",
                    "value": "\"gram\""
                  },
                  {
                    "name": "Text",
                    "value": "\" g \""
                  },
                  {
                    "name": "Visibility",
                    "value": "gramshow"
                  },
                  {
                    "name": "OnClick",
                    "value": "gramshow=false;\nif (hintStage>0){\n  text = buildHintMessage();\n}\nelse{\n  setPromptText();\n}"
                  },
                  {
                    "name": "Font",
                    "value": "font"
                  },
                  {
                    "name": "Display",
                    "value": "(gramshow)?\"inline-block\":\"none\""
                  }
                ]
              },
              {
                "Name": "kg",
                "Type": "Label",
                "Properties": [
                  {
                    "name": "Background",
                    "value": "K1fcorrectbackground"
                  },
                  {
                    "name": "Tooltip",
                    "value": "\"kilogram\""
                  },
                  {
                    "name": "Text",
                    "value": "\" kg \""
                  },
                  {
                    "name": "Visibility",
                    "value": "!gramshow"
                  },
                  {
                    "name": "OnClick",
                    "value": "gramshow=true;\nif (hintStage>0){\n  text = buildHintMessage();\n}\nelse{\n  setPromptText();\n}"
                  },
                  {
                    "name": "Font",
                    "value": "font"
                  },
                  {
                    "name": "Display",
                    "value": "(!gramshow)?\"inline-block\":\"none\""
                  }
                ]
              },
              {
                "Name": "hintButton",
                "Type": "Button",
                "Properties": [
                  {
                    "name": "Tooltip",
                    "value": "\"click repeatedly for scaffolded hints and then the answer\""
                  },
                  {
                    "name": "Text",
                    "value": "hintStage==0?\"Hint 1\":(hintStage==1?\"Hint 2\":(hintStage==2?\"Answer\":\"Hide Hint\"))"
                  },
                  {
                    "name": "Width",
                    "value": "\"10vw\""
                  },
                  {
                    "name": "OnClick",
                    "value": "advanceHint();"
                  },
                  {
                    "name": "Font",
                    "value": "font"
                  }
                ]
              },
              {
                "Name": "modeButton",
                "Type": "Button",
                "Properties": [
                  {
                    "name": "Tooltip",
                    "value": "\"toggle between animated mode and still reading mode\""
                  },
                  {
                    "name": "Text",
                    "value": "stillMode?\"Still\":\"Animate\""
                  },
                  {
                    "name": "Width",
                    "value": "\"10vw\""
                  },
                  {
                    "name": "OnClick",
                    "value": "stillMode=!stillMode;\nclearHints();\nif (stillMode){\n  theta = thetao;\n  omega = 0;\n  alpha = 0;\n  _pause();\n  disabled = true;\n  text = \"Still mode: the pointer jumps straight to the reading.\";\n}\nelse{\n  text = \"Animated mode: press Replay or Reset to watch the pointer move.\";\n}"
                  },
                  {
                    "name": "Font",
                    "value": "font"
                  }
                ]
              },
              {
                "Name": "playPauseButton",
                "Type": "TwoStateButton",
                "Properties": [
                  {
                    "name": "OffClick",
                    "value": "text=\"paused\";\nisPaused=true;\n_pause();"
                  },
                  {
                    "name": "TextOn",
                    "value": "\"\u25baPlay\""
                  },
                  {
                    "name": "State",
                    "value": "_isPaused"
                  },
                  {
                    "name": "Tooltip",
                    "value": "\"Play/Pause\""
                  },
                  {
                    "name": "TextOff",
                    "value": "\"\u275a\u275aPause\""
                  },
                  {
                    "name": "Disabled",
                    "value": "disabled"
                  },
                  {
                    "name": "OnClick",
                    "value": "_play();\nisPaused=false;\ntext=\"playing\";"
                  },
                  {
                    "name": "Width",
                    "value": "\"15vw\""
                  },
                  {
                    "name": "Font",
                    "value": "font"
                  }
                ]
              },
              {
                "Name": "userreset",
                "Type": "Button",
                "Properties": [
                  {
                    "name": "Tooltip",
                    "value": "\"replay the current reading\""
                  },
                  {
                    "name": "Text",
                    "value": "\"\u00aeReplay\""
                  },
                  {
                    "name": "Width",
                    "value": "\"15vw\""
                  },
                  {
                    "name": "OnClick",
                    "value": "replayCurrentReading();"
                  },
                  {
                    "name": "Font",
                    "value": "font"
                  }
                ]
              },
              {
                "Name": "Ads2",
                "Type": "Button",
                "Properties": [
                  {
                    "name": "Tooltip",
                    "value": "\"Watch an Ads to support the development. Thank you!\""
                  },
                  {
                    "name": "Text",
                    "value": "\"\ud83c\udfa5\u23ee\ud83d\udc4dAds\""
                  },
                  {
                    "name": "Width",
                    "value": "\"15vw\""
                  },
                  {
                    "name": "OnClick",
                    "value": "showBannerAd();\nif (Math.random()<0.5){\nshowInterstitialAds();\n}\nelse{\nshowRewardVideo();\n}\nstartRandomQuestion();"
                  },
                  {
                    "name": "Font",
                    "value": "font"
                  },
                  {
                    "name": "Display",
                    "value": "(iOSapp||Androidapp)?\"inline-block\":\"none\""
                  }
                ]
              },
              {
                "Name": "resetButton2",
                "Type": "Button",
                "Properties": [
                  {
                    "name": "Tooltip",
                    "value": "\"generate a new question on the current scale\""
                  },
                  {
                    "name": "Text",
                    "value": "\"\u21bbReset\""
                  },
                  {
                    "name": "Width",
                    "value": "\"15vw\""
                  },
                  {
                    "name": "OnClick",
                    "value": "showBannerAd();\nstartRandomQuestion();"
                  },
                  {
                    "name": "Font",
                    "value": "font"
                  }
                ]
              }
            ]
          },
          {
            "Name": "panel",
            "Type": "Panel",
            "Expanded": "false",
            "Properties": [
              {
                "name": "Height",
                "value": "\"100%\""
              },
              {
                "name": "Width",
                "value": "\"100%\""
              }
            ],
            "Children": [
              {
                "Name": "plottingPanel",
                "Type": "PlottingPanel",
                "Expanded": "false",
                "Properties": [
                  {
                    "name": "Gutters",
                    "value": "[0,0,0,0]"
                  },
                  {
                    "name": "ShowAreaRectangle",
                    "value": "false"
                  },
                  {
                    "name": "XTicks",
                    "value": "1"
                  },
                  {
                    "name": "EnabledZooming",
                    "value": "true"
                  },
                  {
                    "name": "XFixedTick",
                    "value": "0"
                  },
                  {
                    "name": "OnDoubleClick",
                    "value": "toggleFullScreen();"
                  },
                  {
                    "name": "YFixedTick",
                    "value": "0"
                  },
                  {
                    "name": "TRMessage",
                    "value": "%K1fcorrect%"
                  },
                  {
                    "name": "XAutoTicks",
                    "value": "false"
                  },
                  {
                    "name": "Height",
                    "value": "%changeOrientation()%"
                  },
                  {
                    "name": "Width",
                    "value": "Width1"
                  },
                  {
                    "name": "TLMessage",
                    "value": "%text%"
                  },
                  {
                    "name": "Enabled",
                    "value": "true"
                  },
                  {
                    "name": "Title",
                    "value": "\"Weighing or \\nMass Scale Model\""
                  },
                  {
                    "name": "SquareAspect",
                    "value": "true"
                  },
                  {
                    "name": "YTicks",
                    "value": "1"
                  },
                  {
                    "name": "MaximumY",
                    "value": "1"
                  },
                  {
                    "name": "OnDrag",
                    "value": "\n_view.plottingPanel.setProperty(\"MinimumY\",Math.max(_view.plottingPanel.getProperty(\"MinimumY\"),-1));\n_view.plottingPanel.setProperty(\"MaximumY\",Math.min(_view.plottingPanel.getProperty(\"MaximumY\"),3));\n"
                  },
                  {
                    "name": "MaximumX",
                    "value": "1"
                  },
                  {
                    "name": "EnabledDragging",
                    "value": "\"ENABLED_Y\""
                  },
                  {
                    "name": "YAutoTicks",
                    "value": "false"
                  },
                  {
                    "name": "MinimumX",
                    "value": "-1"
                  },
                  {
                    "name": "MinimumY",
                    "value": "-1"
                  },
                  {
                    "name": "AutoScaleY",
                    "value": "false"
                  },
                  {
                    "name": "OnZoom",
                    "value": "_view.plottingPanel.setZoomLimits([0.5,3]);\n_view.plottingPanel.setProperty(\"MinimumY\",Math.max(_view.plottingPanel.getProperty(\"MinimumY\"),-1));\n_view.plottingPanel.setProperty(\"MaximumY\",Math.min(_view.plottingPanel.getProperty(\"MaximumY\"),3));\n\n"
                  },
                  {
                    "name": "AutoScaleX",
                    "value": "false"
                  },
                  {
                    "name": "BRMessage",
                    "value": "\" t = \"+_view._format(t,\"0.00\") + \" s \""
                  }
                ],
                "Children": [
                  {
                    "Name": "image",
                    "Type": "Image2D",
                    "Properties": [
                      {
                        "name": "SizeX",
                        "value": "2"
                      },
                      {
                        "name": "RelativePosition",
                        "value": "\"CENTERED\""
                      },
                      {
                        "name": "X",
                        "value": "0"
                      },
                      {
                        "name": "ImageUrl",
                        "value": "\"./massscale/kilogramblankscalergb.jpg\""
                      },
                      {
                        "name": "Y",
                        "value": "0"
                      },
                      {
                        "name": "SizeY",
                        "value": "2"
                      }
                    ]
                  },
                  {
                    "Name": "centre",
                    "Type": "Group2D",
                    "Expanded": "false",
                    "Properties": [
                      {
                        "name": "X",
                        "value": "0"
                      },
                      {
                        "name": "Y",
                        "value": "0"
                      }
                    ],
                    "Children": [
                      {
                        "Name": "circle",
                        "Type": "Shape2D",
                        "Properties": [
                          {
                            "name": "FillColor",
                            "value": "\"url(#mygrandient)\""
                          },
                          {
                            "name": "SizeX",
                            "value": "L*2"
                          },
                          {
                            "name": "ShapeType",
                            "value": "\"ELLIPSE\""
                          },
                          {
                            "name": "X",
                            "value": "0"
                          },
                          {
                            "name": "Y",
                            "value": "0"
                          },
                          {
                            "name": "SizeY",
                            "value": "L*2"
                          }
                        ]
                      },
                      {
                        "Name": "segmentSet",
                        "Type": "SegmentSet2D",
                        "Properties": [
                          {
                            "name": "NumberOfElements",
                            "value": "n2"
                          },
                          {
                            "name": "SizeX",
                            "value": "dxs"
                          },
                          {
                            "name": "X",
                            "value": "xline2"
                          },
                          {
                            "name": "LineColor",
                            "value": "%color%"
                          },
                          {
                            "name": "Y",
                            "value": "yline2"
                          },
                          {
                            "name": "SizeY",
                            "value": "dys"
                          },
                          {
                            "name": "LineWidth",
                            "value": "%stroke%"
                          }
                        ]
                      }
                    ]
                  },
                  {
                    "Name": "group",
                    "Type": "Group2D",
                    "Expanded": "false",
                    "Properties": [
                      {
                        "name": "Transformation",
                        "value": "pi/2"
                      },
                      {
                        "name": "X",
                        "value": "0"
                      },
                      {
                        "name": "Y",
                        "value": "0"
                      }
                    ],
                    "Children": [
                      {
                        "Name": "thetao",
                        "Type": "Segment2D",
                        "Properties": [
                          {
                            "name": "SizeX",
                            "value": "xo"
                          },
                          {
                            "name": "LineColor",
                            "value": "\"Green\""
                          },
                          {
                            "name": "X",
                            "value": "0"
                          },
                          {
                            "name": "Y",
                            "value": "0"
                          },
                          {
                            "name": "Visibility",
                            "value": "answershow"
                          },
                          {
                            "name": "SizeY",
                            "value": "yo"
                          },
                          {
                            "name": "LineWidth",
                            "value": "3"
                          },
                          {
                            "name": "EnabledPosition",
                            "value": "\"ENABLED_ANY\""
                          }
                        ]
                      },
                      {
                        "Name": "theta",
                        "Type": "Arrow2D",
                        "Properties": [
                          {
                            "name": "FillColor",
                            "value": "\"Blue\""
                          },
                          {
                            "name": "SizeX",
                            "value": "x"
                          },
                          {
                            "name": "LineColor",
                            "value": "\"Blue\""
                          },
                          {
                            "name": "X",
                            "value": "0"
                          },
                          {
                            "name": "Y",
                            "value": "0"
                          },
                          {
                            "name": "SizeY",
                            "value": "y"
                          },
                          {
                            "name": "LineWidth",
                            "value": "5"
                          },
                          {
                            "name": "DrawFill",
                            "value": "true"
                          },
                          {
                            "name": "EnabledPosition",
                            "value": "\"ENABLED_ANY\""
                          },
                          {
                            "name": "Offset",
                            "value": "\"SOUTH_WEST\""
                          }
                        ]
                      },
                      {
                        "Name": "hint2",
                        "Type": "Text2D",
                        "Properties": [
                          {
                            "name": "Transformation",
                            "value": "-pi/2"
                          },
                          {
                            "name": "FillColor",
                            "value": "\"Red\""
                          },
                          {
                            "name": "X",
                            "value": "xo*1.2"
                          },
                          {
                            "name": "OnEnter",
                            "value": "var option = \"\"+massscaleo.toFixed(2) + \" kg\";\n"
                          },
                          {
                            "name": "Y",
                            "value": "yo*1.2"
                          },
                          {
                            "name": "Text",
                            "value": "getAnswerWithUnitText()"
                          },
                          {
                            "name": "Visibility",
                            "value": "(scaletype==1||scaletype==4)&&hintStage>=3"
                          },
                          {
                            "name": "EnabledPosition",
                            "value": "\"ENABLED_NO_MOVE\""
                          },
                          {
                            "name": "Font",
                            "value": "font"
                          }
                        ]
                      },
                      {
                        "Name": "hint",
                        "Type": "Text2D",
                        "Properties": [
                          {
                            "name": "Transformation",
                            "value": "-pi/2"
                          },
                          {
                            "name": "FillColor",
                            "value": "\"Red\""
                          },
                          {
                            "name": "X",
                            "value": "xo*1.2"
                          },
                          {
                            "name": "OnEnter",
                            "value": "var option = \"\"+massscaleo.toFixed(1) + \" kg\";\n"
                          },
                          {
                            "name": "Y",
                            "value": "yo*1.2"
                          },
                          {
                            "name": "Text",
                            "value": "getAnswerWithUnitText()"
                          },
                          {
                            "name": "Visibility",
                            "value": "scaletype==5&&hintStage>=3"
                          },
                          {
                            "name": "EnabledPosition",
                            "value": "\"ENABLED_NO_MOVE\""
                          },
                          {
                            "name": "Font",
                            "value": "font"
                          }
                        ]
                      }
                    ]
                  },
                  {
                    "Name": "centre2",
                    "Type": "Group2D",
                    "Expanded": "false",
                    "Properties": [
                      {
                        "name": "X",
                        "value": "0"
                      },
                      {
                        "name": "Y",
                        "value": "0"
                      }
                    ],
                    "Children": [
                      {
                        "Name": "textSet2",
                        "Type": "TextSet2D",
                        "Properties": [
                          {
                            "name": "NumberOfElements",
                            "value": "n"
                          },
                          {
                            "name": "SizeX",
                            "value": "sizex"
                          },
                          {
                            "name": "X",
                            "value": "xline"
                          },
                          {
                            "name": "Y",
                            "value": "yline"
                          },
                          {
                            "name": "Text",
                            "value": "%msg%"
                          },
                          {
                            "name": "SizeY",
                            "value": "sizey"
                          },
                          {
                            "name": "Font",
                            "value": "font"
                          },
                          {
                            "name": "ElementInteracted",
                            "value": "elementinteracted"
                          }
                        ]
                      }
                    ]
                  },
                  {
                    "Name": "shapedrago",
                    "Type": "Shape2D",
                    "Properties": [
                      {
                        "name": "FillColor",
                        "value": "\"rgba(0,0,0,0)\""
                      },
                      {
                        "name": "ShapeType",
                        "value": "\"WHEEL\""
                      },
                      {
                        "name": "OnDrag",
                        "value": "//restrict to fix length\nxodragtop= L*Math.cos(Math.atan2(yodragtop,xodragtop));\nyodragtop= L*Math.sin(Math.atan2(yodragtop,xodragtop));\n\n\nxo = 0.72*Math.sin(thetao)*yodragtop;\nyo = 0.72*Math.sin(thetao)*xodragtop;\n\nif (scaletype!=5){\nthetaodragtop = Math.round(Math.atan2(yodragtop,xodragtop)/(2*pi)*n2)/n2*(2*pi);\n}\nelse {\n// thetadragtop = Math.floor(Math.atan2(ydragtop,xdragtop)/(2*pi)*n2)/n2*(2*pi); \n thetaodragtop = Math.round(Math.atan2(yodragtop,xodragtop)/(2*pi)*(n2))/(n2)*(2*pi)+pi/50;\n  }\n\n\n//thetaodragtop = Math.atan2(yodragtop,xodragtop);\nthetao=(thetaodragtop-pi/2)%(2*pi);\n//theta = 2*pi-massscale/5*(2*pi);\nmassscaleo = -(thetao)*maxy/(2*pi);\nif (massscaleo <0){\n  massscaleo = maxy+massscaleo;\n  }\n\n"
                      },
                      {
                        "name": "OnRelease",
                        "value": "// sync position to be at exact marking\nxodragtop = L*Math.cos(thetaodragtop);\nyodragtop = L*Math.sin(thetaodragtop);\n\n\n\nthetao = 2*pi+thetao;\n"
                      },
                      {
                        "name": "SizeX",
                        "value": "30"
                      },
                      {
                        "name": "X",
                        "value": "xodragtop"
                      },
                      {
                        "name": "LineColor",
                        "value": "\"Green\""
                      },
                      {
                        "name": "Y",
                        "value": "yodragtop"
                      },
                      {
                        "name": "OnPress",
                        "value": "disabled=false;"
                      },
                      {
                        "name": "SizeY",
                        "value": "30"
                      },
                      {
                        "name": "PixelSize",
                        "value": "true"
                      },
                      {
                        "name": "LineWidth",
                        "value": "3"
                      },
                      {
                        "name": "EnabledPosition",
                        "value": "\"ENABLED_ANY\""
                      }
                    ]
                  },
                  {
                    "Name": "shapedrag2",
                    "Type": "Shape2D",
                    "Properties": [
                      {
                        "name": "FillColor",
                        "value": "\"rgba(0,0,0,0)\""
                      },
                      {
                        "name": "ShapeType",
                        "value": "\"WHEEL\""
                      },
                      {
                        "name": "OnDrag",
                        "value": "//restrict to fix length\n//xdragtop= Math.sqrt(L*L-ydragtop*ydragtop);\n//ydragtop= Math.sqrt(L*L-xdragtop*xdragtop);\nxdragtop= L*Math.cos(Math.atan2(ydragtop,xdragtop));\nydragtop= L*Math.sin(Math.atan2(ydragtop,xdragtop));\n\n\n\nx = 0.72*Math.sin(theta)*ydragtop;\ny = 0.72*Math.sin(theta)*xdragtop;\n//ctam = Math.round(Math.atan2(mx,my)/(2*pi)*60)/60*(2*pi);\nif (scaletype!=5){\nthetadragtop = Math.round(Math.atan2(ydragtop,xdragtop)/(2*pi)*n2)/n2*(2*pi);\n}\nelse {\n// thetadragtop = Math.floor(Math.atan2(ydragtop,xdragtop)/(2*pi)*n2)/n2*(2*pi); \n thetadragtop = Math.round(Math.atan2(ydragtop,xdragtop)/(2*pi)*(n2))/(n2)*(2*pi)+pi/50;\n  }\ntheta=(thetadragtop-pi/2)%(2*pi);\n//theta = 2*pi-massscale/5*(2*pi);\nmassscale = -(theta)*maxy/(2*pi);\nmassscaleo=massscale; // sync store with actual for input checking\nif (massscale <0){\n  massscale = maxy+massscale;\n  massscaleo=massscale; // sync store with actual for input checking\n  }\n\n"
                      },
                      {
                        "name": "OnRelease",
                        "value": "// sync position to be at exact marking\nxdragtop = L*Math.cos(thetadragtop);\nydragtop = L*Math.sin(thetadragtop);\n\ntheta = 2*pi+theta;\nmassscaleo=massscale; // sync store with actual for input checking\n"
                      },
                      {
                        "name": "SizeX",
                        "value": "30"
                      },
                      {
                        "name": "X",
                        "value": "xdragtop"
                      },
                      {
                        "name": "LineColor",
                        "value": "\"Yellow\""
                      },
                      {
                        "name": "Y",
                        "value": "ydragtop"
                      },
                      {
                        "name": "OnPress",
                        "value": "disabled=false;"
                      },
                      {
                        "name": "SizeY",
                        "value": "30"
                      },
                      {
                        "name": "PixelSize",
                        "value": "true"
                      },
                      {
                        "name": "LineWidth",
                        "value": "3"
                      },
                      {
                        "name": "EnabledPosition",
                        "value": "\"ENABLED_ANY\""
                      }
                    ]
                  },
                  {
                    "Name": "shapedrag",
                    "Type": "Shape2D",
                    "Properties": [
                      {
                        "name": "FillColor",
                        "value": "\"rgba(0,0,0,0)\""
                      },
                      {
                        "name": "SizeX",
                        "value": "30"
                      },
                      {
                        "name": "ShapeType",
                        "value": "\"ELLIPSE\""
                      },
                      {
                        "name": "X",
                        "value": "xdrag"
                      },
                      {
                        "name": "LineColor",
                        "value": "\"Black\""
                      },
                      {
                        "name": "Y",
                        "value": "ydrag"
                      },
                      {
                        "name": "Visibility",
                        "value": "false"
                      },
                      {
                        "name": "SizeY",
                        "value": "30"
                      },
                      {
                        "name": "PixelSize",
                        "value": "true"
                      },
                      {
                        "name": "LineWidth",
                        "value": "4"
                      },
                      {
                        "name": "EnabledPosition",
                        "value": "\"ENABLED_ANY\""
                      },
                      {
                        "name": "OnDrag",
                        "value": "thetadrag = Math.atan2(ydrag,xdrag)-pi/2;\n_view.comboBox.setSelectedOptions([\"user defined\"]);\n//selected[0]=\"user_defined\";\n"
                      }
                    ]
                  },
                  {
                    "Name": "shape2",
                    "Type": "Shape2D",
                    "Properties": [
                      {
                        "name": "FillColor",
                        "value": "\"rgba(0,0,0,0)\""
                      },
                      {
                        "name": "SizeX",
                        "value": "30"
                      },
                      {
                        "name": "ShapeType",
                        "value": "\"ELLIPSE\""
                      },
                      {
                        "name": "X",
                        "value": "x"
                      },
                      {
                        "name": "LineColor",
                        "value": "\"Black\""
                      },
                      {
                        "name": "Y",
                        "value": "y"
                      },
                      {
                        "name": "Visibility",
                        "value": "false"
                      },
                      {
                        "name": "SizeY",
                        "value": "30"
                      },
                      {
                        "name": "PixelSize",
                        "value": "true"
                      },
                      {
                        "name": "EnabledPosition",
                        "value": "\"ENABLED_ANY\""
                      },
                      {
                        "name": "OnDrag",
                        "value": "theta = Math.atan2(y,x)-pi/2;\n_view.comboBox.setSelectedOptions([\"user defined\"]);\n//selected[0]=\"user_defined\";\n"
                      }
                    ]
                  },
                  {
                    "Name": "_K1fcorrect_",
                    "Type": "Text2D",
                    "Properties": [
                      {
                        "name": "FillColor",
                        "value": "K1fcorrectbackground"
                      },
                      {
                        "name": "X",
                        "value": "0"
                      },
                      {
                        "name": "Y",
                        "value": "0.35"
                      },
                      {
                        "name": "Text",
                        "value": "%K1fcorrect%"
                      },
                      {
                        "name": "Visibility",
                        "value": "false"
                      },
                      {
                        "name": "Font",
                        "value": "\"normal normal 4vw \""
                      },
                      {
                        "name": "EnabledPosition",
                        "value": "\"ENABLED_Y\""
                      }
                    ]
                  },
                  {
                    "Name": "coin",
                    "Type": "Image2D",
                    "Properties": [
                      {
                        "name": "SizeX",
                        "value": "rangex/4"
                      },
                      {
                        "name": "RelativePosition",
                        "value": "\"SOUTH\""
                      },
                      {
                        "name": "ImageUrl",
                        "value": "\"./massscale/Singapore-One-dollar-Coin.png\""
                      },
                      {
                        "name": "Y",
                        "value": "1"
                      },
                      {
                        "name": "Visibility",
                        "value": "coinshow"
                      },
                      {
                        "name": "SizeY",
                        "value": "rangey/4"
                      }
                    ]
                  },
                  {
                    "Name": "pineapple",
                    "Type": "Image2D",
                    "Properties": [
                      {
                        "name": "SizeX",
                        "value": "rangex/2.5"
                      },
                      {
                        "name": "RelativePosition",
                        "value": "\"SOUTH\""
                      },
                      {
                        "name": "ImageUrl",
                        "value": "\"./massscale/pineapple01-md.jpg\""
                      },
                      {
                        "name": "Y",
                        "value": "1"
                      },
                      {
                        "name": "Visibility",
                        "value": "pineappleshow"
                      },
                      {
                        "name": "SizeY",
                        "value": "rangey*1.1"
                      }
                    ]
                  },
                  {
                    "Name": "apple",
                    "Type": "Image2D",
                    "Properties": [
                      {
                        "name": "SizeX",
                        "value": "rangex/4"
                      },
                      {
                        "name": "RelativePosition",
                        "value": "\"SOUTH\""
                      },
                      {
                        "name": "ImageUrl",
                        "value": "\"./massscale/Single_apple.png\""
                      },
                      {
                        "name": "Y",
                        "value": "1"
                      },
                      {
                        "name": "Visibility",
                        "value": "appleshow"
                      },
                      {
                        "name": "SizeY",
                        "value": "rangey/3"
                      }
                    ]
                  },
                  {
                    "Name": "step",
                    "Type": "Group2D",
                    "Expanded": "false",
                    "Properties": [
                      {
                        "name": "X",
                        "value": "0"
                      },
                      {
                        "name": "Y",
                        "value": "0"
                      },
                      {
                        "name": "Visibility",
                        "value": "false"
                      }
                    ],
                    "Children": [
                      {
                        "Name": "arrow2",
                        "Type": "Arrow2D",
                        "Properties": [
                          {
                            "name": "MarkEnd",
                            "value": "\"TRIANGLE\""
                          },
                          {
                            "name": "SizeX",
                            "value": "0"
                          },
                          {
                            "name": "LineColor",
                            "value": "\"rgba(0,150,0,1.0)\""
                          },
                          {
                            "name": "OnPress",
                            "value": "ymax=ymax+0.25;\nymin=ymin-0.25;\nif (ymax>2.5)ymax=2.5;\nif (ymin<-1)ymin=-1;\n"
                          },
                          {
                            "name": "SizeY",
                            "value": "20"
                          },
                          {
                            "name": "PixelSize",
                            "value": "true"
                          },
                          {
                            "name": "EnabledPosition",
                            "value": "\"ENABLED_NO_MOVE\""
                          }
                        ]
                      },
                      {
                        "Name": "arrow",
                        "Type": "Arrow2D",
                        "Properties": [
                          {
                            "name": "MarkEnd",
                            "value": "\"TRIANGLE\""
                          },
                          {
                            "name": "SizeX",
                            "value": "0"
                          },
                          {
                            "name": "LineColor",
                            "value": "\"rgba(0,150,0,1.0)\""
                          },
                          {
                            "name": "OnPress",
                            "value": "ymax=ymax-0.25;\nymin=ymin+0.25;\nif (ymax<0.75)ymax=0.75;\nif (ymin>-0.75)ymin=-0.75;\n"
                          },
                          {
                            "name": "SizeY",
                            "value": "-20"
                          },
                          {
                            "name": "PixelSize",
                            "value": "true"
                          },
                          {
                            "name": "EnabledPosition",
                            "value": "\"ENABLED_NO_MOVE\""
                          }
                        ]
                      }
                    ]
                  }
                ]
              },
              {
                "Name": "plottingPanelxvst",
                "Type": "PlottingPanel",
                "Expanded": "false",
                "Properties": [
                  {
                    "name": "Gutters",
                    "value": "[0,0,0,0]"
                  },
                  {
                    "name": "YScalePrecision",
                    "value": "2"
                  },
                  {
                    "name": "XFixedTick",
                    "value": "0"
                  },
                  {
                    "name": "Title",
                    "value": "\"mass  vs. Time\""
                  },
                  {
                    "name": "MaximumY",
                    "value": "maxy"
                  },
                  {
                    "name": "MaximumX",
                    "value": "T"
                  },
                  {
                    "name": "YFixedTick",
                    "value": "0"
                  },
                  {
                    "name": "YAutoTicks",
                    "value": "false"
                  },
                  {
                    "name": "MinimumX",
                    "value": "0"
                  },
                  {
                    "name": "MinimumY",
                    "value": "0"
                  },
                  {
                    "name": "XTickStep",
                    "value": "1"
                  },
                  {
                    "name": "TitleY",
                    "value": "\"mass  (kg)\""
                  },
                  {
                    "name": "YTickStep",
                    "value": "maxy/10"
                  },
                  {
                    "name": "TitleX",
                    "value": "\"Time (s)\""
                  },
                  {
                    "name": "AutoScaleY",
                    "value": "false"
                  },
                  {
                    "name": "AutoScaleX",
                    "value": "true"
                  },
                  {
                    "name": "MarginX",
                    "value": "10"
                  },
                  {
                    "name": "MarginY",
                    "value": "10"
                  },
                  {
                    "name": "XAutoTicks",
                    "value": "false"
                  },
                  {
                    "name": "Height",
                    "value": "%changeOrientation()%"
                  },
                  {
                    "name": "Width",
                    "value": "Width2"
                  },
                  {
                    "name": "BRMessage",
                    "value": "%K1fcorrect%"
                  },
                  {
                    "name": "Display",
                    "value": "\"none\""
                  }
                ],
                "Children": [
                  {
                    "Name": "trail2",
                    "Type": "Trail2D",
                    "Properties": [
                      {
                        "name": "Active",
                        "value": "t>0"
                      },
                      {
                        "name": "Connected",
                        "value": "t>0"
                      },
                      {
                        "name": "LineColor",
                        "value": "\"Blue\""
                      },
                      {
                        "name": "InputX",
                        "value": "t"
                      },
                      {
                        "name": "InputY",
                        "value": "massscale"
                      },
                      {
                        "name": "LineWidth",
                        "value": "1.5"
                      }
                    ]
                  },
                  {
                    "Name": "trailDot22",
                    "Type": "Shape2D",
                    "Properties": [
                      {
                        "name": "FillColor",
                        "value": "\"Blue\""
                      },
                      {
                        "name": "SizeX",
                        "value": "10"
                      },
                      {
                        "name": "LineColor",
                        "value": "\"Black\""
                      },
                      {
                        "name": "X",
                        "value": "t"
                      },
                      {
                        "name": "Y",
                        "value": "massscale"
                      },
                      {
                        "name": "SizeY",
                        "value": "10"
                      },
                      {
                        "name": "PixelSize",
                        "value": "true"
                      }
                    ]
                  },
                  {
                    "Name": "equilibrium",
                    "Type": "Trail2D",
                    "Properties": [
                      {
                        "name": "LineColor",
                        "value": "\"Green\""
                      },
                      {
                        "name": "InputX",
                        "value": "t"
                      },
                      {
                        "name": "InputY",
                        "value": "massscaleo"
                      },
                      {
                        "name": "LineWidth",
                        "value": "1.5"
                      }
                    ]
                  }
                ]
              }
            ]
          },
          {
            "Name": "html",
            "Type": "Panel",
            "Properties": [
              {
                "name": "Html",
                "value": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <meta charset=\"UTF-8\">\n    <title>Reading Mass Scales</title>\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <style>\n      :root {\n        --bg: #f7fbff;\n        --card: #ffffff;\n        --ink: #17324d;\n        --accent: #0f8aa6;\n        --accent-soft: #dff5fa;\n        --gold: #fff4c7;\n        --line: #cfe0eb;\n      }\n\n      body {\n        margin: 0;\n        font-family: \"Segoe UI\", Arial, sans-serif;\n        background: linear-gradient(180deg, #eef8ff 0%, #f9fcff 100%);\n        color: var(--ink);\n        line-height: 1.6;\n      }\n\n      .wrap {\n        max-width: 960px;\n        margin: 0 auto;\n        padding: 24px 18px 40px;\n      }\n\n      .hero {\n        background: linear-gradient(135deg, #dff5fa 0%, #ffffff 100%);\n        border: 1px solid var(--line);\n        border-radius: 18px;\n        padding: 24px;\n        box-shadow: 0 10px 28px rgba(20, 50, 80, 0.08);\n      }\n\n      h1, h2, h3 {\n        margin-top: 0;\n        color: #0d4d73;\n      }\n\n      h1 {\n        font-size: 2rem;\n        margin-bottom: 10px;\n      }\n\n      h2 {\n        font-size: 1.35rem;\n        margin-bottom: 10px;\n      }\n\n      h3 {\n        font-size: 1.05rem;\n        margin-bottom: 8px;\n      }\n\n      p {\n        margin: 0 0 12px;\n      }\n\n      .tag {\n        display: inline-block;\n        background: var(--gold);\n        border: 1px solid #eadf9a;\n        border-radius: 999px;\n        padding: 6px 12px;\n        font-size: 0.95rem;\n        margin-bottom: 12px;\n      }\n\n      .grid {\n        display: grid;\n        grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));\n        gap: 16px;\n        margin-top: 18px;\n      }\n\n      .card {\n        background: var(--card);\n        border: 1px solid var(--line);\n        border-radius: 16px;\n        padding: 18px;\n        box-shadow: 0 6px 18px rgba(20, 50, 80, 0.05);\n      }\n\n      .steps, .tips, .goals, .ideas {\n        padding-left: 20px;\n        margin: 10px 0 0;\n      }\n\n      .steps li, .tips li, .goals li, .ideas li {\n        margin-bottom: 8px;\n      }\n\n      .highlight {\n        background: var(--accent-soft);\n        border-left: 5px solid var(--accent);\n        padding: 14px 16px;\n        border-radius: 12px;\n        margin: 18px 0;\n      }\n\n      .challenge {\n        background: #fffef7;\n        border: 1px solid #efe3a4;\n        border-radius: 16px;\n        padding: 18px;\n        margin-top: 18px;\n      }\n\n      .footer-note {\n        margin-top: 20px;\n        font-size: 0.96rem;\n        color: #47627a;\n      }\n\n      strong.code {\n        color: #0b6178;\n      }\n    </style>\n  </head>\n  <body>\n    <div class=\"wrap\">\n      <section class=\"hero\">\n        <div class=\"tag\">Primary Mathematics \u2022 Measurement \u2022 Reading Scales</div><iframe width=\"560\" height=\"315\" src=\"https://www.youtube.com/embed/jFI3ioSFcb0?si=gpTIdq9plfvvW_dR\" 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>\n        <h1>Reading Mass Scales</h1>\n        <p>\n          This interactive helps learners read the mass shown on different scale faces.\n          Students can practise reading in <strong>grams</strong> and <strong>kilograms</strong>,\n          compare different scales, and explain how they know the answer.\n        </p>\n        <div class=\"highlight\">\n          <strong>Big idea:</strong> To read a scale correctly, first identify the <strong>maximum value</strong>,\n          then work out the <strong>value of each small division</strong>, and finally count carefully to the pointer.\n        </div>\n      </section>\n\n      <div class=\"grid\">\n        <section class=\"card\">\n          <h2>Learning Goals</h2>\n          <ul class=\"goals\">\n            <li>Read a scale accurately in grams or kilograms.</li>\n            <li>Work out the value of one small division.</li>\n            <li>Choose the correct unit for the answer.</li>\n            <li>Explain how the answer was found.</li>\n          </ul>\n        </section>\n\n        <section class=\"card\">\n          <h2>How To Use</h2>\n          <ul class=\"steps\">\n            <li>Choose a scale or a random question from the first menu.</li>\n            <li>Watch the pointer settle, or switch to still mode for an instant reading.</li>\n            <li>Enter the answer using the response field or dropdown.</li>\n            <li>Tap <strong class=\"code\">g</strong> or <strong class=\"code\">kg</strong> to change the unit shown.</li>\n            <li>Use <strong class=\"code\">Hint</strong> for guided help, not just the answer.</li>\n            <li>Use <strong class=\"code\">Replay</strong> to see the same reading again.</li>\n            <li>Use <strong class=\"code\">Reset</strong> for a new question on the same scale.</li>\n          </ul>\n        </section>\n\n        <section class=\"card\">\n          <h2>What To Look For</h2>\n          <ul class=\"tips\">\n            <li>What is the largest value on this scale face?</li>\n            <li>How many small divisions are there between two labelled marks?</li>\n            <li>What is each small division worth?</li>\n            <li>Is the answer better written in grams or kilograms?</li>\n          </ul>\n        </section>\n      </div>\n\n      <section class=\"card\" style=\"margin-top: 18px;\">\n        <h2>Activities To Try</h2>\n\n        <h3>1. Quick Start</h3>\n        <ul class=\"ideas\">\n          <li>Choose the <strong>1.00 kg</strong> scale.</li>\n          <li>Read 5 different random positions in <strong>grams</strong>.</li>\n          <li>Say the value of each small division before answering.</li>\n        </ul>\n\n        <h3>2. Unit Switch</h3>\n        <ul class=\"ideas\">\n          <li>Read one scale position in grams.</li>\n          <li>Switch the display and read the same position in kilograms.</li>\n          <li>Discuss how the number changes but the mass stays the same.</li>\n        </ul>\n\n        <h3>3. Compare The Scale Faces</h3>\n        <ul class=\"ideas\">\n          <li>Try the <strong>1.00 kg</strong>, <strong>4.00 kg</strong>, and <strong>5.0 kg</strong> scales.</li>\n          <li>For each one, identify the value of one small division.</li>\n          <li>Explain which scale is easiest to read and why.</li>\n        </ul>\n\n        <h3>4. Guided Practice With Hints</h3>\n        <ul class=\"ideas\">\n          <li>Attempt the reading first without help.</li>\n          <li>Use <strong>Hint 1</strong> to identify the scale range and the correct unit.</li>\n          <li>Use <strong>Hint 2</strong> to work out the value of each small division and count from the nearest labelled mark.</li>\n        </ul>\n\n        <h3>5. Everyday Objects</h3>\n        <ul class=\"ideas\">\n          <li>Select the <strong>apple</strong>, <strong>pineapple</strong>, or <strong>$1 coin</strong>.</li>\n          <li>Estimate the mass before reading the scale.</li>\n          <li>Compare your estimate with the actual reading.</li>\n        </ul>\n      </section>\n\n      <section class=\"challenge\">\n        <h2>Challenge Questions</h2>\n        <ul class=\"ideas\">\n          <li>How do you know whether each small division is worth 20 g, 50 g, or 100 g?</li>\n          <li>Which is harder to read: a scale with more divisions or fewer divisions? Why?</li>\n          <li>If the pointer is halfway between two small marks, what should you do?</li>\n          <li>Can you explain your answer in a full sentence using the correct unit?</li>\n        </ul>\n      </section>\n\n      <section class=\"card\" style=\"margin-top: 18px;\">\n        <h2>Teacher Suggestions</h2>\n        <ul class=\"ideas\">\n          <li>Ask pupils to say the division value aloud before giving the reading.</li>\n          <li>Encourage pupils to explain their thinking, not just state an answer.</li>\n          <li>Use still mode for first attempts and animated mode for replay and discussion.</li>\n          <li>Pair pupils and let one student read while the other checks the unit and counting.</li>\n        </ul>\n      </section>\n\n      <p class=\"footer-note\">\n        Success means more than getting the correct number. A strong answer includes the\n        <strong>correct value</strong>, the <strong>correct unit</strong>, and a clear explanation\n        of how the scale was read.\n      </p>\n    </div>\n  </body>\n</html>"
              }
            ]
          }
        ]
      }
    ],
    "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/"
  }
}