/*
    Written by Jonathan Snook, http://www.snook.ca/jonathan
    Add-ons by Robert Nyman, http://www.robertnyman.com
*/

function getElementsByClassName(oElm, strTagName, strClassName){
    var arrElements = (strTagName == "*" && oElm.all)? oElm.all : oElm.getElementsByTagName(strTagName);
    var arrReturnElements = new Array();
    strClassName = strClassName.replace(/\-/g, "\\-");
    var oRegExp = new RegExp("(^|\\s)" + strClassName + "(\\s|$)");
    var oElement;
    for(var i=0; i<arrElements.length; i++){
        oElement = arrElements[i];      
        if(oRegExp.test(oElement.className)){
            arrReturnElements.push(oElement);
        }   
    }
    return (arrReturnElements)
}
 /*
   Copyright Robert Nyman, http://www.robertnyman.com
   Free to use if this text is included
  */
 function getElementsByAttribute(oElm, strTagName, strAttributeName, strAttributeValue) {
     var arrElements = (strTagName == "*" && document.all)? document.all : oElm.getElementsByTagName(strTagName);
     var arrReturnElements = new Array();
     var oAttributeValue = (typeof strAttributeValue != "undefined")? new RegExp("(^|\\s)" + strAttributeValue + "(\\s|$)") : null;
     var oCurrent;
     var oAttribute;
     for(var i=0; i<arrElements.length; i++) {
         oCurrent = arrElements[i];
         oAttribute = oCurrent.getAttribute(strAttributeName);
         if (typeof oAttribute == "string" && oAttribute.length > 0) {
             if (typeof strAttributeValue == "undefined" || (oAttributeValue && oAttributeValue.test(oAttribute))){
                 arrReturnElements.push(oCurrent);
             }
         }
     }
     return arrReturnElements;
 }

/*
    Written by FJ@OCTAVO.FR
*/
function registerOverInOutEvents(where_ElementClassName,what_ElementTagName,what_ElementAttributeName,what_ElementAttributeValue){  
	var defaultClass = what_ElementTagName+"-"+what_ElementAttributeName+"-"+what_ElementAttributeValue+"-out";
	var inClass = what_ElementTagName+"-"+what_ElementAttributeName+"-"+what_ElementAttributeValue+"-in";
	var outClass = what_ElementTagName+"-"+what_ElementAttributeName+"-"+what_ElementAttributeValue+"-out";
	var overClass = what_ElementTagName+"-"+what_ElementAttributeName+"-"+what_ElementAttributeValue+"-over";
	rows = getElementsByClassName(document, "*", where_ElementClassName)
	for (i=0;i<rows.length;i++){
		tempInputs = getElementsByAttribute(rows[i], what_ElementTagName, what_ElementAttributeName, what_ElementAttributeValue);
		for (j=0;j<tempInputs.length;j++){
			object = tempInputs[j];
			object.className = defaultClass;
			object.onmouseover = function(){if(this.className!=inClass){this.className=overClass;}};
			object.onmouseout = function(){if(this.className!=inClass){this.className=outClass;}};
			object.onfocus = function(){if(this.className!=inClass){this.className=inClass;}};
			object.onblur = function(){this.className=outClass;};
		}
	}

}