The regex isn't really that big of a deal, it's really getting the stopwatch and countdown timer on the same 00:00:00 appearance with a button to switch between. We have to do some stupid output tracking.

I adapted the code to make it look the way he wants. Now its getting the stopwatch/countdown timer to work.

html:
Code:
<head>
	
	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
	<title>Final</title>
	
	<script type="text/javascript" src="final4.js"></script>
	<link rel="stylesheet" type="text/css" href="final4.css">

</head>



<body>
	
	<p>
		<span id="switch" style="visibility:visible">Switch to Countdown timer</span>
	</p> 
	
	<p>
		<input id="startStop" type="text" size="10" /><br/>
		User Input
	</p>
	
	<p>
		<span id="startStop" style="visibility:visible">Start/Stop</span>
		<span id="clearOutput" style="visibility:visible">Reset Output</span>
		<span id="debugOnOff" style="visibility:visible">Debug On/Off</span>
		<span id="hideDebug" style="visibility:visible">Hide Debug</span>
	</p>

	<div id="eventOutput" style="visibility;visible">
		<p id="firstP"> This space is reserved for even output information</p>
	</div>
CSS:
Code:
#output{
			width:150px;
			height:25px;
			border:1px solid #999999;
		}

span {
	padding: 5px 10px 5px 10px;
	background-color: #0FF;
}

.grayspan {
	padding: 5px 10px 5px 10px;
	background-color: #CCC;
	color: #999;
}

#eventOutput {
	border: 1px solid red;
	width: 620px;
	padding: 10px;
	font-size: small;
	color: blue;
	background-color: #FF9;
}

#firstP {
	font-style: italic;
}
JAVASCRIPT
Code:
var showDebug = true;

window.onload = function() {
	
	if (showDebug) document.getElementById("debugOnOff").innerhtml = "Debug is On";
		else document.getElementById("debugOnOff").innerhtml = "Debug is Off";
	
	
	function validateDate() {
		var uName = document.getElementById("startStop").value;
		var regex = /^\d{2}:\d{2}:\d{2}$/;
		
		if (regex.test(startStop)) { // true - validates calls starttimer
			starttimer()
		} else { //false - not valid input
			document.getElementById("dateprompt").innerHTML =
				"<Time must be in 00:00:00 format";
			return (false);
	}
	
	// Stopwatch
		var millisec = 0;
		var seconds = 0;
		var minutes = 0;
		var timer;

		function display(){
		
			if (millisec>=9){
				millisec=0
				seconds+=1
			}
			else
				millisec+=1
				document.d.d2.value = seconds + ".0" + millisec;
				timer = setTimeout("display()",100);
			}	
			
			if (seconds>=59){
				seconds=0
				minutes+=1
			}
			
		function starttimer() {
			
			if (timer > 0) {
			return;
			}
			display();	
			}
		
		function stoptimer() {
			  clearTimeout(timer);
			  timer = 0;
			}
		

		function startstop() {
			if (timer > 0) {
				clearTimeout(timer);
				timer = 0;
			} else {
				display();
		  }
		}

		function resettimer() {
			stoptimer();
			millisec = 0;
			seconds = 0;
		}
	
	//countdown
		
	document.getElementById("clearOuput").onclick = function(evt) {
	resetOutput();
	} //clearOutput onclick
	
	document.getElementById("debugOnOff").onclick = function(evt) {
		if (showDebug) { //debug on, turn it off
			showdebug = false;
			document.getElementById("debugOnOff").innerHTML = "Debug is Off";
			addEventOutputTracking("onclick", "debugOnOff","-Debugging turned OFF");
			document.getElementById("clearOutput").className = "grayspan";
		} else { //debug off turn it on
			showdebug = true;
			document.getElementById("debugOnOff").innerHTML = "Debug is On";
			addEventOutputTracking("onclick", "debugOnOff","-Debugging turned ON");
			document.getElementById("clearOutput").className = "";
			}
	}
	
	document.getElementById("hideDebug").onclick = function(evt) {
		showDebug = false;
		document.getElementById("eventOutput").style.visibility = "hidden"; //hide output div
		document.getElementById("clearOutput").style.visibility = "hidden"; //hide output span
		document.getElementById("hideDebug").style.visibility = "hidden"; //hide debug button
		document.getElementById("debugOnOff").style.visibility = "hidden"; //hide dedbug onclick
	}
}

function addEventOutputTracking (eventName, outputText, extraText) {
	var node; // add child lmnt
	var pChildNode = document.createElement("p"); 
	
	node = document.getElementById("eventOutput");
	node.appendChild(pChildNode);
	pChildNode.appendChild(document.createTextNode("User Event: " + eventName + " - " + outputText " " + extraText));
} //end eventoutput tracking

function resetOutput() {
	if (showDebug) {
		var node = document.getElementById("eventOutput");
		while (node.firstChild)
			node.removeChild(node.firstChild);
		
		node.appendChild(document.createTextNode("Recently Clearded - Space is reserved for more output information"));
	}
} //end resetOutput