<?xml version="1.0" encoding="UTF-16"?>
<!-- This XML file has been created by WebEJS 1.0. Visit http://t.um.es/webejs -->
<!-- Please, open it with WebEJS or save the file to your hard disk on your EJS' user directory and open it with Desktop Ejs 6.01 or later. -->
<Osejs version="7.0" password="">
<Osejs.Information>
<Title><![CDATA[Think_Aloud_Scaffolded_version2]]></Title>
<Copyright><![CDATA[]]></Copyright>
<Keywords><![CDATA[]]></Keywords>
<Password><![CDATA[unused]]></Password>
<Level><![CDATA[]]></Level>
<Language><![CDATA[]]></Language>
<Abstract><![CDATA[]]></Abstract>
<FixedNavigationBar>false</FixedNavigationBar>
<RunAlways>true</RunAlways>
<UseInterpreter>true</UseInterpreter>
<UseDeltaForODE>false</UseDeltaForODE>
<PreviewFullModel>false</PreviewFullModel>
<ModelTab></ModelTab>
<ModelTabTitle><![CDATA[]]></ModelTabTitle>
<ModelName><![CDATA[]]></ModelName>
<CSSFile></CSSFile>
<HTMLHead><![CDATA[<script 
async="true" src="https://www.googletagmanager.com/gtag/js?id=G-S9EWRY1CPJ"></script>
<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());

  gtag('config', 'G-S9EWRY1CPJ');
</script>]]></HTMLHead>
<SaveInXMLFormat>true</SaveInXMLFormat>
<IncludeSource>true</IncludeSource>
<IncludeLibrary>true</IncludeLibrary>
<UglifyJS>false</UglifyJS>
<Logo>./images/logo.png</Logo>
<Author><![CDATA[kangrui;lookang;meiyoke]]></Author>
<AuthorLogo>;;</AuthorLogo>
<DetectedFiles><![CDATA[./images/logo.png]]></DetectedFiles>
<AuxiliaryFiles><![CDATA[;./images/logo.png]]></AuxiliaryFiles>
</Osejs.Information>
<Osejs.Description>
</Osejs.Description>
<Osejs.Model>
<Osejs.Model.FramesPerSecond>25</Osejs.Model.FramesPerSecond>
<Osejs.Model.StepsPerDisplay>1</Osejs.Model.StepsPerDisplay>
<Osejs.Model.RealTimeVariable></Osejs.Model.RealTimeVariable>
<Osejs.Model.Autostart>false</Osejs.Model.Autostart>
<Osejs.Model.Variables>
<Osejs.Model.Variables.Page>
<Type>undefined</Type>
<Name>cords</Name>
<Active>true</Active>
<Internal>false</Internal>
<Content>
<PageComment><![CDATA[]]></PageComment>
<Variable>
<Name><![CDATA[home]]></Name>
<Value><![CDATA[{}]]></Value>
<Type><![CDATA[Object]]></Type>
<Dimension><![CDATA[]]></Dimension>
<Domain><![CDATA[]]></Domain>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name><![CDATA[homeX]]></Name>
<Value><![CDATA[0.3 + Math.random() * (0.6 - 0.3)]]></Value>
<Type><![CDATA[double]]></Type>
<Dimension><![CDATA[]]></Dimension>
<Domain><![CDATA[]]></Domain>
<Comment><![CDATA[0.5]]></Comment>
</Variable>
<Variable>
<Name><![CDATA[homeY]]></Name>
<Value><![CDATA[0.9]]></Value>
<Type><![CDATA[Object]]></Type>
<Dimension><![CDATA[]]></Dimension>
<Domain><![CDATA[]]></Domain>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name><![CDATA[postbox]]></Name>
<Value><![CDATA[{}]]></Value>
<Type><![CDATA[Object]]></Type>
<Dimension><![CDATA[]]></Dimension>
<Domain><![CDATA[]]></Domain>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name><![CDATA[postboxX]]></Name>
<Value><![CDATA[0.2]]></Value>
<Type><![CDATA[double]]></Type>
<Dimension><![CDATA[]]></Dimension>
<Domain><![CDATA[]]></Domain>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name><![CDATA[postboxY]]></Name>
<Value><![CDATA[0.3 + Math.random() * (0.6 - 0.3)]]></Value>
<Type><![CDATA[double]]></Type>
<Dimension><![CDATA[]]></Dimension>
<Domain><![CDATA[]]></Domain>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name><![CDATA[grandmaHouse]]></Name>
<Value><![CDATA[{}]]></Value>
<Type><![CDATA[Object]]></Type>
<Dimension><![CDATA[]]></Dimension>
<Domain><![CDATA[]]></Domain>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name><![CDATA[grandmaHouseX]]></Name>
<Value><![CDATA[0.5]]></Value>
<Type><![CDATA[double]]></Type>
<Dimension><![CDATA[]]></Dimension>
<Domain><![CDATA[]]></Domain>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name><![CDATA[grandmaHouseY]]></Name>
<Value><![CDATA[0.5]]></Value>
<Type><![CDATA[double]]></Type>
<Dimension><![CDATA[]]></Dimension>
<Domain><![CDATA[]]></Domain>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name><![CDATA[market]]></Name>
<Value><![CDATA[{}]]></Value>
<Type><![CDATA[Object]]></Type>
<Dimension><![CDATA[]]></Dimension>
<Domain><![CDATA[]]></Domain>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name><![CDATA[marketX]]></Name>
<Value><![CDATA[0.3 + Math.random() * (0.6 - 0.3)]]></Value>
<Type><![CDATA[double]]></Type>
<Dimension><![CDATA[]]></Dimension>
<Domain><![CDATA[]]></Domain>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name><![CDATA[marketY]]></Name>
<Value><![CDATA[0.2]]></Value>
<Type><![CDATA[double]]></Type>
<Dimension><![CDATA[]]></Dimension>
<Domain><![CDATA[]]></Domain>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name><![CDATA[cafe]]></Name>
<Value><![CDATA[{}]]></Value>
<Type><![CDATA[Object]]></Type>
<Dimension><![CDATA[]]></Dimension>
<Domain><![CDATA[]]></Domain>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name><![CDATA[cafeX]]></Name>
<Value><![CDATA[0.8]]></Value>
<Type><![CDATA[double]]></Type>
<Dimension><![CDATA[]]></Dimension>
<Domain><![CDATA[]]></Domain>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name><![CDATA[cafeY]]></Name>
<Value><![CDATA[0.3 + Math.random() * (0.6 - 0.3)]]></Value>
<Type><![CDATA[double]]></Type>
<Dimension><![CDATA[]]></Dimension>
<Domain><![CDATA[]]></Domain>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name><![CDATA[girlX]]></Name>
<Value><![CDATA[homeX]]></Value>
<Type><![CDATA[double]]></Type>
<Dimension><![CDATA[]]></Dimension>
<Domain><![CDATA[]]></Domain>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name><![CDATA[girlY]]></Name>
<Value><![CDATA[homeY]]></Value>
<Type><![CDATA[double]]></Type>
<Dimension><![CDATA[]]></Dimension>
<Domain><![CDATA[]]></Domain>
<Comment><![CDATA[]]></Comment>
</Variable>
</Content>
</Osejs.Model.Variables.Page>
<Osejs.Model.Variables.Page>
<Type>VARIABLE_EDITOR</Type>
<Name>girl</Name>
<Active>true</Active>
<Internal>false</Internal>
<Content>
<PageComment><![CDATA[]]></PageComment>
<Variable>
<Name><![CDATA[current]]></Name>
<Value><![CDATA["home"]]></Value>
<Type><![CDATA[double]]></Type>
<Dimension><![CDATA[]]></Dimension>
<Domain><![CDATA[]]></Domain>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name><![CDATA[x]]></Name>
<Value><![CDATA[homeX]]></Value>
<Type><![CDATA[double]]></Type>
<Dimension><![CDATA[]]></Dimension>
<Domain><![CDATA[]]></Domain>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name><![CDATA[y]]></Name>
<Value><![CDATA[homeY]]></Value>
<Type><![CDATA[double]]></Type>
<Dimension><![CDATA[]]></Dimension>
<Domain><![CDATA[]]></Domain>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name><![CDATA[vx]]></Name>
<Value><![CDATA[]]></Value>
<Type><![CDATA[double]]></Type>
<Dimension><![CDATA[]]></Dimension>
<Domain><![CDATA[]]></Domain>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name><![CDATA[vy]]></Name>
<Value><![CDATA[]]></Value>
<Type><![CDATA[double]]></Type>
<Dimension><![CDATA[]]></Dimension>
<Domain><![CDATA[]]></Domain>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name><![CDATA[t]]></Name>
<Value><![CDATA[0]]></Value>
<Type><![CDATA[double]]></Type>
<Dimension><![CDATA[]]></Dimension>
<Domain><![CDATA[]]></Domain>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name><![CDATA[dt]]></Name>
<Value><![CDATA[0.05]]></Value>
<Type><![CDATA[double]]></Type>
<Dimension><![CDATA[]]></Dimension>
<Domain><![CDATA[]]></Domain>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name><![CDATA[destinationX]]></Name>
<Value><![CDATA[0]]></Value>
<Type><![CDATA[double]]></Type>
<Dimension><![CDATA[]]></Dimension>
<Domain><![CDATA[]]></Domain>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name><![CDATA[destinationY]]></Name>
<Value><![CDATA[0]]></Value>
<Type><![CDATA[double]]></Type>
<Dimension><![CDATA[]]></Dimension>
<Domain><![CDATA[]]></Domain>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name><![CDATA[starting]]></Name>
<Value><![CDATA["ENABLED_ANY"]]></Value>
<Type><![CDATA[String]]></Type>
<Dimension><![CDATA[]]></Dimension>
<Domain><![CDATA[]]></Domain>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name><![CDATA[]]></Name>
<Value><![CDATA[]]></Value>
<Type><![CDATA[double]]></Type>
<Dimension><![CDATA[]]></Dimension>
<Domain><![CDATA[]]></Domain>
<Comment><![CDATA[]]></Comment>
</Variable>
</Content>
</Osejs.Model.Variables.Page>
<Osejs.Model.Variables.Page>
<Type>VARIABLE_EDITOR</Type>
<Name>distance</Name>
<Active>true</Active>
<Internal>false</Internal>
<Content>
<PageComment><![CDATA[]]></PageComment>
<Variable>
<Name><![CDATA[distBetwHomePostbox]]></Name>
<Value><![CDATA[0]]></Value>
<Type><![CDATA[double]]></Type>
<Dimension><![CDATA[]]></Dimension>
<Domain><![CDATA[]]></Domain>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name><![CDATA[distBetwHomeGrandmaHouse]]></Name>
<Value><![CDATA[0]]></Value>
<Type><![CDATA[double]]></Type>
<Dimension><![CDATA[]]></Dimension>
<Domain><![CDATA[]]></Domain>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name><![CDATA[distBetwHomeCafe]]></Name>
<Value><![CDATA[0]]></Value>
<Type><![CDATA[double]]></Type>
<Dimension><![CDATA[]]></Dimension>
<Domain><![CDATA[]]></Domain>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name><![CDATA[distBetwPostboxGrandmaHouse]]></Name>
<Value><![CDATA[0]]></Value>
<Type><![CDATA[double]]></Type>
<Dimension><![CDATA[]]></Dimension>
<Domain><![CDATA[]]></Domain>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name><![CDATA[distBetwGrandmaHouseCafe]]></Name>
<Value><![CDATA[0]]></Value>
<Type><![CDATA[double]]></Type>
<Dimension><![CDATA[]]></Dimension>
<Domain><![CDATA[]]></Domain>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name><![CDATA[distBetwPostboxMarket]]></Name>
<Value><![CDATA[0]]></Value>
<Type><![CDATA[double]]></Type>
<Dimension><![CDATA[]]></Dimension>
<Domain><![CDATA[]]></Domain>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name><![CDATA[distBetwGrandmaHouseMarket]]></Name>
<Value><![CDATA[0]]></Value>
<Type><![CDATA[double]]></Type>
<Dimension><![CDATA[]]></Dimension>
<Domain><![CDATA[]]></Domain>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name><![CDATA[distBetwCafeMarket]]></Name>
<Value><![CDATA[0]]></Value>
<Type><![CDATA[double]]></Type>
<Dimension><![CDATA[]]></Dimension>
<Domain><![CDATA[]]></Domain>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name><![CDATA[distanceTravlled]]></Name>
<Value><![CDATA[0]]></Value>
<Type><![CDATA[double]]></Type>
<Dimension><![CDATA[]]></Dimension>
<Domain><![CDATA[]]></Domain>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name><![CDATA[shortestPath]]></Name>
<Value><![CDATA[0]]></Value>
<Type><![CDATA[double]]></Type>
<Dimension><![CDATA[]]></Dimension>
<Domain><![CDATA[]]></Domain>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name><![CDATA[scenario]]></Name>
<Value><![CDATA[1]]></Value>
<Type><![CDATA[double]]></Type>
<Dimension><![CDATA[]]></Dimension>
<Domain><![CDATA[]]></Domain>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name><![CDATA[]]></Name>
<Value><![CDATA[]]></Value>
<Type><![CDATA[double]]></Type>
<Dimension><![CDATA[]]></Dimension>
<Domain><![CDATA[]]></Domain>
<Comment><![CDATA[]]></Comment>
</Variable>
</Content>
</Osejs.Model.Variables.Page>
<Osejs.Model.Variables.Page>
<Type>VARIABLE_EDITOR</Type>
<Name>lookang</Name>
<Active>true</Active>
<Internal>false</Internal>
<Content>
<PageComment><![CDATA[]]></PageComment>
<Variable>
<Name><![CDATA[sizeX]]></Name>
<Value><![CDATA[100]]></Value>
<Type><![CDATA[double]]></Type>
<Dimension><![CDATA[]]></Dimension>
<Domain><![CDATA[]]></Domain>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name><![CDATA[sizeY]]></Name>
<Value><![CDATA[100]]></Value>
<Type><![CDATA[double]]></Type>
<Dimension><![CDATA[]]></Dimension>
<Domain><![CDATA[]]></Domain>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name><![CDATA[factorDrawDistance]]></Name>
<Value><![CDATA[200]]></Value>
<Type><![CDATA[double]]></Type>
<Dimension><![CDATA[]]></Dimension>
<Domain><![CDATA[]]></Domain>
<Comment><![CDATA[]]></Comment>
</Variable>
<Variable>
<Name><![CDATA[]]></Name>
<Value><![CDATA[]]></Value>
<Type><![CDATA[double]]></Type>
<Dimension><![CDATA[]]></Dimension>
<Domain><![CDATA[]]></Domain>
<Comment><![CDATA[]]></Comment>
</Variable>
</Content>
</Osejs.Model.Variables.Page>
</Osejs.Model.Variables>
<Osejs.Model.Initialization>
<Osejs.Model.Initialization.Page>
<Type>undefined</Type>
<Name>Init Page 1</Name>
<Active>true</Active>
<Internal>false</Internal>
<Content>
<Comment><![CDATA[]]></Comment>
<Code><![CDATA[
updateLengths();
]]></Code>
</Content>
</Osejs.Model.Initialization.Page>
</Osejs.Model.Initialization>
<Osejs.Model.Evolution>
<Osejs.Model.Evolution.Page>
<Type>ODE_EDITOR</Type>
<Name>Evol Page 2</Name>
<Active>true</Active>
<Internal>false</Internal>
<Content>
<PreliminaryCode>
<Comment><![CDATA[]]></Comment>
<Code><![CDATA[
// Preliminary code for ODE : Evol Page 2
]]></Code>
</PreliminaryCode>
<ErrorHandling>
</ErrorHandling>
<DelayInitialCondition>
<Comment><![CDATA[]]></Comment>
<Code><![CDATA[

]]></Code>
</DelayInitialCondition>
<Discontinuities>
</Discontinuities>
<Events>
<Event.Page>
<Type>undefined</Type>
<Name>Event 1</Name>
<Active>true</Active>
<Internal>false</Internal>
<EventContent>
<EventType>CROSSING_EVENT</EventType>
<Method>BISECTION</Method>
<Iterations>100</Iterations>
<Tolerance><![CDATA[1.0e-5]]></Tolerance>
<StopAtEvent>true</StopAtEvent>
<ZeroCondition><![CDATA[
return x - destinationX; // Condition for Event 1
]]></ZeroCondition>
<Action><![CDATA[
x = destinationX;
y = destinationY;
_pause();
]]></Action>
<Comment><![CDATA[]]></Comment>
</EventContent>
</Event.Page>
<Event.Page>
<Type>EVENT_EDITOR</Type>
<Name>Event 2</Name>
<Active>true</Active>
<Internal>false</Internal>
<EventContent>
<EventType>CROSSING_EVENT</EventType>
<Method>BISECTION</Method>
<Iterations>100</Iterations>
<Tolerance><![CDATA[1.0e-5]]></Tolerance>
<StopAtEvent>true</StopAtEvent>
<ZeroCondition><![CDATA[
return y - destinationY; // Condition for Event 1
]]></ZeroCondition>
<Action><![CDATA[
x = destinationX;
y = destinationY;
_pause();
]]></Action>
<Comment><![CDATA[]]></Comment>
</EventContent>
</Event.Page>
</Events>
<ZenoEffect>
<Comment><![CDATA[]]></Comment>
<Code><![CDATA[

]]></Code>
<StopAfterEffect>true</StopAfterEffect>
</ZenoEffect>
<IndependentVariable>t</IndependentVariable>
<Increment>dt</Increment>
<Rate state="x">vx</Rate>
<Rate state="y">vy</Rate>
<Rate state=""></Rate>
<Method>RungeKuttaFehlberg</Method>
<MaximumNumberOfSteps>10000</MaximumNumberOfSteps>
<AbsoluteTolerance></AbsoluteTolerance>
<EstimateFirstStep>false</EstimateFirstStep>
<AccelerationIndependentOfVelocity>false</AccelerationIndependentOfVelocity>
<ForceSynchronization>false</ForceSynchronization>
<UseBestInterpolation>false</UseBestInterpolation>
<Comment><![CDATA[]]></Comment>
</Content>
</Osejs.Model.Evolution.Page>
</Osejs.Model.Evolution>
<Osejs.Model.Constraints>
</Osejs.Model.Constraints>
<Osejs.Model.Library>
<Osejs.Model.Library.Page>
<Type>undefined</Type>
<Name>Custom Page 1</Name>
<Active>true</Active>
<Internal>false</Internal>
<Content>
<Comment><![CDATA[]]></Comment>
<Code><![CDATA[
function distanceWithCalculation(x1, y1, x2, y2) {
    const distance = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2);
    const roundedDistance = Math.round(distance * 100) / 100;  // Round to 2 decimal places
    //return roundedDistance * 500;  // Multiply by 500
    return roundedDistance * factorDrawDistance;  // Multiply by 500 lookang to sync with original version
}

function calculateMidpointX(x1, x2) {
    return (x1 + x2) / 2;
}

function calculateMidpointY(y1, y2) {
    return (y1 + y2) / 2 + 0.05;
}

function updateLengths() {
    switch (current) {
        case "home": 
            x = homeX;
            y = homeY;
            break;
        case "postbox":
            x = postboxX;
            y = postboxY;
            break;
        case "grandmaHouse":
            x = grandmaHouseX;
            y = grandmaHouseY;
            break;
        case "market":
            x = marketX;
            y = marketY;
            break;
        case "cafe":
            x = cafeX;
            y = cafeY;
            break;
    }
    distBetwHomePostbox = distanceWithCalculation(homeX, homeY, postboxX, postboxY);
    distBetwHomeGrandmaHouse = distanceWithCalculation(homeX, homeY, grandmaHouseX, grandmaHouseY);
    distBetwHomeCafe = distanceWithCalculation(homeX, homeY, cafeX, cafeY);
    distBetwPostboxGrandmaHouse = distanceWithCalculation(postboxX, postboxY, grandmaHouseX, grandmaHouseY);
    distBetwGrandmaHouseCafe = distanceWithCalculation(grandmaHouseX, grandmaHouseY, postboxX, postboxY);
    distBetwPostboxMarket = distanceWithCalculation(postboxX, postboxY, marketX, marketY);
    distBetwGrandmaHouseMarket = distanceWithCalculation(grandmaHouseX, grandmaHouseY, marketX, marketY);
    distBetwCafeMarket = distanceWithCalculation(cafeX, cafeY, marketX, marketY);
}

function travelDistance(destination, destX, destY, distance){
    
    home = {
    name: "home",
    allowed: [
        {name: "postbox", distance: distBetwHomePostbox},
        {name: "grandmaHouse", distance: distBetwHomeGrandmaHouse},
        {name: "cafe", distance: distBetwHomeCafe}
    ]
}

postbox = {
    name: "postbox",
    allowed: [
        {name: "home", distance: distBetwHomePostbox},
        {name: "grandmaHouse", distance: distBetwPostboxGrandmaHouse},
        {name: "market", distance: distBetwPostboxMarket}
    ]
}

grandmaHouse = {
    name: "grandmaHouse",
    allowed: [
        {name: "postbox", distance: distBetwPostboxGrandmaHouse},
        {name: "home", distance: distBetwHomeGrandmaHouse},
        {name: "cafe", distance: distBetwGrandmaHouseCafe},
        {name: "market", distance: distBetwGrandmaHouseMarket}
    ]
}

market = {
    name: "market",
    allowed: [
        {name: "postbox", distance: distBetwPostboxMarket},
        {name: "grandmaHouse", distance: distBetwGrandmaHouseMarket},
        {name: "cafe", distance: distBetwCafeMarket}
    ]
}

cafe = {
    name: "cafe",
    allowed: [
        {name: "home", distance: distBetwHomeCafe},
        {name: "grandmaHouse", distance: distBetwGrandmaHouseCafe},
        {name: "market", distance: distBetwCafeMarket}
    ]
}
    const locations = {home, cafe, market, postbox, grandmaHouse};
    shortestPath = calculateShortestDistance(locations, scenario);
    starting = "ENABLED_NO_MOVE";
    destinationX = destX;
    destinationY = destY;
    vx = destinationX - x;
    vy = destinationY - y;
    _play();
    current = destination;
    distanceTravlled += distance;
}

]]></Code>
</Content>
</Osejs.Model.Library.Page>
<Osejs.Model.Library.Page>
<Type>CODE_EDITOR</Type>
<Name>Custom Page 2</Name>
<Active>true</Active>
<Internal>false</Internal>
<Content>
<Comment><![CDATA[]]></Comment>
<Code><![CDATA[
// Function to calculate the shortest distance
function calculateShortestDistance(locations, visitCount) {
    const locationsNames = Object.keys(locations).filter(name => name !== 'home');
    const permutations = getPermutations(locationsNames, visitCount);
    let minDistance = Infinity;

    permutations.forEach(permutation => {
        let distance = 0;
        let currentLocation = 'home';

        for (let i = 0; i < permutation.length; i++) {
            const nextLocation = permutation[i];
            distance += getDistance(locations, currentLocation, nextLocation);
            currentLocation = nextLocation;
        }
        // Add distance to return to home
        distance += getDistance(locations, currentLocation, 'home');

        if (distance < minDistance) {
            minDistance = distance;
        }
    });

    return minDistance;
}

// Helper function to get permutations of a given length
function getPermutations(array, length) {
    if (length === 1) return array.map(el => [el]);

    const permutations = [];
    array.forEach((item, index) => {
        const rest = array.slice(0, index).concat(array.slice(index + 1));
        const innerPermutations = getPermutations(rest, length - 1);
        innerPermutations.forEach(permutation => {
            permutations.push([item].concat(permutation));
        });
    });

    return permutations;
}

// Helper function to get the distance between two locations
function getDistance(locations, from, to) {
    const location = locations[from];
    const destination = location.allowed.find(place => place.name === to);
    return destination ? destination.distance : Infinity;
}

]]></Code>
</Content>
</Osejs.Model.Library.Page>
<Osejs.Model.Library.Page>
<Type>CODE_EDITOR</Type>
<Name>lookang</Name>
<Active>true</Active>
<Internal>false</Internal>
<Content>
<Comment><![CDATA[]]></Comment>
<Code><![CDATA[
// lookang
function updatePostboxPosition() {
    // Ensure home remains fixed at homeX
    const angle = Math.atan2(postboxY - homeY, postboxX - homeX); // Get the angle of the original position
    //var factorDrawDistance = 200
    postboxX = homeX + distBetwHomePostbox / factorDrawDistance * Math.cos(angle);     // Update X-coordinate
    postboxY = homeY + distBetwHomePostbox /factorDrawDistance * Math.sin(angle);     // Update Y-coordinate
    updateLengths();  // Recalculate the lengths and update visuals
}

]]></Code>
</Content>
</Osejs.Model.Library.Page>
</Osejs.Model.Library>
<Osejs.Model.Elements>
</Osejs.Model.Elements>
</Osejs.Model>
<Osejs.HtmlView>
<Osejs.HtmlView.Page>
<Type>HTML_VIEW_EDITOR</Type>
<Name>HtmlView</Name>
<Active>true</Active>
<Internal>false</Internal>
<Content>
<SizeOption>0</SizeOption>
<X>0</X>
<Y>0</Y>
<Width>800</Width>
<Height>600</Height>
<KeepHidden>true</KeepHidden>
<RootProperties>
</RootProperties>
<Tree>
<HtmlView.Element>
<Expanded>true</Expanded>
<Type>Elements.Panel</Type>
<Name><![CDATA[panel]]></Name>
</HtmlView.Element>
<HtmlView.Element>
<Expanded>true</Expanded>
<Type>Elements.Panel</Type>
<Name><![CDATA[panel_2]]></Name>
<Parent><![CDATA[panel]]></Parent>
</HtmlView.Element>
<HtmlView.Element>
<Type>Elements.ComboBox</Type>
<Name><![CDATA[comboBox]]></Name>
<Parent><![CDATA[panel_2]]></Parent>
<Property name="Options"><![CDATA[["visit 1 place and return home","visit 2 places and return home","visit 3 places and return home","visit 4 places and return home","original visit 4 places and return home"]]]></Property>
<Property name="OnChange"><![CDATA[var opts = _view.comboBox.getProperty("SelectedOptions");  
var option = (opts.length > 0)? opts[0]:"";
if ( option=="visit 1 place and return home"){
scenario = 1
  }
else if ( option=="visit 2 places and return home"){
 scenario = 2;
  }
else if ( option=="visit 3 places and return home"){
 scenario = 3;
  }
else if ( option=="visit 4 places and return home"){
 scenario = 4;
  }
else if ( option=="original visit 4 places and return home"){
 scenario = 5;
homeX = 1

  }]]></Property>
<Property name="Disabled"><![CDATA[distanceTravlled && true]]></Property>
</HtmlView.Element>
<HtmlView.Element>
<Type>Elements.Button</Type>
<Name><![CDATA[check]]></Name>
<Parent><![CDATA[panel_2]]></Parent>
<Property name="Text"><![CDATA["Check"]]></Property>
<Property name="OnPress"><![CDATA[if ( distanceTravlled === shortestPath) {
alert("Congrats you did it!");
} else {
alert("Wrong. Try again!");
}
_reset();]]></Property>
<Property name="Disabled"><![CDATA[distanceTravlled == 0 && true]]></Property>
</HtmlView.Element>
<HtmlView.Element>
<Type>Elements.Button</Type>
<Name><![CDATA[reset]]></Name>
<Parent><![CDATA[panel_2]]></Parent>
<Property name="Text"><![CDATA["Reset"]]></Property>
<Property name="OnPress"><![CDATA[_reset()]]></Property>
</HtmlView.Element>
<HtmlView.Element>
<Expanded>true</Expanded>
<Type>Elements.Panel</Type>
<Name><![CDATA[control1]]></Name>
<Parent><![CDATA[panel_2]]></Parent>
</HtmlView.Element>
<HtmlView.Element>
<Type>Elements.Label</Type>
<Name><![CDATA[homeX_]]></Name>
<Parent><![CDATA[control1]]></Parent>
<Property name="Text"><![CDATA["homeX="]]></Property>
</HtmlView.Element>
<HtmlView.Element>
<Type>Elements.ParsedField</Type>
<Name><![CDATA[parsedField]]></Name>
<Parent><![CDATA[control1]]></Parent>
<Property name="Value"><![CDATA[homeX]]></Property>
<Property name="Format"><![CDATA["0.00"]]></Property>
</HtmlView.Element>
<HtmlView.Element>
<Type>Elements.Label</Type>
<Name><![CDATA[homeY]]></Name>
<Parent><![CDATA[control1]]></Parent>
<Property name="Text"><![CDATA["homeY="]]></Property>
</HtmlView.Element>
<HtmlView.Element>
<Type>Elements.ParsedField</Type>
<Name><![CDATA[parsedField_2]]></Name>
<Parent><![CDATA[control1]]></Parent>
<Property name="Value"><![CDATA[homeY]]></Property>
<Property name="Format"><![CDATA["0.00"]]></Property>
</HtmlView.Element>
<HtmlView.Element>
<Type>Elements.Label</Type>
<Name><![CDATA[distBetwHomePostbox_3]]></Name>
<Parent><![CDATA[control1]]></Parent>
<Property name="Text"><![CDATA["distBetwHomePostbox="]]></Property>
</HtmlView.Element>
<HtmlView.Element>
<Type>Elements.ParsedField</Type>
<Name><![CDATA[distBetwHomePostbox_4]]></Name>
<Parent><![CDATA[control1]]></Parent>
<Property name="Value"><![CDATA[distBetwHomePostbox]]></Property>
<Property name="Format"><![CDATA["0.00"]]></Property>
<Property name="OnChange"><![CDATA[updatePostboxPosition()]]></Property>
</HtmlView.Element>
<HtmlView.Element>
<Expanded>false</Expanded>
<Type>Elements.Panel</Type>
<Name><![CDATA[control1_2]]></Name>
<Parent><![CDATA[panel_2]]></Parent>
</HtmlView.Element>
<HtmlView.Element>
<Type>Elements.Label</Type>
<Name><![CDATA[PostboxX]]></Name>
<Parent><![CDATA[control1_2]]></Parent>
<Property name="Text"><![CDATA["postboxX="]]></Property>
</HtmlView.Element>
<HtmlView.Element>
<Type>Elements.ParsedField</Type>
<Name><![CDATA[parsedField_3]]></Name>
<Parent><![CDATA[control1_2]]></Parent>
<Property name="Value"><![CDATA[postboxX]]></Property>
<Property name="Format"><![CDATA["0.00"]]></Property>
</HtmlView.Element>
<HtmlView.Element>
<Type>Elements.Label</Type>
<Name><![CDATA[homeY_2]]></Name>
<Parent><![CDATA[control1_2]]></Parent>
<Property name="Text"><![CDATA["postboxY="]]></Property>
</HtmlView.Element>
<HtmlView.Element>
<Type>Elements.ParsedField</Type>
<Name><![CDATA[parsedField_2_2]]></Name>
<Parent><![CDATA[control1_2]]></Parent>
<Property name="Value"><![CDATA[postboxY]]></Property>
<Property name="Format"><![CDATA["0.00"]]></Property>
</HtmlView.Element>
<HtmlView.Element>
<Expanded>false</Expanded>
<Type>Elements.Panel</Type>
<Name><![CDATA[control1_3]]></Name>
<Parent><![CDATA[panel_2]]></Parent>
</HtmlView.Element>
<HtmlView.Element>
<Type>Elements.Label</Type>
<Name><![CDATA[grabdmahouseX]]></Name>
<Parent><![CDATA[control1_3]]></Parent>
<Property name="Text"><![CDATA["grandmaHouseX="]]></Property>
</HtmlView.Element>
<HtmlView.Element>
<Type>Elements.ParsedField</Type>
<Name><![CDATA[parsedField_4]]></Name>
<Parent><![CDATA[control1_3]]></Parent>
<Property name="Value"><![CDATA[grandmaHouseX]]></Property>
<Property name="Format"><![CDATA["0.00"]]></Property>
</HtmlView.Element>
<HtmlView.Element>
<Type>Elements.Label</Type>
<Name><![CDATA[homeY_3]]></Name>
<Parent><![CDATA[control1_3]]></Parent>
<Property name="Text"><![CDATA["grandmaHouseY="]]></Property>
</HtmlView.Element>
<HtmlView.Element>
<Type>Elements.ParsedField</Type>
<Name><![CDATA[parsedField_2_3]]></Name>
<Parent><![CDATA[control1_3]]></Parent>
<Property name="Value"><![CDATA[grandmaHouseY]]></Property>
<Property name="Format"><![CDATA["0.00"]]></Property>
</HtmlView.Element>
<HtmlView.Element>
<Expanded>false</Expanded>
<Type>Elements.Panel</Type>
<Name><![CDATA[control1_4]]></Name>
<Parent><![CDATA[panel_2]]></Parent>
</HtmlView.Element>
<HtmlView.Element>
<Type>Elements.Label</Type>
<Name><![CDATA[marketX__2_2]]></Name>
<Parent><![CDATA[control1_4]]></Parent>
<Property name="Text"><![CDATA["marketX="]]></Property>
</HtmlView.Element>
<HtmlView.Element>
<Type>Elements.ParsedField</Type>
<Name><![CDATA[parsedField_5]]></Name>
<Parent><![CDATA[control1_4]]></Parent>
<Property name="Value"><![CDATA[marketX]]></Property>
<Property name="Format"><![CDATA["0.00"]]></Property>
</HtmlView.Element>
<HtmlView.Element>
<Type>Elements.Label</Type>
<Name><![CDATA[homeY_4]]></Name>
<Parent><![CDATA[control1_4]]></Parent>
<Property name="Text"><![CDATA["marketY="]]></Property>
</HtmlView.Element>
<HtmlView.Element>
<Type>Elements.ParsedField</Type>
<Name><![CDATA[parsedField_2_4]]></Name>
<Parent><![CDATA[control1_4]]></Parent>
<Property name="Value"><![CDATA[marketY]]></Property>
<Property name="Format"><![CDATA["0.00"]]></Property>
</HtmlView.Element>
<HtmlView.Element>
<Expanded>false</Expanded>
<Type>Elements.Panel</Type>
<Name><![CDATA[control1_5]]></Name>
<Parent><![CDATA[panel_2]]></Parent>
</HtmlView.Element>
<HtmlView.Element>
<Type>Elements.Label</Type>
<Name><![CDATA[cafeX__2]]></Name>
<Parent><![CDATA[control1_5]]></Parent>
<Property name="Text"><![CDATA["cafeX="]]></Property>
</HtmlView.Element>
<HtmlView.Element>
<Type>Elements.ParsedField</Type>
<Name><![CDATA[parsedField_6]]></Name>
<Parent><![CDATA[control1_5]]></Parent>
<Property name="Value"><![CDATA[cafeX]]></Property>
<Property name="Format"><![CDATA["0.00"]]></Property>
</HtmlView.Element>
<HtmlView.Element>
<Type>Elements.Label</Type>
<Name><![CDATA[homeY_5]]></Name>
<Parent><![CDATA[control1_5]]></Parent>
<Property name="Text"><![CDATA["cafeY="]]></Property>
</HtmlView.Element>
<HtmlView.Element>
<Type>Elements.ParsedField</Type>
<Name><![CDATA[parsedField_2_5]]></Name>
<Parent><![CDATA[control1_5]]></Parent>
<Property name="Value"><![CDATA[cafeY]]></Property>
<Property name="Format"><![CDATA["0.00"]]></Property>
</HtmlView.Element>
<HtmlView.Element>
<Expanded>true</Expanded>
<Type>Elements.PlottingPanel</Type>
<Name><![CDATA[plottingPanel]]></Name>
<Parent><![CDATA[panel]]></Parent>
<Property name="Width"><![CDATA["100%"]]></Property>
<Property name="Height"><![CDATA["80vh"]]></Property>
<Property name="MinimumX"><![CDATA[0]]></Property>
<Property name="MaximumX"><![CDATA[1]]></Property>
<Property name="MinimumY"><![CDATA[0]]></Property>
<Property name="MaximumY"><![CDATA[1]]></Property>
<Property name="Gutters"><![CDATA[[50,0,0,50]]]></Property>
<Property name="Enabled"><![CDATA[true]]></Property>
<Property name="TLMessage"><![CDATA["Distance Travelled: " + distanceTravlled+"m"]]></Property>
<Property name="XFixedTick"><![CDATA[0]]></Property>
<Property name="YFixedTick"><![CDATA[0]]></Property>
<Property name="YAutoTicks"><![CDATA[false]]></Property>
<Property name="XAutoTicks"><![CDATA[false]]></Property>
<Property name="XTickStep"><![CDATA[0.1]]></Property>
<Property name="YTickStep"><![CDATA[0.1]]></Property>
</HtmlView.Element>
<HtmlView.Element>
<Expanded>false</Expanded>
<Type>Elements.Group2D</Type>
<Name><![CDATA[lines]]></Name>
<Parent><![CDATA[plottingPanel]]></Parent>
</HtmlView.Element>
<HtmlView.Element>
<Type>Elements.Segment2D</Type>
<Name><![CDATA[homePostboxLine]]></Name>
<Parent><![CDATA[lines]]></Parent>
<Property name="X"><![CDATA[homeX]]></Property>
<Property name="Y"><![CDATA[homeY]]></Property>
<Property name="SizeX"><![CDATA[postboxX - homeX]]></Property>
<Property name="SizeY"><![CDATA[postboxY - homeY]]></Property>
<Property name="LineWidth"><![CDATA[30]]></Property>
<Property name="LineColor"><![CDATA["rgb(147, 149, 152)"]]></Property>
</HtmlView.Element>
<HtmlView.Element>
<Type>Elements.Segment2D</Type>
<Name><![CDATA[homePostboxCenterLine]]></Name>
<Parent><![CDATA[lines]]></Parent>
<Property name="X"><![CDATA[homeX]]></Property>
<Property name="Y"><![CDATA[homeY]]></Property>
<Property name="SizeX"><![CDATA[postboxX - homeX]]></Property>
<Property name="SizeY"><![CDATA[postboxY - homeY]]></Property>
<Property name="LineWidth"><![CDATA[5]]></Property>
<Property name="LineColor"><![CDATA["White"]]></Property>
</HtmlView.Element>
<HtmlView.Element>
<Type>Elements.Segment2D</Type>
<Name><![CDATA[homeGrandmaHouseLine]]></Name>
<Parent><![CDATA[lines]]></Parent>
<Property name="X"><![CDATA[homeX]]></Property>
<Property name="Y"><![CDATA[homeY]]></Property>
<Property name="SizeX"><![CDATA[grandmaHouseX - homeX]]></Property>
<Property name="SizeY"><![CDATA[grandmaHouseY - homeY]]></Property>
<Property name="LineWidth"><![CDATA[30]]></Property>
<Property name="LineColor"><![CDATA["rgb(147, 149, 152)"]]></Property>
</HtmlView.Element>
<HtmlView.Element>
<Type>Elements.Segment2D</Type>
<Name><![CDATA[homeGrandmaHouseCenterLine]]></Name>
<Parent><![CDATA[lines]]></Parent>
<Property name="X"><![CDATA[homeX]]></Property>
<Property name="Y"><![CDATA[homeY]]></Property>
<Property name="SizeX"><![CDATA[grandmaHouseX - homeX]]></Property>
<Property name="SizeY"><![CDATA[grandmaHouseY - homeY]]></Property>
<Property name="LineWidth"><![CDATA[5]]></Property>
<Property name="LineColor"><![CDATA["White"]]></Property>
</HtmlView.Element>
<HtmlView.Element>
<Type>Elements.Segment2D</Type>
<Name><![CDATA[grandmaHouseMarketLine]]></Name>
<Parent><![CDATA[lines]]></Parent>
<Property name="X"><![CDATA[grandmaHouseX]]></Property>
<Property name="Y"><![CDATA[grandmaHouseY]]></Property>
<Property name="SizeX"><![CDATA[marketX- grandmaHouseX]]></Property>
<Property name="SizeY"><![CDATA[marketY - grandmaHouseY]]></Property>
<Property name="LineWidth"><![CDATA[30]]></Property>
<Property name="LineColor"><![CDATA["rgb(147, 149, 152)"]]></Property>
</HtmlView.Element>
<HtmlView.Element>
<Type>Elements.Segment2D</Type>
<Name><![CDATA[grandmaHouseMarketCenterLine]]></Name>
<Parent><![CDATA[lines]]></Parent>
<Property name="X"><![CDATA[grandmaHouseX]]></Property>
<Property name="Y"><![CDATA[grandmaHouseY]]></Property>
<Property name="SizeX"><![CDATA[marketX- grandmaHouseX]]></Property>
<Property name="SizeY"><![CDATA[marketY - grandmaHouseY]]></Property>
<Property name="LineWidth"><![CDATA[5]]></Property>
<Property name="LineColor"><![CDATA["White"]]></Property>
</HtmlView.Element>
<HtmlView.Element>
<Type>Elements.Segment2D</Type>
<Name><![CDATA[homeCafeLine]]></Name>
<Parent><![CDATA[lines]]></Parent>
<Property name="X"><![CDATA[homeX]]></Property>
<Property name="Y"><![CDATA[homeY]]></Property>
<Property name="SizeX"><![CDATA[cafeX- homeX]]></Property>
<Property name="SizeY"><![CDATA[cafeY- homeY]]></Property>
<Property name="LineWidth"><![CDATA[30]]></Property>
<Property name="LineColor"><![CDATA["rgb(147, 149, 152)"]]></Property>
</HtmlView.Element>
<HtmlView.Element>
<Type>Elements.Segment2D</Type>
<Name><![CDATA[homeCafeCenterLine]]></Name>
<Parent><![CDATA[lines]]></Parent>
<Property name="X"><![CDATA[homeX]]></Property>
<Property name="Y"><![CDATA[homeY]]></Property>
<Property name="SizeX"><![CDATA[cafeX- homeX]]></Property>
<Property name="SizeY"><![CDATA[cafeY- homeY]]></Property>
<Property name="LineWidth"><![CDATA[5]]></Property>
<Property name="LineColor"><![CDATA["white"]]></Property>
</HtmlView.Element>
<HtmlView.Element>
<Type>Elements.Segment2D</Type>
<Name><![CDATA[postboxGrandmaHouseLine]]></Name>
<Parent><![CDATA[lines]]></Parent>
<Property name="X"><![CDATA[postboxX]]></Property>
<Property name="Y"><![CDATA[postboxY]]></Property>
<Property name="SizeX"><![CDATA[grandmaHouseX - postboxX]]></Property>
<Property name="SizeY"><![CDATA[grandmaHouseY - postboxY]]></Property>
<Property name="LineWidth"><![CDATA[30]]></Property>
<Property name="LineColor"><![CDATA["rgb(147, 149, 152)"]]></Property>
</HtmlView.Element>
<HtmlView.Element>
<Type>Elements.Segment2D</Type>
<Name><![CDATA[postboxGrandmaHouseCenterLine]]></Name>
<Parent><![CDATA[lines]]></Parent>
<Property name="X"><![CDATA[postboxX]]></Property>
<Property name="Y"><![CDATA[postboxY]]></Property>
<Property name="SizeX"><![CDATA[grandmaHouseX- postboxX]]></Property>
<Property name="SizeY"><![CDATA[grandmaHouseY- postboxY]]></Property>
<Property name="LineWidth"><![CDATA[5]]></Property>
<Property name="LineColor"><![CDATA["white"]]></Property>
</HtmlView.Element>
<HtmlView.Element>
<Type>Elements.Segment2D</Type>
<Name><![CDATA[grandmaHouseCafeLine]]></Name>
<Parent><![CDATA[lines]]></Parent>
<Property name="X"><![CDATA[grandmaHouseX]]></Property>
<Property name="Y"><![CDATA[grandmaHouseY]]></Property>
<Property name="SizeX"><![CDATA[cafeX- grandmaHouseX]]></Property>
<Property name="SizeY"><![CDATA[cafeY- grandmaHouseY]]></Property>
<Property name="LineWidth"><![CDATA[30]]></Property>
<Property name="LineColor"><![CDATA["rgb(147, 149, 152)"]]></Property>
</HtmlView.Element>
<HtmlView.Element>
<Type>Elements.Segment2D</Type>
<Name><![CDATA[grandmaHouseCafeCenterLine]]></Name>
<Parent><![CDATA[lines]]></Parent>
<Property name="X"><![CDATA[grandmaHouseX]]></Property>
<Property name="Y"><![CDATA[grandmaHouseY]]></Property>
<Property name="SizeX"><![CDATA[cafeX- grandmaHouseX]]></Property>
<Property name="SizeY"><![CDATA[cafeY- grandmaHouseY]]></Property>
<Property name="LineWidth"><![CDATA[5]]></Property>
<Property name="LineColor"><![CDATA["white"]]></Property>
</HtmlView.Element>
<HtmlView.Element>
<Type>Elements.Segment2D</Type>
<Name><![CDATA[postboxMarketLine]]></Name>
<Parent><![CDATA[lines]]></Parent>
<Property name="X"><![CDATA[postboxX]]></Property>
<Property name="Y"><![CDATA[postboxY]]></Property>
<Property name="SizeX"><![CDATA[marketX - postboxX]]></Property>
<Property name="SizeY"><![CDATA[marketY - postboxY]]></Property>
<Property name="LineWidth"><![CDATA[30]]></Property>
<Property name="LineColor"><![CDATA["rgb(147, 149, 152)"]]></Property>
</HtmlView.Element>
<HtmlView.Element>
<Type>Elements.Segment2D</Type>
<Name><![CDATA[postboxMarketCenterLine]]></Name>
<Parent><![CDATA[lines]]></Parent>
<Property name="X"><![CDATA[postboxX]]></Property>
<Property name="Y"><![CDATA[postboxY]]></Property>
<Property name="SizeX"><![CDATA[marketX - postboxX]]></Property>
<Property name="SizeY"><![CDATA[marketY - postboxY]]></Property>
<Property name="LineWidth"><![CDATA[5]]></Property>
<Property name="LineColor"><![CDATA["white"]]></Property>
</HtmlView.Element>
<HtmlView.Element>
<Type>Elements.Segment2D</Type>
<Name><![CDATA[cafeMarketLine]]></Name>
<Parent><![CDATA[lines]]></Parent>
<Property name="X"><![CDATA[cafeX]]></Property>
<Property name="Y"><![CDATA[cafeY]]></Property>
<Property name="SizeX"><![CDATA[marketX - cafeX]]></Property>
<Property name="SizeY"><![CDATA[marketY - cafeY]]></Property>
<Property name="LineWidth"><![CDATA[30]]></Property>
<Property name="LineColor"><![CDATA["rgb(147, 149, 152)"]]></Property>
</HtmlView.Element>
<HtmlView.Element>
<Type>Elements.Segment2D</Type>
<Name><![CDATA[cafeMarketCenterLine]]></Name>
<Parent><![CDATA[lines]]></Parent>
<Property name="X"><![CDATA[cafeX]]></Property>
<Property name="Y"><![CDATA[cafeY]]></Property>
<Property name="SizeX"><![CDATA[marketX - cafeX]]></Property>
<Property name="SizeY"><![CDATA[marketY - cafeY]]></Property>
<Property name="LineWidth"><![CDATA[5]]></Property>
<Property name="LineColor"><![CDATA["white"]]></Property>
</HtmlView.Element>
<HtmlView.Element>
<Type>Elements.Image2D</Type>
<Name><![CDATA[home]]></Name>
<Parent><![CDATA[plottingPanel]]></Parent>
<Property name="ImageUrl"><![CDATA["./Home.png"]]></Property>
<Property name="SizeX"><![CDATA[sizeX]]></Property>
<Property name="SizeY"><![CDATA[sizeY]]></Property>
<Property name="X"><![CDATA[homeX]]></Property>
<Property name="Y"><![CDATA[homeY]]></Property>
<Property name="Sensitivity"><![CDATA[0]]></Property>
<Property name="OnDrag"><![CDATA[updateLengths();]]></Property>
<Property name="OnDoubleClick"><![CDATA[if (current === "postbox") {
travelDistance("home", homeX, homeY, distBetwHomePostbox);
} else if (current === "grandmaHouse") {
travelDistance("home", homeX, homeY, distBetwHomeGrandmaHouse);
} else if (current === "cafe") {
travelDistance("home", homeX, homeY, distBetwHomeCafe);
} else {
alert("Please choose a location next to this");
}]]></Property>
<Property name="EnabledPosition"><![CDATA[starting]]></Property>
<Property name="PixelSize"><![CDATA[true]]></Property>
</HtmlView.Element>
<HtmlView.Element>
<Type>Elements.Image2D</Type>
<Name><![CDATA[postbox]]></Name>
<Parent><![CDATA[plottingPanel]]></Parent>
<Property name="ImageUrl"><![CDATA["./Postbox.png"]]></Property>
<Property name="X"><![CDATA[postboxX]]></Property>
<Property name="Y"><![CDATA[postboxY]]></Property>
<Property name="SizeX"><![CDATA[sizeX]]></Property>
<Property name="SizeY"><![CDATA[sizeY]]></Property>
<Property name="Sensitivity"><![CDATA[0]]></Property>
<Property name="EnabledPosition"><![CDATA[starting]]></Property>
<Property name="OnDrag"><![CDATA[updateLengths();]]></Property>
<Property name="OnDoubleClick"><![CDATA[if (current === "home") {
travelDistance("postbox", postboxX, postboxY, distBetwHomePostbox);
} else if (current === "grandmaHouse") {
travelDistance("postbox", postboxX, postboxY, distBetwPostboxGrandmaHouse);
} else if (current === "market") {
travelDistance("postbox", postboxX, postboxY, distBetwPostboxMarket);
} else {
alert("Please choose a location next to this");
}]]></Property>
<Property name="PixelSize"><![CDATA[true]]></Property>
</HtmlView.Element>
<HtmlView.Element>
<Type>Elements.Image2D</Type>
<Name><![CDATA[grandmaHouse]]></Name>
<Parent><![CDATA[plottingPanel]]></Parent>
<Property name="X"><![CDATA[grandmaHouseX]]></Property>
<Property name="Y"><![CDATA[grandmaHouseY]]></Property>
<Property name="SizeX"><![CDATA[sizeX]]></Property>
<Property name="SizeY"><![CDATA[sizeY]]></Property>
<Property name="Sensitivity"><![CDATA[0]]></Property>
<Property name="EnabledPosition"><![CDATA[starting]]></Property>
<Property name="ImageUrl"><![CDATA["./Grandmother.png"]]></Property>
<Property name="OnDrag"><![CDATA[updateLengths();]]></Property>
<Property name="OnDoubleClick"><![CDATA[if (current === "home") {
travelDistance("grandmaHouse", grandmaHouseX, grandmaHouseY, distBetwHomeGrandmaHouse);
} else if (current === "postbox") {
travelDistance("grandmaHouse", grandmaHouseX, grandmaHouseY, distBetwPostboxGrandmaHouse);
} else if (current === "cafe") {
travelDistance("grandmaHouse", grandmaHouseX, grandmaHouseY, distBetwGrandmaHouseCafe);
} else if (current === "market") {
travelDistance("grandmaHouse", grandmaHouseX, grandmaHouseY, distBetwGrandmaHouseMarket);
} else {
alert("Please choose a location next to this");
}]]></Property>
<Property name="PixelSize"><![CDATA[true]]></Property>
</HtmlView.Element>
<HtmlView.Element>
<Type>Elements.Image2D</Type>
<Name><![CDATA[market]]></Name>
<Parent><![CDATA[plottingPanel]]></Parent>
<Property name="X"><![CDATA[marketX]]></Property>
<Property name="Y"><![CDATA[marketY]]></Property>
<Property name="SizeX"><![CDATA[sizeX]]></Property>
<Property name="SizeY"><![CDATA[sizeY]]></Property>
<Property name="Sensitivity"><![CDATA[0]]></Property>
<Property name="ImageUrl"><![CDATA["./Market.png"]]></Property>
<Property name="EnabledPosition"><![CDATA[starting]]></Property>
<Property name="OnDrag"><![CDATA[updateLengths();]]></Property>
<Property name="OnDoubleClick"><![CDATA[if (current === "postbox") {
travelDistance("market", marketX, marketY, distBetwPostboxMarket);
} else if (current === "grandmaHouse") {
travelDistance("market", marketX, marketY, distBetwGrandmaHouseMarket);
} else if (current === "cafe") {
travelDistance("market", marketX, marketY, distBetwCafeMarket);
} else {
alert("Please choose a location next to this");
}]]></Property>
<Property name="PixelSize"><![CDATA[true]]></Property>
</HtmlView.Element>
<HtmlView.Element>
<Type>Elements.Image2D</Type>
<Name><![CDATA[cafe]]></Name>
<Parent><![CDATA[plottingPanel]]></Parent>
<Property name="ImageUrl"><![CDATA["./Cafe.png"]]></Property>
<Property name="X"><![CDATA[cafeX]]></Property>
<Property name="Y"><![CDATA[cafeY]]></Property>
<Property name="SizeX"><![CDATA[sizeX]]></Property>
<Property name="SizeY"><![CDATA[sizeY]]></Property>
<Property name="Sensitivity"><![CDATA[0]]></Property>
<Property name="EnabledPosition"><![CDATA[starting]]></Property>
<Property name="OnDrag"><![CDATA[updateLengths();]]></Property>
<Property name="OnDoubleClick"><![CDATA[if (current === "home") {
travelDistance("cafe", cafeX, cafeY, distBetwHomeCafe);
} else if (current === "grandmaHouse") {
travelDistance("cafe", cafeX, cafeY, distBetwGrandmaHouseCafe);
} else if (current === "market") {
travelDistance("cafe", cafeX, cafeY, distBetwCafeMarket);
} else {
alert("Please choose a location next to this");
}]]></Property>
<Property name="PixelSize"><![CDATA[true]]></Property>
</HtmlView.Element>
<HtmlView.Element>
<Expanded>true</Expanded>
<Type>Elements.Group2D</Type>
<Name><![CDATA[text]]></Name>
<Parent><![CDATA[plottingPanel]]></Parent>
</HtmlView.Element>
<HtmlView.Element>
<Type>Elements.Text2D</Type>
<Name><![CDATA[distBetwHomePostbox]]></Name>
<Parent><![CDATA[text]]></Parent>
<Property name="Text"><![CDATA[distBetwHomePostbox.toFixed(0)+"m"]]></Property>
<Property name="X"><![CDATA[calculateMidpointX(homeX, postboxX)]]></Property>
<Property name="Y"><![CDATA[calculateMidpointY(homeY, postboxY)]]></Property>
</HtmlView.Element>
<HtmlView.Element>
<Type>Elements.Text2D</Type>
<Name><![CDATA[distBetwHomeGrandmaHouse]]></Name>
<Parent><![CDATA[text]]></Parent>
<Property name="Text"><![CDATA[distBetwHomeGrandmaHouse.toFixed(0)+"m"]]></Property>
<Property name="X"><![CDATA[calculateMidpointX(homeX, grandmaHouseX)]]></Property>
<Property name="Y"><![CDATA[calculateMidpointY(homeY, grandmaHouseY)]]></Property>
</HtmlView.Element>
<HtmlView.Element>
<Type>Elements.Text2D</Type>
<Name><![CDATA[distBetwGrandmaHouseMarket]]></Name>
<Parent><![CDATA[text]]></Parent>
<Property name="Text"><![CDATA[distBetwGrandmaHouseMarket.toFixed(0)+"m"]]></Property>
<Property name="X"><![CDATA[calculateMidpointX(grandmaHouseX, marketX)]]></Property>
<Property name="Y"><![CDATA[calculateMidpointY(grandmaHouseY, marketY)]]></Property>
</HtmlView.Element>
<HtmlView.Element>
<Type>Elements.Text2D</Type>
<Name><![CDATA[distBetwHomeCafe]]></Name>
<Parent><![CDATA[text]]></Parent>
<Property name="Text"><![CDATA[distBetwHomeCafe.toFixed(0)+"m"]]></Property>
<Property name="X"><![CDATA[calculateMidpointX(homeX, cafeX)]]></Property>
<Property name="Y"><![CDATA[calculateMidpointY(homeY, cafeY)]]></Property>
</HtmlView.Element>
<HtmlView.Element>
<Type>Elements.Text2D</Type>
<Name><![CDATA[distBetwPostboxGrandmaHouse]]></Name>
<Parent><![CDATA[text]]></Parent>
<Property name="Text"><![CDATA[distBetwPostboxGrandmaHouse.toFixed(0)+"m"]]></Property>
<Property name="X"><![CDATA[calculateMidpointX(postboxX, grandmaHouseX)]]></Property>
<Property name="Y"><![CDATA[calculateMidpointY(postboxY, grandmaHouseY)]]></Property>
</HtmlView.Element>
<HtmlView.Element>
<Type>Elements.Text2D</Type>
<Name><![CDATA[distBetwPostboxMarket]]></Name>
<Parent><![CDATA[text]]></Parent>
<Property name="Text"><![CDATA[distBetwPostboxMarket.toFixed(0)+"m"]]></Property>
<Property name="X"><![CDATA[calculateMidpointX(postboxX, marketX)]]></Property>
<Property name="Y"><![CDATA[calculateMidpointY(postboxY, marketY)]]></Property>
</HtmlView.Element>
<HtmlView.Element>
<Type>Elements.Text2D</Type>
<Name><![CDATA[distBetwGrandmaHouseCafe]]></Name>
<Parent><![CDATA[text]]></Parent>
<Property name="Text"><![CDATA[distBetwGrandmaHouseCafe.toFixed(0)+"m"]]></Property>
<Property name="X"><![CDATA[calculateMidpointX(grandmaHouseX, cafeX)]]></Property>
<Property name="Y"><![CDATA[calculateMidpointY(grandmaHouseY, cafeY)]]></Property>
</HtmlView.Element>
<HtmlView.Element>
<Type>Elements.Text2D</Type>
<Name><![CDATA[distBetwCafeMarket]]></Name>
<Parent><![CDATA[text]]></Parent>
<Property name="Text"><![CDATA[distBetwCafeMarket.toFixed(0)+"m"]]></Property>
<Property name="X"><![CDATA[calculateMidpointX(cafeX, marketX)]]></Property>
<Property name="Y"><![CDATA[calculateMidpointY(cafeY, marketY)]]></Property>
</HtmlView.Element>
<HtmlView.Element>
<Type>Elements.Text2D</Type>
<Name><![CDATA[homeText]]></Name>
<Parent><![CDATA[text]]></Parent>
<Property name="Text"><![CDATA["Home"]]></Property>
<Property name="X"><![CDATA[homeX]]></Property>
<Property name="Y"><![CDATA[homeY+0.08]]></Property>
</HtmlView.Element>
<HtmlView.Element>
<Type>Elements.Text2D</Type>
<Name><![CDATA[postboxText]]></Name>
<Parent><![CDATA[text]]></Parent>
<Property name="Text"><![CDATA["Postbox"]]></Property>
<Property name="X"><![CDATA[postboxX]]></Property>
<Property name="Y"><![CDATA[postboxY+0.11]]></Property>
</HtmlView.Element>
<HtmlView.Element>
<Type>Elements.Text2D</Type>
<Name><![CDATA[marketText]]></Name>
<Parent><![CDATA[text]]></Parent>
<Property name="Text"><![CDATA["Market"]]></Property>
<Property name="X"><![CDATA[marketX]]></Property>
<Property name="Y"><![CDATA[marketY+0.11]]></Property>
</HtmlView.Element>
<HtmlView.Element>
<Type>Elements.Text2D</Type>
<Name><![CDATA[cafeText]]></Name>
<Parent><![CDATA[text]]></Parent>
<Property name="Text"><![CDATA["Cafe"]]></Property>
<Property name="X"><![CDATA[cafeX]]></Property>
<Property name="Y"><![CDATA[cafeY+0.1]]></Property>
</HtmlView.Element>
<HtmlView.Element>
<Type>Elements.Text2D</Type>
<Name><![CDATA[grandmaHouseText]]></Name>
<Parent><![CDATA[text]]></Parent>
<Property name="Text"><![CDATA["Grandmother House"]]></Property>
<Property name="X"><![CDATA[grandmaHouseX]]></Property>
<Property name="Y"><![CDATA[grandmaHouseY+0.08]]></Property>
</HtmlView.Element>
<HtmlView.Element>
<Type>Elements.Text2D</Type>
<Name><![CDATA[girl]]></Name>
<Parent><![CDATA[plottingPanel]]></Parent>
<Property name="Text"><![CDATA["👧"]]></Property>
<Property name="FontSize"><![CDATA["5vw"]]></Property>
<Property name="X"><![CDATA[x]]></Property>
<Property name="Y"><![CDATA[y]]></Property>
</HtmlView.Element>
<HtmlView.Element>
<Type>Elements.Trail2D</Type>
<Name><![CDATA[girlTrail]]></Name>
<Parent><![CDATA[plottingPanel]]></Parent>
<Property name="NoRepeat"><![CDATA[true]]></Property>
<Property name="LineColor"><![CDATA["Yellow"]]></Property>
<Property name="LineWidth"><![CDATA[5]]></Property>
<Property name="InputX"><![CDATA[x]]></Property>
<Property name="InputY"><![CDATA[y]]></Property>
<Property name="Active"><![CDATA[distanceTravlled && true]]></Property>
</HtmlView.Element>
</Tree>
</Content>
</Osejs.HtmlView.Page>
</Osejs.HtmlView>
</Osejs>