function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      oldonload();
      func();
    }
  }
}

function loadFunctions() {
	lockRow();
	highlightRows();
	lockRowUsingCheckbox();
}

function addClass(element,value) {
	if (element.className == "dontpickme") {
		return false;
	} else if (!element.className) {
      element.className = value;
    } else {
      newClassName = element.className;
      newClassName+= " ";
      newClassName+= value;
      element.className = newClassName;
    }
  
}

function highlightRows() {
  if(!document.getElementsByTagName) return false;
  	var tables = document.getElementsByTagName("table");
	for (var m=0; m<tables.length; m++) {
		if (tables[m].className == "pickme") {
			  var tbodies = tables[m].getElementsByTagName("tbody");
			  for (var j=0; j<tbodies.length; j++) {
				 var rows = tbodies[j].getElementsByTagName("tr");
				 for (var i=0; i<rows.length; i++) {
					   rows[i].oldClassName = rows[i].className
					   rows[i].onmouseover = function() {
						  if( this.className.indexOf("rowOverMarked") == -1)
							 addClass(this,"rowOverSelected");
					   }
					   rows[i].onmouseout = function() {
						  if( this.className.indexOf("rowOverMarked") == -1)
							 this.className = this.oldClassName
					   }
				}
			  }
		}
	}
} 

function selectRowCheckbox(row) {
	var checkbox = row.getElementsByTagName("input")[0];
	if (checkbox.checked == true) {
		checkbox.checked = false;
	} else
	if (checkbox.checked == false) {
		checkbox.checked = true;
	}
}

function lockRow() {
  	var tables = document.getElementsByTagName("table");
	for (var m=0; m<tables.length; m++) {
		if (tables[m].className == "pickme") {
				var tbodies = tables[m].getElementsByTagName("tbody");
				for (var j=0; j<tbodies.length; j++) {
					var rows = tbodies[j].getElementsByTagName("tr");
					for (var i=0; i<rows.length; i++) {
						rows[i].oldClassName = rows[i].className
						rows[i].onclick = function() {
							selectRowCheckbox(this);
							if (this.className.indexOf("rowOverMarked") != -1) {
								this.className = this.oldClassName;
							} else {
								addClass(this,"rowOverMarked");
							}
						}
					}
				}
		}
	}
}

function lockRowUsingCheckbox() {
	var tables = document.getElementsByTagName("table");
	for (var m=0; m<tables.length; m++) {
		if (tables[m].className == "pickme") {
			var tbodies = tables[m].getElementsByTagName("tbody");
			for (var j=0; j<tbodies.length; j++) {
				var checkboxes = tbodies[j].getElementsByTagName("input");
				for (var i=0; i<checkboxes.length; i++) {
					checkboxes[i].onclick = function(evt) {
						if (this.parentNode.parentNode.className.indexOf("rowOverMarked") != -1){
							this.parentNode.parentNode.className = this.parentNode.parentNode.oldClassName;
						} else {
							addClass(this.parentNode.parentNode,"rowOverMarked");
						}
						if (window.event && !window.event.cancelBubble) {
							window.event.cancelBubble = "true";
						} else {
							evt.stopPropagation();
						}
					}
				}
			}
		}
	}
}

function executeLink(winURL) {
  window.location.href = winURL;
}

function problemWithLinks() {
 var tables = document.getElementsByTagName("table");
  for (var m=0; m<tables.length; m++) {
    if (tables[m].className == "pickme") {
      var tbodies = tables[m].getElementsByTagName("tbody");
        for (var j=0; j<tbodies.length; j++) {
          var links = tbodies[j].getElementsByTagName("a");
          for (var i=0; i<links.length; i++) {
           links[i].onclick = function(evt) {
             executeLink(this.getAttribute("href"));
             if (window.event && !window.event.cancelBubble) {
               window.event.cancelBubble = "true";
             } else {
               evt.stopPropagation();
             }
               return false;
             }
          }
        }
    }
  }
}

addLoadEvent(highlightRows);
addLoadEvent(lockRow);
addLoadEvent(lockRowUsingCheckbox);
addLoadEvent(problemWithLinks);
