function moveFocus( control ) {
  control.focus();
}

function checkMatch(first,second,messageNode,prefix) {
  document.getElementById( messageNode ).innerHTML = prefix + ( first == second ? "match" : "different" );
}

function validateForm( whichFields  ) {
  for( i = 0; i < whichFields.length; i++ ) {
    thisField = whichFields[i];
    formControl = document.getElementById( thisField[0] );
    switch( formControl.type ) {
    case "text":
    case "password":
      if( formControl.value == "" ) {
	alert( "Required field empty.  Please enter a " + thisField[1] + "." );
	moveFocus( formControl );
	return false;
      }
      break;
    case "radio":
      checked = false;
      c = 0;
      for( ; c < thisField.length - 1; c++ ) {
	checked = checked || document.getElementById( thisField[c] ).checked;
      }
      if( ! checked ) {
	alert( "Required option not selected.  Please choose a " + thisField[c] + "." );
	return false;
      }
      break;
    case "select-one":
      minIndex = 0;
      if( thisField.length == 3 ) {
	if( thisField[2] ) {
	  minIndex = 1;
	}
      }
      if( formControl.selectedIndex < minIndex ) {
	alert( "Required option not selected.  Please choose a " + thisField[1] + "." );
	return false;
      }
      break;
    }
  }
  return true;
}

function fieldsMatch( whichFields ) {
  for( i = 0; i < whichFields.length; i++ ) {
    thisField = whichFields[i];
    firstControl = document.getElementById( thisField[0] );
    match = true;
    c = 1;
    for( ; c < thisField.length - 2; c++ ) {
      aControl = document.getElementById( thisField[c] );
      match = match && ( firstControl.value == aControl.value );
    }
    if( !match ) {
      alert( thisField[c] + " do not match.  Please re-enter." );
      if( thisField[c+1] ) {
	for( c = 0; c < thisField.length - 2; c++ ) {
	  document.getElementById( thisField[c] ).value = "";
	}
      }
      moveFocus( firstControl );
      return false;
    }
  }
  return true;
}

function clearSelection( fieldID ) {
  document.getElementById( fieldID ).selectedIndex = -1;
}

function hideBox( id ) {
  inputBox = document.getElementById( id );
  inputBox.style.display = "none";
}

var ns4 = document.layers;
var op5 = (navigator.userAgent.indexOf("Opera 5")!=-1) 
  ||(navigator.userAgent.indexOf("Opera/5")!=-1);
var op6 = (navigator.userAgent.indexOf("Opera 6")!=-1) 
  ||(navigator.userAgent.indexOf("Opera/6")!=-1);
var agt=navigator.userAgent.toLowerCase();
var mac = (agt.indexOf("mac")!=-1);
var ie = (agt.indexOf("msie") != -1); 
var mac_ie = mac && ie;

function getElementLeft(Elem) {
	if (ns4) {
		var elem = getObjNN4(document, Elem);
		return elem.pageX;
	} else {
		var elem;
		if(document.getElementById) {
			var elem = document.getElementById(Elem);
		} else if (document.all){
			var elem = document.all[Elem];
		}
		xPos = elem.offsetLeft;
		tempEl = elem.offsetParent;
  		while (tempEl != null) {
  			xPos += tempEl.offsetLeft;
	  		tempEl = tempEl.offsetParent;
  		}
		return xPos;
	}
}


function getElementTop(Elem) {
	if (ns4) {
		var elem = getObjNN4(document, Elem);
		return elem.pageY;
	} else {
		if(document.getElementById) {	
			var elem = document.getElementById(Elem);
		} else if (document.all) {
			var elem = document.all[Elem];
		}
		yPos = elem.offsetTop;
		tempEl = elem.offsetParent;
		while (tempEl != null) {
  			yPos += tempEl.offsetTop;
	  		tempEl = tempEl.offsetParent;
  		}
		return yPos;
	}
}

function displayBox( box, ctrl, leftOffset, topOffset ) {
  inputBox = document.getElementById( box );
  newTop = getElementTop( ctrl );
  newLeft = getElementLeft( ctrl );
  inputBox.style.top = ( newTop + topOffset ) + "px";
  inputBox.style.left = ( newLeft + leftOffset ) + "px";
  inputBox.style.display = "";
}
