// Gate image overlays

dct00000 = new Image(430, 150);	dct00000.src = "images/dct00000.gif"
dct00001 = new Image(430, 150);	dct00001.src = "images/dct00001.gif"
dct00010 = new Image(430, 150);	dct00010.src = "images/dct00010.gif"
dct00011 = new Image(430, 150);	dct00011.src = "images/dct00011.gif"
dct00100 = new Image(430, 150);	dct00100.src = "images/dct00100.gif"
dct00101 = new Image(430, 150);	dct00101.src = "images/dct00101.gif"
dct00110 = new Image(430, 150);	dct00110.src = "images/dct00110.gif"
dct00111 = new Image(430, 150);	dct00111.src = "images/dct00111.gif"
dct01000 = new Image(430, 150);	dct01000.src = "images/dct01000.gif"
dct01001 = new Image(430, 150);	dct01001.src = "images/dct01001.gif"
dct01010 = new Image(430, 150);	dct01010.src = "images/dct01010.gif"
dct01011 = new Image(430, 150);	dct01011.src = "images/dct01011.gif"
dct01100 = new Image(430, 150);	dct01100.src = "images/dct01100.gif"
dct01101 = new Image(430, 150);	dct01101.src = "images/dct01101.gif"
dct01110 = new Image(430, 150);	dct01110.src = "images/dct01110.gif"
dct01111 = new Image(430, 150);	dct01111.src = "images/dct01111.gif"
dct10000 = new Image(430, 150);	dct10000.src = "images/dct10000.gif"
dct10001 = new Image(430, 150);	dct10001.src = "images/dct10001.gif"
dct10010 = new Image(430, 150);	dct10010.src = "images/dct10010.gif"
dct10011 = new Image(430, 150);	dct10011.src = "images/dct10011.gif"
dct10100 = new Image(430, 150);	dct10100.src = "images/dct10100.gif"
dct10101 = new Image(430, 150);	dct10101.src = "images/dct10101.gif"
dct10110 = new Image(430, 150);	dct10110.src = "images/dct10110.gif"
dct10111 = new Image(430, 150);	dct10111.src = "images/dct10111.gif"
dct11000 = new Image(430, 150);	dct11000.src = "images/dct11000.gif"
dct11001 = new Image(430, 150);	dct11001.src = "images/dct11001.gif"
dct11010 = new Image(430, 150);	dct11010.src = "images/dct11010.gif"
dct11011 = new Image(430, 150);	dct11011.src = "images/dct11011.gif"
dct11100 = new Image(430, 150);	dct11100.src = "images/dct11100.gif"
dct11101 = new Image(430, 150);	dct11101.src = "images/dct11101.gif"
dct11110 = new Image(430, 150);	dct11110.src = "images/dct11110.gif"
dct11111 = new Image(430, 150);	dct11111.src = "images/dct11111.gif"

// gate input and output values

var gatesIn = new Array(0);
gatesIn[0] = new Array(0);	// 4-bit ripple down counter
gatesIn[0][0] = "0";


var gatesOut = new Array(0);
gatesOut[0] = new Array(3);	// 4-bit ripple down counter
gatesOut[0][0] = "0";
gatesOut[0][1] = "0";
gatesOut[0][2] = "0";
gatesOut[0][3] = "0";


// gate names

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


// Input and output counts

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

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


// Pulse state information -- initialize

var pulseRestingState = new Array(0);
pulseRestingState[0] = 0;
  
var pulseState = new Array(0);
pulseState[0] = pulseRestingState[0];


function findOutput(gateID, inputID) {
        myGate = gateID;
        myInput = inputID;
	// Determine output state for current inputs
	if (gatesIn[myGate][myInput] == "0") {
		myOutput = "1";
		i = 0;
		while (myOutput == "1" && i < 4) {
			myOutput = (gatesOut[myGate][i] == "1") ? "0" : "1";
			gatesOut[myGate][i] = myOutput;
			i++;
		}
	}
}

