function showHide(a) {
 if(document.all) { 
  var o = document.all(a[0]).style;
  o.visibility = 'visible';
  o.zIndex = 1;
  for(var i=1;i < a.length;i++)
  {
    o = document.all(a[i]).style;
    o.visibility = 'hidden';
    o.zIndex = 0;
  }
 }
 else if(document.layers) { 
  document.a[0].visibility = 'show';
  for(var i=1;i < a.length;i++)
  document.a[i].visibility = 'hide';
 }
 else { 
  var myDivs = document.getElementsByTagName("div")
  myDivs[a[0]].style.visibility = 'visible';
  for(var i=1;i < a.length;i++)
  myDivs[a[i]].style.visibility = 'hidden';
 }
}

var d = '';
var l = 20;
var sleep = 1000;
var whatever = 0;
var leftend = [];
var rightend = [];
var wiring = 'straight';

function details (s, a) {
	d = s;
	showHide (a);
}

function colour (s, a) {
	d = d + s;
	showHide (a);
}

function booted (s, a) {
	b = s;
	showHide (a);
}

function length (updown) {
	if (l == 100 && updown > 0) { return; }
	if (l == 1   && updown < 0) { return; }
	l = l + updown;
	var metric = document.getElementById ('length');
	// metric.firstChild.data = l + 'm';
	metric.value = l + 'm';
	var feet = document.getElementById ('lengthinfeet');
	var myfeet = l / 0.3048;
	// feet.firstChild.data = myfeet.toFixed(1);
	feet.value = myfeet.toFixed(1);
	var mycode = 'length (' + updown + ')';
	whatever = window.setTimeout (mycode, sleep);
	sleep = 100;
}

function resetsleep () {
	sleep = 1000;
	window.clearTimeout (whatever);
}
/*
function end1 (obj, code, desc) {
	leftend = [code, desc];
}
*/
function end1 (obj) {
	if (obj.selectedIndex == -1) { obj.selectedIndex = 0; }
	leftend = [obj.options[obj.selectedIndex].value,
	obj.options[obj.selectedIndex].text];
}
function end2 (obj) {
	if (obj.selectedIndex == -1) { obj.selectedIndex = 0; }
	rightend = [obj.options[obj.selectedIndex].value,
	obj.options[obj.selectedIndex].text];
}

function checkend (a) {
	var myend = document.getElementById('end1');
	end1(myend);
	myend = document.getElementById('end2');
	end2(myend);
	if (leftend[0] == 'x') { wiring = 'straight'; finish(); showHide (['q10', a[1]]); return; }
	if (rightend[0] == 'x') { wiring = 'straight'; showHide (a); return; }
	if (leftend[0] != rightend[0]) { wiring = 'straight'; }
	else { wiring = 'xover'; }
	showHide (a);
}

function setwiring (w, a) {
	wiring = w;
	finish ();
	showHide (a);
}

function finish () {
	var url = '/?q0=1&l0=' + l + '&b0=' + b + '&w0=' + wiring + '&d0=' + d;
	var desc = l + 'm ';
	if (d.substring(0,1) == 'x') { desc += 'External Grade UTP '; }
	if (d.substring(0,1) == 's') { desc += 'STP '; }
	if (d.substring(0,1) == 'u') { desc += 'UTP '; }
	if (d.substring(2,3) == '5') { desc += 'Cat5e '; }
	else { desc += 'Cat6 '; }
	if (d.substring(1,2) == 'o') { desc += 'Solid Core '; }
	else { desc += 'Stranded Core '; }
	if (b == 'y') { desc += 'booted '; }
	else { desc += 'unbooted '; }
	if (wiring == 'xover') { desc += 'crossover '; }
	desc += 'ethernet cable (';
	if (d.substring(3,4) == 'r') { desc += 'Red'; }
	if (d.substring(3,4) == 'b') { desc += 'Blue'; }
	if (d.substring(3,4) == 'g') { desc += 'Grey'; }
	if (d.substring(3,4) == 'v') { desc += 'Violet'; }
	if (d.substring(3,4) == 'k') { desc += 'Black'; }
	desc += ')';

	if (leftend[1] && rightend[1]) {
	desc += '. This cable can be used for connecting a ' + leftend[1]
		+ ' to a ' + rightend[1];
		url += '&ends=' + leftend[1] + '_TO_' + rightend[1];
	}

	var descelem = document.getElementById ('result');
	descelem.firstChild.data = desc;
	var urlelem = document.getElementById ('resulturl');
	urlelem.href = url;
}
