hmmm...help! chasing errors. core js problem i.e. me not getting it


    Mar 14 2007 | 8:50 pm
    hi,
    i'm trying to get this script running. it works fine when i call the
    functions independently, but the toggle function at the bottom which
    is supposed to run the whole thing gives me
    "net[nodeid] has no properties" errors while to me it is very well
    defined, but well...
    i've tried to isolate, but I don't seem to find it. it's probably a
    scope thing, but i'm not that proficient enough yet in js to spot it
    i'm afraid.
    i hope this is not too long, and that it makes sense to you...
    thanks in advance!
    isjtar
    oh yes, first run the resetNet, then toggle 1
    ////
    initiate////////////////////////////////////////////////////////////////
    ////////////////////////
    //globals
    inlets = 1;
    outlets = 2;
    autowatch = 1;
    post("init");
    //initiate inductive scale
    var induct = 1;
    //netholder
    netsize = 100;
    var net = new Array(netsize);
    for (var i = 0; i < netsize; i++){
    net[i] = new node(i);
    }
    //
    startnode///////////////////////////////////////////////////////////////
    ///////////////////////
    function node(i){
    //create array
    this.connectArray = new Array(100);
    //lower than 1 for scaling
    this.depth = 1;
    this.activationbw = 128;
    }
    ////basic probing
    functions///////////////////////////////////////////////////////////////
    //////////
    //get node
    function getNode(nodeid){
    outlet(1, net[nodeid].connectArray);
    }
    //get net
    function getNet(){
    for(var nodeid = 0; nodeid < netsize; nodeid++){
    getNode(nodeid);
    }
    }
    //reset node
    function connectReset(nodeid) {
    for (var i = 0; i net[nodeid].connectArray[i] = 60;
    }
    }
    //reset net
    function resetNet(){
    for(var n_id = 0; n_id < netsize; n_id++){
    connectReset(n_id);
    }
    }
    ////the
    netfunctions////////////////////////////////////////////////////////////
    ////////////////////
    //fquantile
    function fquantile(nodeid) {
    var rnd = Math.random();
    var total = 0;
    var sum = 0;
    for (var index = 0; index < 100; index++) { //get total, index max =
    array size
    total += net[nodeid].connectArray[index];
    }
    for (var index2 = 0; index2 < 100; index2++) { //compare index sum
    to total * rnd
    sum += net[nodeid].connectArray[index2];
    if (sum >= rnd * total) {
    outlet(0,index2);
    return index2; //output data
    }
    }
    }
    //activation and timing, see run
    function net_timing(){
    //sequence nodeids
    var nodeid2 = fquantile(nodeid2);
    outlet(0, nodeid2);
    //activation ramps
    for(var actramp = 0; actramp < netsize; actramp++){
    for(var i2 = 0; i2 < netsize; i2++){
    net[actramp].connectArray[i2] = Math.round(net[actramp].connectArray
    [i2] * net[i2].depth);
    post(arguments.callee.task.iterations);
    }
    }
    //output
    var output = getNet();
    outlet(0, output);
    }
    ////run the
    net!////////////////////////////////////////////////////////////////////
    /////////
    function toggle(number) {
    if(number == 1){
    var randomstart = Math.round(Math.random() * netsize);
    var nodeid = fquantile(randomstart);
    run = new Task(net_timing, this);
    run.interval = 50;
    run.repeat(100);
    }
    else{
    run.cancel;
    }
    }