/*	>>> Objekt Marquee	*/
function Marquee (el, leftOffset, timeout1px, mouseevents, mouseup) {

    /*  el:		id des zu bewegenden Elementes
	leftOffset:	Startposition; vorher zentriert, wenn negativ
	timeout1px:	Zeit in ms, um das Element 1 Pixel zu bewegen
	mouseevents:	Sollen Mausereignisse beachtet werden
	mouseup:	Soll das mouseup-Event ausgewertet werden? */  

    /*	VAR	*/
    var	el		= document.getElementById(el),				// Zu bewegendes Element
    	elwidth		= winWidth(),						// Breite des laufenden Elementes, auf Fensterbreite initialisiert

    /*	SUB	*/
    	elDistance	= function () { var  distance = winWidth() - elwidth	// Abstand zwischem dem Ticker und seiner Kopie
					return ( distance < 0 ? 0 : distance )
				      },
    	init		= function () {	if ( el.offsetWidth )
					    elwidth	= el.offsetWidth
					if ( elwidth > winWidth )
					    leftOffset		= 0
					if ( leftOffset < 0 )
					    leftOffset	= Math.round((winWidth - elwidth) / 2) - leftOffset + 1
					el.style.left	= leftOffset + 'px'
    			  }

    this.el2		= document.createElement('span')	// geklonter Ticker
    this.el2.copyCSSText= function () { el2.style.cssText = el.style.cssText + ';margin-left: ' + elDistance() + 'px;' },
    this.marquee 	= function () {	var stop = false
					/* main */
					// Event-Handler
					if ( mouseevents ) {
					    if ( mouseup ) 
						document.onmouseup	= function(e) {	if ( !e ) e = window.event
											if ( !e.pageX ) return
											var x = e.pageX
					    						el.style.left = x + 'px'
					    						leftOffset = x
										      }
					    el.onmouseover		= function(e) {	var	x		= -1,
												elX		= parseInt(el.style.left, 10)

  											if ( !e ) e = window.event
											if ( e.pageX ) x = e.pageX

											if ( x > elX && x < elX + elwidth
											     || x > elX + elwidth + elDistance() && x < elX + 2 * elwidth + elDistance()
											     || x < 0 )
											    stop = true
										      }
					    el.onmouseout		= function() {	stop = false }
					}
					// Mainloop
					window.setInterval ( function() {	if ( stop ) return
										leftOffset = leftOffset <= -winWidth() ? 0 : leftOffset - 1									    
										el.style.left = leftOffset + 'px'
							     },
							     timeout1px )
    			  }
    /*	MAIN	*/
    init()
    /* gebundene Variablen */
    var el2 = this.el2
    /* Tickerinhalt duplizieren */
    this.el2.innerHTML = el.innerHTML
    this.el2.copyCSSText()
    el.appendChild(this.el2)
}
/*	<<< Objekt Marquee	*/

/*	>>> Objekt Ticker	*/
function Ticker() {

    /*	VAR	*/
    var	marquees	= new Array(),
    	resize		= function () { for ( i in marquees ) marquees[i].marquee.el2.copyCSSText() }

    /*	SUB	*/
    this.register	= function (m, t) { var reg = new Object()
					    reg.marquee	= m
					    reg.timeout	= t
					    marquees.push(reg)
					  }
    this.run		= function () { window.onresize		= resize
					for ( var i in marquees ) {
					    var m = marquees[i].marquee.marquee
					    window.setTimeout(m, marquees[i].timeout)
					}
				      }
}
/*	<<< Objekt Ticker	*/

function winWidth () {	var width		= 800
			if ( window.innerWidth )
			    width		= window.innerWidth
			else if ( document.documentElement.offsetWidth )
			    width		= document.documentElement.offsetWidth

			return(width)
}


function clearfields ( elements, text ) {

    var events	 = new Array()

    var register = function (el) { events[el] = function (e) {	var i = document.getElementById(el)
								if ( i.value == text )
								    i.value = ''
						}
				   var i = document.getElementById(el)
				   i.addEventListener("focus", events[el], false)
		   }

    if ( elements.forEach ) elements.forEach(register)
}

/* http://people.mozilla.org/~bsterne/content-security-policy/details.html */
if ( this.addEventListener )
    this.addEventListener('load', start, false)
else if ( this.attachEvent )
    this.attachEvent('onload', start)

