var iwHighlighter = {
	
	identifyByClass : "highlightable",
	highlightClass : "hClass",
	errorClass : "errClass",
	
	getObject: function(objid) {
		if(typeof objid != "undefined" && objid != "" && objid != null) {
			if(document.getElementById && document.getElementById(objid)){
				return document.getElementById(objid);
			}
		}
		return false;
	},
	
	getEventObject: function(event) {
		if(event.srcElement)
			return this.getObject(event.srcElement.id);
		else
			return this.getObject(event.target.id)
	},
	
	addEvent: function(sevent, func, objid) {

		var obj = this.getObject(objid)
		if(obj.addEventListener)
			obj.addEventListener(sevent, func, true);
		else
			obj.attachEvent("on"+sevent, func);
	},
		
	highlight: function(obj) {
		if(obj) {
			if(obj.className.indexOf(" "+this.errorClass)>0)
				obj.className = obj.className.replace(/errClass/,"");
			
			if(obj.className.indexOf(" "+this.highlightClass)<1)
				obj.className += " "+this.highlightClass;
				
			return true;
		}
		return false;
	},
	
	dehighlight: function(obj) {					
		if(obj) {
			if(obj.className.indexOf(" "+this.highlightClass)>0)
				obj.className = obj.className.replace(/hClass/,"");
			
			if(obj.className.indexOf(" "+this.errorClass)<1)
				obj.className = obj.className.replace(/errClass/,"");
				
			return true;
		}
		return false;
	},
	
	init: function() {
		if(this.activateHighlighter==true) {
			if(document.getElementsByTagName("input")){
				var inputElements = document.getElementsByTagName("input");
			}
			if(document.getElementsByTagName("textarea")){
				var textAreaElements = document.getElementsByTagName("textarea");
			}
			
			/*if(document.getElementsByTagName("select")){
				var selectElements = document.getElementsByTagName("select");
			}*/
			
			//if(textAreaElements.length<=0 && inputElements.length<=0 && selectElements.length<=0){
			if(textAreaElements.length<=0 && inputElements.length<=0){
				return false;
			}
			
			var ElementsObjects = new Array();
			var iEzaehler;
			
			for(iEzaehler=0; iEzaehler<inputElements.length; iEzaehler++) {
					ElementsObjects.push(this.getObject(inputElements[iEzaehler].id));
			}
			
			var tEzaehler;
			for(tEzaehler=0; tEzaehler<textAreaElements.length; tEzaehler++) {
					var tHighlight = textAreaElements[tEzaehler].id;
					console.debug(tHighlight+" - "+tHighlight.indexOf("dojo.widget.RichText"));
					if(tHighlight.indexOf("dojo.widget.RichText") ==-1){
						ElementsObjects.push(this.getObject(textAreaElements[tEzaehler].id));
					}
			}
			
			/*var sEzaehler;
			for(sEzaehler=0; sEzaehler<selectElements.length; sEzaehler++) {
					var highlightObject = this.getObject(selectElements[sEzaehler].id);
					if(typeof highlightObject != undefined && highlightObject != null && highlightObject){
						ElementsObjects.push(this.getObject(selectElements[sEzaehler].id));
					}
			}*/


			ElementsObjects = iwToolbox.arrayRemoveEmptyFalse(ElementsObjects);

			var ozaehler;
			for(ozaehler=0;ozaehler<ElementsObjects.length;ozaehler++) {
				if(ElementsObjects[ozaehler]) {
					if(ElementsObjects[ozaehler].className.indexOf(this.identifyByClass) != -1 || this.highlighAll==true) {
						this.addEvent("blur", function(event) { iwHighlighter.dehighlight(iwHighlighter.getEventObject(event)); }, ElementsObjects[ozaehler].id);
						this.addEvent("focus", function(event) {iwHighlighter.highlight(iwHighlighter.getEventObject(event)); }, ElementsObjects[ozaehler].id);
					}
				}
			}
		}
	}
}
