var
	tickerSpeed = 70,
	tickerPeep = false,
	tickerOccurrence = true,
	tickerDelay = 500,
	
	ticker = tickerCoordinates = tickerWidth = tickerRubber_Coordinates = tickerRubber_Width = tickerRubber_widthPrevious = tickerTimer = overseerTimer = occurrenceTimer = false,
	tickerOpacity = 0,
	tickerBase_Position = tickerPseudo_Position = 0;

function overseerTicker() {
	tickerCoordinates = getCoordinates("ticker");
	if (tickerWidth != tickerCoordinates.width) {
		tickerWidth = tickerCoordinates.width;
		if (tickerOccurrence && getElement("tickerLid")) {
			getElement("tickerLid").style.width = tickerWidth + "px";
		}
		getElement("tickerClipper").style.width = tickerWidth + "px";
	}
	tickerRubber_Coordinates = getCoordinates("tickerRubber");
	
	tickerRubber_Width = tickerRubber_Coordinates.width;
	
	if (tickerRubber_widthPrevious && tickerRubber_widthPrevious != tickerRubber_Width) {
		if (tickerRubber_Width > tickerRubber_widthPrevious) {
			if (tickerPseudo_Position > 0) {
				tickerPseudo_Position += tickerRubber_Width - tickerRubber_widthPrevious;
			} else {
				tickerPseudo_Position -= tickerRubber_Width - tickerRubber_widthPrevious;
			}
		} else {
			if (tickerRubber_Width < tickerWidth) {
				tickerRubber_Width = tickerWidth;
			}
			
			if (tickerPseudo_Position > 0) {
				tickerPseudo_Position -= tickerRubber_widthPrevious - tickerRubber_Width;
			} else {
				tickerPseudo_Position += tickerRubber_widthPrevious - tickerRubber_Width;
			}
		}
	} else {
		if (tickerRubber_Width < tickerWidth) {
			tickerRubber_Width = tickerWidth;
		}
	}
	
	getElement("tickerBase").style.width = getElement("tickerPseudo").style.width = tickerRubber_Width + "px";
	tickerRubber_widthPrevious = tickerRubber_Width;
}

function occurrenceTicker(start) {
	if (IE && !IE9) {
		if (start) {
			getElement("tickerClipper").className = "filter";
			if (getElement("tickerClipper").filters[0]) {
				getElement("tickerClipper").filters[0].apply();
				getElement("ticker").className = "visible";
				getElement("tickerClipper").filters[0].play(1);
				occurrenceTimer = window.setTimeout(function() {occurrenceTicker(false);}, 1000);
			}
		} else {
			getElement("tickerClipper").removeAttribute("className");
			deleteElement("tickerLid");
			window.clearTimeout(occurrenceTimer);
		}
	} else {
		if (start) {
			getElement("ticker").className = "visible";
		}
		tickerOpacity = Math.round(tickerOpacity * 100) / 100;
		if (tickerOpacity != 1) {
			getElement("tickerClipper").style.opacity = tickerOpacity;
			tickerOpacity += 0.05;
			occurrenceTimer = window.setTimeout(function() {occurrenceTicker(false);}, 50);
		} else {
			deleteElement("tickerLid");
			window.clearTimeout(occurrenceTimer);
		}
	}
}

function getTicker() {
	if (getElement("ticker")) {
		if (!ticker) {
			if (typeof(tickerSpeed) == "number" && tickerSpeed >= 1 && tickerSpeed <= 100) {
				tickerSpeed = 101 - tickerSpeed;
			} else {
				tickerSpeed = 30;
			}
			ticker = true;
		}
		
		if (!tickerOccurrence && getElement("tickerLid")) {
			deleteElement("tickerLid");
		}
		getElement("tickerPseudo").innerHTML = getElement("tickerRubber").innerHTML = getElement("tickerBase").innerHTML;

		overseerTicker();
		tickerPseudo_Position = tickerRubber_Width;
		
		if (tickerPeep || tickerRubber_Width == tickerWidth) {
			tickerBase_Position += tickerWidth;
			tickerPseudo_Position += tickerWidth;
		} else {
			tickerBase_Position -= tickerRubber_Coordinates.width - (tickerWidth / 2).toFixed(0);
			tickerPseudo_Position -= tickerRubber_Coordinates.width - (tickerWidth / 2).toFixed(0);
		}
		
		overseerTimer = window.setInterval(function() {overseerTicker();}, 250);
		if (tickerOccurrence) {
			window.setTimeout(function() {occurrenceTicker(true);}, tickerDelay);
		} else {
			window.setTimeout(function() {getElement("ticker").className = "visible";}, tickerDelay);
		}
		tickerTimer = window.setTimeout(function() {setTicker();}, tickerDelay);
	}
}

function setTicker(action) {
	if (ticker && typeof(action) == "boolean") {
		window.clearInterval(tickerTimer);
		if (action == true) {
			tickerTimer = window.setTimeout(function() {setTicker();}, tickerSpeed);
		}
	} else {
		tickerBase_Position--;
		tickerPseudo_Position--;
		
		getElement("tickerBase").style.left = tickerBase_Position + "px";
		getElement("tickerPseudo").style.left = tickerPseudo_Position + "px";
		
		if (Math.abs(tickerBase_Position) >= tickerRubber_Width) {
			tickerBase_Position = tickerPseudo_Position + tickerRubber_Width;
		}
		if (Math.abs(tickerPseudo_Position) >= tickerRubber_Width) {
			tickerPseudo_Position = tickerBase_Position + tickerRubber_Width;
		}
		
		tickerTimer = window.setTimeout(function() {setTicker();}, tickerSpeed);
	}
}
