// Gate image overlays

rsf00000 = new Image(550, 275); rsf00000.src = "images/rsf00000.gif";
rsf00011 = new Image(550, 275); rsf00011.src = "images/rsf00011.gif";
rsf00100 = new Image(550, 275); rsf00100.src = "images/rsf00100.gif";
rsf00111 = new Image(550, 275); rsf00111.src = "images/rsf00111.gif";
rsf01000 = new Image(550, 275); rsf01000.src = "images/rsf01000.gif";
rsf01001 = new Image(550, 275); rsf01001.src = "images/rsf01001.gif";
rsf01010 = new Image(550, 275); rsf01010.src = "images/rsf01010.gif";
rsf01011 = new Image(550, 275); rsf01011.src = "images/rsf01011.gif";
rsf01100 = new Image(550, 275); rsf01100.src = "images/rsf01100.gif";
rsf01101 = new Image(550, 275); rsf01101.src = "images/rsf01101.gif";
rsf10000 = new Image(550, 275); rsf10000.src = "images/rsf10000.gif";
rsf10011 = new Image(550, 275); rsf10011.src = "images/rsf10011.gif";
rsf10100 = new Image(550, 275); rsf10100.src = "images/rsf10100.gif";
rsf10111 = new Image(550, 275); rsf10111.src = "images/rsf10111.gif";
rsf11010 = new Image(550, 275); rsf11010.src = "images/rsf11010.gif";
rsf11011 = new Image(550, 275); rsf11011.src = "images/rsf11011.gif";
rsf11110 = new Image(550, 275); rsf11110.src = "images/rsf11110.gif";
rsf11111 = new Image(550, 275); rsf11111.src = "images/rsf11111.gif";


// gate input values

var gatesIn = new Array(0);
gatesIn[0] = new Array(2);	// RS Edge-triggered flip-flop
gatesIn[0][0] = "0";
gatesIn[0][1] = "0";
gatesIn[0][2] = "0";

var gatesOut = new Array(0);	// RS Edge-triggered flip-flop
gatesOut[0] = new Array(1);
gatesOut[0][0] = "0";
gatesOut[0][1] = "0";

// gate names

var gateNames = new Array(0);
gateNames[0] = "rsf";


// Input and output counts

var gateInputs = new Array(0);
gateInputs[0] = 3;

var gateOutputs = new Array(0);
gateOutputs[0] = 2;


function findOutput(gateID, inputID) {
        myGate = gateID;
        myInput = inputID;
        // Determine output state for current inputs
        if (gatesIn[myGate][1] == "1") {
                if (gatesIn[myGate][2] == "1") gatesOut[myGate][0] = "0";
                if (gatesIn[myGate][0] == "1") gatesOut[myGate][0] = "1";
        } else {
                if (gatesIn[myGate][2] == "1" &&
                    gatesIn[myGate][0] == "1" &&
                    myInput == 1) {
                        gatesOut[myGate][0] = Math.round(Math.random());
                }
		gatesOut[myGate][1] = gatesOut[myGate][0]
        }
}


