/*==========================================
  Ruler
==========================================*/
addEvent(window, "load", ruler_init);

function ruler_init() {
    // Find all tables with class greenbar and make them ruler
    if (!document.getElementsByTagName) return;
    tbls = document.getElementsByTagName("table");
    for (ti=0;ti<tbls.length;ti++) {
		if (hasClassName(tbls[ti], "ruler")) makeRuler(tbls[ti]);
    }
}

function makeRuler(table) {
	var trs=table.getElementsByTagName('tr');
	for(var j=0;j<trs.length;j++) {
		if(trs[j].parentNode.nodeName=='TBODY') {
			trs[j].onmouseover=function(){
				this.className = this.className.replace( 'ruled', "" ).trim();
				this.className = ( this.className + " ruled" ).trim();
				return false
			}
			trs[j].onmouseout=function(){
				this.className = this.className.replace( 'ruled', "" ).trim();
				return false
			}
			
		}
	}
}




/*==========================================
  String functions
==========================================*/
String.prototype.trim = function() {
    return this.replace( /^\s+|\s+$/, "" );
}

/*==========================================
  Class Manipulation
==========================================*/

function hasClassName( elem, className ) {
	if ( !elem.className ) return false;
	var pattern = new RegExp("(^|\\s)"+className+"(\\s|$)");
	return pattern.test(elem.className);
}

function removeClassName( elem, className ) {
	var pattern = new RegExp("(^|\\s)"+className+"(\\s|$)");
    elem.className = elem.className.replace( pattern, "" ).trim();
}

function addClassName( elem, className ) {
    removeClassName( elem, className );
    elem.className = ( elem.className + " " + className ).trim();
}

// http://www.dustindiaz.com/getelementsbyclass
function getElementsByClass(searchClass,node,tag) {
	var classElements = new Array();
	var els = node.getElementsByTagName(tag);
	var elsLen = els.length;
	var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");
	for (i = 0, j = 0; i < elsLen; i++) {
		if ( pattern.test(els[i].className) ) {
			classElements[j] = els[i];
			j++;
		}
	}
	return classElements;
}

/*==========================================
  Add event
==========================================*/
  
function addEvent(elm, evType, fn, useCapture)
// addEvent
// cross-browser event handling for IE5+,  NS6 and Mozilla
// By Scott Andrew
{
  if (elm.addEventListener){
    elm.addEventListener(evType, fn, useCapture);
    return true;
  } else if (elm.attachEvent){
    var r = elm.attachEvent("on"+evType, fn);
    return r;
  } else {
    alert("Handler could not be added");
  }
}




/*==========================================
  Green Bar
==========================================*/

addEvent(window, "load", greybar_init);

function greybar_init() {
    // Find all tables with class greybar and make them greybar
    if (!document.getElementsByTagName) return;
    tbls = document.getElementsByTagName("table");
    for (ti=0;ti<tbls.length;ti++) {
		if (hasClassName(tbls[ti], "greybar")) makeGreybar(tbls[ti]);
    }
}

function makeGreybar(table) {
	if (!table) return;
	var trs = table.tBodies[0].rows;
	for (var i = 0; i < trs.length; i++) removeClassName(trs[i], "alt");
	for (var i = 1; i < trs.length; i += 2) addClassName(trs[i], "alt");
}