/* -------------------------------------------------------------------- */
/* Constants
/* -------------------------------------------------------------------- */

var DHTML = (document.getElementById || document.all || document.layers);

/* -------------------------------------------------------------------- */
/* Cross browser get element method
/* -------------------------------------------------------------------- */

function getElement(name) {
	if (document.getElementById) {
		this.obj 	= document.getElementById(name);
		this.style 	= document.getElementById(name).style;
	} else if (document.all) {
		this.obj 	= document.all[name];
		this.style 	= document.all[name].style;
	} else if (document.layers) {
		this.obj 	= getElementNN4(document,name);
		this.style 	= this.obj;
	}
}

function getElementNN4(obj,name) {
	var x = obj.layers;
	var foundLayer;
	for (var i=0; i<x.length; i++) {
		if (x[i].id == name) {
			foundLayer = x[i];
		} else if (x[i].layers.length) {
			var tmp = getElementNN4(x[i], name);
			if (tmp) {
				foundLayer = tmp;
			}
		}
	}
	return foundLayer;
}

/* -------------------------------------------------------------------- */
/* Cross borwser attach event method
/* -------------------------------------------------------------------- */

function attachEventListener(obj, evt, fnc, useCapture){
	if (!useCapture) useCapture = false;
	if (obj.addEventListener){
		obj.addEventListener(evt, fnc, useCapture);
		return true;
	} else if (obj.attachEvent) return obj.attachEvent("on"+evt, fnc);
	else{
		myAttachEventListener(obj,evt,fnc);
		obj['on'+evt] = function(){ myFireEvent(obj,evt) };
	}
} 

function myAttachEventListener(obj, evt, fnc){
	if (!obj.myEvents) obj.myEvents = {};
	if (!obj.myEvents[evt]) obj.myEvents[evt]=[];
	var evts = obj.myEvents[evt];
	evts[evts.length]=fnc;
}

function myFireEvent(obj,evt){
	if (!obj || !obj.myEvents || !obj.myEvents[evt]) return;
	var evts = obj.myEvents[evt];
	for (var i=0,len=evts.length;i<len;i++) evts[i]();
}

/* -------------------------------------------------------------------- */
/* Get elements by class name method
/* -------------------------------------------------------------------- */

function getElementsByClassName(searchClass,node,tag) {
        var classElements = new Array();
        if ( node == null )
                node = document;
        if ( tag == null )
                tag = '*';
        var els = node.getElementsByTagName(tag);
        var elsLen = els.length;
        var pattern = new RegExp('(^|\\s)'+searchClass+'(\\s|$)');
        for (k = 0, j = 0; k < elsLen; k++) {
                if ( pattern.test(els[k].className) ) {
                        classElements[j] = els[k];
                        j++;
                }
        }
        return classElements;
}
