<?xml version="1.0"?>
<!DOCTYPE activity SYSTEM "escot.dtd" >
<activity name="Shoelaces Week 2: Choosing Scales" size="650,460" escotVersion="1.2.11" puzzle_id="21">
  <page name="Introduction">
    <component class="org.escot.demo.SimpleGraph" position="381,212" size="221,179" portid="SimpleGraph-1" visible="true">
      <property name="TraceXPrecision" value="2"/>
      <property name="VDottedLineColor" value="128,128,128"/>
      <property name="TraceColor" value="255,0,0"/>
      <property name="labelInterval" value="2,2"/>
      <property name="TraceYPrecision" value="2"/>
      <property name="derivative" value="0"/>
      <property name="HDottedLineColor" value="128,128,128"/>
      <property name="VDottedLineOn" value="true"/>
      <property name="TraceOn" value="false"/>
      <property name="HDottedLineOn" value="true"/>
      <property name="xAxisName" value="% Population with Access to Sanitation"/>
      <property name="scrollable" value="false"/>
      <property name="TraceDrawCrosses" value="true"/>
      <property name="extent" value="-4.0,-6.0,34.0,56.0"/>
      <property name="tickInterval" value="3,5"/>
      <property name="yAxisName" value="Life Expectancy"/>
    </component>
    <component class="com.sri.escot.NumberEntry" position="359,189" size="163,17" visible="true" portid="NumberEntry-1">
      <property name="maximumDecimalPlaces" value="0"/>
      <property name="label" value="Max Life Expectancy"/>
      <property name="value" value="50.0"/>
      <property name="allowNegative" value="true"/>
      <property name="minimumDecimalPlaces" value="0"/>
      <property name="suffix" value=""/>
      <property name="editable" value="false"/>
    </component>
    <component class="com.sri.escot.NumberEntry" position="455,417" size="153,17" visible="true" portid="NumberEntry-2">
      <property name="maximumDecimalPlaces" value="0"/>
      <property name="label" value="Max % Sanitation"/>
      <property name="value" value="30.0"/>
      <property name="allowNegative" value="true"/>
      <property name="minimumDecimalPlaces" value="0"/>
      <property name="suffix" value=""/>
      <property name="editable" value="true"/>
    </component>
    <component class="virtuoso.logo.LogoScript" position="220,519" size="25,13" visible="false" portid="LogoScript-1">
      <export name="life" type="ordered pair">((0,0,0),(97.0,71.0),(51.0,62.0),(42.0,60.0),(24.0,44.0),(70.0,64.0),(43.0,59.0),(98.0,75.0),(95.0,63.0),(94.0,71.0),(56.0,56.0),(58.0,46.0),(74.0,69.0))</export>
      <![CDATA[make "life  [
  [97 71] [51 62] [42 55]
  [24 44] [70 64] [43 59]
  [98 75] [95 63] [94 71]
  [56 56] [58 46] [74 69] 
  [42 60]
]
]]>
      <property name="toolBarShowing" value="false"/>
    </component>
    <component class="com.ttools.PENWrapper" position="45,204" size="260,189" visible="true" portid="PENWrapper-2">
      <property name="ProgramFilename" value="prgs/sanitation.prg"/>
    </component>
    <component class="com.sri.escot.javascript.JavaScript" position="196,487" size="73,23" visible="false" portid="JavaScript-1">
      <![CDATA[addImporter(new EscotNumberImporter("maxXIn3"))
addImporter(new EscotNumberImporter("maxYIn3"))


xTick3 = new EscotNumber("xTick3")
yTick3 = new EscotNumber("yTick3")
widthOut3 = new EscotNumber("widthOut3")
heightOut3 = new EscotNumber("heightOut3")
minX3 = new EscotNumber("minX3")
minY3 = new EscotNumber("minY3")

xCheck3 = new EscotString("xCheck3")
yCheck3 = new EscotString("yCheck3")

addExport(xTick3)
addExport(yTick3)
addExport(widthOut3)
addExport(heightOut3)
addExport(minX3)
addExport(minY3)
addExport(xCheck3)
addExport(yCheck3)


function maxXIn3Changed() {
	minX3.value = -Math.round(maxXIn3.value/8)
	widthOut3.value = maxXIn3.value - minX3.value
	xTick3.value = Math.round(maxXIn3.value/10)
	if (maxXIn3.value < 100) {
		xCheck3.value = "Max X is too small"	
	}
	else {
		if (maxXIn3.value < 130) {
			xCheck3.value = "Max X is OK"
		}
		else {
			xCheck3.value = "Max X is too large"
		}
	}
}
function maxYIn3Changed() {
	minY3.value = -Math.round(maxYIn3.value/8)
	heightOut3.value = maxYIn3.value - minY3.value
	yTick3.value = Math.round(maxYIn3.value/10)
	if (maxYIn3.value < 80) {
		yCheck3.value = "Max Y is too small"	
	}
	else {
		if (maxYIn3.value < 100) {
			yCheck3.value = "Max Y is OK"
		}
		else {
			yCheck3.value = "Max Y is too large"
		}
	}}]]>
    </component>
    <component class="com.sri.escot.EscotSwingScroller" position="355,214" size="17,106" visible="true" portid="EscotSwingScroller-1">
      <property name="scaleFactor" value="1.0"/>
      <property name="minimumValue" value="5"/>
      <property name="unitIncrement" value="10"/>
      <property name="maximumValue" value="600"/>
      <property name="blockIncrement" value="100"/>
      <property name="orientation" value="1"/>
    </component>
    <component class="com.sri.escot.EscotSwingScroller" position="494,397" size="110,17" visible="true" portid="EscotSwingScroller-2">
      <property name="scaleFactor" value="1.0"/>
      <property name="minimumValue" value="5"/>
      <property name="unitIncrement" value="10"/>
      <property name="maximumValue" value="600"/>
      <property name="blockIncrement" value="100"/>
      <property name="orientation" value="0"/>
    </component>
    <component class="org.escot.demo.StringView" position="361,168" size="150,18" visible="true" portid="StringView-1">
      <property name="foreground" value="0,0,0"/>
      <property name="background" value="204,204,204"/>
      <property name="font" value="Dialog,Dialog,0,12"/>
    </component>
    <component class="org.escot.demo.StringView" position="353,398" size="134,16" visible="true" portid="StringView-2">
      <property name="foreground" value="0,0,0"/>
      <property name="background" value="204,204,204"/>
      <property name="font" value="Dialog,Dialog,0,12"/>
    </component>
    <component class="com.sri.escot.NumberEntry" position="566,519" size="114,17" visible="false" portid="NumberEntry-3">
      <property name="maximumDecimalPlaces" value="3"/>
      <property name="label" value="Initial Max X"/>
      <property name="value" value="30.0"/>
      <property name="allowNegative" value="true"/>
      <property name="minimumDecimalPlaces" value="0"/>
      <property name="suffix" value=""/>
      <property name="editable" value="true"/>
    </component>
    <component class="com.sri.escot.NumberEntry" position="566,480" size="129,17" visible="false" portid="NumberEntry-4">
      <property name="maximumDecimalPlaces" value="3"/>
      <property name="label" value="Initial Max Y"/>
      <property name="value" value="50.0"/>
      <property name="allowNegative" value="true"/>
      <property name="minimumDecimalPlaces" value="0"/>
      <property name="suffix" value=""/>
      <property name="editable" value="true"/>
    </component>
    <component class="org.escot.demo.AppendingTextEd" position="5,8" size="636,160" visible="true" portid="AppendingTextEd-2">
      <![CDATA[Choosing a good scale is an important part of creating a graph to display data. The scale determines what portion of the x and y axes people will see. If you've ever made a graph where the data wouldn't all fit on the paper, or was too squashed together to see any patterns, you'll know what we mean. When you work on a graphing calculator, choosing a good scale is called setting the WINDOW.

TO DO:
The graph below has two scroll bars. Use the scrollbars to adjust the Maximum X and Maximum Y values of the graph. You will see that as you change the maximum value for each axis the scale is also adjusted.  (Note: Some or all of the data may not be visible with the current scale.)

As you adjust the window size for the graph, some of the data points in the table will change color. This happens when the corresponding points show up in the current window. There is also a message near each scrollbar to help you see if your scale is too small, too large, or just right!]]>
      <property name="foreground" value="0,0,0"/>
      <property name="background" value="255,255,255"/>
      <property name="font" value="Application,Application,0,10"/>
      <property name="editable" value="false"/>
    </component>
    <wire type="org.escot.Broker">
      <from portid="LogoScript-1" name="life"/>
      <to portid="SimpleGraph-1" name=""/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="SimpleGraph-1" name="y_max"/>
      <to portid="NumberEntry-1" name="number"/>
      <to portid="PENWrapper-2" name="maxY"/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="SimpleGraph-1" name="x_max"/>
      <to portid="NumberEntry-2" name="number"/>
      <to portid="PENWrapper-2" name="maxX"/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="EscotSwingScroller-1" name="value"/>
      <to portid="JavaScript-1" name="maxYIn3"/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="EscotSwingScroller-2" name="value"/>
      <to portid="JavaScript-1" name="maxXIn3"/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="JavaScript-1" name="xTick3"/>
      <to portid="SimpleGraph-1" name="x_ticks"/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="JavaScript-1" name="yTick3"/>
      <to portid="SimpleGraph-1" name="y_ticks"/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="JavaScript-1" name="widthOut3"/>
      <to portid="SimpleGraph-1" name="width"/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="JavaScript-1" name="heightOut3"/>
      <to portid="SimpleGraph-1" name="height"/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="JavaScript-1" name="minX3"/>
      <to portid="SimpleGraph-1" name="x_min"/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="JavaScript-1" name="minY3"/>
      <to portid="SimpleGraph-1" name="y_min"/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="NumberEntry-3" name="number"/>
      <to portid="EscotSwingScroller-2" name="value"/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="NumberEntry-4" name="number"/>
      <to portid="EscotSwingScroller-1" name="value"/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="JavaScript-1" name="xCheck3"/>
      <to portid="StringView-2" name="StringView"/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="JavaScript-1" name="yCheck3"/>
      <to portid="StringView-1" name="StringView"/>
    </wire>
  </page>
  <page name="Practice">
    <component class="com.ttools.PENWrapper" position="5,5" size="648,451" visible="false" portid="PENWrapper-1">
      <property name="rowHeight" value="100.0"/>
      <property name="columnWidth" value="100.0"/>
      <property name="gridHeight" value="440.0"/>
      <property name="gridWidth" value="640.0"/>
      <property name="gridColor" value="blue"/>
      <property name="gridVisible" value="true"/>
      <property name="ProgramFilename" value="prgs/grid0.4.prg"/>
    </component>
    <component class="org.escot.demo.SimpleGraph" position="34,159" size="228,100" portid="SimpleGraph-1" visible="true">
      <property name="TraceXPrecision" value="2"/>
      <property name="VDottedLineColor" value="128,128,128"/>
      <property name="TraceColor" value="255,0,0"/>
      <property name="labelInterval" value="2,1"/>
      <property name="TraceYPrecision" value="2"/>
      <property name="derivative" value="0"/>
      <property name="HDottedLineColor" value="128,128,128"/>
      <property name="VDottedLineOn" value="true"/>
      <property name="TraceOn" value="false"/>
      <property name="HDottedLineOn" value="true"/>
      <property name="xAxisName" value=""/>
      <property name="scrollable" value="false"/>
      <property name="TraceDrawCrosses" value="true"/>
      <property name="extent" value="-0.25,-8.0,2.25,58.0"/>
      <property name="tickInterval" value="0,5"/>
      <property name="yAxisName" value=""/>
    </component>
    <component class="com.sri.escot.NumberEntry" position="8,135" size="46,17" visible="true" portid="NumberEntry-1">
      <property name="maximumDecimalPlaces" value="0"/>
      <property name="label" value=""/>
      <property name="value" value="50.0"/>
      <property name="allowNegative" value="true"/>
      <property name="minimumDecimalPlaces" value="0"/>
      <property name="suffix" value=""/>
      <property name="editable" value="false"/>
    </component>
    <component class="com.sri.escot.NumberEntry" position="251,283" size="45,17" visible="true" portid="NumberEntry-2">
      <property name="maximumDecimalPlaces" value="3"/>
      <property name="label" value=""/>
      <property name="value" value="2.0"/>
      <property name="allowNegative" value="true"/>
      <property name="minimumDecimalPlaces" value="0"/>
      <property name="suffix" value=""/>
      <property name="editable" value="false"/>
    </component>
    <component class="virtuoso.logo.LogoScript" position="94,590" size="25,13" visible="false" portid="LogoScript-1">
      <export name="growth" type="ordered pair">((0,0,255),(7.0,119.3),(8.0,127.0),(9.0,132.0),(10.0,137.1),(12.0,147.3),(13.0,152.4),(14.0,157.5),(15.0,162.2))</export>
      <export name="mortality" type="ordered pair">((0,0,0),(3.9,265.0),(3.22,238.0),(2.78,160.0),(2.29,111.0),(1.81,125.0),(1.8,41.0),(1.77,182.0),(1.68,32.0),(1.51,114.0),(1.41,60.0),(1.27,127.0),(1.09,90.0))</export>
      <![CDATA[make "mortality  [
	[3.9 265]
	[3.22 238]
	[2.78 160]
	[2.29 111]
	[1.81 125]
	[1.8 41]
	[1.77 182]
	[1.68 32]
	[1.51 114]
	[1.41 60]
	[1.27 127]
	[1.09 90]
]
make "growth [
  [7	119.3]
  [8	127.0]
  [9	132]
  [10	137.1]
  [12	147.3]
  [13	152.4]
  [14	157.5]
  [15	162.2]
]
	
]]>
      <property name="toolBarShowing" value="false"/>
    </component>
    <component class="com.ttools.PENWrapper" position="152,341" size="236,102" visible="true" portid="PENWrapper-2">
      <property name="ProgramFilename" value="prgs/growth.prg"/>
    </component>
    <component class="com.sri.escot.NumberEntry" position="590,424" size="47,17" visible="true" portid="NumberEntry-3">
      <property name="maximumDecimalPlaces" value="0"/>
      <property name="label" value=""/>
      <property name="value" value="100.0"/>
      <property name="allowNegative" value="true"/>
      <property name="minimumDecimalPlaces" value="0"/>
      <property name="suffix" value=""/>
      <property name="editable" value="false"/>
    </component>
    <component class="com.sri.escot.NumberEntry" position="386,283" size="60,20" visible="true" portid="NumberEntry-4">
      <property name="maximumDecimalPlaces" value="0"/>
      <property name="label" value=""/>
      <property name="value" value="225.0"/>
      <property name="allowNegative" value="true"/>
      <property name="minimumDecimalPlaces" value="0"/>
      <property name="suffix" value=""/>
      <property name="editable" value="false"/>
    </component>
    <component class="org.escot.demo.SimpleGraph" position="417,306" size="216,88" visible="true" portid="SimpleGraph-2">
      <property name="TraceXPrecision" value="2"/>
      <property name="VDottedLineColor" value="0,0,255"/>
      <property name="TraceColor" value="255,0,0"/>
      <property name="labelInterval" value="2,2"/>
      <property name="TraceYPrecision" value="2"/>
      <property name="derivative" value="0"/>
      <property name="HDottedLineColor" value="0,0,255"/>
      <property name="VDottedLineOn" value="false"/>
      <property name="TraceOn" value="false"/>
      <property name="HDottedLineOn" value="false"/>
      <property name="xAxisName" value=""/>
      <property name="scrollable" value="false"/>
      <property name="TraceDrawCrosses" value="true"/>
      <property name="extent" value="-17.0,-38.0,117.0,263.0"/>
      <property name="tickInterval" value="10,23"/>
      <property name="yAxisName" value=""/>
    </component>
    <component class="com.sri.escot.EscotLabel" position="55,137" size="193,16" visible="true">
      <property name="text" value="Max cases of heart disease/100,000"/>
      <property name="foreground" value="0,0,0"/>
      <property name="background" value="204,204,204"/>
      <property name="font" value="Times,Times,0,12"/>
    </component>
    <component class="com.sri.escot.EscotLabel" position="12,286" size="239,13" visible="true">
      <property name="text" value="Max cigarettes per year per adult (in thousands):"/>
      <property name="foreground" value="0,0,0"/>
      <property name="background" value="204,204,204"/>
      <property name="font" value="Times,Times,0,12"/>
    </component>
    <component class="com.sri.escot.EscotLabel" position="454,285" size="204,12" visible="true">
      <property name="text" value="Max average height (in centimeters)"/>
      <property name="foreground" value="0,0,0"/>
      <property name="background" value="204,204,204"/>
      <property name="font" value="Times,Times,0,12"/>
    </component>
    <component class="com.sri.escot.EscotLabel" position="471,427" size="108,12" visible="true">
      <property name="text" value="Max age (in years)"/>
      <property name="foreground" value="0,0,0"/>
      <property name="background" value="204,204,204"/>
      <property name="font" value="Times,Times,0,12"/>
    </component>
    <component class="com.ttools.PENWrapper" position="267,122" size="296,115" visible="true" portid="PENWrapper-3">
      <property name="ProgramFilename" value="prgs/cigaretteData.prg"/>
    </component>
    <component class="com.sri.escot.javascript.JavaScript" position="79,554" size="73,23" visible="false" portid="JavaScript-1">
      <![CDATA[addImporter(new EscotNumberImporter("maxXIn"))
addImporter(new EscotNumberImporter("maxYIn"))

addImporter(new EscotNumberImporter("maxXIn2"))
addImporter(new EscotNumberImporter("maxYIn2"))

xTick = new EscotNumber("xTick")
yTick = new EscotNumber("yTick")
widthOut = new EscotNumber("widthOut")
heightOut = new EscotNumber("heightOut")
minX = new EscotNumber("minX")
minY = new EscotNumber("minY")

xTick2 = new EscotNumber("xTick2")
yTick2 = new EscotNumber("yTick2")
widthOut2 = new EscotNumber("widthOut2")
heightOut2 = new EscotNumber("heightOut2")
minX2 = new EscotNumber("minX2")
minY2 = new EscotNumber("minY2")

xCheck = new EscotString("xCheck")
yCheck = new EscotString("yCheck")

xCheck2 = new EscotString("xCheck2")
yCheck2 = new EscotString("yCheck2")

addExport(xTick)
addExport(yTick)
addExport(widthOut)
addExport(heightOut)
addExport(minX)
addExport(minY)
addExport(xCheck)
addExport(yCheck)

addExport(xTick2)
addExport(yTick2)
addExport(widthOut2)
addExport(heightOut2)
addExport(minX2)
addExport(minY2)
addExport(xCheck2)
addExport(yCheck2)


function maxXInChanged() {
	scaled = maxXIn.value / 10
	minX.value = -scaled/8
	widthOut.value = scaled - minX.value
	xTick.value = scaled/10
	if (maxXIn.value < 40) {
		xCheck.value = "Max X is too small"	
	}
	else {
		if (maxXIn.value < 50) {
			xCheck.value = "Max X is OK"
		}
		else {
			xCheck.value = "Max X is too large"
		}
	}
}

function maxYInChanged() {
	minY.value = -Math.round(maxYIn.value/6)
	heightOut.value = maxYIn.value - minY.value
	yTick.value = Math.round(maxYIn.value/10)
	if (maxYIn.value < 280) {
		yCheck.value = "Max Y is too small"	
	}
	else {
		if (maxYIn.value < 310) {
			yCheck.value = "Max Y is OK"
		}
		else {
			yCheck.value = "Max Y is too large"
		}
	}
}

function maxXIn2Changed() {
	minX2.value = -Math.round(maxXIn2.value/6)
	widthOut2.value = maxXIn2.value - minX2.value
	xTick2.value = Math.round(maxXIn2.value/10)
	if (maxXIn2.value < 16) {
		xCheck2.value = "Max X is too small"	
	}
	else {
		if (maxXIn2.value < 19) {
			xCheck2.value = "Max X is OK"
		}
		else {
			xCheck2.value = "Max X is too large"
		}
	}
}

function maxYIn2Changed() {
	minY2.value = -Math.round(maxYIn2.value/6)
	heightOut2.value = maxYIn2.value - minY2.value
	yTick2.value = Math.round(maxYIn2.value/10)
	if (maxYIn2.value < 170) {
		yCheck2.value = "Max Y is too small"	
	}
	else {
		if (maxYIn2.value < 210) {
			yCheck2.value = "Max Y is OK"
		}
		else {
			yCheck2.value = "Max Y is too large"
		}
	}
}]]>
    </component>
    <component class="com.sri.escot.EscotSwingScroller" position="12,160" size="17,98" visible="true" portid="EscotSwingScroller-1">
      <property name="scaleFactor" value="1.0"/>
      <property name="minimumValue" value="10"/>
      <property name="unitIncrement" value="10"/>
      <property name="maximumValue" value="400"/>
      <property name="blockIncrement" value="50"/>
      <property name="orientation" value="1"/>
      <property name="value" value="100"/>
    </component>
    <component class="com.sri.escot.EscotSwingScroller" position="168,262" size="95,17" visible="true" portid="EscotSwingScroller-2">
      <property name="scaleFactor" value="1.0"/>
      <property name="minimumValue" value="10"/>
      <property name="unitIncrement" value="5"/>
      <property name="maximumValue" value="100"/>
      <property name="blockIncrement" value="10"/>
      <property name="orientation" value="0"/>
    </component>
    <component class="com.sri.escot.EscotSwingScroller" position="392,308" size="17,74" visible="true" portid="EscotSwingScroller-3">
      <property name="scaleFactor" value="1.0"/>
      <property name="minimumValue" value="10"/>
      <property name="unitIncrement" value="25"/>
      <property name="maximumValue" value="2000"/>
      <property name="blockIncrement" value="250"/>
      <property name="orientation" value="1"/>
    </component>
    <component class="com.sri.escot.EscotSwingScroller" position="547,400" size="87,17" visible="true" portid="EscotSwingScroller-4">
      <property name="scaleFactor" value="1.0"/>
      <property name="minimumValue" value="5"/>
      <property name="unitIncrement" value="1"/>
      <property name="maximumValue" value="100"/>
      <property name="blockIncrement" value="10"/>
      <property name="orientation" value="0"/>
    </component>
    <component class="com.sri.escot.NumberEntry" position="49,490" size="183,18" visible="false" portid="NumberEntry-5">
      <property name="maximumDecimalPlaces" value="3"/>
      <property name="label" value="init Max CHD"/>
      <property name="value" value="50.0"/>
      <property name="allowNegative" value="true"/>
      <property name="minimumDecimalPlaces" value="0"/>
      <property name="suffix" value=""/>
      <property name="editable" value="true"/>
    </component>
    <component class="com.sri.escot.NumberEntry" position="56,520" size="171,17" visible="false" portid="NumberEntry-6">
      <property name="maximumDecimalPlaces" value="3"/>
      <property name="label" value="init max cigarettes"/>
      <property name="value" value="20.0"/>
      <property name="allowNegative" value="true"/>
      <property name="minimumDecimalPlaces" value="0"/>
      <property name="suffix" value=""/>
      <property name="editable" value="true"/>
    </component>
    <component class="com.sri.escot.NumberEntry" position="423,489" size="166,17" visible="false" portid="NumberEntry-7">
      <property name="maximumDecimalPlaces" value="3"/>
      <property name="label" value="Init max height"/>
      <property name="value" value="2000.0"/>
      <property name="allowNegative" value="true"/>
      <property name="minimumDecimalPlaces" value="0"/>
      <property name="suffix" value=""/>
      <property name="editable" value="true"/>
    </component>
    <component class="com.sri.escot.NumberEntry" position="444,522" size="162,17" visible="false" portid="NumberEntry-8">
      <property name="maximumDecimalPlaces" value="3"/>
      <property name="label" value="init max age"/>
      <property name="value" value="100.0"/>
      <property name="allowNegative" value="true"/>
      <property name="minimumDecimalPlaces" value="0"/>
      <property name="suffix" value=""/>
      <property name="editable" value="true"/>
    </component>
    <component class="org.escot.demo.StringView" position="16,117" size="116,16" visible="true" portid="StringView-1">
      <property name="foreground" value="0,0,0"/>
      <property name="background" value="204,204,204"/>
      <property name="font" value="Dialog,Dialog,0,12"/>
    </component>
    <component class="org.escot.demo.StringView" position="34,265" size="116,16" visible="true" portid="StringView-2">
      <property name="foreground" value="0,0,0"/>
      <property name="background" value="204,204,204"/>
      <property name="font" value="Dialog,Dialog,0,12"/>
    </component>
    <component class="org.escot.demo.StringView" position="397,260" size="136,16" visible="true" portid="StringView-3">
      <property name="foreground" value="0,0,0"/>
      <property name="background" value="204,204,204"/>
      <property name="font" value="Dialog,Dialog,0,12"/>
    </component>
    <component class="org.escot.demo.StringView" position="414,401" size="116,16" visible="true" portid="StringView-4">
      <property name="foreground" value="0,0,0"/>
      <property name="background" value="204,204,204"/>
      <property name="font" value="Dialog,Dialog,0,12"/>
    </component>
    <component class="org.escot.demo.AppendingTextEd" position="9,6" size="301,99" visible="true" portid="AppendingTextEd-1">
      <![CDATA[Here are two more graphs for you to experiment with. Use the scrollbars to set good windows for each graph. As you choose the scale for each axis, think about what the characteristics of a good scale are.
]]>
      <property name="foreground" value="0,0,0"/>
      <property name="background" value="255,255,255"/>
      <property name="font" value="Application,Application,0,10"/>
      <property name="editable" value="false"/>
    </component>
    <component class="org.escot.demo.AppendingTextEd" position="315,6" size="329,100" visible="true" portid="AppendingTextEd-2">
      <![CDATA[As you adjust the window size for the graph, some of the data points in the table will change color. This happens when the corresponding points show up in the current window. There is also a message near each scrollbar to help you see if your scale is too small, too large, or just right!]]>
      <property name="foreground" value="0,0,0"/>
      <property name="background" value="255,255,255"/>
      <property name="font" value="Application,Application,0,10"/>
      <property name="editable" value="false"/>
    </component>
    <wire type="org.escot.Broker">
      <from portid="SimpleGraph-1" name="y_max"/>
      <to portid="NumberEntry-1" name="number"/>
      <to portid="PENWrapper-3" name="maxY"/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="SimpleGraph-1" name="x_max"/>
      <to portid="NumberEntry-2" name="number"/>
      <to portid="PENWrapper-3" name="maxX"/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="LogoScript-1" name="growth"/>
      <to portid="SimpleGraph-2" name=""/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="SimpleGraph-2" name="x_max"/>
      <to portid="NumberEntry-3" name="number"/>
      <to portid="PENWrapper-2" name="maxX"/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="SimpleGraph-2" name="y_max"/>
      <to portid="NumberEntry-4" name="number"/>
      <to portid="PENWrapper-2" name="maxY"/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="LogoScript-1" name="mortality"/>
      <to portid="SimpleGraph-1" name=""/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="EscotSwingScroller-2" name="value"/>
      <to portid="JavaScript-1" name="maxXIn"/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="EscotSwingScroller-1" name="value"/>
      <to portid="JavaScript-1" name="maxYIn"/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="JavaScript-1" name="widthOut"/>
      <to portid="SimpleGraph-1" name="width"/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="JavaScript-1" name="minX"/>
      <to portid="SimpleGraph-1" name="x_min"/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="JavaScript-1" name="xTick"/>
      <to portid="SimpleGraph-1" name="x_ticks"/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="JavaScript-1" name="yTick"/>
      <to portid="SimpleGraph-1" name="y_ticks"/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="JavaScript-1" name="minY"/>
      <to portid="SimpleGraph-1" name="y_min"/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="JavaScript-1" name="heightOut"/>
      <to portid="SimpleGraph-1" name="height"/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="EscotSwingScroller-3" name="value"/>
      <to portid="JavaScript-1" name="maxYIn2"/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="EscotSwingScroller-4" name="value"/>
      <to portid="JavaScript-1" name="maxXIn2"/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="JavaScript-1" name="xTick2"/>
      <to portid="SimpleGraph-2" name="x_ticks"/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="JavaScript-1" name="yTick2"/>
      <to portid="SimpleGraph-2" name="y_ticks"/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="JavaScript-1" name="widthOut2"/>
      <to portid="SimpleGraph-2" name="width"/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="JavaScript-1" name="heightOut2"/>
      <to portid="SimpleGraph-2" name="height"/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="JavaScript-1" name="minX2"/>
      <to portid="SimpleGraph-2" name="x_min"/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="JavaScript-1" name="minY2"/>
      <to portid="SimpleGraph-2" name="y_min"/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="NumberEntry-5" name="number"/>
      <to portid="EscotSwingScroller-1" name="value"/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="NumberEntry-6" name="number"/>
      <to portid="EscotSwingScroller-2" name="value"/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="NumberEntry-8" name="number"/>
      <to portid="EscotSwingScroller-4" name="value"/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="JavaScript-1" name="xCheck"/>
      <to portid="StringView-2" name="StringView"/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="JavaScript-1" name="yCheck"/>
      <to portid="StringView-1" name="StringView"/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="JavaScript-1" name="yCheck2"/>
      <to portid="StringView-3" name="StringView"/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="JavaScript-1" name="xCheck2"/>
      <to portid="StringView-4" name="StringView"/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="NumberEntry-7" name="number"/>
      <to portid="EscotSwingScroller-3" name="value"/>
    </wire>
  </page>
  <page name="Line Fit">
    <component class="org.escot.demo.SimpleGraph" position="454,151" size="195,174" portid="SimpleGraph-1" visible="true">
      <property name="TraceXPrecision" value="2"/>
      <property name="VDottedLineColor" value="128,128,128"/>
      <property name="TraceColor" value="255,0,0"/>
      <property name="labelInterval" value="1,2"/>
      <property name="TraceYPrecision" value="2"/>
      <property name="derivative" value="0"/>
      <property name="HDottedLineColor" value="128,128,128"/>
      <property name="VDottedLineOn" value="true"/>
      <property name="TraceOn" value="false"/>
      <property name="HDottedLineOn" value="true"/>
      <property name="xAxisName" value="Dimensional Sum"/>
      <property name="scrollable" value="false"/>
      <property name="TraceDrawCrosses" value="true"/>
      <property name="extent" value="-1.0,-2.0,6.0,12.0"/>
      <property name="tickInterval" value="1,1"/>
      <property name="yAxisName" value="Ribbon Length"/>
    </component>
    <component class="com.ttools.PENWrapper" position="454,152" size="195,173" portid="PENWrapper-1" visible="true">
      <property name="doFitLine" value="false"/>
      <property name="ProgramFilename" value="prgs/ribbonPoints.prg"/>
    </component>
    <component class="org.escot.demo.SimpleFunction" position="5,478" size="276,35" portid="SimpleFunction-1" visible="false">
      <property name="color" value="255,51,102"/>
      <property name="font" value="Dialog,Dialog,0,12"/>
      <property name="name" value="Parabola"/>
      <property name="a2" value="0.0"/>
      <property name="a1" value="0.0"/>
      <property name="a0" value="-100.0"/>
    </component>
    <component class="org.escot.demo.BooleanEntry" position="484,358" size="148,21" portid="BooleanEntry-1" visible="true">
      <property name="maximumSize" value="83,21"/>
      <property name="enabled" value="true"/>
      <property name="components" value="[Ljava.awt.Component;@650e8a"/>
      <property name="preferredSize" value="83,21"/>
      <property name="foreground" value="0,0,0"/>
      <property name="label" value="Show Line of Best Fit"/>
      <property name="visible" value="true"/>
      <property name="background" value="204,204,204"/>
      <property name="insets" value="java.awt.Insets[top=0,left=0,bottom=0,right=0]"/>
      <property name="componentCount" value="1"/>
      <property name="value" value="false"/>
      <property name="font" value="Dialog,Dialog,0,12"/>
      <property name="layout" value="javax.swing.BoxLayout@bc3fe6"/>
      <property name="accessibleContext" value="javax.swing.Box$AccessibleBox@65431f"/>
      <property name="alignmentY" value="0.47619048"/>
      <property name="alignmentX" value="0.5"/>
      <property name="minimumSize" value="83,21"/>
      <property name="port" value="Port[BooleanEntry-1]"/>
      <property name="selected" value="false"/>
    </component>
    <component class="org.escot.demo.TextEditor" answerText="true" position="6,250" size="426,153" visible="true" portid="TextEditor-5">
      <![CDATA[Use your line of best fit to answer these questions.

1. What length of ribbon do you need for a box with a dimensional sum of 3cm?

2. What length ribbon do you need for a box with a dimensional sum of 70cm?

3. Polly is willing to wrap packages with dimensional sums ranging from 3cm to 70cm. What maximum X and maximum Y values  would you use on a graph to help her employees choose ribbon lengths for packages? Explain how you chose this scale.
]]>
      <property name="foreground" value="0,0,0"/>
      <property name="background" value="255,255,185"/>
      <property name="font" value="Application,Application,0,10"/>
    </component>
    <component class="com.sri.escot.NumberEntry" position="455,332" size="202,17" visible="true" portid="NumberEntry-1">
      <property name="maximumDecimalPlaces" value="0"/>
      <property name="label" value="Max Dimensional Sum (cm)"/>
      <property name="value" value="5.0"/>
      <property name="allowNegative" value="true"/>
      <property name="minimumDecimalPlaces" value="0"/>
      <property name="suffix" value=""/>
      <property name="editable" value="true"/>
    </component>
    <component class="com.sri.escot.NumberEntry" position="454,128" size="193,17" visible="true" portid="NumberEntry-2">
      <property name="maximumDecimalPlaces" value="3"/>
      <property name="label" value="Max Ribbon Length (cm)"/>
      <property name="value" value="10.0"/>
      <property name="allowNegative" value="true"/>
      <property name="minimumDecimalPlaces" value="0"/>
      <property name="suffix" value=""/>
      <property name="editable" value="true"/>
    </component>
    <component class="virtuoso.logo.LogoScript" position="283,503" size="25,13" visible="false" portid="LogoScript-1">
      <export name="ribbon" type="ordered pair">((0,255,0),(5.0,30.0),(22.0,64.0),(14.0,48.0),(20.0,60.0),(32.0,84.0))</export>
      <![CDATA[make "ribbon [
	[5 30] [22 64] [14 48] [20 60]
	[32 84]
]]]>
      <property name="toolBarShowing" value="false"/>
    </component>
    <component class="com.ttools.PENWrapper" position="444,17" size="222,97" visible="true" portid="PENWrapper-2">
      <property name="ProgramFilename" value="prgs/ribbon.prg"/>
    </component>
    <component class="org.escot.demo.AppendingTextEd" position="6,10" size="425,229" visible="true" portid="AppendingTextEd-1">
      <![CDATA[You have decided to take a job as a consultant to Polly's Perfect Packages. Polly has created a good business wrapping gifts in the local malls. She would like you to come up with a way to help her employees decide how much ribbon to cut for any given size package so they won't waste ribbon. (It is the most expensive part of her business!) The chart and graph on the right contain 5 data points that show the Dimensional Sum of a package (Dimensional Sum =  Length + Width + Height) and a corresponding Ribbon Length. 

To Do: 
1. You've had some experience with choosing a good scale for a graph. To set the scale for this graph, type the maximum X and Y values into the text boxes marked "Max Dimensional Sum" and "Max Ribbon Length". Try different values until you have a scale that works for Polly's package data.

2. After you've chosen a good scale, click on "Show Line of Best Fit". Adjust the line of best fit (as you did on the first Shoelaces activity) and use it to answer the questions in the box below.]]>
      <property name="foreground" value="0,0,0"/>
      <property name="background" value="255,255,255"/>
      <property name="font" value="Application,Application,0,10"/>
      <property name="editable" value="false"/>
    </component>
    <component class="com.sri.escot.javascript.JavaScript" position="409,455" size="73,23" visible="false" portid="JavaScript-1">
      <![CDATA[addImporter(new EscotNumberImporter("maxXIn4"))
addImporter(new EscotNumberImporter("maxYIn4"))

xTick4 = new EscotNumber("xTick4")
yTick4 = new EscotNumber("yTick4")
widthOut4 = new EscotNumber("widthOut4")
heightOut4 = new EscotNumber("heightOut4")
minX4 = new EscotNumber("minX4")
minY4 = new EscotNumber("minY4")

addExport(xTick4)
addExport(yTick4)
addExport(widthOut4)
addExport(heightOut4)
addExport(minX4)
addExport(minY4)

function maxXIn4Changed() {
	minX4.value = -Math.round(maxXIn4.value/6)
	widthOut4.value = maxXIn4.value - minX4.value
	xTick4.value = Math.round(maxXIn4.value/10)
}

function maxYIn4Changed() {
	minY4.value = -Math.round(maxYIn4.value/6)
	heightOut4.value = maxYIn4.value - minY4.value
	yTick4.value = Math.round(maxYIn4.value/10)
}]]>
    </component>
    <component class="com.sri.escot.NumberEntry" position="546,456" size="55,17" visible="false" portid="NumberEntry-3">
      <property name="maximumDecimalPlaces" value="3"/>
      <property name="label" value=""/>
      <property name="value" value="-100.0"/>
      <property name="allowNegative" value="true"/>
      <property name="minimumDecimalPlaces" value="0"/>
      <property name="suffix" value=""/>
      <property name="editable" value="true"/>
    </component>
    <wire type="org.escot.Broker">
      <from portid="NumberEntry-1" name="number"/>
      <to portid="JavaScript-1" name="maxXIn4"/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="NumberEntry-2" name="number"/>
      <to portid="JavaScript-1" name="maxYIn4"/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="JavaScript-1" name="minX4"/>
      <to portid="SimpleGraph-1" name="x_min"/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="JavaScript-1" name="minY4"/>
      <to portid="SimpleGraph-1" name="y_min"/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="JavaScript-1" name="widthOut4"/>
      <to portid="SimpleGraph-1" name="width"/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="JavaScript-1" name="heightOut4"/>
      <to portid="SimpleGraph-1" name="height"/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="JavaScript-1" name="xTick4"/>
      <to portid="SimpleGraph-1" name="x_ticks"/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="JavaScript-1" name="yTick4"/>
      <to portid="SimpleGraph-1" name="y_ticks"/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="SimpleGraph-1" name="x_anchor"/>
      <to portid="PENWrapper-1" name="x_anchor"/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="SimpleGraph-1" name="y_anchor"/>
      <to portid="PENWrapper-1" name="y_anchor"/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="SimpleGraph-1" name="x_pixPerUnit"/>
      <to portid="PENWrapper-1" name="x_pixPerUnit"/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="SimpleGraph-1" name="y_pixPerUnit"/>
      <to portid="PENWrapper-1" name="y_pixPerUnit"/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="SimpleGraph-1" name="y_max"/>
      <to portid="PENWrapper-2" name="maxY"/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="SimpleGraph-1" name="x_max"/>
      <to portid="PENWrapper-2" name="maxX"/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="LogoScript-1" name="ribbon"/>
      <to portid="SimpleGraph-1" name=""/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="PENWrapper-1" name="y_intercept"/>
      <to portid="NumberEntry-3" name="number"/>
      <to portid="SimpleFunction-1" name="c"/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="BooleanEntry-1" name="true"/>
      <to portid="PENWrapper-1" name="doFitLine"/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="PENWrapper-1" name="slope"/>
      <to portid="SimpleFunction-1" name="b"/>
    </wire>
    <wire type="org.escot.Broker">
      <from portid="SimpleFunction-1" name="Parabola"/>
      <to portid="SimpleGraph-1" name=""/>
    </wire>
  </page>
</activity>

