// Gate image overlays

rsc0000 = new Image(300, 200); rsc0000.src = "images/rsc-0000.gif";
rsc0001 = new Image(300, 200); rsc0001.src = "images/rsc-0001.gif";
rsc0010 = new Image(300, 200); rsc0010.src = "images/rsc-0010.gif";
rsc0011 = new Image(300, 200); rsc0011.src = "images/rsc-0011.gif";
rsc0100 = new Image(300, 200); rsc0100.src = "images/rsc-0100.gif";
rsc0101 = new Image(300, 200); rsc0101.src = "images/rsc-0101.gif";
rsc0110 = new Image(300, 200); rsc0110.src = "images/rsc-0110.gif";
rsc1000 = new Image(300, 200); rsc1000.src = "images/rsc-1000.gif";
rsc1001 = new Image(300, 200); rsc1001.src = "images/rsc-1001.gif";
rsc1010 = new Image(300, 200); rsc1010.src = "images/rsc-1010.gif";
rsc1011 = new Image(300, 200); rsc1011.src = "images/rsc-1011.gif";
rsc1101 = new Image(300, 200); rsc1101.src = "images/rsc-1101.gif";
rsc1111 = new Image(300, 200); rsc1111.src = "images/rsc-1111.gif";


// gate input and output values

var gatesIn = new Array(0);
gatesIn[0] = new Array(2);	// Clocked RS NAND latch
gatesIn[0][0] = "0";
gatesIn[0][1] = "0";
gatesIn[0][2] = "0";

var gatesOut = new Array(0);	// Clocked RS NAND latch
gatesOut[0] = new Array(0);
gatesOut[0][0] = "0";

// gate names

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


// Input and output counts

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

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


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());
		}
	}
}


