/**
 * custom scripts for kkaarrlls-website
 * @author Martin Sprekelsen <martin@sprekelsen.de>
 */

/**
 * farbspektakel für kkaarrlls
 * @author Martin Sprekelsen <martin@sprekelsen.de>
 */
function blinken(){
	/**
	 * durchsucht das dokument nach blinkenden elementen <p class="blinker">...</p>
	 */
	this.blinkers = getElementsByClass('blinker','p');
	
	/**
	 * definiert die blinkfarben
	 */
	 this.f  = new Array('#FF4C4C','#FF9B04','#FF15FF');
	 
	/**
	 * definiert die blinkfrequenz
	 */
	this.interval = 200;
	
	/**
	 * internes farbindex-array
	 */
	this.fi = new Array();
	
	/**
	 * constructor
	 */
	this.initMe = function(){
		if(this.blinkers.length>0){
			var i;
			var j=0;
			for(i=0;i<this.blinkers.length;i++){
				if(j>=this.f.length){j=0;}
				this.fi[i] = j;
				this.blinkers[i].style.color = this.f[j];
				j++;
			}
			window.setInterval("this.blink()", this.interval);
		}
	};
	
	/**
	 * lässt die puppen tanzen
	 */
	this.blink = function(){
		var i;
		for(i=0;i<this.fi.length;i++){ 
			this.fi[i]++;
			if(this.fi[i]>=this.f.length){this.fi[i] = 0;}
			this.blinkers[i].style.color = this.f[this.fi[i]];
		}
	};
	
	/**
	 * constructor aufrufen
	 */
	this.initMe();
}


/**
 * gets DOM-elements with a specified class 
 * inspired by http://www.dustindiaz.com/getelementsbyclass/
 * @param searchClass   the classes to be found 
 * @param tag           only look inside these tags (i.e "div")
 * @return              array of found DOM-objects
 */
function getElementsByClass(searchClass,tag) {
	if(tag == null){tag = '*';}
	var classElements = new Array();
	var elements      = document.getElementsByTagName(tag);
	var elementsLen   = elements.length;
	var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");
	var i,j;
	for(i = 0, j = 0; i < elementsLen; i++){
		if(pattern.test(elements[i].className)){
			classElements[j] = elements[i];
			j++;
		}
	}
	return classElements;
}

/**
 * tool for dumping js-objects
 * inspired by http://www.brandnewbox.co.uk/articles/details/a_print_r_equivalent_for_javascript/
 * @param theObj   the classes to be found
 * @return         plaintext object dump
 */
function print_r(theObj){
	var erg = "";
	if(theObj.constructor == Array ||
	   theObj.constructor == Object){
			erg += "<ul>";
			for(var p in theObj){
				if(theObj[p].constructor == Array||
				   theObj[p].constructor == Object){
					erg += "<li>["+p+"] => "+typeof(theObj)+"</li>";
					erg += "<ul>";
					erg += print_r(theObj[p]);
					erg += "</ul>";
				} else {
					erg += "<li>["+p+"] => "+theObj[p]+"</li>";
				}
			}
		erg += "</ul>";
	}
	return(erg);
}
 
 window.onload = function(){blinken();}