var ns6 = document.getElementById && !document.all;
var previous = '';
var eventobj;
var intended=/INPUT|TEXTAREA|SELECT|OPTION/;

function noop() {}

function urlDecode(str){
    str=str.replace(new RegExp('\\+','g'),' ');
    return unescape(str);
}

function urlEncode(str){
    str=escape(str);
    str=str.replace(new RegExp('\\+','g'),'%2B');
    return str.replace(new RegExp('%20','g'),'+');
}

function getObject(objectId) {
  
    if (document.getElementById && document.getElementById(objectId)) {
	  	return document.getElementById(objectId);
    } else if (document.all && document.all(objectId)) {
		  return document.all(objectId);
    } else if (document.layers && document.layers[objectId]) {
		  return document.layers[objectId];
    } else {
		  return false;
    }
}

function getStyleObject(objectId) {
  
    if (document.getElementById && document.getElementById(objectId)) {
	  	return document.getElementById(objectId).style;
    } else if (document.all && document.all(objectId)) {
		  return document.all(objectId).style;
    } else if (document.layers && document.layers[objectId]) {
		  return document.layers[objectId];
    } else {
		  return false;
    }
}

function changeObjectVisibility(objectId, newVisibility) {

    var styleObject = getStyleObject(objectId);

    if(styleObject) {
  		styleObject.visibility = newVisibility;
	  	return true;
    } else {
		  return false;
    }
}

function moveObject(objectId, newXCoordinate, newYCoordinate) {
  
    var styleObject = getStyleObject(objectId);

    if (styleObject) {
		  styleObject.left = newXCoordinate;
		  styleObject.top = newYCoordinate;
		  return true;
    } else {
		  return false;
    }
}

function showAndFocus(divId, fieldToFocus) {

	var theDiv = getStyleObject(divId);

	if (theDiv != false) {
		changeObjectVisibility(divId, "visible");
		
		if (getObject(fieldToFocus) != null) {
		  getObject(fieldToFocus).focus();
		}
	}
}

function show(divId) {

	var theDiv = getStyleObject(divId);

	if (theDiv != false) {
		changeObjectVisibility(divId, "visible");
	}
}

function hide(divId) {

	var theDiv = getStyleObject(divId);

	if (theDiv != false) {
		changeObjectVisibility(divId, "hidden");
	}
}

function highlightTable(_table, _startRow) {

	if (document.all && document.getElementById) {
	
		navRoot = getObject(_table);			
		tbody = navRoot.childNodes[0];
		
		if (!(_startRow >= 0)) {
			_startRow = 1;
		}
		
		for (i=_startRow; i<tbody.childNodes.length; i++) {
		
			node = tbody.childNodes[i];
			
			if (node.nodeName == "TR") {

				node.onmouseover=function() {
					this.className = "over";
				}
					
				node.onmouseout=function() {
					this.className = this.className.replace("over", "");
				}
			}
		}
	}
}

function checkObject(which) {

	if (which.style && intended.test(which.tagName)) {
			
		if (ns6 && eventobj.nodeType == 3) {
			eventobj=eventobj.parentNode.parentNode;
		}
			
		return true;

	} else {
		return false;
	}
}

function highlightOnFocus(e){

	eventobj = ns6 ? e.target : event.srcElement;

	if (previous != '') {
		
		if (checkObject(previous)) {
			previous.style.backgroundColor = '';
		}

		previous = eventobj;

		if (checkObject(eventobj)) {
			eventobj.style.backgroundColor = highlightcolor;
		}

	} else {
		
		if (checkObject(eventobj)) {
			eventobj.style.backgroundColor = highlightcolor;
		}
		
		previous = eventobj;
	}
}

function highlight(_id) {
  var rng = getObject(_id).createTextRange();
  rng.moveStart("character", 0);
  rng.moveEnd("character", getObject(_id).value.length);
  rng.select();
  getObject(_id).focus();
}

function capitaliseUsername() {
  getObject("userName").value = getObject("userName").value.toLowerCase();
}

