/**
 * @author Daniel
 */
DOMAssistant.DOMReady(function(){
    // Mehr-Links
    $('.mehr').setStyle({
        display: 'none'
    });
    $('.article').each(function(){
        if ($(this).cssSelect('.mehr').length > 0) {
            $(this).create('p', {
                className: 'show'
            }, true, 'more');
            $('.show').each(function(){
                $(this).addEvent('click', function(){
                    var el = $(this).parentNode.elmsByClass('mehr').first();
					el.setStyle({
                        display: 'block',
						overflow:'hidden',
						height: '1px'
                    });
					var step = 4;
					var ani = setInterval(function(){
						if (el.scrollHeight > el.offsetHeight) {
							el.style.height = parseInt(el.style.height)+step+'px';
						} else { clearInterval(ani); }
					},10);
                    $(this).remove();
                });
            });
        }
    });
	// externe Links in neuem Fenster oeffnen
	$('a[rel="external"]').each(function(){
		var url = $(this).getAttribute('href');
		if(url !== '' && url !== '#')
		{
			$(this).addEvent('click', function(e) {
				DOMAssistant.preventDefault(e);
				window.open(url);
			});
		}
	});
	// Funktionsaufrufe
	//sfDelay('navi');
	scroller('scroller');
});

function betrag(nr){
    if (nr < Number.MIN_VALUE) {
        return -1 * nr
    }
    else {
        return nr
    }
}

function scroller(id) {
	// Scroller
    var scroller = $$(id);
	if (scroller) {
		var plane = $('#scroller ul').first();
		var planeL = plane.offsetLeft;
		var planeW = plane.offsetWidth;
		//var step = parseInt(scrollerW / scroller.elmsByTag('img').length);
		var scrollerW, scrollerSW, ival, speed = 20, step = 0;
		scroller.setStyle({
			overflow: 'hidden',
			margin: '0 35px'
		});
		var sl = scroller.create('div', {
			id: 'skipleft'
		}, false);
		var sr = scroller.create('div', {
			id: 'skipright'
		}, false);
		sr.addEvent('mouseover', function(){
			//var scrollerSW =	scroller.scrollWidth;
			//alert(scrollerW);
			ival = setInterval(function(){
				if (betrag(plane.offsetLeft) <= scrollerSW - scrollerW) {
					step -= 3;
					plane.style.left = step + 'px';
				}
			}, speed);
		});
		sl.addEvent('mouseover', function(){
			ival = setInterval(function(){
				if (parseInt(plane.style.left) <= 0) {
					step += 3;
					plane.style.left = step + 'px';
				}
			}, speed);
		});
		sl.addEvent('mouseout', function(){
			clearInterval(ival);
		});
		sr.addEvent('mouseout', function(){
			clearInterval(ival)
		});
		scroller.parentNode.insertBefore(sl, scroller);
		scroller.parentNode.insertBefore(sr, scroller.nextSibling);
		
		window.onload = function(){
			scrollerW = scroller.offsetWidth;
			scrollerSW = scroller.scrollWidth;
			plane.setStyle({
				width: scrollerSW + 'px'
			});
		}
	}
}

function sfDelay(id) {
    var timeout = 600;
    var cssClass = "sfhover";
    var queue = [];
    var reCSS = new RegExp("\\b" + cssClass + "\\b");
    var sfEls = document.getElementById(id).getElementsByTagName("li");
    for (var i = 0, l = sfEls.length; i < l; i++) {
        // mouseover and mouseout handlers for regular mouse based interface.
        sfEls[i].onmouseover = function(){
            queueFlush();
            this.className += " " + cssClass;
        }
        sfEls[i].onmouseout = function(){
            queue.push([setTimeout(queueTimeout, timeout), this]);
        }
        // focus and blur handlers for keyboard based navigation.
        sfEls[i].onfocus = function(){
            queueFlush();
            this.className += " " + cssClass;
        }
        sfEls[i].onblur = function(){
            queue.push([setTimeout(queueTimeout, timeout), this]);
        }
        // click event handler needed for tablet type interfaces (e.g. Apple iPhone).
        sfEls[i].onclick = function(e){
            if (this.className.search(reCSS) == -1) {
                // CSS not set, so clear all sibling (and decendants) menus, and then set CSS on this menu...
                var elems = this.parentNode.getElementsByTagName("li");
                for (var i = 0, l = elems.length; i < l; i++) {
                    elems[i].className = elems[i].className.replace(reCSS, "");
                }
                this.className += " " + cssClass;
            }
            else {
                // CSS already set, so clear all decendant menus and then this menu...
                var elems = this.getElementsByTagName("li");
                for (var i = 0, l = elems.length; i < l; i++) {
                    elems[i].className = elems[i].className.replace(reCSS, "");
                }
                this.className = this.className.replace(reCSS, "");
            }
            if (e && e.stopPropagation) 
                e.stopPropagation();
            else
                window.event.cancelBubble = true;
        }
    }
    queueFlush = function(){
        while (queue.length) {
            clearTimeout(queue[0][0]);
            queueTimeout();
        }
    }
    queueTimeout = function(){
        if (queue.length) {
            var el = queue.shift()[1];
            el.className = el.className.replace(reCSS, "");
        }
    }
}

function showMore(){
	$('.article').each(function(){
		if ($(this).cssSelect('.mehr').length > 0) {
			$(this).create('p', {
				className: 'show'
			}, true, 'mehr');
			$('.show').each(function(){
				$(this).addEvent('click', function(){
					$(this).parentNode.elmsByClass('mehr').setStyle({
						display: 'block'
					});
					$(this).remove();
				});
			});
		}
	});
}


