function jfDom () {
	//return element by id
	this.getElement = function (element) {
		return document.getElementById(element);
	}
	
	//return elements with class
	this.getElementsByClassName = function (className) {
		this.elements    = document.getElementsByTagName("*");
		this.elementList = new Array();
		
		for (var i=0; i<this.elements.length; i++) {
			this.classes = this.elements[i].getAttribute("class") ? this.elements[i].getAttribute("class").split(" ") : null;
			if (this.classes) {
				for (this.j=0; this.j<this.classes.length; this.j++) {
					if (this.classes[this.j] == className) {
						this.elementList[this.elementList.length] = this.elements[i];
					}
				}
			}
		}
		
		return this.elementList;
	}
	
	//add class from element
	this.addClass = function (element, className) {
		this.classes = element.getAttribute("class") ? element.getAttribute("class").split(" ") : null;
		if (this.classes) {
			for (var i=0; i<this.classes.length; i++) {
				if (this.classes[i] == className) {
					return element;
				}
			}
		}
		
		element.className += " "+className;
		return element;
	}
	
	//remove class from element
	this.removeClass = function (element, className) {
		this.classes    = element.getAttribute("class") ? element.getAttribute("class").split(" ") : null;
		this.newClasses = null;
		if (this.classes) {
			for (var i=0; i<this.classes.length; i++) {
				if (this.classes[i] != className) {
					this.newClasses = this.newClasses ? this.newClasses+" "+this.classes[i] : this.classes[i];
				}
			}
		}
		
		element.className = this.newClasses;
		return element;
	}
	
	this.createText  = function (text) {
		return document.createTextNode(text);
	}
}

var dom = new jfDom();