/*  Prototype JavaScript framework
 *  (c) 2005 Sam Stephenson <sam@conio.net>
 *
 *  Prototype is freely distributable under the terms of an MIT-style license.
 *
 *  For details, see the Prototype web site: http://prototype.conio.net/
 *
/*--------------------------------------------------------------------------*/


function $() 
{
    var elements = new Array();
    for (var i = 0; i < arguments.length; i++) 
    {
        var element = arguments[i];
        if (typeof element == 'string')
        element = document.getElementById(element);
        
        if (arguments.length == 1) 
        return element;
        
        elements[elements.length] = element;
    }
    return elements;
}

//-------------------------

document.getElementsByClassName = 
function(className) 
{
    var children = document.getElementsByTagName('*') || document.all;
    var elements = new Array();
    
    for (var i = 0; i < children.length; i++) 
    {
        var child = children[i];
        var classNames = child.className.split(' ');
        for (var j = 0; j < classNames.length; j++) 
        {
            if (classNames[j] == className) 
            {
                elements[elements.length] = child;
                break;
            }
        }
    }
    return elements;
}

document.getElementsByAttribute = 
function(attrName, attrValue) 
{
    var children = document.getElementsByTagName('*') || document.all;
    var elements = new Array();
    
    for (var i = 0; i < children.length; i++) 
    {
        if (children[i].getAttribute(attrName) == attrValue) 
        {
            elements[elements.length] = children[i];
        }
    }
    return elements;
}

document.getElementsWithAttribute = 
function(attrName) 
{
    var children = document.getElementsByTagName('*') || document.all;
    var elements = new Array();
    
    for (var i = 0; i < children.length; i++) 
    {
        if (children[i].getAttribute(attrName)) 
        {
            elements[elements.length] = children[i];
        }
    }
    return elements;
}



function hasClassName(element, className) 
{
    if (typeof element == "string") element = $(element);
    if (!element) return;
    var a = element.className.split(' ');
    for (var i = 0; i < a.length; i++) 
    {
        if (a[i] == className)
        return true;
    }
    return false;
}

function addClass(element, className) 
{
    if (typeof element == "string") element = $(element);
    removeClass(element, className);
    element.className += ' ' + className;
}

function removeClass(element, className) 
{
    if (typeof element == "string") element = $(element);
    if (!element) return;
    var newClassName = '';
    var a = element.className.split(' ');
    for (var i = 0; i < a.length; i++) 
    {
        if (a[i] != className) 
        {
            if (i > 0) newClassName += ' ';
            newClassName += a[i];
        }
    }
    element.className = newClassName;
}

function addEvent(elm, evType, fn, useCapture)
// addEvent and removeEvent
// 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 removed");
  }
} 
