
/* ==========================================================FUNCTION LIBRARY */

function getElementsByClassName(classname){
        var rl = new Array();
        var re = new RegExp('(^| )'+classname+'( |$)');
        var ael = document.getElementsByTagName('*');
        var op = (navigator.userAgent.indexOf("Opera") != -1) ? true : false;
        if (document.all && !op) ael = document.all;
        for(i=0, j=0 ; i<ael.length ; i++) {
                if(re.test(ael[i].className)) {
                        rl[j]=ael[i];
                        j++;
                }
        }
        return rl;
}


function addClass(target, classValue)
{
 var pattern = new RegExp("(^| )" + classValue + "( |$)");

 if (!pattern.test(target.className))
 {
   if (target.className == "")
   {
     target.className = classValue;
   }
   else
   {
     target.className += " " + classValue;
   }
 }

 return true;
}

function removeClass(target, classValue)
{
 var removedClass = target.className;
 var pattern = new RegExp("(^| )" + classValue + "( |$)");

 removedClass = removedClass.replace(pattern, "$1");
 removedClass = removedClass.replace(/ $/, "");

 target.className = removedClass;

 return true;
}



function hasClass(target, classValue)
{
 var pattern = new RegExp("(^| )" + classValue + "( |$)");

 if (pattern.test(target.className)) return true
 else return false;
}